Create and manage escalation paths, and create, list and filter escalations.
With incident.io On-call you can create escalation paths that describe how a page should be escalated to people and schedules.
Create an escalation path.
An escalation path is a series of steps that describe how a page should be escalated, represented as graph, supporting conditional branches based on alert priority and working intervals.
We recommend you create escalation paths in the incident.io dashboard where our path builder makes it easy to use conditions and visualise the path.
Created response.
{- "name": "Urgent Support",
- "path": [
- {
- "id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "if_else": {
- "conditions": [
- {
- "operation": "one_of",
- "param_bindings": [
- {
- "array_value": [
- {
- "literal": "SEV123",
- "reference": "incident.severity"
}
], - "value": {
- "literal": "SEV123",
- "reference": "incident.severity"
}
}
], - "subject": "incident.severity"
}
], - "else_path": [
- { }
], - "then_path": [
- { }
]
}, - "level": {
- "ack_mode": "all",
- "round_robin_config": {
- "enabled": false,
- "rotate_after_seconds": 120
}, - "targets": [
- {
- "id": "lawrencejones",
- "schedule_mode": "currently_on_call",
- "type": "schedule",
- "urgency": "high"
}
], - "time_to_ack_interval_condition": "active",
- "time_to_ack_seconds": 1800,
- "time_to_ack_weekday_interval_config_id": "01FCNDV6P870EA6S7TK1DSYDG0"
}, - "notify_channel": {
- "targets": [
- {
- "id": "lawrencejones",
- "schedule_mode": "currently_on_call",
- "type": "schedule",
- "urgency": "high"
}
], - "time_to_ack_interval_condition": "active",
- "time_to_ack_seconds": 1800,
- "time_to_ack_weekday_interval_config_id": "01FCNDV6P870EA6S7TK1DSYDG0"
}, - "repeat": {
- "repeat_times": 3,
- "to_node": "01FCNDV6P870EA6S7TK1DSYDG0"
}, - "type": "if_else"
}
], - "team_ids": [
- "01JPQA75EPNEES4479P16P4XAB"
], - "working_hours": [
- {
- "id": "abc123",
- "name": "abc123",
- "timezone": "abc123",
- "weekday_intervals": [
- {
- "end_time": "17:00",
- "start_time": "09:00",
- "weekday": "monday"
}
]
}
]
}{- "escalation_path": {
- "id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "name": "Urgent Support",
- "path": [
- {
- "id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "if_else": {
- "conditions": [
- {
- "operation": {
- "label": "Lawrence Jones",
- "value": "01FCQSP07Z74QMMYPDDGQB9FTG"
}, - "param_bindings": [
- {
- "array_value": [
- {
- "label": "Lawrence Jones",
- "literal": "SEV123",
- "reference": "incident.severity"
}
], - "value": {
- "label": "Lawrence Jones",
- "literal": "SEV123",
- "reference": "incident.severity"
}
}
], - "subject": {
- "label": "Incident Severity",
- "reference": "incident.severity"
}
}
], - "else_path": [
- { }
], - "then_path": [
- { }
]
}, - "level": {
- "ack_mode": "all",
- "round_robin_config": {
- "enabled": false,
- "rotate_after_seconds": 120
}, - "targets": [
- {
- "id": "lawrencejones",
- "schedule_mode": "currently_on_call",
- "type": "schedule",
- "urgency": "high"
}
], - "time_to_ack_interval_condition": "active",
- "time_to_ack_seconds": 1800,
- "time_to_ack_weekday_interval_config_id": "01FCNDV6P870EA6S7TK1DSYDG0"
}, - "notify_channel": {
- "targets": [
- {
- "id": "lawrencejones",
- "schedule_mode": "currently_on_call",
- "type": "schedule",
- "urgency": "high"
}
], - "time_to_ack_interval_condition": "active",
- "time_to_ack_seconds": 1800,
- "time_to_ack_weekday_interval_config_id": "01FCNDV6P870EA6S7TK1DSYDG0"
}, - "repeat": {
- "repeat_times": 3,
- "to_node": "01FCNDV6P870EA6S7TK1DSYDG0"
}, - "type": "if_else"
}
], - "team_ids": [
- "01JPQA75EPNEES4479P16P4XAB"
], - "working_hours": [
- {
- "id": "abc123",
- "name": "abc123",
- "timezone": "abc123",
- "weekday_intervals": [
- {
- "end_time": "17:00",
- "start_time": "09:00",
- "weekday": "monday"
}
]
}
]
}
}Show an escalation path.
We recommend you create escalation paths in the incident.io dashboard where our path builder makes it easy to use conditions and visualise the path.
OK response.
{- "escalation_path": {
- "id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "name": "Urgent Support",
- "path": [
- {
- "id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "if_else": {
- "conditions": [
- {
- "operation": {
- "label": "Lawrence Jones",
- "value": "01FCQSP07Z74QMMYPDDGQB9FTG"
}, - "param_bindings": [
- {
- "array_value": [
- {
- "label": "Lawrence Jones",
- "literal": "SEV123",
- "reference": "incident.severity"
}
], - "value": {
- "label": "Lawrence Jones",
- "literal": "SEV123",
- "reference": "incident.severity"
}
}
], - "subject": {
- "label": "Incident Severity",
- "reference": "incident.severity"
}
}
], - "else_path": [
- { }
], - "then_path": [
- { }
]
}, - "level": {
- "ack_mode": "all",
- "round_robin_config": {
- "enabled": false,
- "rotate_after_seconds": 120
}, - "targets": [
- {
- "id": "lawrencejones",
- "schedule_mode": "currently_on_call",
- "type": "schedule",
- "urgency": "high"
}
], - "time_to_ack_interval_condition": "active",
- "time_to_ack_seconds": 1800,
- "time_to_ack_weekday_interval_config_id": "01FCNDV6P870EA6S7TK1DSYDG0"
}, - "notify_channel": {
- "targets": [
- {
- "id": "lawrencejones",
- "schedule_mode": "currently_on_call",
- "type": "schedule",
- "urgency": "high"
}
], - "time_to_ack_interval_condition": "active",
- "time_to_ack_seconds": 1800,
- "time_to_ack_weekday_interval_config_id": "01FCNDV6P870EA6S7TK1DSYDG0"
}, - "repeat": {
- "repeat_times": 3,
- "to_node": "01FCNDV6P870EA6S7TK1DSYDG0"
}, - "type": "if_else"
}
], - "team_ids": [
- "01JPQA75EPNEES4479P16P4XAB"
], - "working_hours": [
- {
- "id": "abc123",
- "name": "abc123",
- "timezone": "abc123",
- "weekday_intervals": [
- {
- "end_time": "17:00",
- "start_time": "09:00",
- "weekday": "monday"
}
]
}
]
}
}Updates an escalation path.
We recommend you create escalation paths in the incident.io dashboard where our path builder makes it easy to use conditions and visualise the path.
OK response.
{- "name": "Urgent Support",
- "path": [
- {
- "id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "if_else": {
- "conditions": [
- {
- "operation": "one_of",
- "param_bindings": [
- {
- "array_value": [
- {
- "literal": "SEV123",
- "reference": "incident.severity"
}
], - "value": {
- "literal": "SEV123",
- "reference": "incident.severity"
}
}
], - "subject": "incident.severity"
}
], - "else_path": [
- { }
], - "then_path": [
- { }
]
}, - "level": {
- "ack_mode": "all",
- "round_robin_config": {
- "enabled": false,
- "rotate_after_seconds": 120
}, - "targets": [
- {
- "id": "lawrencejones",
- "schedule_mode": "currently_on_call",
- "type": "schedule",
- "urgency": "high"
}
], - "time_to_ack_interval_condition": "active",
- "time_to_ack_seconds": 1800,
- "time_to_ack_weekday_interval_config_id": "01FCNDV6P870EA6S7TK1DSYDG0"
}, - "notify_channel": {
- "targets": [
- {
- "id": "lawrencejones",
- "schedule_mode": "currently_on_call",
- "type": "schedule",
- "urgency": "high"
}
], - "time_to_ack_interval_condition": "active",
- "time_to_ack_seconds": 1800,
- "time_to_ack_weekday_interval_config_id": "01FCNDV6P870EA6S7TK1DSYDG0"
}, - "repeat": {
- "repeat_times": 3,
- "to_node": "01FCNDV6P870EA6S7TK1DSYDG0"
}, - "type": "if_else"
}
], - "team_ids": [
- "01JPQA75EPNEES4479P16P4XAB"
], - "working_hours": [
- {
- "id": "abc123",
- "name": "abc123",
- "timezone": "abc123",
- "weekday_intervals": [
- {
- "end_time": "17:00",
- "start_time": "09:00",
- "weekday": "monday"
}
]
}
]
}{- "escalation_path": {
- "id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "name": "Urgent Support",
- "path": [
- {
- "id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "if_else": {
- "conditions": [
- {
- "operation": {
- "label": "Lawrence Jones",
- "value": "01FCQSP07Z74QMMYPDDGQB9FTG"
}, - "param_bindings": [
- {
- "array_value": [
- {
- "label": "Lawrence Jones",
- "literal": "SEV123",
- "reference": "incident.severity"
}
], - "value": {
- "label": "Lawrence Jones",
- "literal": "SEV123",
- "reference": "incident.severity"
}
}
], - "subject": {
- "label": "Incident Severity",
- "reference": "incident.severity"
}
}
], - "else_path": [
- { }
], - "then_path": [
- { }
]
}, - "level": {
- "ack_mode": "all",
- "round_robin_config": {
- "enabled": false,
- "rotate_after_seconds": 120
}, - "targets": [
- {
- "id": "lawrencejones",
- "schedule_mode": "currently_on_call",
- "type": "schedule",
- "urgency": "high"
}
], - "time_to_ack_interval_condition": "active",
- "time_to_ack_seconds": 1800,
- "time_to_ack_weekday_interval_config_id": "01FCNDV6P870EA6S7TK1DSYDG0"
}, - "notify_channel": {
- "targets": [
- {
- "id": "lawrencejones",
- "schedule_mode": "currently_on_call",
- "type": "schedule",
- "urgency": "high"
}
], - "time_to_ack_interval_condition": "active",
- "time_to_ack_seconds": 1800,
- "time_to_ack_weekday_interval_config_id": "01FCNDV6P870EA6S7TK1DSYDG0"
}, - "repeat": {
- "repeat_times": 3,
- "to_node": "01FCNDV6P870EA6S7TK1DSYDG0"
}, - "type": "if_else"
}
], - "team_ids": [
- "01JPQA75EPNEES4479P16P4XAB"
], - "working_hours": [
- {
- "id": "abc123",
- "name": "abc123",
- "timezone": "abc123",
- "weekday_intervals": [
- {
- "end_time": "17:00",
- "start_time": "09:00",
- "weekday": "monday"
}
]
}
]
}
}List all escalations for your account.
This endpoint supports a number of filters, which can help find escalations matching certain criteria.
Note that:
To use this API, you will need an API key with the "View data" or "Create and manage on-call resources" permission.
Find all escalations that escalated to escalation path with id=ABC:
curl --get 'https://api.incident.io/v2/escalations' \
--data 'escalation_path[one_of]=ABC'
Find all escalations with a current status of "triggered":
curl --get 'https://api.incident.io/v2/escalations' \
--data 'status[one_of]=triggered'
Possible values are "pending", "triggered", "acked", "resolved", "expired" and "cancelled". Escalations are in "pending" when they are in a grace period when the related alert has been grouped in an incident.
Find all escalations that were created by alert with id=ABC:
curl --get 'https://api.incident.io/v2/escalations' \
--data 'alert[one_of]=ABC'
Find all escalations that follow specified date parameters for created_at and updated_at fields. Possible values are "gte" (greater than or equal to), "lte" (less than or equal to), and "date_range" (between two dates). For example, to find all escalations updated after 2025-01-01:
curl --get 'https://api.incident.io/v2/escalations' \
--data 'updated_at[gte]=2025-01-01'
To find all escalations created between 2025-01-01 and 2025-01-31:
curl --get 'https://api.incident.io/v2/escalations' \
--data 'created_at[date_range]=2025-01-01~2025-01-31'
OK response.
{- "escalations": [
- {
- "created_at": "2021-08-17T13:28:57.801578Z",
- "creator": {
- "alert": {
- "id": "01GW2G3V0S59R238FAHPDS1R66",
- "title": "*errors.withMessage: PG::Error failed to connect"
}, - "user": {
- "email": "lisa@incident.io",
- "id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "name": "Lisa Karlin Curtis",
- "role": "viewer",
- "slack_user_id": "U02AYNF2XJM"
}, - "workflow": {
- "id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "name": "My little workflow"
}
}, - "escalation_path_id": "01G0J1EXE7AXZ2C93K61WBPYEH",
- "events": [
- {
- "channels": [
- {
- "microsoft_teams_channel_id": "abc123",
- "microsoft_teams_team_id": "abc123",
- "slack_channel_id": "abc123",
- "slack_team_id": "abc123"
}
], - "event": "entered_grace_period",
- "id": "01G0J1EXE7AXZ2C93K61WBPYEH",
- "occurred_at": "2021-08-17T13:28:57.801578Z",
- "urgency": "high",
- "users": [
- {
- "email": "lisa@incident.io",
- "id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "name": "Lisa Karlin Curtis",
- "role": "viewer",
- "slack_user_id": "U02AYNF2XJM"
}
]
}
], - "id": "01G0J1EXE7AXZ2C93K61WBPYEH",
- "priority": {
- "name": "P1"
}, - "related_alerts": [
- {
- "alert_source_id": "01GW2G3V0S59R238FAHPDS1R66",
- "created_at": "2021-08-17T13:28:57.801578Z",
- "deduplication_key": "4293868629",
- "description": "CPU on the payments service has exceeded 75 percent for 5 minutes",
- "id": "01GW2G3V0S59R238FAHPDS1R66",
- "resolved_at": "2021-08-17T14:28:57.801578Z",
- "status": "firing",
- "title": "*errors.withMessage: PG::Error failed to connect",
- "updated_at": "2021-08-17T13:28:57.801578Z"
}
], - "related_incidents": [
- {
- "external_id": 123,
- "id": "01FDAG4SAP5TYPT98WGR2N7W91",
- "name": "Our database is sad",
- "reference": "INC-123",
- "status_category": "triage",
- "summary": "Our database is really really sad, and we don't know why yet.",
- "visibility": "public"
}
], - "status": "pending",
- "title": "Database CPU is high",
- "updated_at": "2021-08-17T13:28:57.801578Z"
}
], - "pagination_meta": {
- "after": "01FCNDV6P870EA6S7TK1DSYDG0",
- "page_size": 25
}
}Create an escalation.
An escalation pages people, either according to an escalation path, or directly to specific users. You must provide either an escalation_path_id OR user_ids, but not both.
When escalating via an escalation path, the escalation will follow the configured path with its levels and timeouts, using your default alert priority.
When escalating directly to users, they will receive a high-urgency notification, based on their notification rules.
This endpoint is rate-limited to 60 requests per minute, since it is intended for interactive use cases (for example someone clicking a "escalate to team" button in your internal developer platform). To escalate based on automated alerts, we recommend sending events to an alert source instead.
Created response.
{- "description": "Database CPU has been above 90% for 5 minutes",
- "escalation_path_id": "01H0J1EXE7AXZ2C93K61WBPYEH",
- "idempotency_key": "2024-01-15-abc123",
- "title": "Production database experiencing high CPU",
- "user_ids": [
- "01H0J1EXE7AXZ2C93K61WBPYEH",
- "01H0J1EXE7AXZ2C93K61WBPYEI"
]
}{- "escalation": {
- "created_at": "2021-08-17T13:28:57.801578Z",
- "creator": {
- "alert": {
- "id": "01GW2G3V0S59R238FAHPDS1R66",
- "title": "*errors.withMessage: PG::Error failed to connect"
}, - "user": {
- "email": "lisa@incident.io",
- "id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "name": "Lisa Karlin Curtis",
- "role": "viewer",
- "slack_user_id": "U02AYNF2XJM"
}, - "workflow": {
- "id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "name": "My little workflow"
}
}, - "escalation_path_id": "01G0J1EXE7AXZ2C93K61WBPYEH",
- "events": [
- {
- "channels": [
- {
- "microsoft_teams_channel_id": "abc123",
- "microsoft_teams_team_id": "abc123",
- "slack_channel_id": "abc123",
- "slack_team_id": "abc123"
}
], - "event": "entered_grace_period",
- "id": "01G0J1EXE7AXZ2C93K61WBPYEH",
- "occurred_at": "2021-08-17T13:28:57.801578Z",
- "urgency": "high",
- "users": [
- {
- "email": "lisa@incident.io",
- "id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "name": "Lisa Karlin Curtis",
- "role": "viewer",
- "slack_user_id": "U02AYNF2XJM"
}
]
}
], - "id": "01G0J1EXE7AXZ2C93K61WBPYEH",
- "priority": {
- "name": "P1"
}, - "related_alerts": [
- {
- "alert_source_id": "01GW2G3V0S59R238FAHPDS1R66",
- "created_at": "2021-08-17T13:28:57.801578Z",
- "deduplication_key": "4293868629",
- "description": "CPU on the payments service has exceeded 75 percent for 5 minutes",
- "id": "01GW2G3V0S59R238FAHPDS1R66",
- "resolved_at": "2021-08-17T14:28:57.801578Z",
- "status": "firing",
- "title": "*errors.withMessage: PG::Error failed to connect",
- "updated_at": "2021-08-17T13:28:57.801578Z"
}
], - "related_incidents": [
- {
- "external_id": 123,
- "id": "01FDAG4SAP5TYPT98WGR2N7W91",
- "name": "Our database is sad",
- "reference": "INC-123",
- "status_category": "triage",
- "summary": "Our database is really really sad, and we don't know why yet.",
- "visibility": "public"
}
], - "status": "pending",
- "title": "Database CPU is high",
- "updated_at": "2021-08-17T13:28:57.801578Z"
}
}{- "escalation": {
- "created_at": "2021-08-17T13:28:57.801578Z",
- "creator": {
- "alert": {
- "id": "01GW2G3V0S59R238FAHPDS1R66",
- "title": "*errors.withMessage: PG::Error failed to connect"
}, - "user": {
- "email": "lisa@incident.io",
- "id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "name": "Lisa Karlin Curtis",
- "role": "viewer",
- "slack_user_id": "U02AYNF2XJM"
}, - "workflow": {
- "id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "name": "My little workflow"
}
}, - "escalation_path_id": "01G0J1EXE7AXZ2C93K61WBPYEH",
- "events": [
- {
- "channels": [
- {
- "microsoft_teams_channel_id": "abc123",
- "microsoft_teams_team_id": "abc123",
- "slack_channel_id": "abc123",
- "slack_team_id": "abc123"
}
], - "event": "entered_grace_period",
- "id": "01G0J1EXE7AXZ2C93K61WBPYEH",
- "occurred_at": "2021-08-17T13:28:57.801578Z",
- "urgency": "high",
- "users": [
- {
- "email": "lisa@incident.io",
- "id": "01FCNDV6P870EA6S7TK1DSYDG0",
- "name": "Lisa Karlin Curtis",
- "role": "viewer",
- "slack_user_id": "U02AYNF2XJM"
}
]
}
], - "id": "01G0J1EXE7AXZ2C93K61WBPYEH",
- "priority": {
- "name": "P1"
}, - "related_alerts": [
- {
- "alert_source_id": "01GW2G3V0S59R238FAHPDS1R66",
- "created_at": "2021-08-17T13:28:57.801578Z",
- "deduplication_key": "4293868629",
- "description": "CPU on the payments service has exceeded 75 percent for 5 minutes",
- "id": "01GW2G3V0S59R238FAHPDS1R66",
- "resolved_at": "2021-08-17T14:28:57.801578Z",
- "status": "firing",
- "title": "*errors.withMessage: PG::Error failed to connect",
- "updated_at": "2021-08-17T13:28:57.801578Z"
}
], - "related_incidents": [
- {
- "external_id": 123,
- "id": "01FDAG4SAP5TYPT98WGR2N7W91",
- "name": "Our database is sad",
- "reference": "INC-123",
- "status_category": "triage",
- "summary": "Our database is really really sad, and we don't know why yet.",
- "visibility": "public"
}
], - "status": "pending",
- "title": "Database CPU is high",
- "updated_at": "2021-08-17T13:28:57.801578Z"
}
}