> ## Documentation Index
> Fetch the complete documentation index at: https://docs.meetingkit.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Settings

> What gets recorded and how: settings, the scopes you assign them to, and which one wins.

Two objects decide what happens in a meeting. [Settings](/api-reference/settings/object) hold
values: record or not, how the bot records, the transcription language, the summary, the
branding. [Assignments](/api-reference/settings-assignments/object) say where they apply: a
`scope`, a list of conditions that must all hold. Every workspace, member and meeting carries the
result as [its `settings` block](/api-reference/settings/block-object).

## Scopes

A condition is `<kind>:<name>`. A scope names exactly one who, a workspace or a member, and may
add a meeting category. A meeting condition stands alone: it implies its workspace.

| Condition | Means |
| - | - |
| `workspace:wks_…` | The workspace's members and meetings. |
| `member:mem_…` | One member's meetings. |
| `meetings:organized`, `meetings:internal`, `meetings:domain`, `meetings:external` | A category, relative to the member whose calendar it is on. |
| `meeting:mtg_…` | One meeting, this occurrence only. |

What you want, as scopes:

| Want | `scope` |
| - | - |
| Company defaults | `["workspace:wks_acme"]` |
| Record external meetings | `["workspace:wks_acme", "meetings:external"]` |
| External *or* organized | two assignments, same `settings_id` |
| Ana: Catalan | `["member:mem_ana"]` |
| One meeting on, or off | `["meeting:mtg_…"]` |

A category carries only `recording: { enabled: true }`. With only a workspace or member
condition, `recording.enabled: true` records every meeting.

Coming later, answered `422 not_supported` for now: several categories in one scope ("external
meetings I organize"), `series:` for every occurrence of a recurring meeting, one settings object
reused across workspaces, and named settings.

## Set them

A member who has no settings of their own gets them in one call:

```bash theme={null}
curl -X POST "https://api.meetingkit.com/api/v1/settings" \
  -H "Authorization: $MEETINGKIT_API_KEY" \
  -H "Happyscribe-Version: 2026-10-12" \
  -H "Content-Type: application/json" \
  -d '{
    "transcription": { "language": "ca" },
    "assignments": [{ "scope": ["member:mem_01k69x9s8x7c2dvq3m5n6p4ab"] }]
  }'
```

The workspace always has settings, and so does a member once they have any: a `POST` for them
answers `409 scope_taken` naming the assignment. Read the object's `settings.assignments`, take
the one with `own: true`, and change its settings:

```bash theme={null}
curl -X PATCH "https://api.meetingkit.com/api/v1/settings/set_01k6sa1es0000000000000000a" \
  -H "Authorization: $MEETINGKIT_API_KEY" \
  -H "Happyscribe-Version: 2026-10-12" \
  -H "Content-Type: application/json" \
  -d '{ "recording": { "methods": { "bot": { "mode": "audio_only" } } } }'
```

Record one more category with the settings that already record the others:

```bash theme={null}
curl -X POST "https://api.meetingkit.com/api/v1/settings_assignments" \
  -H "Authorization: $MEETINGKIT_API_KEY" \
  -H "Happyscribe-Version: 2026-10-12" \
  -H "Content-Type: application/json" \
  -d '{
    "settings_id": "set_01k6rec00000000000000000000",
    "scope": ["workspace:wks_01k6a2r9s8x7c2dvq3m5n6p4ab", "meetings:organized"]
  }'
```

Delete the assignment to stop recording that category. Upcoming meetings are re-evaluated
after every change, and each one that changes sends `meeting.updated`.

## Values and codes

A field is a value or a code, never `null` (`422 invalid`):

| Code | Field | Means |
| - | - | - |
| `inherit` | any | Nothing here: the next assignment down decides. |
| `same_as_transcript` | `summary.language` | The summary is in the transcript's language. |
| `none` | `branding.brand_kit_id` | MeetingKit's own branding. |

Writing `inherit` is not supported yet, except `recording.enabled: "inherit"` on a meeting's
settings, which gives the meeting back to its member's and workspace's rules.

## Which setting wins

For each field of a meeting, the most specific assignment that sets it:

1. `meeting:`
2. `member:` with a category
3. `member:`
4. `workspace:` with a category
5. `workspace:`
6. MeetingKit's default.

A member's settings start as a copy of the workspace's when the member is set up, and are their
own from then on: changing the workspace's later reaches members without settings of their own,
not the others. Set the company defaults before you create members.

The `settings` block on the meeting says what applies and, in `sources`, which assignment
supplied each field. When none did, `reason` says why: `no_meeting_url`, `unsupported_platform`,
`member_paused` and `bot_cancelled` for recording, and `happyscribe_default`.
