---
title: "Create an incident"
method: POST
path: "/status_pages/{status_page_id}/incidents"
tags: ["Incidents"]
---

# Create an incident

`POST /status_pages/{status_page_id}/incidents`

## Request

- Base URL: `https://app.honeybadger.io/v3`
- URL: `https://app.honeybadger.io/v3/status_pages/{status_page_id}/incidents`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/honeybadger/apis/honeybadger-api/docs/status_pages/:status_page_id/incidents/post.ts> (a function with typed inputs; its response is checked against the schema)

Creates an incident on a status page. An incident needs at least one update, and its prose, status and severity come from its updates.

## Path parameters

- `status_page_id` string, required

## Request body

- StatusPageIncidentCreateInput: An incident and the updates it opens with
  - `title` string, required
  - `build_type` 'current' | 'retroactive' | 'scheduled_maintenance': How the incident was opened. `current` is happening now, `retroactive` records something already over, `scheduled_maintenance` is planned. Only a scheduled_maintenance incident may have updates starting in the future.
  - `retro_should_notify` boolean: Announce a retroactive incident when it is created
  - `retro_notify_message` string, nullable: Message accompanying that announcement
  - `updates` IncidentUpdateInput[], required: Updates to create with the incident; at least one
    - `message` string: The update's prose
    - `status` 'maintenance_scheduled' | 'in_maintenance' | 'maintenance_complete' | 'investigating' | 'identified' | 'resolving' | 'monitoring' | 'resolved': An incident's status.
    - `severity` 'problem_detected' | 'degraded_performance' | 'partial_outage' | 'outage' | 'operational': An incident's severity.
    - `start_at` string, date-time: When the update takes effect. Only a scheduled_maintenance incident may set this in the future.
    - `start_now` boolean: Start the update immediately, ignoring `start_at`. An update that has already started is left as it is, so sending it again changes nothing.
    - `should_notify` boolean: Announce the update on the status page's connected accounts and email the status page's subscribers

## Response `201`

Incident created

- object
  - `data` StatusPageIncident, required: An incident on a status page. An incident is a container for a thread of updates: the prose lives on each update, and `current_status`, `current_severity` and `closed_at` are derived from them and are never writable.
    - `id` string, required
    - `status_page_id` string, required: ID of the status page
    - `title` string, required: Incident title
    - `retro_should_notify` boolean, required: For a retroactive incident, whether to announce it once on the status page's connected accounts
    - `retro_notify_message` string, nullable, required: The announcement sent when `retro_should_notify` is true
    - `build_type` 'current' | 'retroactive' | 'scheduled_maintenance', required: How the incident was opened. `current` is happening now, `retroactive` records something already over, `scheduled_maintenance` is planned. Only a scheduled_maintenance incident may have updates starting in the future.
    - `current_status` 'maintenance_scheduled' | 'in_maintenance' | 'maintenance_complete' | 'investigating' | 'identified' | 'resolving' | 'monitoring' | 'resolved': An incident's status.
    - `current_severity` 'problem_detected' | 'degraded_performance' | 'partial_outage' | 'outage' | 'operational': An incident's severity.
    - `start_at` string, date-time, nullable: When the incident starts. Derived from the updates.
    - `closed_at` string, date-time, nullable: When the incident closed, or null while it is open. Derived from the updates: it is set once an update reaches resolved or maintenance_complete.
    - `created_at` string, date-time: When the incident was created
    - `updated_at` string, date-time: When the incident was last updated
    - `updates` IncidentUpdate[], required: The incident's thread, newest first. Always at least one update.
      - `id` string, required
      - `incident_id` string, required: ID of the incident
      - `message` string, nullable: The update's prose
      - `status` 'maintenance_scheduled' | 'in_maintenance' | 'maintenance_complete' | 'investigating' | 'identified' | 'resolving' | 'monitoring' | 'resolved', required: An incident's status.
      - `severity` 'problem_detected' | 'degraded_performance' | 'partial_outage' | 'outage' | 'operational', required: An incident's severity.
      - `start_at` string, date-time: When the update takes effect. A future time schedules it.
      - `should_notify` boolean, nullable: Whether the update is announced on the status page's connected accounts
      - `notified_at` string, date-time, nullable: When the announcement was sent
      - `created_at` string, date-time: When the update was posted
      - `updated_at` string, date-time: When the update was last changed
    - `links` WebLinks, required: Links into the Honeybadger web UI
      - `web` string, uri, required: The resource's page in the Honeybadger web UI, as an absolute URL. Resources without a page, such as outages and deploys, don't have `links`. For a project provisioned through Heroku, error, notice and comment links go through Heroku's single sign-on.
  - `meta` ResponseMeta
    - `request_id` string: Unique identifier for the request, for correlating with support

## Other responses

- `401`: The credential is missing, invalid, expired or revoked (`unauthorized`), or was sent in a way v3 doesn't accept (see the examples).
- `403`: The credential isn't allowed to do this. `error.code` says why. An account or project the credential doesn't cover is 404 `not_found`, not 403.
- `404`: Resource not found
- `422`: Validation error

---

[API](https://skmtc.dev/honeybadger/apis/honeybadger-api.md) - [All operations](https://skmtc.dev/honeybadger/apis/honeybadger-api/llms.txt) - [OpenAPI document](https://skmtc.dev/honeybadger/apis/honeybadger-api/revisions/cbcff53f2c8a?raw)
