Skip to content

mv.conferenceRooms

Conference rooms, guests and AI notes. These methods are on mv.conferenceRooms, where mv is your client (see the Node.js SDK). Each one returns the response object and throws when the API answers with an error.

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.

mv.conferenceRooms.create(body: ConferenceRoomsCreateData["body"], options?: RequestOptions): Promise<ConferenceRoomsCreateResponse>

POST /conference_rooms · API reference

Name Type Required Description
body.name string yes
body.moderator_pin string no Moderator PIN (different from the participant PIN).
body.pin string no Participant PIN for phone dial-in (4–8 digits).
body.schedule object no Replaces the schedule.
body.settings object no Only the settings you send change (defaults on create).
options.headers["MoreVoice-Version"] string no The API version to use for this request. Defaults to the version the API key is pinned to.
options.headers["Idempotency-Key"] string no A unique key (for example a UUID) that makes this request safe to retry: for 24 hours, a retry with the same key and parameters returns the first response instead of acting twice.
options RequestOptions no idempotencyKey, extra headers and an abort signal: see retries and idempotency.

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.
import MoreVoice from "@morevoice/sdk";
const mv = new MoreVoice(); // MOREVOICE_API_KEY from the environment
const conferenceRoomWithLink = await mv.conferenceRooms.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",
},
});
console.log(conferenceRoomWithLink);

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.

mv.conferenceRooms.createLink(id: ConferenceRoomsCreateLinkData["path"]["id"], body?: ConferenceRoomsCreateLinkData["body"], options?: RequestOptions): Promise<ConferenceRoomsCreateLinkResponse>

POST /conference_rooms/{id}/links · API reference

Name Type Required Description
id string yes A conference room ID (room_…).
options.headers["MoreVoice-Version"] string no The API version to use for this request. Defaults to the version the API key is pinned to.
options.headers["Idempotency-Key"] string no A unique key (for example a UUID) that makes this request safe to retry: for 24 hours, a retry with the same key and parameters returns the first response instead of acting twice.
options RequestOptions no idempotencyKey, extra headers and an abort signal: see retries and idempotency.

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.
import MoreVoice from "@morevoice/sdk";
const mv = new MoreVoice(); // MOREVOICE_API_KEY from the environment
const conferenceRoomWithLink = await mv.conferenceRooms.createLink("room_7Hk2Lm9Qp", {});
console.log(conferenceRoomWithLink);

Delete a conference room. Ends a session in progress, unlinks the room’s inbound routes and deletes it. Its past sessions (call records) stay.

mv.conferenceRooms.delete(id: ConferenceRoomsDeleteData["path"]["id"], options?: RequestOptions): Promise<ConferenceRoomsDeleteResponse>

DELETE /conference_rooms/{id} · API reference

Name Type Required Description
id string yes A conference room ID (room_…).
options.headers["MoreVoice-Version"] string no The API version to use for this request. Defaults to the version the API key is pinned to.
options.headers["Idempotency-Key"] string no A unique key (for example a UUID) that makes this request safe to retry: for 24 hours, a retry with the same key and parameters returns the first response instead of acting twice.
options RequestOptions no idempotencyKey, extra headers and an abort signal: see retries and idempotency.

DeletedConferenceRoom:

Field Type Description
object "conference_room" Always conference_room.
id string A conference room ID (prefix room_).
deleted true —
import MoreVoice from "@morevoice/sdk";
const mv = new MoreVoice(); // MOREVOICE_API_KEY from the environment
const deletedConferenceRoom = await mv.conferenceRooms.delete("room_7Hk2Lm9Qp");
console.log(deletedConferenceRoom);

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.

mv.conferenceRooms.invite(id: ConferenceRoomsInviteData["path"]["id"], body: ConferenceRoomsInviteData["body"], options?: RequestOptions): Promise<ConferenceRoomsInviteResponse>

POST /conference_rooms/{id}/invite · API reference

Name Type Required Description
id string yes A conference room ID (room_…).
body.emails string[] yes Up to 50 addresses.
body.message string no A personal note in the invitation.
body.pin string no Print this participant PIN in the invitation (otherwise it says a PIN is required).
options.headers["MoreVoice-Version"] string no The API version to use for this request. Defaults to the version the API key is pinned to.
options.headers["Idempotency-Key"] string no A unique key (for example a UUID) that makes this request safe to retry: for 24 hours, a retry with the same key and parameters returns the first response instead of acting twice.
options RequestOptions no idempotencyKey, extra headers and an abort signal: see retries and idempotency.

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[] —
import MoreVoice from "@morevoice/sdk";
const mv = new MoreVoice(); // MOREVOICE_API_KEY from the environment
const conferenceInviteBatch = await mv.conferenceRooms.invite("room_7Hk2Lm9Qp", {
emails: [
"dana@example.com",
],
message: "Agenda: Q4 pipeline.",
});
console.log(conferenceInviteBatch);

List conference rooms. The organisation’s active rooms, newest first. Guest links are not included: they are shown only when created.

mv.conferenceRooms.list(query?: NonNullable<ConferenceRoomsListData["query"]>, options?: RequestOptions): PagedList<ConferenceRoomsListResponse["data"][number], NonNullable<ConferenceRoomsListData["query"]>>

GET /conference_rooms · API reference

Name Type Required Description
query.limit integer no How many objects to return, 1–100 (default 20).
query.starting_after string no A cursor (next_cursor) or object ID: return the objects after it (older).
query.ending_before string no A cursor or object ID: return the objects before it (newer).
options.headers["MoreVoice-Version"] string no The API version to use for this request. Defaults to the version the API key is pinned to.
options RequestOptions no idempotencyKey, extra headers and an abort signal: see retries and idempotency.

A PagedList: await it for the first page, for await it for every item.

import MoreVoice from "@morevoice/sdk";
const mv = new MoreVoice(); // MOREVOICE_API_KEY from the environment
for await (const conferenceRoom of mv.conferenceRooms.list()) {
console.log(conferenceRoom);
}

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}.

mv.conferenceRooms.listSessions(id: ConferenceRoomsListSessionsData["path"]["id"], query?: NonNullable<ConferenceRoomsListSessionsData["query"]>, options?: RequestOptions): PagedList<ConferenceRoomsListSessionsResponse["data"][number], NonNullable<ConferenceRoomsListSessionsData["query"]>>

GET /conference_rooms/{id}/history · API reference

Name Type Required Description
id string yes A conference room ID (room_…).
query.limit integer no How many objects to return, 1–100 (default 20).
query.starting_after string no A cursor (next_cursor) or object ID: return the objects after it (older).
query.ending_before string no A cursor or object ID: return the objects before it (newer).
options.headers["MoreVoice-Version"] string no The API version to use for this request. Defaults to the version the API key is pinned to.
options RequestOptions no idempotencyKey, extra headers and an abort signal: see retries and idempotency.

A PagedList: await it for the first page, for await it for every item.

import MoreVoice from "@morevoice/sdk";
const mv = new MoreVoice(); // MOREVOICE_API_KEY from the environment
for await (const conferenceRoom of mv.conferenceRooms.listSessions("room_7Hk2Lm9Qp")) {
console.log(conferenceRoom);
}

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.

mv.conferenceRooms.moderate(id: ConferenceRoomsModerateData["path"]["id"], body?: ConferenceRoomsModerateData["body"], options?: RequestOptions): Promise<ConferenceRoomsModerateResponse>

POST /conference_rooms/{id}/moderate · API reference

Name Type Required Description
id string yes A conference room ID (room_…).
body.end true no End the session for everyone.
body.hold boolean no
body.lock boolean no Lock (true) or unlock the room: when locked nobody else can join.
body.mute boolean no
body.mute_all true no Mute everyone except the moderators.
body.participant_id string no The participant to act on (from GET …/live).
body.remove true no Remove the participant from the room.
body.role "moderator" | "member" no
options.headers["MoreVoice-Version"] string no The API version to use for this request. Defaults to the version the API key is pinned to.
options.headers["Idempotency-Key"] string no A unique key (for example a UUID) that makes this request safe to retry: for 24 hours, a retry with the same key and parameters returns the first response instead of acting twice.
options RequestOptions no idempotencyKey, extra headers and an abort signal: see retries and idempotency.

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[] —
import MoreVoice from "@morevoice/sdk";
const mv = new MoreVoice(); // MOREVOICE_API_KEY from the environment
const conferenceLive = await mv.conferenceRooms.moderate("room_7Hk2Lm9Qp", {
mute: true,
participant_id: "g7Hk2pQx",
});
console.log(conferenceLive);

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.

mv.conferenceRooms.retrieve(id: ConferenceRoomsRetrieveData["path"]["id"], options?: RequestOptions): Promise<ConferenceRoomsRetrieveResponse>

GET /conference_rooms/{id} · API reference

Name Type Required Description
id string yes A conference room ID (room_…).
options.headers["MoreVoice-Version"] string no The API version to use for this request. Defaults to the version the API key is pinned to.
options RequestOptions no idempotencyKey, extra headers and an abort signal: see retries and idempotency.

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.
import MoreVoice from "@morevoice/sdk";
const mv = new MoreVoice(); // MOREVOICE_API_KEY from the environment
const conferenceRoom = await mv.conferenceRooms.retrieve("room_7Hk2Lm9Qp");
console.log(conferenceRoom);

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.

mv.conferenceRooms.retrieveIcs(id: ConferenceRoomsRetrieveIcsData["path"]["id"], options?: RequestOptions): Promise<ConferenceRoomsRetrieveIcsResponse>

GET /conference_rooms/{id}/ics · API reference

Name Type Required Description
id string yes A conference room ID (room_…).
options.headers["MoreVoice-Version"] string no The API version to use for this request. Defaults to the version the API key is pinned to.
options RequestOptions no idempotencyKey, extra headers and an abort signal: see retries and idempotency.

Nothing, on success.

import MoreVoice from "@morevoice/sdk";
const mv = new MoreVoice(); // MOREVOICE_API_KEY from the environment
const data = await mv.conferenceRooms.retrieveIcs("room_7Hk2Lm9Qp");
console.log(data);

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.

mv.conferenceRooms.retrieveLive(id: ConferenceRoomsRetrieveLiveData["path"]["id"], options?: RequestOptions): Promise<ConferenceRoomsRetrieveLiveResponse>

GET /conference_rooms/{id}/live · API reference

Name Type Required Description
id string yes A conference room ID (room_…).
options.headers["MoreVoice-Version"] string no The API version to use for this request. Defaults to the version the API key is pinned to.
options RequestOptions no idempotencyKey, extra headers and an abort signal: see retries and idempotency.

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[] —
import MoreVoice from "@morevoice/sdk";
const mv = new MoreVoice(); // MOREVOICE_API_KEY from the environment
const conferenceLive = await mv.conferenceRooms.retrieveLive("room_7Hk2Lm9Qp");
console.log(conferenceLive);

Update a conference room. Only the fields (and settings) you send change; schedule is replaced as a whole. A null PIN removes it.

mv.conferenceRooms.update(id: ConferenceRoomsUpdateData["path"]["id"], body?: ConferenceRoomsUpdateData["body"], options?: RequestOptions): Promise<ConferenceRoomsUpdateResponse>

PATCH /conference_rooms/{id} · API reference

Name Type Required Description
id string yes A conference room ID (room_…).
body.active boolean no false: switch the room off (it can’t be joined).
body.moderator_pin string | null no A new moderator PIN; null removes it.
body.name string no
body.pin string | null no A new participant PIN; null removes it.
body.schedule object no Replaces the schedule.
body.settings object no Only the settings you send change (defaults on create).
options.headers["MoreVoice-Version"] string no The API version to use for this request. Defaults to the version the API key is pinned to.
options RequestOptions no idempotencyKey, extra headers and an abort signal: see retries and idempotency.

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.
import MoreVoice from "@morevoice/sdk";
const mv = new MoreVoice(); // MOREVOICE_API_KEY from the environment
const conferenceRoom = await mv.conferenceRooms.update("room_7Hk2Lm9Qp", {
name: "Sales sync (Tuesdays)",
settings: {
mute_on_entry: true,
},
});
console.log(conferenceRoom);