Free data API

Every model we track, as JSON.

The catalog behind this site is a public feed. 204 models across 12 providers — prices, context windows, lifecycle status and retirement dates — read from official provider documentation and refreshed daily. No key, no signup, no rate limit. CORS is open, so you can call it straight from a browser.

204
models tracked
204/204
carry a source URL
5 Aug 2026
last refreshed

Endpoints

EndpointReturnsSize
GET /api/models.jsonThe full catalog — every model, all fields.204 models
GET /api/deprecations.jsonLifecycle only — every deprecation and retirement a provider has declared, with its stated replacement. Chronological by retirement date, so it includes models already gone.79 models

Try it

# every model, as JSON
curl -s https://aimodelwatch.dev/api/models.json

# what's still to come — the feed is the full record, so filter out the dead
curl -s https://aimodelwatch.dev/api/deprecations.json \
  | jq --arg today "$(date +%F)" \
       '.models[] | select(.retires_on > $today) | {name, retires_on, replacement}'

# is the model I ship on still GA?
curl -s https://aimodelwatch.dev/api/models.json \
  | jq '.models[] | select(.api_string=="claude-fable-5") | .status'

Response shape

{
  "version": 1,
  "updated": "2026-08-05",
  "count": 204,
  "source": "Compiled from official provider documentation…",
  "license": "MIT — attribution appreciated: AI Model Watch",
  "models": [ /* … */ ]
}

Model fields

FieldTypeMeaning
idstringStable identifier used in our URLs.
namestringHuman-readable model name.
providerstringAnthropic, OpenAI, Google, Mistral, …
statusenumga · preview · beta · deprecated · retired
modalitystring[]text, image, vision, audio, video
context_windownumber|nullMax input tokens.
max_output_tokensnumber|nullMax tokens the model can emit.
price_input_per_mtoknumber|nullUSD per 1,000,000 input tokens.
price_output_per_mtoknumber|nullUSD per 1,000,000 output tokens.
price_cached_input_per_mtoknumber|nullUSD per 1M cached input tokens.
price_per_1k_searchesnumber|nullUSD per 1,000 search units — rerank models bill per query (one query + up to ~100 documents), not per token. null for everything else.
releaseddate|nullISO date the model became available.
deprecated_ondate|nullISO date the provider declared it deprecated.
retires_ondate|nullISO date the endpoint stops answering.
replacementstring|nullProvider's stated migration target.
api_stringstring|nullThe exact string you pass to the API.
open_weightbooleanWhether weights are downloadable.
embedding_dimensionsnumber|nullOutput vector size for embedding models; null for non-embedding models.
source_urlstringThe official provider page this row was read from.

A null means the provider does not publish that number — never a guess. Prices are USD per 1,000,000 tokens.

Freshness & caching

The feed is rebuilt and redeployed daily. What that means for a program polling it:

SignalValueWhat it means
updated2026-08-05Top-level field: the date the catalog itself last changed or was re-verified against provider docs — not the date this response was generated. A build check fails if a data edit ships without bumping it, so it is the field to diff between polls.
Cache-Controlmax-age=3600Any cache — your HTTP client, a proxy, the CDN edge — may serve a copy up to one hour old. Append a cache-buster (?cb=$(date +%s)) when you need the origin's current copy, e.g. right after we announce a change.
ETagstrongConditional requests are supported. Send the previous ETag back as If-None-Match and an unchanged feed answers 304 with an empty body instead of the full payload.
Content-EncodinggzipThe full catalog is ~230 KB raw, ~31 KB gzipped. Ask for it — every HTTP client does by default.
# poll politely: cache the ETag, pay for the body only when it changes
curl -s -D- -o models.json \
  -H "If-None-Match: $(cat etag.txt 2>/dev/null)" \
  https://aimodelwatch.dev/api/models.json

# has the catalog itself moved since you last looked?
curl -s "https://aimodelwatch.dev/api/models.json?cb=$(date +%s)" | jq -r .updated

Hourly is more than enough — the catalog is refreshed once a day, so anything faster than that returns the same bytes. There is no rate limit and no key; the cache window exists so polling you doesn't cost you a full download.

What we promise

Sourced

Every row carries the official provider page it was read from. We record what the provider states — we never infer a price or a lifecycle change it hasn't declared.

Stable

version: 1 fields won't be removed or retyped without a new version. New fields may be added — parse defensively.

Free

MIT, same as the open dataset. Use it in products, research, or agents — commercially too. Attribution is appreciated, not required.

Wiring this into a build? check-models is a single-file CI check that reads the model ids in your repo and fails when one is deprecated, retiring soon or re-priced — no key, no dependencies. The same data powers /llms.txt for AI agents and /rss.xml for change events. Spot something wrong — a stale price, a missing model? Tell us; corrections against an official source ship the same day.