> ## Documentation Index
> Fetch the complete documentation index at: https://docs.happyuptime.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Escalation

Configure how an unacknowledged page escalates between layers.

# Escalation policies

Escalation policies define what happens when a paged on-call person doesn't acknowledge in time. Pages walk up the layer stack until someone acks or the policy exhausts.

## Get policy

GET `/oncall/schedules/{schedule_id}/escalation`

```json
{
  "data": {
    "id": "esc_abc",
    "schedule_id": "sch_xyz",
    "steps": [
      { "layer_id": "lyr_primary", "wait_seconds": 300, "channels": ["slack-page"] },
      { "layer_id": "lyr_secondary", "wait_seconds": 600, "channels": ["slack-page", "phone"] },
      { "layer_id": "lyr_manager", "wait_seconds": 0, "channels": ["slack-page", "email"] }
    ],
    "max_repeats": 1
  }
}
```

## Update policy

PUT `/oncall/schedules/{schedule_id}/escalation`

Ordered list of escalation steps.

How many times to loop through the policy if no one acks. Default 1.

Each step:

| Field | Type | Description |
| --- | --- | --- |
| `layer_id` | string | Which layer to page. Resolves to current on-call at fire time. |
| `wait_seconds` | int | Seconds to wait for ack before moving to next step (0 = immediate next step) |
| `channels` | array | Alert channel IDs to use for this step |

## Acknowledge

POST `/oncall/pages/{page_id}/ack`

Stops escalation immediately. Can be called by the paged user or anyone with `incidents:write`.

```json
{ "data": { "acknowledged_at": "2026-04-17T20:03:14Z", "acknowledged_by": "usr_alice" } }
```

Acknowledgement also happens automatically if Slack DM is replied with `ack` or `ok`.