Bulk export Pro+

Full database snapshot in one request. Ideal for nightly mirrors, research datasets and offline analysis. Costs you exactly one request against your monthly quota; the response is cached at the edge for 24 hours.

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

Endpoint

GET https://api.suprabench.com/v1/export.json

Available on Pro tier and above. On Starter, returns 403 tier_forbidden.

Response shape

FieldTypeDescription
generatedAtintegerUnix milliseconds when the snapshot was assembled.
modelsModelSummary[]All non-hidden ranked models. Same shape as /v1/models but un-paginated.
benchesBenchSummary[]All non-hidden benchmarks with quality + dimension data.
tagsTagInfo[]Full tag taxonomy with counts.

Per-submission score detail is not included in the bulk export — it's available per-model via GET /v1/models/:slug. Including it here would push payloads past 50 MB.

Example

# Save the snapshot to disk for offline analysis
curl -sS https://api.suprabench.com/v1/export.json \
  -H "Authorization: Bearer $SUPRABENCH_KEY" \
  -o suprabench-$(date -u +%Y-%m-%d).json
import json, requests

snapshot = requests.get(
    "https://api.suprabench.com/v1/export.json",
    headers={"Authorization": f"Bearer {KEY}"},
).json()

print(f"snapshot generated {snapshot['generatedAt']}")
print(f"  {len(snapshot['models'])} models")
print(f"  {len(snapshot['benches'])} benches")
print(f"  {len(snapshot['tags'])} tags")
import { writeFile } from "node:fs/promises";

const r = await fetch("https://api.suprabench.com/v1/export.json", {
  headers: { Authorization: `Bearer ${process.env.SUPRABENCH_KEY}` },
});
if (!r.ok) throw new Error(`API ${r.status}`);
const snapshot = await r.json();

const day = new Date().toISOString().slice(0, 10);
await writeFile(`suprabench-${day}.json`, JSON.stringify(snapshot));
console.log(
  `${snapshot.models.length} models, ${snapshot.benches.length} benches, `
  + `${snapshot.tags.length} tags`,
);
package main

import (
    "fmt"
    "io"
    "net/http"
    "os"
    "time"
)

func main() {
    req, _ := http.NewRequest("GET",
        "https://api.suprabench.com/v1/export.json", 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()

    name := fmt.Sprintf("suprabench-%s.json", time.Now().UTC().Format("2006-01-02"))
    f, _ := os.Create(name)
    defer f.Close()
    io.Copy(f, resp.Body)
}

When to use bulk export

For interactive use cases (a "what's the best model right now" widget), use /v1/best instead — it's cheaper to call repeatedly and refreshes every five minutes.

Performance tips

Errors

StatusCodeWhen
403tier_forbiddenStarter tier — bulk export is Pro+ only. Upgrade in Profile → API & Billing.