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

# Meeting settings

> The user's connected account with reconnect and disconnect, and which of their meetings get recorded.

In their settings, a user sees which calendar is connected, reconnects or disconnects it,
and chooses which of their meetings get recorded.

<Frame>
  <img src="https://mintcdn.com/meeting-kit/DnaA9m78FJYvG19R/images/diagrams/user-settings.svg?fit=max&auto=format&n=DnaA9m78FJYvG19R&q=85&s=dcf76c18c9f21036e3175c8aef7e8585" alt="A settings screen: Connected as ana@acme.com with Reconnect and Disconnect, and a Record my meetings choice of All meetings, Only with external guests, or None. Notes: Reconnect is a connect link with member_id, shown after calendar_connection.error; Disconnect is DELETE /calendar_connections; Record my meetings is the member's settings and their meetings: categories." width="680" height="684" data-path="images/diagrams/user-settings.svg" />
</Frame>

## The connected calendar

```bash theme={null}
curl -G "https://api.meetingkit.com/api/v1/calendar_connections" \
  -H "Authorization: $MEETINGKIT_API_KEY" \
  -H "Happyscribe-Version: 2026-10-12" \
  -d workspace_id=wks_01k6a2r9s8x7c2dvq3m5n6p4ab \
  -d member_id=mem_01k69x9s8x7c2dvq3m5n6p4ab
```

```json theme={null}
{
  "object": "list",
  "data": [
    {
      "id": "cal_01k6c1r9s8x7c2dvq3m5n6p4ab",
      "object": "calendar_connection",
      "member_id": "mem_01k69x9s8x7c2dvq3m5n6p4ab",
      "provider": "google",
      "status": "active",
      "account_email": "ana@acme.com",
      "error": null,
      "last_synced_at": "2026-09-29T10:13:02Z",
      "…": "…"
    }
  ],
  "has_more": false,
  "_links": {}
}
```

Show "Connected as" with `account_email`. A member has at most one calendar.

| `status` | Show |
| - | - |
| `active` | Connected as `account_email`, with Disconnect. |
| `error` | Access was revoked or expired: a Reconnect button. |
| `disconnected` | The Connect call to action again. |

`calendar_connection.error` and `calendar_connection.disconnected` tell you when the status
changes.

## Reconnect

To reconnect a connection in `error`, create a connect link with the `member_id` instead of
`member_data`, and send the user to its `url`:

```bash theme={null}
curl -X POST "https://api.meetingkit.com/api/v1/calendar_connect_links" \
  -H "Authorization: $MEETINGKIT_API_KEY" \
  -H "Happyscribe-Version: 2026-10-12" \
  -H "Content-Type: application/json" \
  -d '{
    "workspace_id": "wks_01k6a2r9s8x7c2dvq3m5n6p4ab",
    "provider": "google",
    "return_url": "https://app.example.com/settings/meetings",
    "member_id": "mem_01k69x9s8x7c2dvq3m5n6p4ab"
  }'
```

The connection comes back on the same member, keeping their meetings and preferences.
Send `member_id` or `member_data`, never both (`422`).

A member has one calendar at a time. To switch from Google to Microsoft,
[disconnect](#disconnect) first, then create the link with the new `provider`: while the
old calendar is connected, the link answers `409 calendar_already_connected`.

## Disconnect

```bash theme={null}
curl -X DELETE "https://api.meetingkit.com/api/v1/calendar_connections/cal_01k6c1r9s8x7c2dvq3m5n6p4ab" \
  -H "Authorization: $MEETINGKIT_API_KEY" \
  -H "Happyscribe-Version: 2026-10-12"
```

Syncing stops and the bots scheduled from that calendar are cancelled. Past meetings, the
member and their preferences stay.

## Record my meetings

A user's own choice overrides the [company default](/meetingkit/setup#which-setting-wins). It is
the member's settings: `GET /members/{id}` shows them in `settings`, with the member's own
assignments marked `own: true`. A member without 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 '{
    "recording": { "enabled": true },
    "assignments": [{ "scope": ["member:mem_01k69x9s8x7c2dvq3m5n6p4ab"] }]
  }'
```

Once they have them, change them with `PATCH /settings/{id}` (the `settings_id` of their own
assignment).

| Choice | Settings |
| - | - |
| All meetings | `recording.enabled: true` on `["member:mem_…"]` |
| Meetings I organize | `recording.enabled: false`, and `true` on `["member:mem_…", "meetings:organized"]` |
| Only with external guests | `recording.enabled: false`, and `true` on `["member:mem_…", "meetings:external"]` |
| None | `recording.enabled: false`, and no category |

Upcoming meetings are re-evaluated straight away; each one whose recording changes sends
`meeting.updated`. The same settings hold the user's audio or video choice
(`recording.methods.bot.mode`), transcription language and summary template: see
[Settings](/meetingkit/settings).
