---
title: "CreatePath Escalations V2"
method: POST
path: "/v2/escalation_paths"
tags: ["Escalations V2"]
---

# CreatePath Escalations V2

`POST /v2/escalation_paths`

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.

## Request body

- EscalationsV2CreatePathRequestBody
  - `name` string, required — The name of this escalation path, for the user's reference.
  - `path` EscalationPathNodePayloadV2[], required — The nodes that form the levels and branches of this escalation path.
    - `id` string, required — An ID for this node, unique within the escalation path. This allows you to reference the node in other nodes, such as when configuring a 'repeat' node.
    - `if_else` EscalationPathNodeIfElsePayloadV2
      - `conditions` ConditionPayloadV2[] — The condition that defines which branch to take
        - `operation` string, required — The name of the operation on the subject
        - `param_bindings` EngineParamBindingPayloadV2[], required — List of parameter bindings
          - `array_value` EngineParamBindingValuePayloadV2[] — If set, this is the array value of the step parameter
            - `literal` string — If set, this is the literal value of the step parameter
            - `reference` string — If set, this is the reference into the trigger scope that is the value of this parameter
          - `value` EngineParamBindingValuePayloadV2
            - `literal` string — If set, this is the literal value of the step parameter
            - `reference` string — If set, this is the reference into the trigger scope that is the value of this parameter
        - `subject` string, required — The reference of the subject in the trigger scope
      - `else_path` EscalationPathNodePayloadV2[], required — The nodes that form the levels if our condition is not met
      - `then_path` EscalationPathNodePayloadV2[], required — The nodes that form the levels if our condition is met
    - `level` EscalationPathNodeLevelV2
      - `round_robin_config` EscalationPathRoundRobinConfigV2
        - `enabled` boolean, required — Whether round robin is enabled for this level
        - `rotate_after_seconds` integer — How long should we wait before rotating to the next target in a round robin, if not set will stick with a single target per level.
      - `targets` EscalationPathTargetV2[], required — The targets (users or schedules) for this level
        - `id` string, required — Uniquely identifies an entity of this type
        - `schedule_mode` 'currently_on_call' | 'all_users_for_rota' | 'all_users' | '' — Only set for schedule targets, and either currently_on_call, all_users or all_users_for_rota and specifies which users to fetch from the schedule
        - `type` 'schedule' | 'user' | 'slack_channel', required — Controls what type of entity this target identifies, such as EscalationPolicy or User
        - `urgency` 'high' | 'low', required — The urgency of this escalation path target
      - `time_to_ack_interval_condition` 'active' | 'inactive' — If the time to ack is relative to a time window, this defines whether we move when the window is active or inactive
      - `time_to_ack_seconds` integer — How long should we wait for this level to acknowledge before proceeding to the next node in the path?
      - `time_to_ack_weekday_interval_config_id` string — If the time to ack is relative to a time window, this identifies which window it is relative to
    - `notify_channel` EscalationPathNodeNotifyChannelV2
      - `targets` EscalationPathTargetV2[], required — The targets (Slack channels) for this level
        - `id` string, required — Uniquely identifies an entity of this type
        - `schedule_mode` 'currently_on_call' | 'all_users_for_rota' | 'all_users' | '' — Only set for schedule targets, and either currently_on_call, all_users or all_users_for_rota and specifies which users to fetch from the schedule
        - `type` 'schedule' | 'user' | 'slack_channel', required — Controls what type of entity this target identifies, such as EscalationPolicy or User
        - `urgency` 'high' | 'low', required — The urgency of this escalation path target
      - `time_to_ack_interval_condition` 'active' | 'inactive' — If the time to ack is relative to a time window, this defines whether we move when the window is active or inactive
      - `time_to_ack_seconds` integer — How long should we wait for this level to acknowledge before moving on to the next node in the path?
      - `time_to_ack_weekday_interval_config_id` string — If the time to ack is relative to a time window, this identifies which window it is relative to
    - `repeat` EscalationPathNodeRepeatV2
      - `repeat_times` integer, required — How many times to repeat these nodes
      - `to_node` string, required — Which node ID we begin repeating from.
    - `type` 'if_else' | 'repeat' | 'level' | 'notify_channel', required — The type of this node. Available types are: * level: A set of targets (users or schedules) that should be paged, either all at once, or with a round-robin configuration. * notify_channel: Send the escalation to a Slack channel, where it can be acked by anyone in the channel. * if_else: Branch the escalation based on a set of conditions. * repeat: Go back to a previous node and repeat the logic from there.
  - `working_hours` WeekdayIntervalConfigV2[] — The working hours for this escalation path.
    - `id` string, required — The unique identifier for this set of working intervals
    - `name` string, required — A human readable label for this set of working intervals
    - `timezone` string, required — How to interpret all the intervals
    - `weekday_intervals` WeekdayIntervalV2[], required
      - `end_time` string, required — End time of the interval, in 24hr format
      - `start_time` string, required — Start time of the interval, in 24hr format
      - `weekday` string, required — Weekday this interval applies to

## Response `201`

Created response.

- EscalationsV2CreatePathResponseBody
  - `escalation_path` EscalationPathV2, required
    - `id` string, required — Unique identifier for this escalation path.
    - `name` string, required — The name of this escalation path, for the user's reference.
    - `path` EscalationPathNodeV2[], required — The nodes that form the levels and branches of this escalation path.
      - `id` string, required — An ID for this node, unique within the escalation path. This allows you to reference the node in other nodes, such as when configuring a 'repeat' node.
      - `if_else` EscalationPathNodeIfElseV2
        - `conditions` ConditionV2[], required — The condition that defines which branch to take
          - `operation` ConditionOperationV2, required
            - `label` string, required — Human readable label to be displayed for user to select
            - `value` string, required — Unique identifier for this option
          - `param_bindings` EngineParamBindingV2[], required — Bindings for the operation parameters
            - `array_value` EngineParamBindingValueV2[] — If array_value is set, this helps render the values
              - …
            - `value` EngineParamBindingValueV2
              - …
          - `subject` ConditionSubjectV2, required
            - `label` string, required — Human readable identifier for the subject
            - `reference` string, required — Reference into the scope for the value of the subject
        - `else_path` EscalationPathNodeV2[], required — The nodes that form the levels if our condition is not met
        - `then_path` EscalationPathNodeV2[], required — The nodes that form the levels if our condition is met
      - `level` EscalationPathNodeLevelV2
        - `round_robin_config` EscalationPathRoundRobinConfigV2
          - `enabled` boolean, required — Whether round robin is enabled for this level
          - `rotate_after_seconds` integer — How long should we wait before rotating to the next target in a round robin, if not set will stick with a single target per level.
        - `targets` EscalationPathTargetV2[], required — The targets (users or schedules) for this level
          - `id` string, required — Uniquely identifies an entity of this type
          - `schedule_mode` 'currently_on_call' | 'all_users_for_rota' | 'all_users' | '' — Only set for schedule targets, and either currently_on_call, all_users or all_users_for_rota and specifies which users to fetch from the schedule
          - `type` 'schedule' | 'user' | 'slack_channel', required — Controls what type of entity this target identifies, such as EscalationPolicy or User
          - `urgency` 'high' | 'low', required — The urgency of this escalation path target
        - `time_to_ack_interval_condition` 'active' | 'inactive' — If the time to ack is relative to a time window, this defines whether we move when the window is active or inactive
        - `time_to_ack_seconds` integer — How long should we wait for this level to acknowledge before proceeding to the next node in the path?
        - `time_to_ack_weekday_interval_config_id` string — If the time to ack is relative to a time window, this identifies which window it is relative to
      - `notify_channel` EscalationPathNodeNotifyChannelV2
        - `targets` EscalationPathTargetV2[], required — The targets (Slack channels) for this level
          - `id` string, required — Uniquely identifies an entity of this type
          - `schedule_mode` 'currently_on_call' | 'all_users_for_rota' | 'all_users' | '' — Only set for schedule targets, and either currently_on_call, all_users or all_users_for_rota and specifies which users to fetch from the schedule
          - `type` 'schedule' | 'user' | 'slack_channel', required — Controls what type of entity this target identifies, such as EscalationPolicy or User
          - `urgency` 'high' | 'low', required — The urgency of this escalation path target
        - `time_to_ack_interval_condition` 'active' | 'inactive' — If the time to ack is relative to a time window, this defines whether we move when the window is active or inactive
        - `time_to_ack_seconds` integer — How long should we wait for this level to acknowledge before moving on to the next node in the path?
        - `time_to_ack_weekday_interval_config_id` string — If the time to ack is relative to a time window, this identifies which window it is relative to
      - `repeat` EscalationPathNodeRepeatV2
        - `repeat_times` integer, required — How many times to repeat these nodes
        - `to_node` string, required — Which node ID we begin repeating from.
      - `type` 'if_else' | 'repeat' | 'level' | 'notify_channel', required — The type of this node. Available types are: * level: A set of targets (users or schedules) that should be paged, either all at once, or with a round-robin configuration. * notify_channel: Send the escalation to a Slack channel, where it can be acked by anyone in the channel. * if_else: Branch the escalation based on a set of conditions. * repeat: Go back to a previous node and repeat the logic from there.
    - `working_hours` WeekdayIntervalConfigV2[] — The working hours for this escalation path.
      - `id` string, required — The unique identifier for this set of working intervals
      - `name` string, required — A human readable label for this set of working intervals
      - `timezone` string, required — How to interpret all the intervals
      - `weekday_intervals` WeekdayIntervalV2[], required
        - `end_time` string, required — End time of the interval, in 24hr format
        - `start_time` string, required — Start time of the interval, in 24hr format
        - `weekday` string, required — Weekday this interval applies to

---

[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)
