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

# Redact Incident Update

> Wipe the body of an incident update and record who removed it. Append-only — the row itself is preserved.

Removes the body of an incident update. The row stays at its original `postedAt`; `body` is cleared, and `redactedAt` / `redactedBy` are set. The `statusChange` carried by the update — if any — is **preserved**: the system cannot lie about lifecycle state.

To correct a previous statement, redact the original and post a new update.

## Who can redact

| Caller                | When                            |
| --------------------- | ------------------------------- |
| The original author   | Within 5 minutes of `postedAt`. |
| An organization admin | At any time.                    |

`POST` is used (not `DELETE` or `PATCH`) to reflect the append-only contract at the URL level: nothing is deleted, and no field is edited — the redaction is an explicit, named action.

Redaction is permitted even after the incident is `resolved` — it is the only mutation that survives the terminal status.

## Path parameters

<ParamField path="id" type="string" required>
  The UUID of the incident.
</ParamField>

<ParamField path="updateId" type="string" required>
  The server-generated `id` of the update to redact, as returned by [Post Incident Update](./updates-put) or [List Incident Updates](./updates-list).
</ParamField>

## Request body

None. The endpoint takes no body.

## Response

Returns the redacted update.

<ResponseField name="data" type="object" required>
  Same shape as the [Post Incident Update](./updates-put) response. `body` will be `null`, and `redactedAt` / `redactedBy` will be populated. `statusChange` is preserved.
</ResponseField>

## Error responses

| Status | Code                      | Description                                                                                |
| ------ | ------------------------- | ------------------------------------------------------------------------------------------ |
| `401`  | `not_authorized`          | Missing or invalid credentials.                                                            |
| `403`  | `redaction_not_permitted` | The caller is not the original author within the 5-minute window, and is not an org admin. |
| `404`  | `not_found`               | No update with the given `updateId` exists on this incident in your organization.          |
| `500`  | `server_error`            | An unexpected error occurred on our side.                                                  |

<RequestExample>
  ```bash Redact an update theme={null}
  curl --request POST \
    --url "https://api.scaling.cloud/v1/incidents/YOUR_INCIDENT_ID/updates/YOUR_UPDATE_ID/redact" \
    --header "Authorization: Bearer YOUR_API_KEY"
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "data": {
      "id": "0193e1a2-3b4c-7890-abcd-ef1234567890",
      "incidentId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "body": null,
      "statusChange": "identified",
      "visibility": "public",
      "postedBy": { "id": "user_2b9a3d4e5f6g7h8j", "name": "Alice Chen" },
      "postedAt": "2025-04-07T09:14:00.000Z",
      "redactedAt": "2025-04-07T09:17:30.000Z",
      "redactedBy": { "id": "user_2b9a3d4e5f6g7h8j", "name": "Alice Chen" }
    }
  }
  ```

  ```json 403 redaction_not_permitted theme={null}
  {
    "statusCode": 403,
    "type": "not_authorized_error",
    "code": "redaction_not_permitted",
    "requestId": "d3e4f5a6-b7c8-9012-defa-bc1234567890"
  }
  ```

  ```json 404 not_found theme={null}
  {
    "statusCode": 404,
    "type": "invalid_request_error",
    "code": "not_found",
    "requestId": "d3e4f5a6-b7c8-9012-defa-bc1234567890"
  }
  ```
</ResponseExample>
