---
title: "Get the participant waiting room payload"
method: GET
path: "/api/participant/sessions/{sessionId}/waiting-room"
tags: ["Waiting Room"]
---

# Get the participant waiting room payload

`GET /api/participant/sessions/{sessionId}/waiting-room`

## Request

- Base URL: `https://api.production.yourmedley.com`
- URL: `https://api.production.yourmedley.com/api/participant/sessions/{sessionId}/waiting-room`
- Auth: HTTP bearer

Returns the composite payload needed to render the participant
waiting room: session info + leader, AI features flag, attendee
roster with computed presence states (present / joining /
not_yet_here), reflection state for the orientation bullet,
and a server `now` timestamp clients use for the countdown.

Side effect: upserts the caller's presence heartbeat
(`session_attendance.last_seen_at`, `joined_at` set on first call).

Gated by `live_session_delivery` feature flag. Returns 403 when the
authenticated user is not enrolled in the session's cohort.

## Path parameters

- `sessionId` string, uuid, required

## Response `200`

Waiting room payload

- object
  - `success` boolean
  - `data` WaitingRoomPayload
    - `session` WaitingRoomSessionInfo
      - `session_id` string, uuid
      - `status` 'unscheduled' | 'scheduled' | 'in_progress' | 'completed' | 'cancelled' | 'rescheduled'
      - `scheduled_start` string, date-time, nullable
      - `scheduled_end` string, date-time, nullable
      - `duration_minutes` integer, nullable
      - `timezone` string
      - `format` 'Virtual' | 'In-Person'
      - `cohort_id` string, uuid
      - `group_id` string, uuid, nullable
      - `group_name` string, nullable
    - `leader` WaitingRoomLeader
      - `user_id` string, uuid, nullable
      - `first_name` string
      - `display_name` string
      - `role_label` 'COACH' | 'PEER LEADER', nullable
    - `ai_features_enabled` boolean
    - `attendees` WaitingRoomAttendee[]
      - `user_id` string, uuid
      - `display_name` string
      - `initials` string
      - `is_current_participant` boolean
      - `role_label` 'COACH' | 'PEER LEADER', nullable
      - `presence` 'present' | 'joining' | 'not_yet_here'
    - `reflection` WaitingRoomReflectionState
      - `status` 'NOT_STARTED' | 'IN_PROGRESS' | 'COMPLETED'
      - `considered_for_prep` boolean
    - `no_show` WaitingRoomNoShowState, nullable: MED-1006 (E4.0f) — non-null only for a peer-led Live Session Delivery session that has entered the day-of no-show window (still scheduled, past the confirmed-leader head-start). Null otherwise (normal card).
      - `header_scenario` 'leader_not_arrived' | 'leader_declined'
      - `leader_first_name` string
      - `eligibility` 'volunteered' | 'no_response' | 'passive': This member's volunteer eligibility variant (AC6/AC16).
      - `countdown_ends_at` string, date-time: When the session is declared missed (AC4/AC19).
      - `ai_features_enabled` boolean
      - `session_number` integer, nullable
    - `server_now` string, date-time

## Other responses

- `401`: Unauthorized
- `403`: Participant not enrolled in this session's cohort
- `404`: Session not found OR live_session_delivery flag off

---

[API](https://skmtc.dev/withmedley/apis/medley-api.md) - [All operations](https://skmtc.dev/withmedley/apis/medley-api/llms.txt) - [OpenAPI document](https://skmtc.dev/withmedley/apis/medley-api/revisions/40aaac5ca6bd?raw)
