Skip to content
Navigation

Status API

Drive your status page from monitoring tools or scripts: flip a component's live status, open an incident, post updates, or pull the public snapshot.

The current public name for a component is "service": /status/services is the primary path. /status/components is a byte-identical legacy alias kept for existing consumers.

Components (services)

MethodPathPermission
GET/api/v1/status/servicesValid API key
POST/api/v1/status/servicesstatus_page.manage
GET/api/v1/status/services/:idValid API key
PATCH/api/v1/status/services/:idstatus_page.manage

PATCH accepts metadata fields (name, description, groupId, showUptime, segmentIds) and/or status in the same call. A { "status": "..." }-only body is the primary automation hook for monitoring tools like Datadog or Pingdom.

FieldDescription
id, groupIdComponent TypeID and its group, or null
name, descriptionDisplay fields
statusoperational, degraded_performance, partial_outage, major_outage, or under_maintenance
positionSort order
showUptimeWhether the uptime bar is shown publicly
segmentIdsAudience segments that can see this component
curl -X PATCH https://your-domain/api/v1/status/services/status_component_01h4... \
  -H "Authorization: Bearer qb_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{ "status": "degraded_performance" }'

Incidents and maintenance

MethodPathPermission
GET/api/v1/status/incidentsValid API key
POST/api/v1/status/incidentsstatus_page.publish
GET/api/v1/status/incidents/:idValid API key
POST/api/v1/status/incidents/:id/updatesstatus_page.publish

kind is incident or maintenance. Creating a maintenance window accepts scheduledStartAt/scheduledEndAt and autoStart/autoComplete to run it unattended. Posting a terminal update (resolved/completed) restores affected components to operational, unless skipRestore is set.

FieldDescription
statusinvestigating, identified, monitoring, resolved (incidents); scheduled, in_progress, verifying, completed (maintenance)
impactnone, minor, major, critical, or maintenance
affectedComponentsArray of { componentId, componentStatus }
updatesTimeline of { id, status, body, createdAt }
curl -X POST https://your-domain/api/v1/status/incidents \
  -H "Authorization: Bearer qb_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "kind": "incident",
    "title": "Elevated API error rates",
    "status": "investigating",
    "affectedComponents": [{ "componentId": "status_component_01h4...", "componentStatus": "partial_outage" }],
    "body": "We are investigating elevated error rates on the API."
  }'

Public summary

GET /api/v1/status/summary

Returns the same snapshot the public status page renders: overall status, every visible component, and active incidents. Requires a valid API key but no specific permission.

curl https://your-domain/api/v1/status/summary \
  -H "Authorization: Bearer qb_your_api_key"
{
  "data": {
    "status": "operational",
    "components": [
      { "id": "status_component_01h4...", "name": "API", "description": null, "status": "operational", "showUptime": true }
    ],
    "activeIncidents": []
  }
}

Next steps