Developers
A public API that doesn't panic.
Read-only JSON, no key needed. CORS is open. Responses are cached for ~15 seconds. Please be kind: 120 requests per minute per client; badges get 300.
GET
/api/v1/servicesEvery tracked service with status, confidence, summary and Panic Meter.
?status=major_outage ?category=ai
GET
/api/v1/services/discordOne service in depth: signals, symptoms, countries, dependencies, recent incidents.
GET
/api/v1/incidentsAutomatically detected incidents, newest first. Upstream incidents link their affected services.
?state=open ?limit=20
GET
/api/v1/panic-indexThe 0–100 internet health number, with 24 hours of history.
Example response
{
"data": {
"slug": "discord",
"name": "Discord",
"status": "major_outage",
"status_label": "Major outage",
"confidence": 91,
"summary": "Discord appears to be down for most people — its servers are returning errors. Likely cause: Cloudflare, which looks degraded.",
"panic": { "level": "meltdown", "label": "Full Meltdown", "score": 88 },
"reports_15m": 412,
"reports_vs_normal": 46.3,
"suspected_cause": "Cloudflare (upstream, 23 services affected)",
"status_since": "2026-10-22T14:03:11.000Z",
"url": "https://pagepanic.com/discord",
"badge": "https://pagepanic.com/badge/discord.svg"
}
}Status badges
Live SVG, refreshed every minute. Add ?theme=light for light backgrounds.
[](https://pagepanic.com/github)Fine print
- • status is one of operational, degraded, partial_outage, major_outage.
- • confidence (0–100) reflects how much evidence we have and how well it agrees.
- • Over the limit you get HTTP 429 with
retry-after. Headers include x-ratelimit-remaining. - • It's free and best-effort. Don't page your on-call from it alone.