---
title: "Create Manual Incident"
description: "Creates a manual incident on a customer's status pages or on chosen status pages and components."
---

`POST /api/incidents`

Creates a **manual** incident: an announcement on status pages, written by you rather than detected by a monitor. With `customerId` it appears on every status page of that customer, as before. Since 27 October 2026 `customerId` is optional: with `statusPageIds` the incident appears on those pages, page-wide or on the components in `componentIds`, also on a page without a customer or without a single monitor. Subscribers of every page the incident appears on are notified.

## Authentication

Requires role `admin` or `editor` (or an organization API token). Without `customerId` the incident belongs to the organization, like a status page without a customer: a customer-scoped login or token gets `403 forbidden`. Every page in `statusPageIds` must belong to your organization (otherwise `404 statusPageNotFound`) and be within your customer scope.

- Header: `Authorization: Bearer <token>`

## Request Body

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `customerId` | integer | No* | Customer whose status pages show the incident. *Either `customerId` or `statusPageIds` is required. |
| `websiteId` | integer | No | A website of `customerId` the incident is about. Needs `customerId`. |
| `title` | string | Yes | Headline, 1 to 200 characters. |
| `severity` | string | Yes | `minor`, `major`, `critical` or `maintenance`. |
| `summary` | string | No | Up to 5,000 characters. |
| `startedAt` | string | No | ISO 8601 time, default now. |
| `updateStatus` | string | No | First timeline update together with `updateBody`: `investigating`, `identified`, `monitoring` or `resolved` (opens the incident resolved). |
| `updateBody` | string | No | Text of the first update, up to 5,000 characters. |
| `statusPageIds` | array | No* | Status pages (id or publicId), at most 10. A page without one of `componentIds` gets the incident page-wide. With `customerId`, only pages without a customer or of that customer. |
| `componentIds` | array | No | Affected components (id or publicId), at most 100; each must belong to one of `statusPageIds`. While the incident is open, these manual components take its `impact`. |
| `impact` | string | No | `degraded`, `partial_outage`, `major_outage` or `maintenance`. Default from `severity`: `minor` = `degraded`, `major` = `partial_outage`, `critical` = `major_outage`, `maintenance` = `maintenance`. |

## Example (cURL)

```bash
curl -X POST "$BASE_URL/api/incidents" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Card payments failing",
    "severity": "major",
    "statusPageIds": ["2b9c7d1e-5f3a-4c8b-9e0d-1a2b3c4d5e6f"],
    "componentIds": [8],
    "updateStatus": "investigating",
    "updateBody": "We are looking into failed card payments."
  }'
```

## Response

`201 Created`

```json
{
  "incident": {
    "id": 5121,
    "publicId": "8d1f0c2e-6a2b-4f1e-9b7c-2e5a1d3c4b5a"
  }
}
```

## Common Errors

- `400 Bad Request` (`incidentTargetRequired`) when neither `customerId` nor `statusPageIds` is given
- `400 Bad Request` (`statusPageIdsRequired`) when `componentIds` is given without `statusPageIds`
- `400 Bad Request` (`statusPageComponentNotOnPage`) when a component belongs to a page that is not in `statusPageIds`
- `400 Bad Request` (`statusPageCustomerMismatch`) when a page belongs to another customer than `customerId`
- `400 Bad Request` (`invalidWebsite`) when the website does not belong to `customerId`, or `websiteId` is given without `customerId`
- `400 Bad Request` (`invalidRequestBody`) when a field is missing or has the wrong type or value
- `401 Unauthorized` when not authenticated
- `403 Forbidden` (`forbidden`) when your role cannot write status pages, or a customer-scoped caller creates an incident without a customer or on a page outside its scope
- `403 Forbidden` (`statusPagesModuleDisabled`) when `statusPageIds` is non-empty and the status pages module is not activated for your organization; incidents without status pages are not affected
- `404 Not Found` (`statusPageNotFound`, `statusPageComponentNotFound`, `customerNotFound`) when a page, component or customer does not exist in your organization
