Reference
Read what this page publishes, programmatically. Write routes take a bearer token. Every error takes the same shape.
Whether this deployment is serving.
okserviceversion{
"ok": true,
"service": "status-page",
"version": "1.0.0"
}Overall status, every service, open incidents, and upcoming maintenance.
data.overalldata.servicesdata.openIncidentsdata.maintenance{
"data": {
"overall": "operational",
"services": [{ "slug": "api", "status": "operational" }],
"openIncidents": [],
"maintenance": []
}
}Every service and its current status.
data{
"data": [{ "name": "API", "slug": "api", "status": "operational" }]
}Incident history, most recent first, with per-incident updates.
data{
"data": [{ "title": "Elevated API latency", "status": "resolved", "updates": [] }]
}One incident and every update posted against it.
data{
"data": { "id": "…", "status": "investigating", "updates": [] }
}Incident history as CSV (the same file the public page offers).
(body)id,title,status,severity,created_at,resolved_at,services,latest_update
Scheduled, in-progress, and past maintenance windows.
data{
"data": [{ "title": "Database engine upgrade", "status": "scheduled" }]
}Per-service uptime for 30, 60, or 90 days. Query: days=30|60|90.
data{
"data": [{ "slug": "api", "uptimePercent": 99.91, "days": [] }]
}Embeddable SVG badge for a service.
(body)<svg xmlns="http://www.w3.org/2000/svg" …>
Start a GDPR double opt-in. Nothing is sent until the address is confirmed.
data.message{
"data": { "ok": true, "message": "Check your inbox for a confirmation message." }
}Confirm a pending subscription with the token from the email.
data.confirmed{
"data": { "confirmed": true }
}One-click unsubscribe using the token from any message.
data.unsubscribed{
"data": { "unsubscribed": true }
}RSS 2.0 feed of incidents.
(body)<rss version="2.0">…</rss>
Atom 1.0 feed of incidents.
(body)<feed xmlns="http://www.w3.org/2005/Atom">…</feed>
Sign in. Sets an HttpOnly session cookie; the JSON body never includes the password.
data.user{
"data": { "user": { "email": "owner@example.com", "role": "owner" } }
}Sign out and clear the session cookie.
data.ok{
"data": { "ok": true }
}The signed-in operator, or the owner represented by a bearer token.
data{
"data": { "email": "owner@example.com", "role": "owner" }
}List services for the operator console.
data{
"data": []
}Register a service.
data{
"data": { "slug": "billing", "status": "operational" }
}Rename a service or change its status (operational / degraded / down).
data{
"data": { "status": "degraded" }
}Remove a service. Owner only.
data.deleted{
"data": { "deleted": true }
}List incidents for the operator console.
data{
"data": []
}Open an incident. Pass templateId to prefill from a stored template.
data{
"data": { "status": "investigating" }
}One incident as the operator sees it.
data{
"data": { "id": "…" }
}Post an update, or resolve the incident.
data{
"data": { "status": "resolved" }
}List maintenance windows.
data{
"data": []
}Schedule a maintenance window. Confirmed subscribers who opted in are notified.
data{
"data": { "status": "scheduled" }
}Update or complete a maintenance window.
data{
"data": { "status": "completed" }
}List incident templates.
data{
"data": [{ "name": "Partial outage" }]
}Store an incident template.
data{
"data": { "name": "Partial outage" }
}Delete an incident template.
data.deleted{
"data": { "deleted": true }
}Every status change and incident update, newest first.
data{
"data": [{ "action": "service.status", "entityType": "service" }]
}List API keys. Secrets are never stored or shown again.
data{
"data": [{ "prefix": "sk_live_ab12", "name": "CI" }]
}Create an API key. The secret is in this response once.
data.secret{
"data": { "secret": "sk_live_…", "prefix": "sk_live_ab12" }
}Revoke an API key.
data.revoked{
"data": { "revoked": true }
}List notification subscribers.
data{
"data": [{ "email": "you@example.com", "status": "confirmed" }]
}Delete a subscriber (erasure).
data.deleted{
"data": { "deleted": true }
}SLA targets and the latest monthly report. Disabled when the add-on flag is off.
data.targetsdata.latest{
"data": { "targets": [{ "uptimePercent": 99.9 }], "latest": null }
}Generate a monthly SLA compliance report from incident and downtime data.
data{
"data": { "period": "2026-08", "rows": [] }
}Set a service's monthly uptime target.
data{
"data": [{ "uptimePercent": 99.5 }]
}Export the latest (or specified) SLA report as CSV.
(body)service,target_percent,uptime_percent,downtime_minutes,incident_count,met
Every failure returns the same envelope, whichever route produced it, so a client can handle errors in one place.
error.codeerror.messageerror.reference