Resolve rotations and plan escalations
On-call tooling and the incident driver both live behind these two endpoints — the call resolves who is accountable at a given instant, and the plan flattens the escalation ladder you would walk when an incident refuses an ACK. Both are pure compute: nothing is persisted, no pages are sent, and no state changes. An incident driver (the webhook-worker escalation scheduler) still fires pages through the notify channel downstream. Resolve a rotation.POST /api/v1/oncall/resolve answers “who is on call now” — a rotation is a fixed-length shift schedule anchored to an absolute start (anchor), with members rotating through it in order.
POST /api/v1/oncall/escalation/plan flattens the policy into the ordered pages timeline: each step names a target (a live rotation resolved at the page’s fire instant, or a static member list), the channels paged, and the escalate_after_seconds window before the next step. Each layer of the walk fires at a cumulative offsetSeconds from the incident start; policy.repeat loops the whole policy that many extra times if no step is ever acknowledged.
Sandbox-mode request quickstart
The two calls below authenticate the way a test-mode client call should — setORBIT_API_KEY to your dv_test_sk_… value and every curl/SDK sample on this page runs against the sandbox with no carrier spend. The key prefix decides the mode: with API-key auth the X-Test-Mode header is not consulted (only a session-authenticated dashboard call honors it), and a live-prefixed key (dv_live_sk_…) always runs live.
For voice recipients in a page-down or skip-rank drill, aim at a sandbox magic number so the routing is deterministic instead of hitting a live handset. The full routing matrix (session auth vs key auth vs sandbox orgs) is in Sandbox and test mode, and the Quality endpoint overlay carries the same per-request pattern worked against a read endpoint — copy either form and your key handling stays sandbox-safe.
SDK surface bridge — List the on-call rotation and take a live skip-rank claim — both read (or mutate) through the SDK escape hatch with the tenant’s live key.
These three tabs mirror SDK status and coverage. Python fronts
client.request, Go fronts client.Request, and TS fronts fetch-TS — each with the live key.