Add a session to the room

View as Markdown
**Rate limit: Per room** · **Burst:** 100 · **Refill:** 30 req/s Add a session as a [room participant](/api/room-participants). Omit `muted` to join unmuted. A `202` response with `status: joining` confirms that the join request was accepted. Participation is not yet complete. Exactly one of these outcomes applies: - If the session is not in another room, the new join starts. - If the session is already in this room, the response is `200` with `status: already_joined`; another join is not started. - If the session has completed joining another room, it is removed from that room before the new join starts. - If the session is still joining another room, the response is `409`. **Triggered webhooks:** - `room.participant.joined` is emitted after participation in the target room is confirmed. - Moving a session also emits `room.participant.left` for the previous room. See [Room lifecycle, participant, and playback events](/api/rooms#lifecycle-participant-and-playback-events) for complete payload schemas and examples.

Authentication

AuthorizationBearer
Send `Authorization: Bearer <app_uuid>:<api_key>` using an active API key. See [Authentication](https://voice-platform.docs.buildwithfern.com/api/authentication) for details.

Path parameters

room_idstringRequired

Case-sensitive room identifier.

Headers

Idempotency-KeystringOptionalformat: "^[a-zA-Z0-9._-]+$"<=128 characters
Optional key for safely retrying mutating requests. See [Idempotency](https://voice-platform.docs.buildwithfern.com/idempotency) for details.

Request

This endpoint expects an object.
session_uuidstringRequired

Identifies the Session to add. Use the complete value that GET /api/v1/rooms/{room_id}/participants returns.

mutedbooleanOptional

Controls whether the participant joins muted. Omit this field or set it to false to join the participant unmuted.

Response headers

traceparentstringOptional

Server-owned W3C Trace Context for correlating this response with support and observability data. It is present on successful and error responses. A valid incoming traceparent is linked to, but never becomes, the server-owned trace identifier.

Response

Session already joined to this room (idempotent)

room_idstring
statusenum

Errors

400
Bad Request Error
401
Unauthorized Error
404
Not Found Error
406
Not Acceptable Error
409
Conflict Error
413
Content Too Large Error
415
Unsupported Media Type Error
422
Unprocessable Entity Error
429
Too Many Requests Error
500
Internal Server Error
503
Service Unavailable Error