API & feeds
Everything on this site is readable without a browser. No auth, no keys; all timestamps are unix seconds, all times UTC.
Status JSON
GET https://modelstatus.dev/api/v1/status.json returns the current fleet state as one JSON document — the same precomputed snapshot the front page renders. It is rebuilt every 5 minutes; the response carries a snapshot-aligned Cache-Control, so polling at round cadence never serves you a stale copy.
{
"snapshot_ts": 1758391500, // the collection round this describes
"generated_at": 1758391519,
"totals": {
"endpoints": 1197,
"green": 1041, "yellow": 38, "red": 27, "gray": 91,
"providers": 58
},
"unhealthy": [ /* endpoints outside the green band right now */ ],
"ongoing": [ /* incidents opened within the last 6h */ ],
"resolved": [ /* incidents closed within the last 24h */ ],
"longstanding": [ /* unresolved for more than 6h */ ],
"providers": [ /* per-provider endpoint counts and worst uptime */ ]
}Before the first collection round completes the endpoint answers 503 with {"error":"no snapshot yet"}. There is deliberately no site-wide uptime percentage in the totals — averaging 1200 endpoints hides exactly what the counts show.
RSS feeds
Two RSS 2.0 feeds carry every recorded incident. Open incidents sort first, then the most recently resolved. Each item is keyed by a stable guid, so an incident appears exactly once no matter how often you poll.
https://modelstatus.dev/incidents.xml # every endpoint, whole fleet
https://modelstatus.dev/models/{author}/{slug}/incidents.xml # one model's endpointsCollection rounds land every 5 minutes and incidents are confirmed after two consecutive bad rounds, so polling faster than every few minutes gains nothing. Items name the model, provider and tag in the title, and link back to the model page.
Badges
Shields-style SVG badges for READMEs and dashboards. The value is the best current 5-minute uptime among the model's endpoints that report data; the colour follows the same thresholds as the site (green ≥ 95%, yellow ≥ 90%, red below, gray = no data).
https://modelstatus.dev/badge/{author}/{slug}.svg
https://modelstatus.dev/badge/provider/{provider}.svg[](https://modelstatus.dev/models/deepseek/deepseek-v3.2)
Provider slugs are the lowercased, hyphenated name — OpenRouter (Self-Hosted) becomes openrouter-self-hosted. Badges are cached for 5 minutes.
Plain text for LLM agents
Following llmstxt.org: /llms.txt is a compact index of the site, and /llms-full.txt is the current status — every endpoint down or degraded, incidents in progress, per-provider counts — as plain text, so one fetch answers "which provider is down right now" without parsing charts.