API Reference
ModelRegistry exposes every record as machine-readable data. The REST API serves versioned JSON, feeds cover syndication and AI ground truth, and badges plus CLI routes cover embedding and terminal workflows. Everything below is public, free, and requires no account.
Base URL for all endpoints is https://modelregistry.tirup.in. Conventions used throughout this reference: GET only — the registry is read-only, so there are no write, update, or delete operations.
Authentication
There is none. No API keys, no tokens, no OAuth scopes, no signup. Every endpoint on this page answers anonymous requests, from browsers, servers, CI jobs, and agents alike. Responses include Access-Control-Allow-Origin: *, so browser-side applications can call the API directly without a proxy.
Rate limits & caching
No published per-client rate limit is enforced today. Abuse protection is handled at the edge. Responses carry explicit cache directives — honor them instead of re-requesting:
REST · feeds · badgesedge cachepublic, s-maxage=3600, stale-while-revalidate=86400. Freshness of up to one hour; stale copies served while revalidating./api/check-updatesdynamicEvaluated per request. Its upstream heartbeat is cached for 5 minutes; the counts always reflect the live dataset./api/check-updates no more than once every 5 minutes, and treat a change in trackedModelsCount as your signal to re-fetch /api/v1/models.Errors
The API prefers empty results over failed requests. Unknown filter values return HTTP 200 with an empty collection — parse defensively and key off status and total.
200 + empty listfilters?company=unknownlab or a category with no matches. status stays “success”, total is 0.404pagesUnknown site routes and retired model slugs with no resolvable lab successor.500og images/api/og returns a plain-text error body if card rendering fails. Retry once before reporting./api/v1/modelsThe primary endpoint. Returns the full registry — every model with its specifications — plus a per-laboratory rollup. All parameters are optional and combinable.
companystringLab id — anthropic, openai, google, xai, deepseek, meta, qwen, mistral, tencent, z-ai, minimax, nvidia, xiaomi, moonshotai, kuaishou, runway.categorystringflagship · reasoning · open-weights · code · multimodal · audio · image · videoopenWeightsstring“true” for downloadable weights, “false” for proprietary API models.flagshipOnlystring“true” returns exactly one primary flagship per laboratory.latestOnlystring“true” returns each lab's newest shipped checkpoint(s).{
"status": "success",
"total": 35,
"updatedAt": "2026-09-09T00:00:00.000Z",
"metadata": { "registry": "ModelRegistry", "license": "Open Data / MIT" },
"companies": [{ "id": "openai", "page": "/companies/openai",
"latestFlagship": "GPT-6 Astra", "latestCheckpoint": "ChatGPT Images 2.5" }],
"models": [{
"id": "claude-fable-5-1",
"name": "Claude Fable 5.1",
"releaseDate": "2026-09-01",
"pricing": { "input": 10, "output": 50 }
}]
}The model object
Every entry in models[] follows this shape. Fields marked conditional appear only where they apply.
idstringStable kebab-case identifier. Never reused; suitable as a long-lived foreign key.companyId · companyNamestringOwning laboratory. companyId matches ?company= and /companies/:id.name · versionstringDisplay name and lab version string (e.g. “6.0-Astra”, “V4.1-Flash-Beta”).releaseDatedateFirst public availability, YYYY-MM-DD. The canonical ordering key across the registry.isCompanyFlagshipbooleanExactly one true per lab — its primary general-purpose model.isLatestCheckpointbooleanTrue for the lab's newest shipped release. May coincide with the flagship.category · categoryLabelstringMachine bucket (image, video, flagship…) plus the human display label.contextWindow(Tokens)string · numberHuman string plus sortable token count. Visual models use descriptive windows with a 0 count so they never outrank token models.parametersstringArchitecture description. “Undisclosed (…)” where the lab has published nothing — never fabricated.pricing · pricingUnitobject · string?Per-1M-token input/output USD by default; pricingUnit (e.g. “per second”) marks non-token billing.modalitiesstring[]Text · Vision · Audio · Video · Code · Image, as applicable.benchmarksobjectLab-published scores only (sweBench, mmluPro, gpqa…). Empty object means none published.linksobjectOfficial announcement, playground, paper, apiDocs, weights URLs. Announcement is mandatory per contribution policy.variants?object[]Named sub-releases shipped under one entry (e.g. API twins), each with role, detail, pricing note, and docs link.Examples
Each recipe below does one job — pick your language, copy, run.
01 · One flagship per lab — cURL
curl -s "https://modelregistry.tirup.in/api/v1/models?flagshipOnly=true" | head -c 400
02 · Newest video checkpoints — Python
import requests
res = requests.get("https://modelregistry.tirup.in/api/v1/models",
params={"category": "video", "latestOnly": "true"}).json()
for m in res["models"]:
print(m["name"], "—", m["releaseDate"])"03 · Filter by lab in the browser — JavaScript
// No proxy needed — the API sends Access-Control-Allow-Origin: *
const { total, models } = await (
await fetch("https://modelregistry.tirup.in/api/v1/models?company=deepseek")
).json();Agent prompts
Copy-paste prompts that teach any AI agent to contribute models or query this registry. Same source as the header button and README — always current.
Contribute a model — full workflow
You are helping me contribute a new AI model to ModelRegistry (https://modelregistry.tirup.in, repo: https://github.com/TirupMehta/ModelRegistry), the open registry of frontier AI models. Follow this workflow step by step. Ask me for any fact you cannot verify from an official source — never invent specifications, benchmarks, pricing, or dates.
Query the API — agent briefing
Query ModelRegistry (https://modelregistry.tirup.in) — the open frontier-AI model index. Free, no auth, CORS-open, read-only (GET only). - List & filter models: GET https://modelregistry.tirup.in/api/v1/models with optional combinable params: ?company=openai & ?category=video (flagship|reasoning|open-weights|code|multimodal|audio|image|video)
CLI & plain text
Three terminal-native routes. The root URL sniffs curl and answers in plain text — nothing to install, no keys.
/curl -s https://modelregistry.tirup.in # auto-detected dashboard
/latestcurl -s https://modelregistry.tirup.in/latest # short alias for the feed
/api/v1/clicurl -s https://modelregistry.tirup.in/api/v1/cli # flagships + checkpoints table
Badges & health
Live SVG shields for lab flagships and per-model specs, plus a heartbeat endpoint with edge-cache status and live dataset counts.
[](https://modelregistry.tirup.in) https://modelregistry.tirup.in/api/badge/[company] https://modelregistry.tirup.in/api/badge?model=<id>&type=spec|context|pricing|status https://modelregistry.tirup.in/api/check-updates
Versioning
The /v1/ prefix is a stability contract: breaking renames or removals ship under a new version, never silently. Additive changes — new fields, new labs, new models — land in v1 without notice. Recent additive changes: per-laboratory profile pages and companies[].page (September 2026), per-second pricing units for video models, and named sub-variants.
id values are append-only. Entries are never deleted or recycled — retired slugs resolve to the lab's flagship through the fallback documented in the Errors section.Laboratories
Every lab has a profile page with its full release history. Pass its id as ?company= to filter the API.
Support
Something wrong with the data or an endpoint? Open an issue on GitHub — model corrections take 60 seconds via data/models.ts, and the full pipeline (site, API, feeds, README) re-syncs automatically.