SYS://REGISTRY
LEDGER/DOCS

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.

Because the API is open by design, please cache responses on your side for high-traffic use. The dataset changes when labs ship — typically a few times per week — so aggressive polling gains nothing.

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.
Practical guidance: poll /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.
GET/api/v1/models

The 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 · video
openWeightsstring“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.

01Copy the prompt
02Paste to your agent
03Run pnpm test & open a PR

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.

GET/
curl -s https://modelregistry.tirup.in   # auto-detected dashboard
GET/latest
curl -s https://modelregistry.tirup.in/latest   # short alias for the feed
GET/api/v1/cli
curl -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.

[![OpenAI](https://modelregistry.tirup.in/api/badge/openai)](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.

Model 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.