Status Methodology
How the AI Economy Uptime Index, provider health, incident archive, and failover recommendations are computed. No black boxes.
The ping cycle
A Vercel cron job at /api/cron/ping-providers runs every five minutes. It hits one public endpoint per tracked provider in parallel with a 10 second timeout and a dedicated BenchGecko-StatusMonitor/1.0 user agent. We never call paid inference endpoints · we use the /v1/models listing endpoint (or the closest equivalent per provider) because it is free, sub-kilobyte, and universally exposed.
Each ping writes a row to the provider_pings table with status code, latency, and ok flag. Some providers return 401 or 403 without auth · we treat those as reachable because they prove the control plane is up. Full list of providers and their reachable codes lives in the source at src/app/api/cron/ping-providers/route.ts.
The AI Economy Uptime Index
After each cron cycle, we compute the composite:
index_value = (providers_reachable / providers_total) * 100
The snapshot gets written to ai_uptime_index_snapshots along with median latency, active incident count, and up/degraded/down counts. The 24 hour delta shown next to the big number on /status is computed by looking up the nearest snapshot to 24 hours ago.
Incident detection
Three consecutive failed pings for a provider auto-opens an incident with a frozen slug of the form {provider}-{YYYY-MM-DD}-{random4}. The slug is permanent · once minted, the URL /status/incident/[slug] never changes, which makes every incident citable.
Two consecutive successful pings for a provider with an open incident auto-resolves it. Resolution writes the duration in minutes, flips status to resolved, and freezes the record.
Provider health rollups
The provider_health_live Postgres view computes 24 hour rollups directly from provider_pings: count, uptime percent, and p50/p95/p99 latency via PERCENTILE_CONT. A parallel provider_health_30d view gives the 30 day uptime for the timeline grid.
Status thresholds:
- • Healthy · 24h uptime >= 99%
- • Degraded · 24h uptime 50 to 99%
- • Down · 24h uptime < 50%
Failover recommendations
When a provider is degraded or down, /status shows three alternative models. The logic is synchronous and uses the static model catalog.
We pick the highest-scoring model on the degraded provider as the baseline. Candidates are models on other providers with an average score within ±10 points of that baseline. They are sorted by a composite of score delta and input price delta, with score weighted 10× heavier than price. Top three win.
We do not earn affiliate fees on these recommendations. They are computed purely from the live data.
Cache + rebuild
/status is rendered as a server component with revalidate = 300 and a tagged cache. After each cron cycle, the ping endpoint calls /api/revalidate?tag=status to bust the Next cache. So the page is never more than five minutes stale.
Attribution
All data on /status is free to use with attribution. Link back to benchgecko.ai/status or cite via the built-in Cite this page button, which generates APA, MLA, BibTeX, and HTML embed snippets.