Incidents
Incidents communicate outages on your status page. They can be created two ways:
- Manually —
POST /incidentsor the dashboard incident form - Automatically — a monitor with
auto_create_incidentopens an incident when it goes down;auto_publish_incidentpublishes it immediately
curl -X POST https://api.shxrk.systems/api/v1/uptime/incidents \
-H "Authorization: Bearer sk_shx_..." \
-H "Content-Type: application/json" \
-d '{
"status_page_id": "<status_page_uuid>",
"title": "Elevated API latency",
"description": "We are seeing increased response times on the API.",
"severity": "major",
"status": "investigating",
"is_public": true,
"monitor_ids": ["<monitor_uuid>"]
}'
Severity: minor major critical. Status flow: investigating → identified → monitoring → resolved.
Timeline updates
Keep subscribers informed as you work:
curl -X POST https://api.shxrk.systems/api/v1/uptime/incidents/<id>/updates \
-H "Authorization: Bearer sk_shx_..." \
-H "Content-Type: application/json" \
-d '{ "status": "identified", "message": "Root cause identified: connection pool exhaustion." }'
Publishing controls visibility: POST /incidents/:id/publish and /unpublish toggle whether the incident appears on the public page.
Incident templates
Reusable templates per status page (/status-pages/:id/incident-templates) so recurring incidents take seconds to post — title, body, severity and an initial update prefilled:
curl -X POST https://api.shxrk.systems/api/v1/uptime/status-pages/<id>/incident-templates \
-H "Authorization: Bearer sk_shx_..." \
-H "Content-Type: application/json" \
-d '{
"name": "database-outage",
"title": "Database connectivity issues",
"severity": "major",
"status": "investigating",
"initial_update": "We are investigating elevated error rates on the database.",
"is_public": true
}'
Maintenance windows
Scheduled maintenance silences alerts and marks monitors as under maintenance on the status page:
curl -X POST https://api.shxrk.systems/api/v1/uptime/maintenance \
-H "Authorization: Bearer sk_shx_..." \
-H "Content-Type: application/json" \
-d '{
"status_page_id": "<uuid>",
"title": "Database migration",
"description": "Primary DB failover for schema migration",
"start_time": "2025-02-01T02:00:00Z",
"end_time": "2025-02-01T04:00:00Z",
"is_public": true,
"targets": [{ "target_type": "monitor", "target_id": "<monitor_uuid>" }],
"recurrence_type": "none"
}'
Recurring windows: recurrence_type = daily/weekly/monthly, plus recurrence_interval, recurrence_end_date, recurrence_day_of_week/recurrence_day_of_month. Post progress with POST /maintenance/:id/updates (status, message).
Event rules
Event rules (/status-pages/:id/events/rules) trigger custom logic on lifecycle events — e.g. opening an incident from a template or notifying a channel when a specific monitor goes down. Emitted events land in the event log (/status-pages/:id/events/log), and your own systems can emit custom events:
curl -X POST https://api.shxrk.systems/api/v1/uptime/status-pages/<id>/events/emit \
-H "Authorization: Bearer sk_shx_..." \
-H "Content-Type: application/json" \
-d '{
"event_name": "deploy.started",
"classification": "public",
"title": "Deploy v2.4.1",
"description": "Rolling deploy started",
"monitor_id": "<monitor_uuid>",
"payload": "{\"version\":\"2.4.1\"}"
}'