---
title: "List Incidents V2"
method: GET
path: "/v2/incidents"
tags: ["Incidents V2"]
---

# List Incidents V2

`GET /v2/incidents`

List all incidents for an organisation.

This endpoint supports a number of filters, which can help find incidents matching certain
criteria.

Filters are provided as query parameters, but due to the dynamic nature of what you can
query by (different accounts have different custom fields, statuses, etc) they are more
complex than most.

To help, here are some exemplar curl requests with a human description of what they search
for.

Note that:
- Filters may be used together, and the result will be incidents that match all filters.
- IDs are normally in UUID format, but have been replaced with shorter strings to improve
readability.
- All query parameters must be URI encoded.

### By status

With status of id=ABC, find all incidents that are set to that status:

		curl --get 'https://api.incident.io/v2/incidents' \
			--data 'status[one_of]=ABC'

Or all incidents that are not set to status with id=ABC:

		curl --get 'https://api.incident.io/v2/incidents' \
			--data 'status[not_in]=ABC'

### By created_at or updated_at

Find all incidents that follow specified date parameters for created_at and updated_at fields.
Possible values are "gte" (greater than or equal to) and "lte" (less than or equal to). The
following example finds all incidents created before or on 2021-01-02T00:00:00Z:

		curl --get 'https://api.incident.io/v2/incidents' \
			--data 'created_at[lte]=2021-01-02'

### By status category

Find all incidents that are in a status category. Possible values are "triage",
"declined", "merged", "canceled", "live", "learning" and "closed":

		curl --get 'https://api.incident.io/v2/incidents' \
			--data 'status_category[one_of]=live'

Or all incidents that are not in a status category:

		curl --get 'https://api.incident.io/v2/incidents' \
			--data 'status_category[not_in]=live'


### By severity

With severity of id=ABC, find all incidents that are set to that severity:

		curl --get 'https://api.incident.io/v2/incidents' \
			--data 'severity[one_of]=ABC'

Or all incidents where severity rank is greater-than-or-equal-to the rank of severity
id=ABC:

		curl --get 'https://api.incident.io/v2/incidents' \
			--data 'severity[gte]=ABC'

Or all incidents where severity rank is less-than-or-equal-to the rank of severity id=ABC:

		curl --get 'https://api.incident.io/v2/incidents' \
			--data 'severity[lte]=ABC'

### By incident type

With incident type of id=ABC, find all incidents that are of that type:

		curl --get 'https://api.incident.io/v2/incidents' \
			--data 'incident_type[one_of]=ABC'

Or all incidents not of that type:

		curl --get 'https://api.incident.io/v2/incidents' \
			--data 'incident_type[not_in]=ABC'

### By incident mode

By default, we return standard and retrospective incidents. This means that test and
tutorial incidents are filtered out. To override this behaviour, you can use the
mode filter to specify which modes you want to get.

To find incidents of all modes:

		curl --get 'https://api.incident.io/v2/incidents' \
			--data 'mode[one_of]=standard&mode[one_of]=retrospective&mode[one_of]=test&mode[one_of]=tutorial'

To find just test incidents:

		curl --get 'https://api.incident.io/v2/incidents' \
			--data 'mode[one_of]=test'


### By incident role

Roles and custom fields have another nested layer in the query parameter, to account for
operations against any of the roles or custom fields created in the account.

With incident role id=ABC, find all incidents where that role is unset:

		curl --get 'https://api.incident.io/v2/incidents' \
			--data 'incident_role[ABC][is_blank]=true'

Or where the role has been set:

		curl --get 'https://api.incident.io/v2/incidents' \
			--data 'incident_role[ABC][is_blank]=false'

### By option custom fields

With an option custom field id=ABC, all incidents that have field ABC set to the custom
field option of id=XYZ:

		curl \
			--get 'https://api.incident.io/v2/incidents' \
			--data 'custom_field[ABC][one_of]=XYZ'

Or all incidents that do not have custom field id=ABC set to option id=XYZ:

		curl \
			--get 'https://api.incident.io/v2/incidents' \
			--data 'custom_field[ABC][not_in]=XYZ'

## Query parameters

- `page_size` integer
- `after` string
- `status` unknown
- `status_category` unknown
- `created_at` unknown
- `updated_at` unknown
- `severity` unknown
- `incident_type` unknown
- `incident_role` unknown
- `custom_field` unknown
- `mode` unknown

## Response `200`

OK response.

- IncidentsV2ListResponseBody
  - `incidents` IncidentV2[], required
    - `call_url` string — The call URL attached to this incident
    - `created_at` string, date-time, required — When the incident was created
    - `creator` ActorV2, required
      - `api_key` APIKeyV2
        - `id` string, required — Unique identifier for this API key
        - `name` string, required — The name of the API key, for the user's reference
      - `user` UserV2
        - `email` string — Email address of the user.
        - `id` string, required — Unique identifier of the user
        - `name` string, required — Name of the user
        - `role` 'viewer' | 'responder' | 'administrator' | 'owner' | 'unset', required — DEPRECATED: Role of the user as of March 9th 2023, this value is no longer updated.
        - `slack_user_id` string — Slack ID of the user
    - `custom_field_entries` CustomFieldEntryV2[], required — Custom field entries for this incident
      - `custom_field` CustomFieldTypeInfoV2, required
        - `description` string, required — Description of the custom field
        - `field_type` 'single_select' | 'multi_select' | 'text' | 'link' | 'numeric', required — Type of custom field
        - `id` string, required — Unique identifier for the custom field
        - `name` string, required — Human readable name for the custom field
        - `options` CustomFieldOptionV2[], required — What options are available for this custom field, if this field has options
          - `custom_field_id` string, required — ID of the custom field this option belongs to
          - `id` string, required — Unique identifier for the custom field option
          - `sort_key` integer, required — Sort key used to order the custom field options correctly
          - `value` string, required — Human readable name for the custom field option
      - `values` CustomFieldValueV2[], required — List of custom field values set on this entry
        - `value_catalog_entry` EmbeddedCatalogEntryV2
          - `aliases` string[] — Optional aliases that can be used to reference this entry
          - `external_id` string — An optional alternative ID for this entry, which is ensured to be unique for the type
          - `id` string, required — ID of this catalog entry
          - `name` string, required — Name is the human readable name of this entry
        - `value_link` string — If the custom field type is 'link', this will contain the value assigned.
        - `value_numeric` string — If the custom field type is 'numeric', this will contain the value assigned.
        - `value_option` CustomFieldOptionV2
          - `custom_field_id` string, required — ID of the custom field this option belongs to
          - `id` string, required — Unique identifier for the custom field option
          - `sort_key` integer, required — Sort key used to order the custom field options correctly
          - `value` string, required — Human readable name for the custom field option
        - `value_text` string — If the custom field type is 'text', this will contain the value assigned.
    - `duration_metrics` IncidentDurationMetricWithValueV2[] — Incident duration metrics and their measurements for this incident
      - `duration_metric` IncidentDurationMetricV2, required
        - `id` string, required — Unique ID of this incident duration metric
        - `name` string, required — Unique name of this duration metric
      - `value_seconds` integer — The calculated durations for this metric
    - `external_issue_reference` ExternalIssueReferenceV2
      - `issue_name` string, required — Human readable ID for the issue
      - `issue_permalink` string, required — URL linking directly to the action in the issue tracker
      - `provider` 'asana' | 'click_up' | 'linear' | 'jira' | 'jira_server' | 'github' | 'gitlab' | 'shortcut', required — ID of the issue tracker provider
    - `has_debrief` boolean — If this incident has a debrief attached
    - `id` string, required — Unique identifier for the incident
    - `incident_role_assignments` IncidentRoleAssignmentV2[], required — A list of who is assigned to each role for this incident
      - `assignee` UserV2
        - `email` string — Email address of the user.
        - `id` string, required — Unique identifier of the user
        - `name` string, required — Name of the user
        - `role` 'viewer' | 'responder' | 'administrator' | 'owner' | 'unset', required — DEPRECATED: Role of the user as of March 9th 2023, this value is no longer updated.
        - `slack_user_id` string — Slack ID of the user
      - `role` EmbeddedIncidentRoleV2, required
        - `created_at` string, date-time, required — When the role was created
        - `description` string, required — Describes the purpose of the role
        - `id` string, required — Unique identifier for the role
        - `instructions` string, required — Provided to whoever is nominated for the role. Note that this will be empty for the 'reporter' role.
        - `name` string, required — Human readable name of the incident role
        - `required` boolean — This field is deprecated.
        - `role_type` 'lead' | 'reporter' | 'custom', required — Type of incident role
        - `shortform` string, required — Short human readable name for Slack. Note that this will be empty for the 'reporter' role.
        - `updated_at` string, date-time, required — When the role was last updated
    - `incident_status` IncidentStatusV2, required
      - `category` 'triage' | 'declined' | 'merged' | 'canceled' | 'live' | 'learning' | 'closed' | 'paused', required — What category of status it is. All statuses apart from live (renamed in the app to Active) and learning (renamed in the app to Post-incident) are managed by incident.io and cannot be configured
      - `created_at` string, date-time, required
      - `description` string, required — Rich text description of the incident status
      - `id` string, required — Unique ID of this incident status
      - `name` string, required — Unique name of this status
      - `rank` integer, required — Order of this incident status
      - `updated_at` string, date-time, required
    - `incident_timestamp_values` IncidentTimestampWithValueV2[] — Incident lifecycle events and when they occurred
      - `incident_timestamp` IncidentTimestampV2, required
        - `id` string, required — Unique ID of this incident timestamp
        - `name` string, required — Unique name of this timestamp
        - `rank` integer, required — Order in which this timestamp should be shown
      - `value` IncidentTimestampValueV2
        - `value` string, date-time — The current value of this timestamp, for this incident
    - `incident_type` IncidentTypeV2
      - `create_in_triage` 'always' | 'optional', required — Whether incidents of this must always, or can optionally, be created in triage
      - `created_at` string, date-time, required — When this resource was created
      - `description` string, required — What is this incident type for?
      - `id` string, required — Unique identifier for this Incident Type
      - `is_default` boolean, required — The default Incident Type is used when no other type is explicitly specified
      - `name` string, required — The name of this Incident Type
      - `private_incidents_only` boolean, required — Should all incidents created with this Incident Type be private?
      - `updated_at` string, date-time, required — When this resource was last updated
    - `mode` 'standard' | 'retrospective' | 'test' | 'tutorial', required — Whether the incident is real, a test, a tutorial, or importing as a retrospective incident
    - `name` string, required — Explanation of the incident
    - `permalink` string — A permanent link to the homepage for this incident
    - `postmortem_document_url` string — Description of the incident
    - `reference` string, required — Reference to this incident, as displayed across the product
    - `severity` SeverityV2
      - `created_at` string, date-time, required — When the action was created
      - `description` string, required — Description of the severity
      - `id` string, required — Unique identifier of the severity
      - `name` string, required — Human readable name of the severity
      - `rank` integer, required — Rank to help sort severities (lower numbers are less severe)
      - `updated_at` string, date-time, required — When the action was last updated
    - `slack_channel_id` string, required — ID of the Slack channel in the organisation Slack workspace. Note that the channel is sometimes created asynchronously, so may not be present when the incident is just created.
    - `slack_channel_name` string — Name of the slack channel
    - `slack_team_id` string, required — ID of the Slack team / workspace. This is only required if you are using a Slack Enterprise Grid with multiple teams.
    - `summary` string — Detailed description of the incident
    - `updated_at` string, date-time, required — When the incident was last updated
    - `visibility` 'public' | 'private', required — Whether the incident should be open to anyone in your Slack workspace (public), or invite-only (private). For more information on Private Incidents see our [help centre](https://help.incident.io/articles/5905558102-can-we-mark-incidents-as-sensitive-and-restrict-access).
    - `workload_minutes_late` number, double — Amount of time spent on the incident in late hours
    - `workload_minutes_sleeping` number, double — Amount of time spent on the incident in sleeping hours
    - `workload_minutes_total` number, double — Amount of time spent on the incident in total
    - `workload_minutes_working` number, double — Amount of time spent on the incident in working hours
  - `pagination_meta` PaginationMetaResultWithTotal
    - `after` string — If provided, pass this as the 'after' param to load the next page
    - `page_size` integer, required — What was the maximum number of results requested
    - `total_record_count` integer — How many matching records were there in total, if known

---

[API](https://skmtc.net/incident/apis/incident-io.md) · [All operations](https://skmtc.net/incident/apis/incident-io/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/incident/incident-io/revisions/602fc25ddd76/schema)
