client.conference_rooms
Conference rooms, guests and AI notes. These methods are on client.conference_rooms, where client is a MoreVoice client (see the Python SDK). On AsyncMoreVoice the same methods are awaited. Each one returns the response object and raises an exception when the API answers with an error.
create()
Section titled “create()”Create a conference room. Returns the room with its guest link (join_url), shown only now. Phone dial-in comes from an inbound route to the room.
def create(self, body: _m.ConferenceRoomsCreateBody | Mapping[str, Any], *, more_voice_version: str | Unset = UNSET, idempotency_key: str | Unset = UNSET) -> _m.ConferenceRoomWithLinkclient.conference_rooms.create() · await async_client.conference_rooms.create() · POST /conference_rooms · API reference
Request body
Section titled “Request body”| Field | Type | Required | Description |
|---|---|---|---|
name |
string |
yes | — |
moderator_pin |
string |
no | Moderator PIN (different from the participant PIN). |
pin |
string |
no | Participant PIN for phone dial-in (4–8 digits). |
schedule |
object |
no | Replaces the schedule. |
settings |
object |
no | Only the settings you send change (defaults on create). |
Returns
Section titled “Returns”ConferenceRoomWithLink:
| Field | Type | Description |
|---|---|---|
object |
"conference_room" |
Always conference_room. |
id |
string |
A conference room ID (prefix room_). |
livemode |
boolean |
true in live mode, false in test mode. |
name |
string |
— |
owner_id |
string | null |
usr_… ID. |
active |
boolean |
Switched off rooms can’t be joined. |
has_pin |
boolean |
Phone participants need a PIN (never returned). |
pin_length |
integer | null |
— |
has_moderator_pin |
boolean |
— |
dial_in |
string[] |
Phone numbers routed to this room (inbound routes). |
settings |
ConferenceRoomSettings |
— |
schedule |
ConferenceRoomSchedule |
A scheduled room can be joined from 15 minutes before each occurrence until 2 hours after it ends. |
live |
object | null |
The session in progress, or null. |
created |
string |
An ISO-8601 timestamp in UTC. |
updated |
string |
An ISO-8601 timestamp in UTC. |
join_url |
string |
The guest link: anyone with it can join as a guest. Shown only now — store it. |
Example
Section titled “Example”from morevoice import MoreVoice
client = MoreVoice() # MOREVOICE_API_KEY from the environment
conference_room_with_link = client.conference_rooms.create({ "name": "Weekly sales sync", "pin": "4821", "schedule": { "end_at": "2026-11-03T10:30:00+02:00", "recurrence": "weekly", "start_at": "2026-11-03T10:00:00+02:00", }, "settings": { "ai_note_taker": True, "language": "he", },})print(conference_room_with_link)create_link()
Section titled “create_link()”Create a new guest link. Replaces the room’s guest link: the previous one stops working at once. The new join_url is shown only now.
def create_link(self, id: str, body: _m.ConferenceRoomLinkParamsInput | Mapping[str, Any] | Unset = UNSET, *, more_voice_version: str | Unset = UNSET, idempotency_key: str | Unset = UNSET) -> _m.ConferenceRoomWithLinkclient.conference_rooms.create_link() · await async_client.conference_rooms.create_link() · POST /conference_rooms/{id}/links · API reference
Parameters
Section titled “Parameters”| Name | Type | Required | Description |
|---|---|---|---|
id |
str |
yes | A conference room ID (room_…). |
Returns
Section titled “Returns”ConferenceRoomWithLink:
| Field | Type | Description |
|---|---|---|
object |
"conference_room" |
Always conference_room. |
id |
string |
A conference room ID (prefix room_). |
livemode |
boolean |
true in live mode, false in test mode. |
name |
string |
— |
owner_id |
string | null |
usr_… ID. |
active |
boolean |
Switched off rooms can’t be joined. |
has_pin |
boolean |
Phone participants need a PIN (never returned). |
pin_length |
integer | null |
— |
has_moderator_pin |
boolean |
— |
dial_in |
string[] |
Phone numbers routed to this room (inbound routes). |
settings |
ConferenceRoomSettings |
— |
schedule |
ConferenceRoomSchedule |
A scheduled room can be joined from 15 minutes before each occurrence until 2 hours after it ends. |
live |
object | null |
The session in progress, or null. |
created |
string |
An ISO-8601 timestamp in UTC. |
updated |
string |
An ISO-8601 timestamp in UTC. |
join_url |
string |
The guest link: anyone with it can join as a guest. Shown only now — store it. |
Example
Section titled “Example”from morevoice import MoreVoice
client = MoreVoice() # MOREVOICE_API_KEY from the environment
conference_room_with_link = client.conference_rooms.create_link("room_7Hk2Lm9Qp", {})print(conference_room_with_link)delete()
Section titled “delete()”Delete a conference room. Ends a session in progress, unlinks the room’s inbound routes and deletes it. Its past sessions (call records) stay.
def delete(self, id: str, *, more_voice_version: str | Unset = UNSET, idempotency_key: str | Unset = UNSET) -> _m.DeletedConferenceRoomclient.conference_rooms.delete() · await async_client.conference_rooms.delete() · DELETE /conference_rooms/{id} · API reference
Parameters
Section titled “Parameters”| Name | Type | Required | Description |
|---|---|---|---|
id |
str |
yes | A conference room ID (room_…). |
Returns
Section titled “Returns”DeletedConferenceRoom:
| Field | Type | Description |
|---|---|---|
object |
"conference_room" |
Always conference_room. |
id |
string |
A conference room ID (prefix room_). |
deleted |
true |
— |
Example
Section titled “Example”from morevoice import MoreVoice
client = MoreVoice() # MOREVOICE_API_KEY from the environment
deleted_conference_room = client.conference_rooms.delete("room_7Hk2Lm9Qp")print(deleted_conference_room)invite()
Section titled “invite()”Email invitations. Emails each address the room’s guest link, phone dial-in and a calendar file, in the room’s language. Needs a live key.
def invite(self, id: str, body: _m.ConferenceRoomsInviteBody | Mapping[str, Any], *, more_voice_version: str | Unset = UNSET, idempotency_key: str | Unset = UNSET) -> _m.ConferenceInviteBatchclient.conference_rooms.invite() · await async_client.conference_rooms.invite() · POST /conference_rooms/{id}/invite · API reference
Parameters
Section titled “Parameters”| Name | Type | Required | Description |
|---|---|---|---|
id |
str |
yes | A conference room ID (room_…). |
Request body
Section titled “Request body”| Field | Type | Required | Description |
|---|---|---|---|
emails |
string[] |
yes | Up to 50 addresses. |
message |
string |
no | A personal note in the invitation. |
pin |
string |
no | Print this participant PIN in the invitation (otherwise it says a PIN is required). |
Returns
Section titled “Returns”ConferenceInviteBatch:
| Field | Type | Description |
|---|---|---|
object |
"conference_invite_batch" |
Always conference_invite_batch. |
livemode |
boolean |
true in live mode, false in test mode. |
room_id |
string |
A conference room ID (prefix room_). |
sent |
integer |
— |
results |
object[] |
— |
Example
Section titled “Example”from morevoice import MoreVoice
client = MoreVoice() # MOREVOICE_API_KEY from the environment
conference_invite_batch = client.conference_rooms.invite("room_7Hk2Lm9Qp", { "emails": [ "dana@example.com", ], "message": "Agenda: Q4 pipeline.",})print(conference_invite_batch)list()
Section titled “list()”List conference rooms. The organisation’s active rooms, newest first. Guest links are not included: they are shown only when created.
def list(self, *, limit: int | Unset = 20, starting_after: str | Unset = UNSET, ending_before: str | Unset = UNSET, more_voice_version: str | Unset = UNSET) -> AsyncPage[_m.ConferenceRoom]client.conference_rooms.list() · await async_client.conference_rooms.list() · GET /conference_rooms · API reference
Parameters
Section titled “Parameters”| Name | Type | Required | Description |
|---|---|---|---|
limit |
integer |
no | How many objects to return, 1–100 (default 20). |
starting_after |
string |
no | A cursor (next_cursor) or object ID: return the objects after it (older). |
ending_before |
string |
no | A cursor or object ID: return the objects before it (newer). |
Returns
Section titled “Returns”A page of results (ConferenceRoomList): data, has_more and next_cursor.
Example
Section titled “Example”from morevoice import MoreVoice
client = MoreVoice() # MOREVOICE_API_KEY from the environment
for conference_room in client.conference_rooms.list(): print(conference_room)list_sessions()
Section titled “list_sessions()”List a room’s past sessions. The room’s recent sessions (up to 100), newest first, with their AI meeting notes. Each one is a call: fetch its recording and transcript through /v1/calls/{id}.
def list_sessions(self, id: str, *, limit: int | Unset = 20, starting_after: str | Unset = UNSET, ending_before: str | Unset = UNSET, more_voice_version: str | Unset = UNSET) -> AsyncPage[_m.ConferenceSession]client.conference_rooms.list_sessions() · await async_client.conference_rooms.list_sessions() · GET /conference_rooms/{id}/history · API reference
Parameters
Section titled “Parameters”| Name | Type | Required | Description |
|---|---|---|---|
id |
str |
yes | A conference room ID (room_…). |
limit |
integer |
no | How many objects to return, 1–100 (default 20). |
starting_after |
string |
no | A cursor (next_cursor) or object ID: return the objects after it (older). |
ending_before |
string |
no | A cursor or object ID: return the objects before it (newer). |
Returns
Section titled “Returns”A page of results (ConferenceSessionList): data, has_more and next_cursor.
Example
Section titled “Example”from morevoice import MoreVoice
client = MoreVoice() # MOREVOICE_API_KEY from the environment
for conference_room in client.conference_rooms.list_sessions("room_7Hk2Lm9Qp"): print(conference_room)moderate()
Section titled “moderate()”Moderate a live session. Acts on the session in progress (409 when nobody is in the room): mute, hold, promote or remove a participant (participant_id from GET …/live), lock or unlock the room, mute everyone but the moderators, or end the session. Returns the live view after the change. Needs a live key.
def moderate(self, id: str, body: _m.ConferenceRoomsModerateBody | Mapping[str, Any] | Unset = UNSET, *, more_voice_version: str | Unset = UNSET, idempotency_key: str | Unset = UNSET) -> _m.ConferenceLiveclient.conference_rooms.moderate() · await async_client.conference_rooms.moderate() · POST /conference_rooms/{id}/moderate · API reference
Parameters
Section titled “Parameters”| Name | Type | Required | Description |
|---|---|---|---|
id |
str |
yes | A conference room ID (room_…). |
Request body
Section titled “Request body”| Field | Type | Required | Description |
|---|---|---|---|
end |
true |
no | End the session for everyone. |
hold |
boolean |
no | — |
lock |
boolean |
no | Lock (true) or unlock the room: when locked nobody else can join. |
mute |
boolean |
no | — |
mute_all |
true |
no | Mute everyone except the moderators. |
participant_id |
string |
no | The participant to act on (from GET …/live). |
remove |
true |
no | Remove the participant from the room. |
role |
"moderator" | "member" |
no | — |
Returns
Section titled “Returns”ConferenceLive:
| Field | Type | Description |
|---|---|---|
object |
"conference_live" |
Always conference_live. |
livemode |
boolean |
true in live mode, false in test mode. |
room_id |
string |
A conference room ID (prefix room_). |
active |
boolean |
A session is in progress. |
session_id |
string | null |
call_… ID. |
started_at |
string | null |
— |
locked |
boolean |
— |
recording |
boolean |
— |
participants |
object[] |
— |
Example
Section titled “Example”from morevoice import MoreVoice
client = MoreVoice() # MOREVOICE_API_KEY from the environment
conference_live = client.conference_rooms.moderate("room_7Hk2Lm9Qp", { "mute": True, "participant_id": "g7Hk2pQx",})print(conference_live)retrieve()
Section titled “retrieve()”Retrieve a conference room. Returns the ConferenceRoom object. Answers 404 with the code resource_missing when nothing has this ID in this organisation and mode.
def retrieve(self, id: str, *, more_voice_version: str | Unset = UNSET) -> _m.ConferenceRoomclient.conference_rooms.retrieve() · await async_client.conference_rooms.retrieve() · GET /conference_rooms/{id} · API reference
Parameters
Section titled “Parameters”| Name | Type | Required | Description |
|---|---|---|---|
id |
str |
yes | A conference room ID (room_…). |
Returns
Section titled “Returns”ConferenceRoom:
| Field | Type | Description |
|---|---|---|
object |
"conference_room" |
Always conference_room. |
id |
string |
A conference room ID (prefix room_). |
livemode |
boolean |
true in live mode, false in test mode. |
name |
string |
— |
owner_id |
string | null |
usr_… ID. |
active |
boolean |
Switched off rooms can’t be joined. |
has_pin |
boolean |
Phone participants need a PIN (never returned). |
pin_length |
integer | null |
— |
has_moderator_pin |
boolean |
— |
dial_in |
string[] |
Phone numbers routed to this room (inbound routes). |
settings |
ConferenceRoomSettings |
— |
schedule |
ConferenceRoomSchedule |
A scheduled room can be joined from 15 minutes before each occurrence until 2 hours after it ends. |
live |
object | null |
The session in progress, or null. |
created |
string |
An ISO-8601 timestamp in UTC. |
updated |
string |
An ISO-8601 timestamp in UTC. |
Example
Section titled “Example”from morevoice import MoreVoice
client = MoreVoice() # MOREVOICE_API_KEY from the environment
conference_room = client.conference_rooms.retrieve("room_7Hk2Lm9Qp")print(conference_room)retrieve_ics()
Section titled “retrieve_ics()”Download the calendar invitation. An .ics file (RFC 5545) for the room’s schedule, with its guest link and phone dial-in. It carries the guest link, so it needs conference:write.
def retrieve_ics(self, id: str, *, more_voice_version: str | Unset = UNSET) -> strclient.conference_rooms.retrieve_ics() · await async_client.conference_rooms.retrieve_ics() · GET /conference_rooms/{id}/ics · API reference
Parameters
Section titled “Parameters”| Name | Type | Required | Description |
|---|---|---|---|
id |
str |
yes | A conference room ID (room_…). |
Returns
Section titled “Returns”Nothing, on success.
Example
Section titled “Example”from morevoice import MoreVoice
client = MoreVoice() # MOREVOICE_API_KEY from the environment
data = client.conference_rooms.retrieve_ics("room_7Hk2Lm9Qp")print(data)retrieve_live()
Section titled “retrieve_live()”Who is in the room now. Returns the ConferenceLive object. Answers 404 with the code resource_missing when nothing has this ID in this organisation and mode.
def retrieve_live(self, id: str, *, more_voice_version: str | Unset = UNSET) -> _m.ConferenceLiveclient.conference_rooms.retrieve_live() · await async_client.conference_rooms.retrieve_live() · GET /conference_rooms/{id}/live · API reference
Parameters
Section titled “Parameters”| Name | Type | Required | Description |
|---|---|---|---|
id |
str |
yes | A conference room ID (room_…). |
Returns
Section titled “Returns”ConferenceLive:
| Field | Type | Description |
|---|---|---|
object |
"conference_live" |
Always conference_live. |
livemode |
boolean |
true in live mode, false in test mode. |
room_id |
string |
A conference room ID (prefix room_). |
active |
boolean |
A session is in progress. |
session_id |
string | null |
call_… ID. |
started_at |
string | null |
— |
locked |
boolean |
— |
recording |
boolean |
— |
participants |
object[] |
— |
Example
Section titled “Example”from morevoice import MoreVoice
client = MoreVoice() # MOREVOICE_API_KEY from the environment
conference_live = client.conference_rooms.retrieve_live("room_7Hk2Lm9Qp")print(conference_live)update()
Section titled “update()”Update a conference room. Only the fields (and settings) you send change; schedule is replaced as a whole. A null PIN removes it.
def update(self, id: str, body: _m.ConferenceRoomsUpdateBody | Mapping[str, Any] | Unset = UNSET, *, more_voice_version: str | Unset = UNSET) -> _m.ConferenceRoomclient.conference_rooms.update() · await async_client.conference_rooms.update() · PATCH /conference_rooms/{id} · API reference
Parameters
Section titled “Parameters”| Name | Type | Required | Description |
|---|---|---|---|
id |
str |
yes | A conference room ID (room_…). |
Request body
Section titled “Request body”| Field | Type | Required | Description |
|---|---|---|---|
active |
boolean |
no | false: switch the room off (it can’t be joined). |
moderator_pin |
string | null |
no | A new moderator PIN; null removes it. |
name |
string |
no | — |
pin |
string | null |
no | A new participant PIN; null removes it. |
schedule |
object |
no | Replaces the schedule. |
settings |
object |
no | Only the settings you send change (defaults on create). |
Returns
Section titled “Returns”ConferenceRoom:
| Field | Type | Description |
|---|---|---|
object |
"conference_room" |
Always conference_room. |
id |
string |
A conference room ID (prefix room_). |
livemode |
boolean |
true in live mode, false in test mode. |
name |
string |
— |
owner_id |
string | null |
usr_… ID. |
active |
boolean |
Switched off rooms can’t be joined. |
has_pin |
boolean |
Phone participants need a PIN (never returned). |
pin_length |
integer | null |
— |
has_moderator_pin |
boolean |
— |
dial_in |
string[] |
Phone numbers routed to this room (inbound routes). |
settings |
ConferenceRoomSettings |
— |
schedule |
ConferenceRoomSchedule |
A scheduled room can be joined from 15 minutes before each occurrence until 2 hours after it ends. |
live |
object | null |
The session in progress, or null. |
created |
string |
An ISO-8601 timestamp in UTC. |
updated |
string |
An ISO-8601 timestamp in UTC. |
Example
Section titled “Example”from morevoice import MoreVoice
client = MoreVoice() # MOREVOICE_API_KEY from the environment
conference_room = client.conference_rooms.update("room_7Hk2Lm9Qp", { "name": "Sales sync (Tuesdays)", "settings": { "mute_on_entry": True, },})print(conference_room)