---
title: "Read a dispatched join's live status. {id} is the join id returned by POST /v1/meetings/join. Requires the meetings:join scope. Returns { id, type:\"meeting_join\", status, bot_in_call, fatal_reason, team_id, updated_at } where status is one of dispatched | joining | in_waiting_room | in_call | recording | done | fatal (fatal_reason carries the reason, e.g. meeting_requires_sign_in). A join you do not own, or that does not exist, returns 404 not_found (indistinguishable). The meeting URL / passcode is never returned."
method: GET
path: "/v1/meetings/join/{id}"
---

# Read a dispatched join's live status. {id} is the join id returned by POST /v1/meetings/join. Requires the meetings:join scope. Returns { id, type:"meeting_join", status, bot_in_call, fatal_reason, team_id, updated_at } where status is one of dispatched | joining | in_waiting_room | in_call | recording | done | fatal (fatal_reason carries the reason, e.g. meeting_requires_sign_in). A join you do not own, or that does not exist, returns 404 not_found (indistinguishable). The meeting URL / passcode is never returned.

`GET /v1/meetings/join/{id}`

## Request

- Base URL: `https://api.usebubbles.com`
- URL: `https://api.usebubbles.com/v1/meetings/join/{id}`
- Auth: HTTP bearer

## Path parameters

- `id` string, required

## Response `200`

Success.

- MeetingJoinStatus: GET /v1/meetings/join/{id} — a dispatched join's live status. The meeting URL/passcode is never returned.
  - `id` string, required: The join id.
  - `type` 'meeting_join', required: The resource type.
  - `status` 'dispatched' | 'joining' | 'in_waiting_room' | 'in_call' | 'recording' | 'done' | 'fatal', required: The live join status.
  - `bot_in_call` boolean, required: Whether the notetaker is currently in the call.
  - `fatal_reason` string, nullable, required: The failure reason when status is fatal (e.g. meeting_requires_sign_in), else null.
  - `team_id` string, nullable, required: The workspace the recording is saved into, or null.
  - `updated_at` string, nullable, required: Last status update instant (ISO-8601 UTC), or null.

## Other responses

- `401`: Missing, malformed, or wrong-kind credential (unauthorized / token_revoked / account_deleted).
- `403`: The credential lacks the required scope, or the workspace cannot access paid features (forbidden / pro_plan_required).
- `404`: The resource does not exist or is not readable by the caller (not_found).
- `429`: Rate limit exceeded (rate_limited); see the Retry-After header.
- `500`: An unexpected server error occurred (internal_error).

---

[API](https://skmtc.dev/usebubbles/apis/bubbles-public-api.md) - [All operations](https://skmtc.dev/usebubbles/apis/bubbles-public-api/llms.txt) - [OpenAPI document](https://skmtc.dev/usebubbles/apis/bubbles-public-api/revisions/31570f5d4b05?raw)
