---
title: "List meeting sessions"
method: GET
path: "/meeting_sessions"
tags: ["Meeting Sessions"]
---

# List meeting sessions

`GET /meeting_sessions`

Returns a list of meeting sessions, optionally filtered by status.

## Query parameters

- `status` 'scheduled' | 'joining' | 'waiting_for_admission' | 'active' | 'leaving' | 'ended' | 'failed' | 'admission_denied' — Lifecycle status of the session. `scheduled`: waiting for `join_at` before the bot attempts to join. `joining`: the bot is connecting to the meeting. `waiting_for_admission`: the bot is in the lobby waiting to be admitted. `active`: the bot is in the meeting and capturing. `leaving`: the bot is exiting the meeting. `ended`: the bot left and the session is complete. `failed`: the bot could not join or the session failed. `admission_denied`: the host did not admit the bot.

## Response `200`

Successful response with a list of meeting sessions.

- MeetingSessionListResponse
  - `data` MeetingSession[], required
    - `account_id` string, required — Identifier of the owning account.
    - `assistant` MeetingSessionAssistant, required
      - `audio_gate` 'none' | 'half_duplex', required — Audio gating strategy for the assistant call leg.
      - `id` string, required — Identifier of the assistant.
    - `assistant_state` 'starting' | 'connected' | 'failed' | 'ended' | 'null', nullable, required — Current state of the assistant, or null if no assistant is attached.
    - `assistant_state_changed_at` string, date-time, nullable, required — Timestamp of the last assistant state change, or null.
    - `avatar` MeetingSessionAvatar, required
      - `avatar_id` string, required — Identifier of the avatar.
      - `provider` 'anam', required — Avatar provider identifier.
    - `avatar_state` 'starting' | 'connected' | 'degraded' | 'disconnected' | 'null', nullable, required — Current state of the avatar connection, or null if no avatar is attached.
    - `avatar_state_changed_at` string, date-time, nullable, required — Timestamp of the last avatar state change, or null.
    - `bot_name` string, required — Display name of the bot in the meeting.
    - `config` MeetingSessionConfig, required
      - `barge_in` boolean, required — When enabled, a human participant `speech_on` event interrupts and stops the current bot audio; it does not bypass admission or initiate speech. Assistant sessions reject `barge_in: true`.
      - `speak_on_enter` string, nullable, required — Text spoken on meeting entry, or null if not set.
      - `summarize_on_end` boolean, required — Whether a summary artifact is generated on session end.
      - `voice` string, nullable, required — Configured voice identifier, or null if not set.
    - `created_at` string, date-time, required — Timestamp when the session was created.
    - `ended_at` string, date-time, nullable, required — Timestamp when the session ended, or null if ongoing.
    - `failure_reason` string, nullable, required — Human-readable failure reason if the session failed, or null.
    - `id` string, required — Unique identifier for the meeting session.
    - `join_at` string, date-time, nullable, required — Scheduled join time, or null for immediate join.
    - `joined_at` string, date-time, nullable, required — Timestamp when the session first became `active`, or null if it never became active. This remains positive admission evidence after terminal transitions.
    - `meeting_url` string, uri, required — The meeting URL the bot joins.
    - `metadata` object, required — Arbitrary key-value metadata attached to the session.
    - `platform` 'zoom' | 'google_meet' | 'teams' | 'webex' | 'unknown', required — Detected meeting platform.
    - `provider` string, required — Provider handling the meeting session.
    - `recording` boolean, required — Whether the session is being recorded.
    - `status` 'scheduled' | 'joining' | 'waiting_for_admission' | 'active' | 'leaving' | 'ended' | 'failed' | 'admission_denied', required — Lifecycle status. `waiting_for_admission` means the bot reached the meeting lobby and may require host approval. `active` means the bot entered the meeting/media path. `ended` alone does not prove attendance; use non-null `joined_at` as positive evidence that the session became active. `admission_denied` is reserved for an explicit provider denial, while cancellation or another termination can end a never-admitted session as `ended`.
    - `status_detail` string, nullable, required — Additional human-readable detail about the status, or null.
    - `updated_at` string, date-time, required — Timestamp of the last update to the session.
    - `webhook_url` string, uri, nullable, required — Webhook endpoint for session lifecycle callbacks, or null if not configured.

## Other responses

- `400` — Bad Request
- `401` — Unauthorized. On api.telnyx.com, authentication is enforced by the API gateway before the request reaches the Meeting service, so a missing or invalid API key returns the standard Telnyx error envelope (`{"errors": [{"code": "10009", ...}]}`) rather than the single-`error` shape below.
- `403` — The authenticated credential is not permitted to perform this operation.
- `429` — Authentication is temporarily overloaded. Retry after the number of seconds in `Retry-After`.
- `500` — Internal Server Error
- `503` — Authentication is temporarily unavailable.

---

[API](https://skmtc.net/team-telnyx/apis/telnyx-api-2.md) · [All operations](https://skmtc.net/team-telnyx/apis/telnyx-api-2/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/team-telnyx/telnyx-api-2/revisions/ec31f78cf002/schema)
