> ## Documentation Index
> Fetch the complete documentation index at: https://docs.uptimeio.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Update Incident Status

> Acknowledge, resolve, or close an incident

## Overview

Moves an incident through its lifecycle. Allowed transitions:

| From | To |
| - | - |
| `open` | `acknowledged`, `resolved` |
| `acknowledged` | `resolved`, `closed` |
| `resolved` | `closed` |
| `closed` | none |

Any other transition, including setting the current status again, is rejected. The user making the request is recorded as the assignee unless you pass `assignee_id`.

`PUT /api/incidents/{id}/status`

## Authentication

`X-API-Key: YOUR_API_KEY` (`read_write` scope) or `Authorization: Bearer YOUR_JWT`. Requires the `can_manage_incidents` permission.

## Request body

| Field | Type | Required | Description |
| - | - | - | - |
| `status` | string | Yes | `open`, `acknowledged`, `resolved` or `closed`. |
| `note` | string | No | Up to 500 characters; stored with the status change. |
| `assignee_id` | UUID | No | User to record for this change. Defaults to the caller. |

## Example

```bash theme={null}
curl -X PUT https://api.uptimeio.com/api/incidents/3f6c1a52-9d1e-4b0a-8f7d-2a1b3c4d5e6f/status \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "status": "resolved", "note": "Rolled back the faulty deploy" }'
```

## Response

`200 OK`

```json theme={null}
{
  "success": true,
  "data": {
    "success": true,
    "incident": {
      "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": "resolved",
      "severity": "major",
      "type": "timeout",
      "source": "system",
      "started_at": "2026-09-30T09:12:04.000Z",
      "acknowledged_at": "2026-09-30T09:15:00.000Z",
      "resolved_at": "2026-09-30T09:45:00.000Z",
      "acknowledged_by_name": "On Call",
      "error_message": "Request timed out after 30000ms",
      "affected_regions": ["europe", "asia"],
      "failure_count": 3,
      "recovery_time_seconds": 1976,
      "notification_sent": true,
      "notification_channels": ["email", "slack"],
      "resolved_by": "manual",
      "created_at": "2026-09-30T09:12:05.000Z",
      "updated_at": "2026-09-30T09:45:00.000Z"
    },
    "recovery_time_seconds": 1976
  }
}
```

`data.incident` is the full [incident object](/api-reference/incidents/get#incident-object). `data.recovery_time_seconds` is present when the change resolved the incident.

## Errors

| Status | Code | When |
| - | - | - |
| `400` | `VALIDATION_ERROR` | Invalid body, or a disallowed transition. |
| `401` | `MISSING_AUTH`, `INVALID_API_KEY`, `INVALID_TOKEN` | Missing or invalid credentials. |
| `403` | `READ_ONLY_API_KEY`, `INSUFFICIENT_PERMISSIONS` | Key is read-only, or the user cannot manage incidents. |
| `404` | `RESOURCE_NOT_FOUND` | No such incident in your project. |

Invalid transition:

```json theme={null}
{
  "success": false,
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Cannot transition incident from 'resolved' to 'open'. Valid transitions: closed"
  }
}
```

Other messages: `Incident is already in status: open` and `Cannot transition incident from 'closed' to 'open'. Incident is in final state and cannot be modified.`


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.