Machine-readable

Static JSON. No keys. No router.

These files are generated at build time and served as static assets. There is no query API, no account, and no log of what you fetch. A verdict without a lens, as-of date, and licence line is a bug.

Licence, per field

Vendor prices are facts the vendor published. LMArena Elo is used under CC BY 4.0 from the official dataset. Artificial Analysis scores appear on some human pages for evaluation; they are not in the dominance JSON, and this site does not grant a sublicence to redistribute them.

LMArena Elo under CC BY 4.0 from the official dataset. This file does not contain Artificial Analysis scores. We do not grant a sublicence to redistribute Artificial Analysis figures.

Endpoints

URLWhat it isProvenance
/data/catalogue.jsonLean board payload (prices, scores, facets).Mixed. Human pages may show AA; treat AA as evaluation-only.
/data/plans.jsonSubscription plans, published caps only.Hand-researched. Unverified quotas are not numbers.
/data/frontier.jsonCurrent undominated set on lmarena, workload balanced.LMArena + vendor prices. No AA scores.
/data/dominance/<fileSlug>.jsonOne model’s verdict: frontier, dominated, dominated-with-tradeoff, unrated, or unpriced. File slug is the model slug with / and : replaced by __.LMArena + vendor prices. Losses named when the cheaper row is not a superset.
/data/series/price-at-floor.jsonCheapest model at pinned Arena Elo floors, per snapshot date. Absence is null.LMArena. Floors are append-only.
/data/models/<fileSlug>.jsonFull model record for drill-in pages.Field-level. Do not treat the whole file as one licence.

How to read a verdict

  1. Unrated is not zero and is not on the frontier.
  2. A cheaper model that drops image input, context, max output, tools, or reasoning is a trade, not an upgrade.
  3. Do not blend Artificial Analysis and LMArena into one number.
  4. Name the asOf date from the file when you cite it.
  5. This is not a router. It does not execute inference.

CLI — npx undominated-check

Read-only. Fetches the published dominance JSON for one model, prints the verdict with lens, workload and as-of date, and exits. No key, no account, no recomputation.

npx undominated-check google/gemini-3.7-flash
npx undominated-check openai/gpt-5.2 --exit-code --json
npx undominated-check --frontier --local static/data

Under --exit-code, unrated is not the same exit as dominated. Package: packages/undominated-check (MIT, zero dependencies).

Contract version 1. A breaking change is a new version directory, never an in-place edit. Generate with npm run data:dominance. For the OpenRouter routing question — computed seller counts, illustrative break-even, no invented direct price — see OpenRouter or direct.