Browse the docs

Requests and responses

The base URL, the response envelope, pagination, timestamps and identifiers.

On this page
  1. Base URL
  2. The envelope
  3. Scoping requests to a workspace
  4. Pagination
  5. Identifiers, times and text
  6. Rate limits
  7. Versioning

Base URL

Base URL
https://api.statusbee.co

All paths in this reference are relative to it. Requests and responses are JSON; send Content-Type: application/json on anything with a body.

The envelope

Every successful response has the same shape. The interesting part is always under data.

Success
{
  "statusCode": 200,
  "error": false,
  "message": null,
  "data": { "rows": [] }
}

Errors use the same top-level keys with error set to the HTTP reason and message explaining what went wrong. Some carry a machine-readable data.code. See Errors.

Scoping requests to a workspace

Resources are flat: an incident is /user/incidents/42 regardless of which page or workspace it belongs to. Access is checked from the resource itself. Collection reads take the scope as a query parameter, workspace_id or page_id, and creates take it in the body.

Scoped byEndpoints
workspace_idpages, incidents, maintenances, monitors, message templates, webhooks, analytics overview, audit log
page_idcomponents, component groups, subscribers, page analytics
org_idAPI keys, billing

Pagination

List endpoints that can grow large take limit and offset and return them back with the total count:

Paginated data
{ "rows": [], "count": 137, "limit": 20, "offset": 40 }

Limits are clamped to each endpoint's maximum (20 to 100 depending on the resource). Smaller collections such as pages, monitors and webhooks return every row under rows with no paging.

Identifiers, times and text

  • Identifiers are integers.
  • Timestamps are ISO 8601 strings in UTC, for example 2026-09-14T02:14:36.418Z.
  • Free text such as incident updates is Markdown, stored as typed. The dashboard renders it; webhooks and the public status page snapshot carry the raw Markdown.
  • Enumerated values are lowercase with underscores: major_outage, in_progress, degraded_performance.

Rate limits

Authenticated endpoints are not rate limited beyond what the platform can serve. The public endpoints are: subscribing is limited to 20 attempts per 15 minutes per address, heartbeat pings to 120 per minute per token, and page-view beacons to 60 per minute. Limited responses are 429 with standard RateLimit-* headers.

Versioning

There is one version of the API. Fields are added, never removed or renamed, and new enumerated values may appear; write clients that ignore fields and values they do not know.