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.
StatusWhencode
401No Authorization headerNO_KEY
401Key not recognizedBAD_KEY
401Key disabledKEY_DISABLED
403Page suspended, or the owning account is not in good standing-
404Component or incident id not on this page-
400Body 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

GEThttps://hep.gg/api/v1/status-api/statusPublic
Overall status, leaf components, and active incidents for the key's page.
200 response
{
  "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

POSThttps://hep.gg/api/v1/status-api/incidentsPublic
Open a new incident on the key's page.
Body
title
stringrequired
Incident title. 1 to 200 characters.
impact
stringoptional
One of none, minor, major, critical. Defaults to none when omitted.
body
stringoptional
Text of the first update. Up to 5000 characters.
components
object[]optional
Affected components to set at open time. Each is { component, status }. Up to 200 entries.
curl
curl -X POST https://hep.gg/api/v1/status-api/incidents \
  -H "Authorization: Bearer hyd_status_xxx" \
  -H "Content-Type: application/json" \
  -d '{
        "title": "Elevated API latency",
        "impact": "minor",
        "body": "We are investigating elevated latency.",
        "components": [{ "component": "API", "status": "degraded" }]
      }'
200 response
{ "ok": true, "data": { "id": "i_123" } }

Post an update / change state

POSThttps://hep.gg/api/v1/status-api/incidents/:iid/updatesPublic
Append an update to an incident and move its state.
Body
state
stringrequired
The incident's new state: one of investigating, identified, in_progress, monitoring, resolved.
body
stringoptional
Update text. Up to 5000 characters.
components
object[]optional
Component statuses to set with this update. Each is { 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.

200 response
{ "ok": true, "data": { "id": "u_456" } }

Set a component status

POSThttps://hep.gg/api/v1/status-api/components/:cid/statusPublic
Set a single component's status directly (no incident).
Body
status
stringrequired
One of operational, degraded, partial, outage, maintenance.
curl
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" }'
200 response
{ "ok": true }