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
Auth
Bearer API key

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
Auth
Bearer API key

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

Body
kindenumrequired

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

one ofhttp, tcp, ping, dns, tls, udp, smtp, ssh, database, websocket, heartbeat, api_sequence
namestringrequired

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

rule2–80 characters
intervalSecondsintegerrequired

How often the check runs.

rule30–86400
timeoutMsintegerrequired

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

rule1000–30000
confirmationPeriodSecondsintegerrequired

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

rule0–86400
recoveryPeriodSecondsintegerrequired

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

rule0–86400
ipVersionenumrequired

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

one ofauto, ipv4, ipv6, dual
regionsstring[]optional

Which worker locations run the check. Empty means any.

default[]ruleup to 20 names
agentIdsstring[]optional

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

ruleup to 20, unique
regionPolicyenumoptional

How many regions must agree before the result is accepted.

one ofall, majority, anydefaultall
retryCountintegeroptional

Immediate retries before an attempt is recorded as a failure.

default0rule0–5
maxResponseTimeMsintegeroptional

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

default0rule0–3600000
dependencyIdsstring[]optional

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

default[]ruleup to 20 UUIDs
tagsstring[]optional

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

default[]ruleup 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
Auth
Bearer API key

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
idstringrequired

The monitor's UUID.

Body — pause or resume
enabledbooleanrequired

false stops scheduling without deleting anything or losing history.

200OK
DELETE/api/monitors/{id}
Scope
monitors:write
Auth
Bearer API key

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
Auth
Bearer API key

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
Auth
Bearer API key

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

Body
titlestringrequired

What is wrong, in the words customers will read.

rule3–120 characters
messagestringrequired

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

rule3–2000 characters
severityenumrequired

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

one ofminor, major, critical
monitorIdstring | nullrequired

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

componentIdsstring[]optional

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

default[]ruleup 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
Auth
Bearer API key

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
idstringrequired

The incident's UUID.

Body
statusenumrequired

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

one ofinvestigating, identified, monitoring, resolved
messagestringrequired

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

rule3–2000 characters
200OK
DELETE/api/incidents/{id}
Scope
incidents:write
Auth
Bearer API key

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.