Resolve Incident
Resolves an Incident Management incident from any non-closed status. This is the only endpoint that can move an incident to resolved.
POST /api/im/incidents/:id/resolve
Resolves an incident from any non-closed status (triggered, acknowledged, investigating, identified, monitoring). This is the only endpoint that can move an incident to resolved; Change status deliberately rejects resolved as a target.
Resolving stops escalation, sends the resolve notices to the people who were paged, updates status pages driven by a status page rule and notifies outbound integrations. For a test incident (isTest: true) the notices, status page update and outbound notification are skipped.
Authentication
Any IM-eligible role (admin, editor, responder) or an organization-wide API token, see Authentication. Incident Management must be enabled for the organization.
Restricted to the incident's team: you must be a member of the incident's team (teamId) or an organization admin. An organization-wide API token passes as an organization admin. Acknowledging is not restricted this way.
Request Body
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
note | string | No | null | Optional free-text resolution note, up to 10,000 characters. |
Example (cURL)
curl -X POST "$BASE_URL/api/im/incidents/42/resolve" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{ "note": "Restarted the connection pool, monitoring for recurrence." }'Response
200 OK: the updated incident row (same shape as the items of List Incidents, without the enrichment fields).
{
"id": 42,
"organizationId": 1,
"teamId": 3,
"title": "Database connection pool exhausted",
"customerId": null,
"primarySourceId": 7,
"severity": "sev1",
"severityManual": false,
"status": "resolved",
"mergedIntoId": null,
"escalationPolicyId": null,
"currentTier": null,
"escalationEpoch": 2,
"escalationCycle": 0,
"acknowledgedBy": "MFcTjWmYq2LpzR8vK1sXo",
"acknowledgedAt": "2026-07-17T09:20:00.000Z",
"snoozedUntil": null,
"autoResolve": true,
"resolvedBy": null,
"resolveNote": "Restarted the connection pool, monitoring for recurrence.",
"statuspageUpdate": null,
"createdBy": null,
"sourceKind": "alert",
"isTest": false,
"triggeredAt": "2026-07-17T09:12:00.000Z",
"resolvedAt": "2026-07-17T09:45:00.000Z"
}Common errors
401 Unauthorizedwhen not authenticated403 Forbidden(customerScopedTokenForbidden) when using a customer-scoped token403 Forbidden(imAccessDenied) when the session user has no IM-eligible role403 Forbidden(imNotEnabled) when Incident Management is not enabled for the organization403 Forbidden(imTeamMembershipRequired) when you are neither a member of the incident's team nor an organization admin400 Bad Request(invalidRequestBody) when:idis not a positive integer, ornoteis not a string or exceeds 10,000 characters404 Not Found(imIncidentNotFound) when the incident does not exist, or belongs to another organization422 Unprocessable Entity(imIncidentAlreadyClosed) when the incident is alreadyresolvedormerged409 Conflict(imIncidentStatusConflict) when the incident was closed concurrently between the read and the write
Acknowledge / Update Incident Status
Acknowledges an Incident Management incident, or moves it between the open statuses (acknowledged, investigating, identified, monitoring).
Change Incident Severity
Sets the severity of an Incident Management incident by hand. The value then sticks and is no longer derived from its alerts.