Skip to main content

List 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 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'.
External Documentation

To learn more, visit the incident.io documentation.

Parameters

ParameterDescription
AfterAn incident's ID. This endpoint will return a list of incidents after this ID in relation to the API response order.
Custom FieldFilter on an incident custom field. Custom field ID should be sent, followed by the operator and values. Accepted operator will depend on the custom field type.
Incident RoleFilter on an incident role. Role ID should be sent, followed by the operator and values. The accepted operators are 'oneof', 'isblank'.
Incident TypeFilter on incident type. The accepted operators are 'oneof, or 'notin'.
ModeFilter on incident mode. The accepted operator is 'one_of'. If this is not provided, this value defaults to {"one_of": ["standard", "retrospective"] }, meaning that test and tutorial incidents are not included.
Page Sizenumber of records to return.
SeverityFilter on incident severity. The accepted operators are 'oneof', 'notin', 'gte', 'lte'.
StatusFilter on incident status. The accepted operators are 'oneof', or 'notin'.
Status CategoryFilter on the category of the incidents status. The accepted operators are 'oneof', or 'notin'. If this is not provided, this value defaults to {"one_of": ["triage", "active", "post-incident", "closed"] }, meaning that canceled, declined and merged incidents are not included.

Example Output

{
"incidents": [
{
"call_url": "https://zoom.us/foo",
"created_at": "2021-08-17T13:28:57.801578Z",
"creator": {
"api_key": {
"id": "01FCNDV6P870EA6S7TK1DSYDG0",
"name": "My test API key"
},
"user": {
"email": "lisa@incident.io",
"id": "01FCNDV6P870EA6S7TK1DSYDG0",
"name": "Lisa Karlin Curtis",
"role": "viewer",
"slack_user_id": "U02AYNF2XJM"
}
},
"custom_field_entries": [
{
"custom_field": {
"description": "Which team is impacted by this issue",
"field_type": "single_select",
"id": "01FCNDV6P870EA6S7TK1DSYDG0",
"name": "Affected Team",
"options": [
{
"custom_field_id": "01FCNDV6P870EA6S7TK1DSYDG0",
"id": "01FCNDV6P870EA6S7TK1DSYDG0",
"sort_key": 10,
"value": "Product"
}
]
},
"values": [
{
"value_catalog_entry": {
"aliases": [
"lawrence@incident.io",
"lawrence"
],
"external_id": "761722cd-d1d7-477b-ac7e-90f9e079dc33",
"id": "01FCNDV6P870EA6S7TK1DSYDG0",
"name": "Primary On-call"
},
"value_link": "https://google.com/",
"value_numeric": "123.456",
"value_option": {
"custom_field_id": "01FCNDV6P870EA6S7TK1DSYDG0",
"id": "01FCNDV6P870EA6S7TK1DSYDG0",
"sort_key": 10,
"value": "Product"
},
"value_text": "This is my text field, I hope you like it"
}
]
}
],
"duration_metrics": [
{
"duration_metric": {
"id": "01FCNDV6P870EA6S7TK1DSYD5H",
"name": "Lasted"
},
"value_seconds": 1
}
],
"external_issue_reference": {
"issue_name": "INC-123",
"issue_permalink": "https://linear.app/incident-io/issue/INC-1609/find-copywriter-to-write-up",
"provider": "asana"
},
"id": "01FDAG4SAP5TYPT98WGR2N7W91",
"incident_role_assignments": [
{
"assignee": {
"email": "lisa@incident.io",
"id": "01FCNDV6P870EA6S7TK1DSYDG0",
"name": "Lisa Karlin Curtis",
"role": "viewer",
"slack_user_id": "U02AYNF2XJM"
},
"role": {
"created_at": "2021-08-17T13:28:57.801578Z",
"description": "The person currently coordinating the incident",
"id": "01FCNDV6P870EA6S7TK1DSYDG0",
"instructions": "Take point on the incident; Make sure people are clear on responsibilities",
"name": "Incident Lead",
"required": false,
"role_type": "lead",
"shortform": "lead",
"updated_at": "2021-08-17T13:28:57.801578Z"
}
}
],
"incident_status": {
"category": "triage",
"created_at": "2021-08-17T13:28:57.801578Z",
"description": "Impact has been **fully mitigated**, and we're ready to learn from this incident.",
"id": "01FCNDV6P870EA6S7TK1DSYD5H",
"name": "Closed",
"rank": 4,
"updated_at": "2021-08-17T13:28:57.801578Z"
},
"incident_timestamp_values": [
{
"incident_timestamp": {
"id": "01FCNDV6P870EA6S7TK1DSYD5H",
"name": "Impact started",
"rank": 1
},
"value": {
"value": "2021-08-17T13:28:57.801578Z"
}
}
],
"incident_type": {
"create_in_triage": "always",
"created_at": "2021-08-17T13:28:57.801578Z",
"description": "Customer facing production outages",
"id": "01FCNDV6P870EA6S7TK1DSYDG0",
"is_default": false,
"name": "Production Outage",
"private_incidents_only": false,
"updated_at": "2021-08-17T13:28:57.801578Z"
},
"mode": "standard",
"name": "Our database is sad",
"permalink": "https://app.incident.io/incidents/123",
"postmortem_document_url": "https://docs.google.com/my_doc_id",
"reference": "INC-123",
"severity": {
"created_at": "2021-08-17T13:28:57.801578Z",
"description": "Issues with **low impact**.",
"id": "01FCNDV6P870EA6S7TK1DSYDG0",
"name": "Minor",
"rank": 1,
"updated_at": "2021-08-17T13:28:57.801578Z"
},
"slack_channel_id": "C02AW36C1M5",
"slack_channel_name": "inc-165-green-parrot",
"slack_team_id": "T02A1FSLE8J",
"summary": "Our database is really really sad, and we don't know why yet.",
"updated_at": "2021-08-17T13:28:57.801578Z",
"visibility": "public",
"workload_minutes_late": 40.7,
"workload_minutes_sleeping": 0,
"workload_minutes_total": 60.7,
"workload_minutes_working": 20
}
],
"pagination_meta": {
"after": "01FCNDV6P870EA6S7TK1DSYDG0",
"page_size": 25,
"total_record_count": 238
}
}

Workflow Library Example

List Incidents with Incidentio and Send Results Via Email

Workflow LibraryPreview this Workflow on desktop