Reporting API
Drive a status page from an external monitor - open incidents, post updates, and set component statuses with a per-page Status API key.
Reporting API
Most of Status is built in the dashboard, but you can also drive a page programmatically. Create a Status API key for a page, then have an external monitor or script open incidents, post updates, and set component statuses. Writes go through the same path the dashboard uses, so the public page and its 90-day uptime stay consistent.
A key is scoped to a single page: it can only read and write the page it was created for.
Authentication
Create a key from the page editor in the dashboard. It is shown in full once when you create or rotate it; store it somewhere safe. Send it on every request:
Authorization: Bearer hyd_status_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
- A key authorizes only its own page. There is no account-wide Status key.
- Revoke a key by deleting or disabling it in the dashboard; revocation takes effect immediately.
| Status | When | code |
|---|---|---|
| 401 | No Authorization header | NO_KEY |
| 401 | Key not recognized | BAD_KEY |
| 401 | Key disabled | KEY_DISABLED |
| 403 | Page suspended, or the owning account is not in good standing | - |
| 404 | Component or incident id not on this page | - |
| 400 | Body failed validation | - |
Status values
Two enums are used throughout. Sending a value outside these sets returns 400.
- Component status:
operational,degraded,partial,outage,maintenance. - Incident state:
investigating,identified,in_progress,monitoring,resolved. - Incident impact:
none,minor,major,critical.
Anywhere you set affected components you pass an array of { component, status }, where component is the component's id or its name (case-insensitive). Unknown references are ignored silently, so a rename never breaks a caller.
Read current status
https://hep.gg/api/v1/status-api/statusPublic{
"ok": true,
"data": {
"overall": "operational",
"components": [
{ "id": "c_api", "name": "API", "status": "operational" }
],
"activeIncidents": [
{ "id": "i_123", "title": "Elevated latency", "state": "monitoring", "impact": "minor", "startedAt": "2026-06-08T18:00:00.000Z" }
]
}
}Open an incident
https://hep.gg/api/v1/status-api/incidentsPublictitleimpactnone, minor, major, critical. Defaults to none when omitted.bodycomponents{ component, status }. Up to 200 entries.{ "ok": true, "data": { "id": "i_123" } }Post an update / change state
https://hep.gg/api/v1/status-api/incidents/:iid/updatesPublicstateinvestigating, identified, in_progress, monitoring, resolved.bodycomponents{ component, status }. Up to 200 entries.Moving an incident to resolved auto-resets every component the incident touched back to operational and closes out its contribution to the uptime history.
{ "ok": true, "data": { "id": "u_456" } }Set a component status
https://hep.gg/api/v1/status-api/components/:cid/statusPublicstatusoperational, degraded, partial, outage, maintenance.curl -X POST https://hep.gg/api/v1/status-api/components/c_api/status \
-H "Authorization: Bearer hyd_status_xxx" \
-H "Content-Type: application/json" \
-d '{ "status": "operational" }'{ "ok": true }