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 member](/api/room-members). Omit `muted` to join unmuted. A `202` response with `status: joining` confirms that the join request was accepted. Membership 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.member.joined` is emitted after membership in the target room is confirmed. - Moving a session also emits `room.member.left` for the previous room. See [Room lifecycle, member, and playback events](/api/rooms#lifecycle-member-and-playback-events) for complete payload schemas and examples.

Authentication

AuthorizationBearer
Application auth. Send `Authorization: Bearer <app_uuid>:<api_key>` using any active key in the app's collection. 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. This is the same session UUID that GET /api/v1/rooms/{room_id}/members returns.

mutedbooleanOptional

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

Response

Session already joined to this room (idempotent)

room_idstring
statusenum

Errors

400
Bad Request Error
401
Unauthorized Error
404
Not Found 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