---
title: "Where the escalation ladder has got to"
method: GET
path: "/api/{org_id}/oncall/responses/{response_id}/escalation"
tags: ["OnCall"]
---

# Where the escalation ladder has got to

`GET /api/{org_id}/oncall/responses/{response_id}/escalation`

## Request

- Base URL: `https://api.openobserve.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.openobserve.ai/api/{org_id}/oncall/responses/{response_id}/escalation`
- Auth: API key in header `Authorization`
- TypeScript: <https://skmtc.dev/openobserve/apis/openobserve-api-http/docs/api/:org_id/oncall/responses/:response_id/escalation/get.ts> (a function with typed inputs; its response is checked against the schema)

## Path parameters

- `org_id` string, required
- `response_id` string, required

## Response `200`

Success

- EscalationProgress: Where the ladder has got to, and what happens next. The question a responder actually has mid-incident is "when does this wake somebody else", and it was answerable nowhere in the product.
  - `exhausted` boolean, required: The ladder ran out of rungs with nobody acknowledging.
  - `fired` FiredRung[], required: Rungs already sent, oldest first.
    - `after_micros` integer, required
    - `at` integer, required: Absolute instant it fired, so the UI need not re-derive it.
    - `reached` string[], required: The PEOPLE it actually reached, from the delivery ledger. Read from what was recorded at the time, never re-resolved against who holds the rotation now: a rung that woke Ana has to keep saying Ana, or a look back at last month's page quietly rewrites who was accountable. `targets` says why they were chosen; this says who.
    - `reached_nobody` boolean, required: The rung fired and the delivery ledger has nobody for it. Distinct from an empty `reached` on a rung that is merely old: this is the "paged nobody" case — an unstaffed rotation, or a target that resolved to no one — and the most important thing a post-mortem learns here.
    - `targets` string[], required: The POSITIONS this rung names — "whoever is on call in Primary".
  - `held_until_micros` integer, nullable: While the first page is held for AI triage, the deadline the held trigger wakes at.
  - `next_at` integer, nullable: When it fires, absolute micros.
  - `next_recipients` string[], required: Who that rung would wake, resolved against the rotations as they stand now. Unlike `FiredRung::reached` this IS a live answer, because the question is about a page that has not happened yet.
  - `next_targets` string[], required: The next rung, if the ladder is still climbing.
  - `stopped_because` string, nullable: Why the ladder is not climbing — acknowledged, snoozed, resolved. `None` means it is running.

---

[API](https://skmtc.dev/openobserve/apis/openobserve-api-http.md) - [All operations](https://skmtc.dev/openobserve/apis/openobserve-api-http/llms.txt) - [OpenAPI document](https://skmtc.dev/openobserve/apis/openobserve-api-http/revisions/0529b8a10252?raw)
