Incidents.
Manage status-page incidents programmatically. Every incident has a four-state lifecycle (Investigating → Identified → Monitoring → Resolved) and a list of affected components.
The Incident object
{
"id": "inc_1402",
"title": "Checkout latency degraded",
"state": "monitoring",
"severity": "p2",
"impact": "partial",
"affected_components": ["comp_checkout", "comp_api"],
"status_page_id": "sp_shipOS",
"updates": [
{
"state": "investigating",
"body": "Elevated errors on checkout submit. Looking.",
"posted_at": "2026-04-18T02:19:00Z"
},
{
"state": "identified",
"body": "Root cause: stale connection pool. Fix rolling out.",
"posted_at": "2026-04-18T02:34:00Z"
}
],
"started_at": "2026-04-18T02:17:00Z",
"resolved_at": null,
"postmortem_url": null,
"created_at": "2026-04-18T02:19:00Z"
}Lifecycle states
investigating— acknowledged, root cause unknownidentified— root cause confirmed, fix underwaymonitoring— fix deployed, verifying recoveryresolved— incident closed
Severity levels
p1— core service down / paying users blockedp2— feature degraded, workarounds availablep3— minor issue, monitoring-only
List incidents
/v0/incidentsQuery params: state, severity, status_page_id, from, to, cursor, limit.
Create an incident
/v0/incidentscurl -X POST https://api.brily.app/v0/incidents \
-H "Authorization: Bearer $BRILY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"title": "Checkout latency degraded",
"severity": "p2",
"impact": "partial",
"affected_components": ["comp_checkout"],
"status_page_id": "sp_shipOS",
"initial_update": {
"state": "investigating",
"body": "Elevated errors on checkout submit. Looking."
}
}'Post an update
/v0/incidents/{id}/updatescurl -X POST https://api.brily.app/v0/incidents/inc_1402/updates \
-H "Authorization: Bearer $BRILY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"state": "identified",
"body": "Root cause: stale DB connection pool. Rolling fix to canary."
}'Every update publishes to the status page and notifies all subscribers by email (or RSS). The statefield on the parent incident is automatically set to the latest update's state.
Resolve an incident
/v0/incidents/{id}/resolve{
"body": "Fully recovered across all regions. Post-mortem to follow within 72h."
}Attach a post-mortem
/v0/incidents/{id}{
"postmortem_url": "https://status.ship-os.com/incidents/inc_1402/postmortem"
}We host post-mortems on the status page by default. Pass a URL to link an external write-up (e.g., engineering blog).
Promote an alert to an incident
/v0/alerts/{alert_id}/promoteShortcut that creates an incident with affected_componentspre-filled from the alert's monitor, and an initial investigatingupdate with the alert's context embedded. This is what the one-click button in the dashboard calls.
curl -X POST https://api.brily.app/v0/alerts/alt_7Fq/promote \
-H "Authorization: Bearer $BRILY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"severity": "p1",
"status_page_id": "sp_shipOS"
}'