---
title: "Get Me"
method: GET
path: "/auth/me"
tags: ["auth"]
---

# Get Me

`GET /auth/me`

## Request

- Base URL: `https://api.verdun.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.verdun.ai/auth/me`
- Auth: HTTP bearer

## Response `200`

Successful Response

- MeResponse
  - `id` string, required: User ID (opaque string identifier).
  - `email` string, required: User email address.
  - `first_name` string, nullable: User first name, if available.
  - `last_name` string, nullable: User last name, if available.
  - `role` string, nullable: User role or group, if available.
  - `last_seen_at` string, date-time, nullable: Last time the user was seen active.
  - `last_logged_in` string, date-time, nullable: Last login timestamp.
  - `created_at` string, date-time, nullable: User creation timestamp.
  - `permissions` object, nullable: Per-permission overrides for this operator; null means role defaults apply.
  - `claim_cleanup_enabled` boolean, nullable: Capability: true when this api has alarm-claim cleanup (claim status read at `GET /events/{id}/claim`, claims read at `GET /events/claims`, renew-only heartbeat at `POST /events/{id}/claim/renew`, agent closes clear claims) switched on (`CLAIM_CLEANUP_ENABLED`). Always present from an api that has the feature, true or false; ABSENT from an older api, which a console must read as false. Those routes are 404 whenever this is not true, and a heartbeat must never fall back to `POST /events/{id}/claim` (that route acquires).
  - `claim_refusal_enabled` boolean, nullable: Capability: true when this api enforces ONE HOLDER PER ALARM (`CLAIM_REFUSAL_ENABLED`, which also requires `claim_cleanup_enabled`): a close (409 `claim_held`, a per-item 423 in the bulk close) and the operator-started Voice down, AI voice announcement, call to the owner, dispatch call and event-scoped Live Talk are refused while ANOTHER operator holds a live claim, and `POST /events/{id}/claim/take-over` works. A console lights Take over only when this is true. Always present from an api that has the feature, true or false; ABSENT from an older api, which a console must read as false. The server's refusal stays authoritative for any stale tab.
  - `claim_escalation_enabled` boolean, nullable: Capability: true when this api serves the escalation record (`CLAIM_ESCALATION_ENABLED`, which also requires `claim_cleanup_enabled` and the legacy whole-site claim to be OFF): `POST /events/{id}/claim/acting` and its `/cancel` work, `claim.generation` is filled and the claims reads carry `activity`. A console shows "Escalation in progress" and sends the record only when this is true. ABSENT from an older api, which a console must read as false. When it turns false, drop any pending local intent.
  - `focus_enabled` boolean, nullable: Capability: true when this api serves Focus (`FOCUS_ENABLED`, which also requires `claim_cleanup_enabled` and `claim_refusal_enabled` and the legacy whole-site claim to be OFF): `POST /focus` and its keep / input / release routes and `GET /focus` work, new alarms in an active focus's scope are reserved for the focuser, and the claims reads carry `reservations` and `focus`. ABSENT from an older api, which a console must read as false. When it turns false, drop any local focus state.
  - `site_hold` SiteHoldCapability
    - `enabled` boolean, required: True when the site hold (SITE_HOLD_ENABLED and its co-flags) is on for this api; the story routes 404 otherwise.
    - `heartbeat_s` integer, required: Seconds between the open story page's heartbeats (`POST /focus/{id}/heartbeat`).
    - `open_s` integer, required: A hold counts as open while not left and last seen within this many seconds.
    - `idle_s` integer, required: A hold whose page is no longer open stays valid at most this many seconds after it was last seen (the backstop for a lost heartbeat). A clean leave ends it sooner, about 30 s after the leave.
    - `new_alert_s` integer, required: A hold whose page is closed stays valid at most this many seconds after a new alarm is reserved for it.
  - `claim_next_enabled` boolean, nullable: Capability: true when this api serves the Next alarm key (`CLAIM_NEXT_ENABLED`, which also requires `claim_refusal_enabled` (and so claim cleanup) and the legacy whole-site claim to be OFF): `POST /events/claims/next` works, which claims the caller the oldest eligible unheld alarm in one call. ABSENT from an older api, which a console must read as false. The route answers 404 whenever this is not true.
  - `queue_order` QueueOrder
    - `mode` string, required: `oldest_first`: rank (aged >= focus_age_cap_s first, then the caller's own valid Focus, then the rest), then queued_at, then id. Severity does not sort.
    - `focus_age_cap_s` integer, required: T: an eligible alarm queued at least this many seconds goes ahead of own-Focus preference.
  - `open_alarms_paged_read` boolean, nullable: Capability: true when this api serves `GET /events/open-alarms` (the stable, oldest-first paged read of every open alarm in a scope). Constant true from an api that has it; ABSENT from an older api, which a console must read as false. The read is not gated by `rail_open_list_enabled`.
  - `rail_open_list_enabled` boolean, nullable: Switch (env `RAIL_OPEN_LIST_ENABLED`, default OFF): show the rail's full open list. A console uses the paged read only when this AND `open_alarms_paged_read` are true. Absent from an older api (= false).
  - `alarm_show_read` boolean, nullable: Capability: true when this api serves `GET /events/{id}/show` (the paged Show scene). Constant true; absent from an older api (= false). Not gated by `alarm_show_enabled`.
  - `alarm_show_enabled` boolean, nullable: Switch (env `ALARM_SHOW_ENABLED`, default OFF): the Show view. A console shows Show only when this AND `alarm_show_read` are true. Absent from an older api (= false).
  - `flood_tool_enabled` boolean, nullable: Switch (env `FLOOD_TOOL_ENABLED`, default OFF): show the rail's "Label and close together" tool. Console-only: the bulk close endpoint is unchanged and is not gated by it. Absent from an older api (= false).
  - `bulk_close_undo` boolean, nullable: Capability: true when this api serves `POST /eval/operator/bulk/undo` (Undo on the site story's Close all). Constant true; ABSENT from an older api (= false). No env switch.

---

[API](https://skmtc.dev/verdun/apis/verdun-api.md) - [All operations](https://skmtc.dev/verdun/apis/verdun-api/llms.txt) - [OpenAPI document](https://skmtc.dev/verdun/apis/verdun-api/revisions/00252d8227c1?raw)
