# Update a conference room

`PATCH https://api.morevoice.ai/v1/conference_rooms/{id}`

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

Authenticate with a secret API key: `Authorization: Bearer $MOREVOICE_API_KEY`.

Operation ID: `conference_rooms_update`.

## Parameters

### Path parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | `string` | yes | A conference room ID (`room_…`). |

### Headers

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `MoreVoice-Version` | `string` | no | The API version to use for this request. Defaults to the version the API key is pinned to. |

## Request body

Optional, `application/json`.

| 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. |
| `schedule.end_at` | `string \| null` | no | — |
| `schedule.recurrence` | `"none" \| "daily" \| "weekly" \| "weekdays"` | no | — |
| `schedule.start_at` | `string \| null` | no | — |
| `schedule.timezone` | `string` | no | — |
| `settings` | `object` | no | Only the settings you send change (defaults on create). |
| `settings.ai_note_taker` | `boolean` | no | — |
| `settings.announce` | `boolean` | no | — |
| `settings.description` | `string` | no | — |
| `settings.language` | `"he" \| "en"` | no | — |
| `settings.lock_on_start` | `boolean` | no | — |
| `settings.max_participants` | `integer` | no | — |
| `settings.mute_on_entry` | `boolean` | no | — |
| `settings.record` | `boolean` | no | — |
| `settings.transcribe` | `boolean` | no | — |
| `settings.wait_for_moderator` | `boolean` | no | — |

Example:

```json
{
  "name": "Sales sync (Tuesdays)",
  "settings": {
    "mute_on_entry": true
  }
}
```

## Responses

### 200 OK

OK Returns `ConferenceRoom`.

| Field | Type | Description |
| --- | --- | --- |
| `object` | `"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` | — |
| `settings.record` | `boolean` | Record the sessions. |
| `settings.transcribe` | `boolean` | Transcribe the sessions (needed for AI notes). |
| `settings.mute_on_entry` | `boolean` | Members join muted (moderators never). |
| `settings.announce` | `boolean` | Join and leave chimes. |
| `settings.lock_on_start` | `boolean` | Lock the room as soon as it starts: only moderators can let more people in. |
| `settings.max_participants` | `integer` | — |
| `settings.ai_note_taker` | `boolean` | AI meeting notes (summary, decisions, action items) when the room empties. |
| `settings.wait_for_moderator` | `boolean` | Phone callers wait for a moderator before they're seated. |
| `settings.language` | `"he" \| "en"` | The language of the phone prompts and invitations. |
| `settings.description` | `string` | — |
| `schedule` | `ConferenceRoomSchedule` | A scheduled room can be joined from 15 minutes before each occurrence until 2 hours after it ends. |
| `schedule.start_at` | `string \| null` | When the meeting starts; null: an always-open room. |
| `schedule.end_at` | `string \| null` | — |
| `schedule.recurrence` | `"none" \| "daily" \| "weekly" \| "weekdays"` | `weekdays` skips Friday and Saturday. |
| `schedule.timezone` | `string` | — |
| `live` | `object \| null` | The session in progress, or null. |
| `live.started_at` | `string` | An ISO-8601 timestamp in UTC. |
| `live.participants` | `integer` | — |
| `created` | `string` | An ISO-8601 timestamp in UTC. |
| `updated` | `string` | An ISO-8601 timestamp in UTC. |

Example:

```json
{
  "active": true,
  "created": "2026-11-01T09:14:22.000Z",
  "dial_in": [
    "+97233761234"
  ],
  "has_moderator_pin": false,
  "has_pin": true,
  "id": "room_2dXk9QmZ4rTv",
  "live": null,
  "livemode": true,
  "name": "Weekly sales sync",
  "object": "conference_room",
  "owner_id": null,
  "pin_length": 4,
  "schedule": {
    "end_at": "2026-11-03T08:30:00.000Z",
    "recurrence": "weekly",
    "start_at": "2026-11-03T08:00:00.000Z",
    "timezone": "Asia/Jerusalem"
  },
  "settings": {
    "ai_note_taker": true,
    "announce": true,
    "description": "",
    "language": "he",
    "lock_on_start": false,
    "max_participants": 20,
    "mute_on_entry": false,
    "record": true,
    "transcribe": true,
    "wait_for_moderator": false
  },
  "updated": "2026-11-01T09:14:22.000Z"
}
```

### 400 Bad Request

The request is invalid: a parameter is missing, malformed or unknown, or the version header is unknown. Returns `ErrorEnvelope`.

### 401 Unauthorized

No valid API key was sent. Returns `ErrorEnvelope`.

### 403 Forbidden

The key may not do this (a missing scope, a plan limit, or a compliance block). Returns `ErrorEnvelope`.

### 404 Not Found

No object with this ID exists in this organisation and mode. Returns `ErrorEnvelope`.

### 429 Too Many Requests

Too many requests, or no call capacity right now. Retry after the Retry-After delay. Returns `ErrorEnvelope`.

### 500 Internal Server Error

Something went wrong on MoreVoice's side. Retry with the same Idempotency-Key. Returns `ErrorEnvelope`.

## Code samples

**TypeScript**

```ts
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);
```

**Python**

```python
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)
```

**cURL**

```sh
curl -X PATCH https://api.morevoice.ai/v1/conference_rooms/room_7Hk2Lm9Qp \
  -H "Authorization: Bearer $MOREVOICE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Sales sync (Tuesdays)",
  "settings": {
    "mute_on_entry": true
  }
}'
```
