Status API

Drive your status page from monitoring tools: update service status, open incidents, post updates, schedule maintenance and read the public summary over the REST API.

JM
James Morton
Written By James MortonLast updated about 2 hours ago

The Status API lets you drive your status page from monitoring tools or scripts: change a service's status, open an incident, post updates, schedule maintenance, or read the public summary. This article summarizes the endpoints. For full schemas, use your workspace's API reference at /api/v1/docs.

Note: Quackback doesn't check your services itself. Status changes come from your team in the admin or from this API, so connect your monitoring tool here to automate them. The Status module must be on (in Admin > Settings > General). See Set up a status page.

Status endpoints use the Feedback access level on API keys (read:feedback to read, write:feedback to write), plus the matching status page permission of the key's creator.

Services (components)

A service is one row on your status page, such as "API" or "Dashboard". /api/v1/status/services is the main path. /api/v1/status/components is an identical older alias.

Method

Path

Permission

GET

/api/v1/status/services

Any valid API key

POST

/api/v1/status/services

Manage the status page

GET

/api/v1/status/services/{id}

Any valid API key

PATCH

/api/v1/status/services/{id}

Manage the status page

PATCH accepts name, description, groupId, showUptime, segmentIds and status, in any combination. A body with only status is the simplest hook for a monitoring tool:

curl -X PATCH https://feedback.example.com/api/v1/status/services/status_component_01h4... \
  -H "Authorization: Bearer qb_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{ "status": "degraded_performance" }'

Service statuses: operational, degraded_performance, partial_outage, major_outage, under_maintenance.

Incidents and maintenance

Method

Path

Permission

GET

/api/v1/status/incidents

Any valid API key

POST

/api/v1/status/incidents

Publish to the status page

GET

/api/v1/status/incidents/{id}

Any valid API key

POST

/api/v1/status/incidents/{id}/updates

Publish to the status page

Create an incident:

curl -X POST https://feedback.example.com/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."
  }'

Field

Values

kind

incident or maintenance

status

Incidents: investigating, identified, monitoring, resolved. Maintenance: scheduled, in_progress, verifying, completed.

impact

none, minor, major, critical or maintenance

affectedComponents

A list of { componentId, componentStatus }

body

The first update's text (required)

For maintenance, set scheduledStartAt and scheduledEndAt, and autoStart and autoComplete to run the window unattended.

Post an update with status, body and optional skipRestore. A final update (resolved or completed) sets the affected services back to operational unless skipRestore is true.

Public summary

curl https://feedback.example.com/api/v1/status/summary \
  -H "Authorization: Bearer qb_your_api_key"

Returns the same snapshot the public status page shows: the overall status, each visible service, and active incidents.

{
  "data": {
    "status": "operational",
    "components": [
      { "id": "status_component_01h4...", "name": "API", "description": null, "status": "operational", "showUptime": true }
    ],
    "activeIncidents": []
  }
}

Was this helpful?

Your feedback shapes what we write next.