Models GA on launch

The Supra-Score ranking and full per-benchmark detail for every AI model on SupraBench. List rankings or drill into a single model by its slug.

Last updated: April 18, 2026 Reading time: 5 min

List models

GET https://api.suprabench.com/v1/models

Returns configurations (one row per concrete way of running a model, e.g. GPT-6 Astra (xhigh)) sorted by supraScore descending; group by familyTag to get one row per model. Each row is a flat summary; for the full per-bench breakdown, follow up with GET /v1/models/:slug.

Query parameters

ParameterTypeDescription
limit optional integer 1–500. Default 100. Out-of-range values are clamped.
tag optional string Restrict results to models carrying this tag (e.g. coding, reasoning). See GET /v1/tags for the full list.

Response — array of ModelSummary

FieldTypeDescription
slugstringStable URL-safe identifier. Use this in GET /v1/models/:slug.
namestringDisplay name (e.g. "Claude Opus 4.7").
providerstringVendor ("Anthropic", "OpenAI", ...).
familyTagstringThe model this configuration belongs to: one specific release and product tier (for example "Claude Fable 5" or "GPT-5.6 Sol"). Reasoning-effort configurations share it; Sol, Terra, and Luna do not. The field name predates the site's Model / Configuration wording and is kept for compatibility.
tagsstring[]Capability tags upvoted by the community (e.g. ["reasoning", "coding"]).
supraScorenumberSupra-Score, 0–100: expected win rate against the current top-10 configurations from trust-weighted pairwise benchmark comparisons. It is relative to the current field, so it can move when other models change. See About for the method.
benchCountintegerNumber of distinct benchmarks contributing to supraScore.
updatedAtintegerUnix milliseconds of the last ranking refresh.

Example

curl "https://api.suprabench.com/v1/models?tag=coding&limit=3" \
  -H "Authorization: Bearer $SUPRABENCH_KEY"
resp = requests.get(
    "https://api.suprabench.com/v1/models",
    params={"tag": "coding", "limit": 3},
    headers={"Authorization": f"Bearer {KEY}"},
).json()
const params = new URLSearchParams({ tag: "coding", limit: "3" });
const r = await fetch(`https://api.suprabench.com/v1/models?${params}`, {
  headers: { Authorization: `Bearer ${KEY}` },
});
const models = await r.json();
req, _ := http.NewRequest("GET",
    "https://api.suprabench.com/v1/models?tag=coding&limit=3", nil)
req.Header.Set("Authorization", "Bearer "+os.Getenv("SUPRABENCH_KEY"))
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()

var models []struct {
    Slug       string  `json:"slug"`
    Name       string  `json:"name"`
    SupraScore float64 `json:"supraScore"`
}
json.NewDecoder(resp.Body).Decode(&models)

Response:

[
  {
    "slug": "claude-opus-4-7",
    "name": "Claude Opus 4.7",
    "provider": "Anthropic",
    "familyTag": "Claude Opus 4.7",
    "tags": ["reasoning", "coding", "long-context"],
    "supraScore": 92.41,
    "benchCount": 28,
    "updatedAt": 1745000000000
  },
  {
    "slug": "gpt-5-2026-q1",
    "name": "GPT-5 (Q1 2026)",
    "provider": "OpenAI",
    "familyTag": "GPT-5",
    "tags": ["reasoning", "coding", "agentic"],
    "supraScore": 91.07,
    "benchCount": 31,
    "updatedAt": 1745000000000
  },
  {
    "slug": "gemini-3-pro",
    "name": "Gemini 3 Pro",
    "provider": "Google",
    "familyTag": "Gemini 3 Pro",
    "tags": ["coding", "multimodal"],
    "supraScore": 89.92,
    "benchCount": 22,
    "updatedAt": 1745000000000
  }
]

Get a model

GET https://api.suprabench.com/v1/models/{slug}

Returns a single model with the full per-benchmark score breakdown. Hidden models (community-flagged or admin-removed) return 404 not_found.

Path parameters

slug required string URL-safe model identifier from ModelSummary.slug.

Response — ModelDetail

Same fields as ModelSummary plus a scores array. See below.

ModelDetail.scores[] — per-benchmark entries

FieldTypeDescription
benchstringBenchmark slug — usable in GET /v1/benches filters.
benchNamestringBenchmark display name.
rawScorenumberAs reported by the source, in the benchmark's native units.
normalizedScorenumber0–100 scale used by the Supra-Score aggregation.
sourceUrlstringPublic URL the score was sourced from.
accessedAtintegerUnix milliseconds when the source was accessed by the submitter.
upvotesintegerCommunity upvotes on this submission.
downvotesintegerCommunity downvotes. Only submissions where upvotes > downvotes count toward supraScore.

Example

curl https://api.suprabench.com/v1/models/claude-opus-4-7 \
  -H "Authorization: Bearer $SUPRABENCH_KEY"
detail = requests.get(
    "https://api.suprabench.com/v1/models/claude-opus-4-7",
    headers={"Authorization": f"Bearer {KEY}"},
).json()
const r = await fetch(
  "https://api.suprabench.com/v1/models/claude-opus-4-7",
  { headers: { Authorization: `Bearer ${KEY}` } },
);
const detail = await r.json();
req, _ := http.NewRequest("GET",
    "https://api.suprabench.com/v1/models/claude-opus-4-7", nil)
req.Header.Set("Authorization", "Bearer "+os.Getenv("SUPRABENCH_KEY"))
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()

var detail map[string]any
json.NewDecoder(resp.Body).Decode(&detail)
{
  "slug": "claude-opus-4-7",
  "name": "Claude Opus 4.7",
  "provider": "Anthropic",
  "familyTag": "Claude Opus 4.7",
  "tags": ["reasoning", "coding", "long-context"],
  "supraScore": 92.41,
  "benchCount": 28,
  "scores": [
    {
      "bench": "swe-bench-verified",
      "benchName": "SWE-bench Verified",
      "rawScore": 71.4,
      "normalizedScore": 71.4,
      "sourceUrl": "https://www.anthropic.com/news/claude-opus-4-7",
      "accessedAt": 1744750000000,
      "upvotes": 18,
      "downvotes": 1
    },
    {
      "bench": "mmlu-pro",
      "benchName": "MMLU-Pro",
      "rawScore": 0.823,
      "normalizedScore": 82.3,
      "sourceUrl": "https://arxiv.org/abs/...",
      "accessedAt": 1744750000000,
      "upvotes": 9,
      "downvotes": 0
    }
  ]
}

Errors

StatusCodeWhen
400bad_requestEmpty :slug in detail call.
404not_foundNo active model with that slug. Hidden models are also reported as 404.