SupraBench API Partner live · paid demand-gated
A read-only REST API over the SupraBench database: model rankings, benchmark metadata and tag taxonomies. JSON over HTTPS. Bearer-token auth. Predictable HTTP status codes.
What you get
Every non-hidden benchmark and ranked model visible on suprabench.com is available via this API. Responses include cache headers so clients and proxies can avoid unnecessary repeat calls; ranking list responses advertise a five-minute freshness window.
- Models — list and detail, with computed Supra-Score, per-bench scores, tags.
- Benchmarks — list with quality ratings, dimensions, model coverage.
- Best-by-tag — top-N models for a given capability tag (e.g.
?tag=coding). - Tags — full tag taxonomy with counts.
- Bulk export — single-shot full DB snapshot, Pro tier and above.
Base URL
All endpoints are versioned under /v1/. We will never
change the meaning of an existing field within a version — see
Versioning for the deprecation policy.
Authentication
Every request must include a Bearer token in the
Authorization header. Keys start with sb_live_
and are 64 characters long. Get one from your profile after
subscribing to a tier.
curl https://api.suprabench.com/v1/models \
-H "Authorization: Bearer sb_live_…"
import os, requests
r = requests.get(
"https://api.suprabench.com/v1/models",
headers={"Authorization": f"Bearer {os.environ['SUPRABENCH_KEY']}"},
)
r.raise_for_status()
print(r.json())
const r = await fetch("https://api.suprabench.com/v1/models", {
headers: { Authorization: `Bearer ${process.env.SUPRABENCH_KEY}` },
});
if (!r.ok) throw new Error(`API ${r.status}`);
const data = await r.json();
package main
import (
"fmt"
"io"
"net/http"
"os"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.suprabench.com/v1/models", nil)
req.Header.Set("Authorization", "Bearer "+os.Getenv("SUPRABENCH_KEY"))
resp, err := http.DefaultClient.Do(req)
if err != nil { panic(err) }
defer resp.Body.Close()
if resp.StatusCode != 200 { panic(fmt.Sprintf("API %d", resp.StatusCode)) }
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}
Full key-management workflow: see Authentication →
Pricing & limits
Paid tiers are waitlist-gated while pricing is finalised; partner keys are invite-only and live today. Once paid access opens, billing will run monthly via Stripe and limits will scale with the tier. See Terms § 14.
| Tier | Price | Monthly quota | Rate limit | Bulk export | Keys |
|---|---|---|---|---|---|
| Starter | TBD | 10 000 | 60 req / min | — | 1 |
| Pro | TBD | 100 000 | 300 req / min | ✓ | 3 |
| Enterprise | TBD | 1 000 000 | 1 200 req / min | ✓ | 10 |
| Enterprise+ | Custom | Custom | Custom | ✓ | 50+ |
| Partner (invite-only) | Free | Custom | Custom | ✓ | Custom |
Pricing is intentionally TBD until launch — the waitlist is how we figure out what each tier should actually cost. Billing will be handled by Stripe: EU VAT collected automatically, B2B reverse-charge supported via VAT-ID at checkout. Need higher limits, a custom contract or on-prem mirror? Contact us.
Powered by SupraBench footer link) is the only thing we
ask in return.
Where to next
Quickstart →
Your first authenticated request, in five minutes.
Authentication →
How keys work, where to store them, rotation strategy.
Rate limits →
Headers, retry strategy, what happens when you hit 429.
Models reference →
List rankings and fetch full per-bench score history.
Error codes →
Every status, every error code, every recovery action.
Changelog →
What shipped, what's next, breaking-change policy.
Design principles
- Read-only. Mutations require human contribution through the web app — the API never accepts new submissions, votes, or ratings, by design.
- Cacheable. Every response carries an honest
Cache-Controlheader. Mirroring SupraBench at your own edge is allowed and encouraged. - Predictable. Status codes follow REST conventions. Errors always carry a machine-readable
error.codestring in addition to a human message. - Stable. Once a field is in
v1, it stays. New fields are additive. Deprecations get six months and a header warning. - No vendor lock-in. Plain JSON, no proprietary SDK required. Use any HTTP client.
Support
All paid tiers receive best-effort support — we don't offer a contractual SLA on Starter, Pro or Enterprise. The channel escalates with tier:
- Starter: community via GitLab issues.
- Pro: email suprabench.editor887@passmail.com, best-effort reply.
- Enterprise: priority email, best-effort reply.
- Enterprise+: dedicated Slack channel; SLA is negotiable on a case-by-case basis as part of the custom contract.