API Reference
API: Incidents
Create, update, and manage incidents programmatically. All endpoints require a workspace API token. See Authentication for setup.
Create an incident
POST /api/v1/pages/{pageSlug}/incidents
Creates a new incident on the specified status page. If a message is provided, it becomes the first timeline update.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
title |
string | Yes | Short summary of the incident. Max 255 characters. |
impact |
string | No | One of: none, minor, major, critical. Defaults to none. |
state |
string | No | One of: investigating, identified, monitoring, resolved. Defaults to investigating. |
message |
string | No | Initial update message. If provided, creates the first timeline entry. |
Example request
curl -X POST https://usebeacon.pro/api/v1/pages/acme-cloud/incidents \
-H "Authorization: Bearer bkn_live_a1b2c3d4e5f6..." \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"title": "Elevated API latency in US-East",
"impact": "minor",
"state": "investigating",
"message": "We are observing p99 latency above 2s for API requests routed through US-East. Investigating the root cause."
}'
Example response
Status: 201 Created
{
"data": {
"id": "9f1a2b3c-4d5e-6f7a-8b9c-0d1e2f3a4b5c",
"title": "Elevated API latency in US-East",
"impact": "minor",
"state": "investigating",
"resolved": false,
"resolved_at": null,
"created_at": "2026-04-04T14:32:00Z",
"updated_at": "2026-04-04T14:32:00Z",
"updates": [
{
"id": "upd_7e8f9a0b1c2d",
"message": "We are observing p99 latency above 2s for API requests routed through US-East. Investigating the root cause.",
"created_at": "2026-04-04T14:32:00Z"
}
]
}
}
Update an incident
PATCH /api/v1/incidents/{incidentId}
Updates the properties of an existing incident. Only the fields you include in the request body are changed; omitted fields remain unchanged.
Updatable fields
| Field | Type | Description |
|---|---|---|
title |
string | Update the incident title. |
impact |
string | Change the impact level. |
state |
string | Transition to a new state. |
resolved |
boolean | Set to true to mark the incident as resolved and set the resolved_at timestamp. |
Example request
curl -X PATCH https://usebeacon.pro/api/v1/incidents/9f1a2b3c-4d5e-6f7a-8b9c-0d1e2f3a4b5c \
-H "Authorization: Bearer bkn_live_a1b2c3d4e5f6..." \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"state": "identified",
"impact": "major"
}'
Example response
Status: 200 OK
{
"data": {
"id": "9f1a2b3c-4d5e-6f7a-8b9c-0d1e2f3a4b5c",
"title": "Elevated API latency in US-East",
"impact": "major",
"state": "identified",
"resolved": false,
"resolved_at": null,
"created_at": "2026-04-04T14:32:00Z",
"updated_at": "2026-04-04T14:48:00Z"
}
}
Resolving an incident
To resolve an incident in a single call, set both state and resolved:
curl -X PATCH https://usebeacon.pro/api/v1/incidents/9f1a2b3c-4d5e-6f7a-8b9c-0d1e2f3a4b5c \
-H "Authorization: Bearer bkn_live_a1b2c3d4e5f6..." \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"state": "resolved",
"resolved": true
}'
This sets resolved_at to the current timestamp and moves the incident to history on the public page.
Add an incident update
POST /api/v1/incidents/{incidentId}/updates
Adds a new timeline entry to an existing incident. This triggers subscriber notifications.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
message |
string | Yes | The update text. Displayed in the incident timeline. |
Example request
curl -X POST https://usebeacon.pro/api/v1/incidents/9f1a2b3c-4d5e-6f7a-8b9c-0d1e2f3a4b5c/updates \
-H "Authorization: Bearer bkn_live_a1b2c3d4e5f6..." \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"message": "We identified a misconfigured routing rule in the US-East load balancer. A corrected configuration is being deployed now. ETA: 10 minutes."
}'
Example response
Status: 201 Created
{
"data": {
"id": "upd_3c4d5e6f7a8b",
"incident_id": "9f1a2b3c-4d5e-6f7a-8b9c-0d1e2f3a4b5c",
"message": "We identified a misconfigured routing rule in the US-East load balancer. A corrected configuration is being deployed now. ETA: 10 minutes.",
"created_at": "2026-04-04T14:52:00Z"
}
}
Status codes
| Code | Meaning |
|---|---|
201 |
Incident or update created successfully. |
200 |
Incident updated successfully. |
401 |
Missing or invalid API token. |
404 |
Page or incident not found. |
422 |
Validation error (e.g. missing title, invalid impact value). |
429 |
Rate limit exceeded. |
See Errors & Rate Limits for details on error response format and handling.