Benchmark data API#
Every number in the leaderboard and the
results viewer is published as static JSON, and that
JSON is a small read-only API: plain GET, no key, CORS open, cached by the CDN. It changes only
when a new benchmark run is committed to the repository.
| Base URL | https://puffinparse.com/benchmark-results/data/ |
| OpenAPI 3.1 | https://puffinparse.com/openapi.json |
| API catalog (RFC 9727) | https://puffinparse.com/.well-known/api-catalog |
Every HTML page on this site links the OpenAPI description (rel="service-desc"), this page
(rel="service-doc") and the catalog (rel="api-catalog") from its <head>.
Endpoints#
| Path (below the base URL) | What it is |
|---|---|
index.json |
The leaderboard: every run, with dataset info and one summary per model. |
runs/{run_id}.json |
One full run: every model's score, latency and cost on every document. |
outputs/{run_id}/{model_slug}/{doc_id}.md |
The markdown a model returned for a document (what was scored). |
outputs/{run_id}/{model_slug}/{doc_id}.json |
The unified ParseResponse (blocks with bounding boxes), when saved. |
datasets/{dataset}/manifest.json |
A dataset: documents, categories, licences; truth and input paths. |
model_slugis the model string with/replaced by_(reducto/r-1->reducto_r-1); it is also inindex.jsonasruns[].models[].slug.doc_idof a combined dataset contains one/(dpbench/01030000000016). Send it as is: it is a directory on the server.index.jsonruns[].outputs[<model_slug>]lists which documents have a.jsonresponse (json) and which have no published output (missing: failed calls, and documents from research-only datasets that are scored but never redistributed).- Paths inside a manifest (
file,truth,rules,preview) are relative to the manifest URL.
The full schemas, with every field, are in /openapi.json.
Examples#
The headline leaderboard is the newest run on the newest combined-v* dataset. runs is already
sorted newest first, and each run's models best first:
curl -s https://puffinparse.com/benchmark-results/data/index.json \
| jq '[.runs[] | select(.dataset.name | startswith("combined-"))][0]
| {run_id, dataset: .dataset.name, models: [.models[]
| {model, overall: .summary.overall, p50_ms: .summary.latency_p50_ms,
usd_per_1k_pages: .summary.cost_per_1k_pages_usd}]}'
Per-document scores for one model in a run:
RUN=run-20260925T090851Z
curl -s "https://puffinparse.com/benchmark-results/data/runs/$RUN.json" \
| jq '.models[] | select(.model == "reducto/r-1") | .docs[]
| {id, category, headline, latency_ms, cost_usd}'
What that model returned for one document, as markdown and as the unified response:
curl -s "https://puffinparse.com/benchmark-results/data/outputs/$RUN/reducto_r-1/dpbench/01030000000016.md"
curl -s "https://puffinparse.com/benchmark-results/data/outputs/$RUN/reducto_r-1/dpbench/01030000000016.json" \
| jq '.pages[0].blocks[] | {type, bbox}'
The dataset behind a run, with each document's licence:
curl -s https://puffinparse.com/benchmark-results/data/datasets/combined-v3/manifest.json \
| jq '.documents[] | {id, category, license, truth}'
Field notes#
- Scores are only comparable within one run (one dataset revision).
summary.headlineis 0-1 andsummary.overallis the same number x 100; documents taggedtable-onlyare headlined bytable_score,rulesdocuments byrule_pass_rate. The metric definitions are in the benchmark methodology. - A failed call has
error(anderror_kind) instead ofmetrics,headlineandcost_usd. - Result files are MIT licensed. Every dataset document carries its own
licenseandattribution; keep them when you redistribute. - The format of a result file is specified in docs/SPEC.md (section 10.4).