# Introducing Notetaker configurations

Source: https://developer.nylas.com/docs/changelogs/2026-09-21-notetaker-configurations/

Every team that scales a meeting recording integration ends up writing the same things: logic to stop four teammates from sending four bots to one call, a way to cut off a customer who has used up their recording hours, and retention rules so recordings don't sit with a third party longer than a security team allows. Notetaker configurations take that work off your plate. Save your Notetaker defaults once, at the application, workspace, calendar, or event level, and Nylas applies them every time a bot joins. Configurations also unlock five features that are only available through the new `notetaker_settings` request shape.

## Added

- **Configurations.** Five new endpoints under `/v3/notetakers/configs` let you [create](/docs/reference/api/notetaker-configurations/create-notetaker-config/), [list](/docs/reference/api/notetaker-configurations/get-all-notetaker-configs/), [get](/docs/reference/api/notetaker-configurations/get-notetaker-config/), [update](/docs/reference/api/notetaker-configurations/update-notetaker-config/), and [delete](/docs/reference/api/notetaker-configurations/delete-notetaker-config/) a saved set of `notetaker_settings` defaults plus a deduplication policy and a dispatch policy. Nylas reads the most specific configuration at join time, not at scheduling time, so a `PATCH` this afternoon changes every Notetaker already booked for tomorrow. Every update bumps `version`, and `?include=history` on a `GET` returns past versions. You can have one application-level configuration and one per workspace.

  ```bash
  curl --request POST \
    --url 'https://api.us.nylas.com/v3/notetakers/configs' \
    --header 'Authorization: Bearer <NYLAS_API_KEY>' \
    --header 'Content-Type: application/json' \
    --data '{
      "display_name": "Company defaults",
      "notetaker_settings": {
        "name": "Acme Notetaker",
        "recording_type": "audio_video",
        "transcription": true,
        "summary": true
      },
      "deduplication_policy": "active"
    }'
  ```

- **Workspaces.** A workspace groups grants, usually one per customer. Create one with [`POST /v3/workspaces`](/docs/reference/api/workspaces/create-workspace/), and with `auto_group` set to `true` every new grant whose email domain matches the workspace's `domain` joins it automatically. Give the workspace its own configuration and that customer gets their own defaults, such as a 7-day retention window or a different display name, while everyone else inherits the application-level values.

- **Deduplication.** Set `"deduplication_policy": "active"` and when 4 people from the same workspace accept the same invite, 1 Notetaker joins for all of them instead of 4. Two different customers on the same call still get one each, since neither should hold the other's recording. Every user still receives their own webhooks, recording, transcript, and summary. Set the policy to `"disable"` on a calendar or a single event when someone needs a dedicated bot, such as a board meeting.

- **Custom announcements.** `notetaker_settings.messages` replaces the default consent notice with your own chat messages: `on_join` messages post after the bot joins, each with its own delay, and `on_participant_join` messages fire when someone arrives late. Each list holds up to 10 messages, and delays and debounce windows go up to 600,000 ms (10 minutes). The debounce collapses a burst of late arrivals into 1 message, so a ten-person all-hands doesn't get 10 notices. Keep a recording disclosure in your `on_join` text if your product or jurisdiction requires one.

- **Custom avatars.** Notetaker used to join as a blank tile with a name on it. Upload a PNG, JPEG, or WebP image up to 4 MiB to `notetaker_settings.video_output` and the bot shows it as its camera feed on Google Meet, Microsoft Teams, and Zoom. Reads return `preview_url`, a signed URL valid for 1 hour, so you can confirm what's stored.

- **Pause dispatch.** Set `dispatch_disabled_until` to an RFC 3339 timestamp on an application, workspace, or grant configuration and Nylas stops sending Notetakers for that scope until the timestamp passes. Calendar sync rules, scheduled Notetakers, and recording settings stay put, so a customer who hits their 100-hour plan mid-month resumes on the first of the next month with nothing to rebuild. Send `null` to lift a pause early.

- **Retention policies.** Nylas keeps recordings, transcripts, summaries, and action items for 14 days by default. Set `retention_time` in seconds on any request that takes `notetaker_settings` to change that per application, per workspace, or per Notetaker, so the customer whose security team asked for 7 days gets `604800`. After expiry the media endpoint returns `410 Gone`.

## Changed

- **`notetaker_settings` replaces top-level `name` and `meeting_settings`** on join, calendar sync, and event sync requests. Field names inside carry over unchanged, except that the `video_recording` and `audio_recording` booleans collapse into one `recording_type` value (`audio_video` or `audio`). Legacy requests keep working, but the five features above are only available through `notetaker_settings` or `config_id`, and sending both shapes in one request returns `400 Bad Request`. Webhook payloads still carry `meeting_settings`, so your consumers don't change. The [migration page](/docs/v3/notetaker/migrate-from-legacy-settings/) has the before and after for every endpoint.

## Updated docs

- [Notetaker configurations](/docs/v3/notetaker/configurations/) covers the four levels, how settings combine, and how to override on a single request.
- [Using Notetaker deduplication](/docs/v3/notetaker/deduplication/), [Notetaker custom announcements](/docs/v3/notetaker/custom-announcements/), [Notetaker custom video output](/docs/v3/notetaker/custom-video-output/), [Pause Notetaker dispatch](/docs/v3/notetaker/dispatch-suppression/), and [Using Notetaker retention policies](/docs/v3/notetaker/retention-policies/) each cover one feature end to end.
- [Migrate to `notetaker_settings`](/docs/v3/notetaker/migrate-from-legacy-settings/) walks through the swap for every endpoint that accepts the legacy fields.