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

# The settings block

> What applies to a workspace, a member or a meeting, and where each value came from.

Workspaces, members and meetings carry `settings`: the values that apply, `sources` saying which
assignment supplied each one, and every assignment that reaches the object. A meeting is resolved
exactly; a member as for a meeting in no category; a workspace as for a member with nothing of their
own. See [Which setting wins](/meetingkit/settings#which-setting-wins).

## Attributes

<ResponseField name="recording" type="object">
  Whether the meeting is recorded, and how. Always a value.

  <Expandable title="properties">
    <ResponseField name="enabled" type="boolean">
      Whether it is recorded.
    </ResponseField>

    <ResponseField name="methods" type="object">
      How it is recorded.

      <Expandable title="properties">
        <ResponseField name="bot" type="object">
          The notetaker bot that joins the call.

          <Expandable title="properties">
            <ResponseField name="start" type="string">
              * `on_join`: Records as soon as it joins.
              * `on_command`: Joins paused, until someone types `!resume`.
            </ResponseField>

            <ResponseField name="mode" type="string">
              * `audio_and_video`: Audio and video.
              * `audio_only`: Audio only.
            </ResponseField>

            <ResponseField name="silence_detection" type="object">
              What the bot does when nobody speaks for a while.

              <Expandable title="properties">
                <ResponseField name="alert" type="boolean">
                  Whether the bot posts a chat message after a long silence.
                </ResponseField>
              </Expandable>
            </ResponseField>
          </Expandable>
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="transcription" type="object">
  How the recording is transcribed.

  <Expandable title="properties">
    <ResponseField name="language" type="string">
      A language tag, `auto` or `multi`.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="summary" type="object">
  How the summary is written.

  <Expandable title="properties">
    <ResponseField name="template" type="string">
      The template's slug or `tpl_` id.
    </ResponseField>

    <ResponseField name="language" type="string">
      A language tag, or `same_as_transcript`.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="branding" type="object">
  How the notetaker is branded.

  <Expandable title="properties">
    <ResponseField name="brand_kit_id" type="string">
      The brand kit the bot is sent with, or `none` (also when the plan does not include notetaker
      customization).
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="sources" type="object">
  For every field, by its dotted path (`recording.enabled`, `transcription.language`…), where the value came from.

  <Expandable title="properties">
    <ResponseField name="assignment_id" type="string | null">
      The assignment whose settings supplied the value; `null` when none did, and `reason` says why.
    </ResponseField>

    <ResponseField name="reason" type="string">
      Present when no assignment supplied the value.

      * `happyscribe_default`: Nothing sets it; MeetingKit's default applies.
      * `no_meeting_url`: The meeting has no link to join, so nothing records it.
      * `unsupported_platform`: The link is not Zoom, Google Meet or Microsoft Teams.
      * `member_paused`: The member paused their notetaker.
      * `bot_cancelled`: The bot sent to this meeting was cancelled before it joined.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="assignments" type="object[]">
  Every assignment that reaches the object, most specific first.

  <Expandable title="properties">
    <ResponseField name="id" type="string">
      Beginning with `asg_`.
    </ResponseField>

    <ResponseField name="settings_id" type="string">
      The settings it applies, beginning with `set_`.
    </ResponseField>

    <ResponseField name="scope" type="string[]">
      Its conditions.
    </ResponseField>

    <ResponseField name="own" type="boolean">
      Whether the assignment names this object itself, rather than reaching it from above.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseExample>
  ```json The settings block of a member theme={null}
  {
    "recording": {
      "enabled": true,
      "methods": {
        "bot": {
          "start": "on_join",
          "mode": "audio_only",
          "silence_detection": {
            "alert": true
          }
        }
      }
    },
    "transcription": {
      "language": "ca"
    },
    "summary": {
      "template": "discovery_call",
      "language": "same_as_transcript"
    },
    "branding": {
      "brand_kit_id": "brk_01k6acme00000000000000000"
    },
    "sources": {
      "recording.enabled": { "assignment_id": "asg_01k6a3ext00000000000000000" },
      "recording.methods.bot.start": { "assignment_id": "asg_01k6a1ana00000000000000000" },
      "recording.methods.bot.mode": { "assignment_id": "asg_01k6a1ana00000000000000000" },
      "recording.methods.bot.silence_detection.alert": { "assignment_id": "asg_01k6a1ana00000000000000000" },
      "transcription.language": { "assignment_id": "asg_01k6a1ana00000000000000000" },
      "summary.template": { "assignment_id": "asg_01k6a1ana00000000000000000" },
      "summary.language": { "assignment_id": "asg_01k6a1ana00000000000000000" },
      "branding.brand_kit_id": { "assignment_id": "asg_01k6a0wks00000000000000000" }
    },
    "assignments": [
      { "id": "asg_01k6a3ext00000000000000000", "settings_id": "set_01k6rec00000000000000000000", "scope": ["member:mem_01k69x9s8x7c2dvq3m5n6p4ab", "meetings:external"], "own": true },
      { "id": "asg_01k6a1ana00000000000000000", "settings_id": "set_01k6sa1es0000000000000000a", "scope": ["member:mem_01k69x9s8x7c2dvq3m5n6p4ab"], "own": true },
      { "id": "asg_01k6a0wks00000000000000000", "settings_id": "set_01k6wks00000000000000000000", "scope": ["workspace:wks_01k6a2r9s8x7c2dvq3m5n6p4ab"], "own": false }
    ]
  }
  ```
</ResponseExample>
