Open Status
Automation API

Automation API

Bearer authentication, endpoints, parameters, and responses.

Status exposes a bearer-key API for monitor automation, deployment ingestion, and incident integrations. Browser-only management routes are not a general public API. Create a key in Settings → Security & sessions or the Operations toolkit, give it only the needed scopes, and send:

HTTP
Authorization: Bearer status_…
Content-Type: application/json

A key is permanently bound to the organization active at creation. Responses are JSON unless an export is returned as an attachment. Unknown fields are rejected on strict request types. Errors use an HTTP status plus a JSON error body; rate-limited endpoints also return Retry-After and limit headers.

Endpoint summary

Method and pathScopePurpose
GET /api/monitorsmonitors:readList organization monitors
POST /api/monitorsmonitors:writeCreate one typed monitor
PATCH /api/monitors/{id}monitors:writeReplace typed configuration or send { "enabled": boolean }
DELETE /api/monitors/{id}monitors:writeDelete a monitor to the recycle bin
GET /api/monitors/exportmonitors:readDownload the versioned, secret-bearing package
POST /api/monitors/importmonitors:writeAtomically import a versioned package
GET /api/deployment-eventsevents:readList deployment events
POST /api/deployment-eventsevents:writeIdempotently ingest a deployment event
GET /api/incidentsincidents:readList incidents
POST /api/incidentsincidents:writeDeclare an incident
PATCH /api/incidents/{id}incidents:writeAdd a public status update and change status
DELETE /api/incidents/{id}incidents:writeDelete an incident to the recycle bin
POST /api/external-alertsincidents:writeIngest canonical or provider-shaped alert lifecycle events

Write scope implies the corresponding read scope. API-key lifecycle endpoints, cross-organization monitor transfer, instance settings, team management, and other console administration remain session-only.

Monitors

Monitor create and update take a discriminated object: kind selects which typed configuration applies, and the browser editor and the API run the same validation. The fields below are the ones every kind shares. For the exact current shape of one kind, export a representative monitor — but do not send the outer transfer package back as a single-monitor create.

GET/api/monitors
Scope
monitors:read
Autorisatie
Bearer-API-sleutel

Every monitor in the organization, with its current state.

200OK
JSON
{ "monitors": [{ "id": "5a75c040-…", "name": "Checkout API", "status": "up" }] }
POST/api/monitors
Scope
monitors:write
Autorisatie
Bearer-API-sleutel

Creates one monitor. Unknown fields are rejected, including settings exported by a newer version that this instance does not support.

Body
kindenumverplicht

Which check to run. Decides which type-specific fields the rest of the body must carry — see Monitoring.

een vanhttp, tcp, ping, dns, tls, udp, smtp, ssh, database, websocket, heartbeat, api_sequence
namestringverplicht

How the monitor is listed and named in incidents and alerts.

regel2–80 characters
intervalSecondsintegerverplicht

How often the check runs.

regel30–86400
timeoutMsintegerverplicht

How long one attempt may take before it counts as a failure.

regel1000–30000
confirmationPeriodSecondsintegerverplicht

How long failure must persist before the monitor goes down. This is what keeps a single blip from paging anyone.

regel0–86400
recoveryPeriodSecondsintegerverplicht

How long success must persist before a down monitor comes back up.

regel0–86400
ipVersionenumverplicht

Which address family to check. dual checks both and is what IPv4 and IPv6 availability describes.

een vanauto, ipv4, ipv6, dual
regionsstring[]optioneel

Which worker locations run the check. Empty means any.

standaard[]regelup to 20 names
agentIdsstring[]optioneel

Private agents to pin the check to, for a target no shared worker can reach.

regelup to 20, unique
regionPolicyenumoptioneel

How many regions must agree before the result is accepted.

een vanall, majority, anystandaardall
retryCountintegeroptioneel

Immediate retries before an attempt is recorded as a failure.

standaard0regel0–5
maxResponseTimeMsintegeroptioneel

Treat a slow-but-successful check as a failure above this. 0 disables it.

standaard0regel0–3600000
dependencyIdsstring[]optioneel

Monitors this one depends on. A failure while a dependency is down is suppressed rather than paged.

standaard[]regelup to 20 UUIDs
tagsstring[]optioneel

Classification, alongside folder and environment — see Taxonomy and ownership.

standaard[]regelup to 20, deduplicated
201Created

Carries the monitor, and for a heartbeat monitor its ingest URL — shown once.

400Rejected

Validation failed, or a referenced dependency, region or agent is not available to the organization.

PATCH/api/monitors/{id}
Scope
monitors:write
Autorisatie
Bearer-API-sleutel

Two accepted bodies, and which one you send decides what happens: the full typed configuration replaces it, { "enabled": boolean } only pauses or resumes. There is no partial update — a half-specified check is not a check.

Path
idstringverplicht

The monitor's UUID.

Body — pause or resume
enabledbooleanverplicht

false stops scheduling without deleting anything or losing history.

200OK
DELETE/api/monitors/{id}
Scope
monitors:write
Autorisatie
Bearer-API-sleutel

Moves the monitor to the recycle bin, where it is restorable for 30 days. Its results go with it.

200OK
JSON
{ "deleted": true }

Export and import are the stable bulk portability contract and accept at most 100 monitors atomically. They remap dependencies and return newly created heartbeat URLs once. See Import, export, and clone monitors.

Incidents

GET/api/incidents
Scope
incidents:read
Autorisatie
Bearer-API-sleutel

Every incident in the organization, newest first, each with its full public update timeline, assignment, acknowledgement and affected monitors.

POST/api/incidents
Scope
incidents:write
Autorisatie
Bearer-API-sleutel

Declares an incident. It opens as investigating with the message below as its first public update.

Body
titlestringverplicht

What is wrong, in the words customers will read.

regel3–120 characters
messagestringverplicht

The initial public incident update. Required when creating an incident.

regel3–2000 characters
severityenumverplicht

Impact level. Agree your own examples for each — see Incidents.

een vanminor, major, critical
monitorIdstring | nullverplicht

The monitor that detected it, or null for one you are declaring by hand. Must belong to the organization.

componentIdsstring[]optioneel

Status-page components to mark as affected. Each must belong to a status page in this organization.

standaard[]regelup to 100 UUIDs, deduplicated
201Created
JSON
{
  "incident": {
    "id": "1f2e3d4c-5b6a-4788-9c0d-1e2f3a4b5c6d",
    "title": "Checkout is failing",
    "severity": "critical",
    "status": "investigating",
    "monitorId": "5a75c040-9383-4fe3-8c08-aa66c5f149d4",
    "monitorName": "Checkout API",
    "startedAt": "2025-12-01T12:00:00.000Z",
    "resolvedAt": null,
    "updates": [
      {
        "status": "investigating",
        "message": "We are investigating failed checkouts.",
        "visibility": "public",
        "createdAt": "2025-12-01T12:00:00.000Z"
      }
    ]
  }
}
400Rejected

The correlated monitor or one of the components does not belong to the organization.

PATCH/api/incidents/{id}
Scope
incidents:write
Autorisatie
Bearer-API-sleutel

Adds a public update and moves the incident's status. Both together: a status change with nothing said about it is what leaves a status page stale.

Path
idstringverplicht

The incident's UUID.

Body
statusenumverplicht

Where the response has got to. resolved closes the incident and stamps resolvedAt.

een vaninvestigating, identified, monitoring, resolved
messagestringverplicht

The public update. Appended to the timeline, attributed to the key's owner.

regel3–2000 characters
200OK
DELETE/api/incidents/{id}
Scope
incidents:write
Autorisatie
Bearer-API-sleutel

Moves the incident to the recycle bin for 30 days.

200OK
JSON
{ "deleted": true }

External alert ingestion adds provider and external identity, firing/resolved idempotency, provider payload normalization, label-based grouping, and its own rate limit. Its full contract is in External alerts.

Security and limits

Treat exports and API responses that intentionally contain monitor configuration as secrets. Rotate a key to replace its bearer value immediately or revoke it while preserving audit history. See Scoped API keys, API rate limits, and Monitor credentials and secrets.