Skip to main content

Overview

Resolve an incident on your status page. This is a convenience endpoint that transitions an incident to resolved status and automatically sets the resolution timestamp. Use this for straightforward resolutions or use the update endpoint for more control over the transition process.

Authentication

All requests must include authentication via API Key:
  • API Key: X-API-Key: YOUR_API_KEY

Request

curl -X POST https://api.uptimeio.com/api/projects/440e8400-e29b-41d4-a716-446655440001/status-pages/550e8400-e29b-41d4-a716-446655440000/incidents/990e8400-e29b-41d4-a716-446655440050/resolve \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{
    "message": "Service fully restored. All systems operational."
  }'

Path Parameters

ParameterTypeDescription
projectIdUUIDThe ID of the project
statusPageIdUUIDThe ID of the status page
idUUIDThe ID of the incident

Request Body

FieldTypeRequiredDescription
messagestringNoFinal resolution message (1-5000 characters)
The message field is optional. If not provided, a default resolution message will be used.

Response

Returns the resolved incident with a final update.
{
  "success": true,
  "data": {
    "incident": {
      "id": "990e8400-e29b-41d4-a716-446655440050",
      "status_page_id": "550e8400-e29b-41d4-a716-446655440000",
      "title": "API Service Degradation",
      "message": "We are experiencing elevated response times on our API servers",
      "severity": "major",
      "status": "resolved",
      "affected_monitor_ids": [
        "770e8400-e29b-41d4-a716-446655440010",
        "770e8400-e29b-41d4-a716-446655440011"
      ],
      "created_at": "2024-12-26T11:00:00Z",
      "updated_at": "2024-12-26T13:30:00Z",
      "resolved_at": "2024-12-26T13:30:00Z"
    },
    "resolution_update": {
      "id": "aa0e8400-e29b-41d4-a716-446655440100",
      "incident_id": "990e8400-e29b-41d4-a716-446655440050",
      "message": "Service fully restored. All systems operational.",
      "status": "resolved",
      "created_at": "2024-12-26T13:30:00Z",
      "created_by": "user"
    }
  }
}

Response Fields

Incident Object:
FieldTypeDescription
idUUIDUnique incident identifier
status_page_idUUIDStatus page ID
titlestringIncident title
messagestringIncident description
severitystringSeverity level
statusstringStatus (now “resolved”)
affected_monitor_idsUUID[]List of affected monitors
created_attimestampCreation timestamp
updated_attimestampUpdated timestamp
resolved_attimestampResolution timestamp
Resolution Update Object:
FieldTypeDescription
idUUIDUpdate ID
incident_idUUIDParent incident ID
messagestringResolution message
statusstringStatus (“resolved”)
created_attimestampResolution timestamp
created_bystringUser ID or “system”

Status Codes

StatusDescription
200Incident resolved successfully
400Validation error (invalid message or incident already resolved)
401Unauthorized (missing or invalid token)
403Forbidden (no permission to resolve incident)
404Incident or status page not found

Examples

Resolve with Custom Message

curl -X POST https://api.uptimeio.com/api/projects/440e8400-e29b-41d4-a716-446655440001/status-pages/550e8400-e29b-41d4-a716-446655440000/incidents/990e8400-e29b-41d4-a716-446655440050/resolve \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "message": "The service has been fully restored and all systems are operating normally. We apologize for the inconvenience."
  }'

Resolve Without Message

curl -X POST https://api.uptimeio.com/api/projects/440e8400-e29b-41d4-a716-446655440001/status-pages/550e8400-e29b-41d4-a716-446655440000/incidents/990e8400-e29b-41d4-a716-446655440050/resolve \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

Comparison with Update Endpoint

You can achieve the same result using the update endpoint if you prefer more granular control:
curl -X POST https://api.uptimeio.com/api/projects/{projectId}/status-pages/{statusPageId}/incidents/{id}/resolve \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{"message": "Resolved"}'
Use the resolve endpoint for quick, straightforward resolutions. Use the update endpoint if you want to go through other status transitions first (e.g., investigating -> identified -> monitoring -> resolved).

Error Codes

Message Too Long

{
  "success": false,
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Validation failed: message: String must contain at most 5000 character(s)"
  }
}

Incident Already Resolved

{
  "success": false,
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Incident is already resolved"
  }
}

Incident Not Found

{
  "success": false,
  "error": {
    "code": "NOT_FOUND",
    "message": "Incident not found"
  }
}

Forbidden

{
  "success": false,
  "error": {
    "code": "FORBIDDEN",
    "message": "You do not have permission to resolve this incident"
  }
}