Overview
Returns incidents for your project, with summary counts. Supports filtering, sorting and asince parameter for polling.
GET /api/incidents
Authentication
X-API-Key: YOUR_API_KEY or Authorization: Bearer YOUR_JWT. A read-only key is sufficient.
Query parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
status | string | open, acknowledged, resolved or closed. | |
severity | string | critical, major, minor or warning. | |
type | string | timeout, status_code, keyword_missing, ssl_error, dns_error, dns_validation_error, connection_error or slow_response. | |
check_id | UUID | Only incidents for this monitor. | |
search | string | Case-insensitive match on incident title or monitor name. 1-200 characters. | |
limit | integer | 20 | 1-100. |
offset | integer | 0 | Items to skip. |
sort_by | string | created_at | created_at, updated_at, severity or status. |
sort_order | string | desc | asc or desc. |
since | integer | Unix timestamp in milliseconds; only incidents changed since then. |
Response
200 OK
{
"success": true,
"data": {
"incidents": [
{
"id": "3f6c1a52-9d1e-4b0a-8f7d-2a1b3c4d5e6f",
"check_id": "8d9e0f1a-2b3c-4d5e-8f6a-7b8c9d0e1f2a",
"monitor_name": "Checkout API",
"check_type": "HTTP",
"organization_id": "0b0f7a0e-2c3d-4f55-9a11-6f1c2f1d9a10",
"project_id": "7c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"status": "open",
"severity": "critical",
"type": "timeout",
"source": "system",
"started_at": "2026-09-30T09:12:04.000Z",
"error_message": "Request timed out after 30000ms",
"affected_regions": ["europe", "asia"],
"failure_count": 3,
"notification_sent": true,
"notification_channels": ["email", "slack"],
"acknowledged_by_name": null,
"created_at": "2026-09-30T09:12:05.000Z",
"updated_at": "2026-09-30T09:12:05.000Z"
}
],
"total_count": 1,
"has_more": false,
"stats": {
"open": 1,
"acknowledged": 0,
"resolved": 12,
"closed": 4,
"critical": 1
}
}
}
| Field | Type | Description |
|---|---|---|
incidents | array | Incident objects. |
total_count | number | Incidents matching the filters. |
has_more | boolean | true if another page exists after offset + limit. |
last_updated_at | number | Only present when since was supplied and results exist: the latest change time in milliseconds, usable as the next since value. |
stats | object | Counts of incidents by status, plus critical. |
Errors
| Status | Code | Cause |
|---|---|---|
400 | VALIDATION_ERROR | A query parameter is invalid; details.errors names the parameter. |
401 | MISSING_AUTH, INVALID_API_KEY, INVALID_TOKEN | Missing or invalid credentials. |
{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"details": { "errors": "limit: Too big: expected number to be <=100", "count": 1 }
}
}
Example
curl "https://api.uptimeio.com/api/incidents?status=open&severity=critical&limit=20" \
-H "X-API-Key: YOUR_API_KEY"