Skip to main content
POST
Posts a new update on an incident. The update may carry a message body, a status transition, or both — at least one is required. Updates are append-only; to correct a previous statement, redact the original and post a new one.

Visibility

visibility is required on every request — there is no default. Posting public is rejected with no_public_surface (400) when the incident has no published Status Page whose selected components overlap with the incident’s affected components. Subscribe a Status Page to the affected components before publishing. Resolved incidents are terminalPOST against a resolved incident returns 400 incident_resolved. You may still redact updates on a resolved incident.

Path parameters

id
string
required
The UUID of the incident.

Request body

visibility
string
required
internal or public. No default — must be set explicitly.
body
string
Free-text message up to 10,000 characters. Required when visibility is public. Optional when visibility is internal — but at least one of body or statusChange must be set.
statusChange
string
Optional lifecycle transition. One of investigating, identified, monitoring, resolved. Must follow the existing sequence — see Update Status for the rules. When set, the incident’s status advances in the same write.

Response

Returns the created incident update.
data
object
required

Error responses

End-to-end example

A typical “investigate → publish update → resolve” flow:
This endpoint does not yet support client-supplied idempotency keys at the API layer. Retrying a transient 5xx may create a duplicate update — guard your callers with their own dedupe key (e.g. cache the id from the first 200 response) until end-to-end idempotency is exposed.