---
title: "Add an escalation contact (owner + step-up)"
method: POST
path: "/orgs/v1/{org_id}/escalation-contacts"
tags: ["Escalations"]
---

# Add an escalation contact (owner + step-up)

`POST /orgs/v1/{org_id}/escalation-contacts`

## Request

- Base URL: `https://api.run402.com`
- URL: `https://api.run402.com/orgs/v1/{org_id}/escalation-contacts`
- Auth: none declared

Contacts are ATTENTION POLICY, never authorization — a contact row grants nothing at all. Keyed by email because delivery is email-keyed end to end and the CEO case is precisely a human with no day-to-day platform credential. `level` is an ordering: level 1 is paged first, level 2 only if level 1 lets the deadline lapse. An address with no verified contact email is ACCEPTED with a warnings[] reachability note, not rejected. Requires an active OWNER membership plus a fresh passkey step-up — who gets paged is as sensitive as who is a member.

## Path parameters

- `org_id` string, uuid, required

## Request body

- object
  - `email` string, email, required
  - `display_name` string
  - `level` integer

## Response `201`

The contact (+ warnings[] when unreachable today).

- EscalationContact
  - `contact_id` string, uuid
  - `email` string, email
  - `display_name` string, nullable
  - `level` integer
  - `created_at` string, date-time
  - `warnings` string[]: Faithful reachability notes (e.g. no verified contact email yet).

## Other responses

- `400`: Invalid input (missing/over-cap reason, malformed email, bad level or status).
- `401`: Missing or invalid auth.
- `403`: Not authorized (never a 404 existence oracle); also rate/open-bound denials (QUOTA_EXCEEDED with used/limit) and step-up required.

---

[API](https://skmtc.dev/run402/apis/run402-api.md) · [All operations](https://skmtc.dev/run402/apis/run402-api/llms.txt) · [OpenAPI document](https://skmtc.dev/run402/apis/run402-api/revisions/893607557f50?raw)
