Skip to content
Skip to main content

Record and transcribe meetings with Notetaker

You want transcripts and recordings of your users’ Zoom, Teams, and Google Meet calls. Building that yourself means writing a meeting bot for each platform, handling join flows and media capture three different ways, then bolting on speech-to-text. It’s months of work before you transcribe a single sentence.

Notetaker does it with one request. You send a bot to a meeting link, it joins the call, and it returns the recording, a transcript, a summary, and action items. The same endpoint works for Google Meet, Microsoft Teams, and Zoom, so you write the integration once.

Send a POST /v3/notetakers request with the meeting URL in meeting_link. A standalone Notetaker bot joins the call and starts capturing it, with no connected calendar required. One endpoint covers all 3 supported platforms: Google Meet, Microsoft Teams, and Zoom. The quickstart sends your first bot in under 5 minutes, and the response returns the Notetaker’s id, which you pass as the {notetaker_id} path parameter when you fetch the media later.

The request below sends a bot to a meeting and turns on recording, transcription, a summary, and action items.

The meeting_settings object controls what the bot produces, and the outputs build on each other. audio_recording and video_recording are the base; transcription requires both recording flags on; and summary and action_items each require transcription plus both recordings. You can steer summary and action_items with custom_instructions, for example returning a summary in a specific sales methodology.

Transcription defaults to automatic language detection. If your meetings are consistently in one or two languages, pass transcription_settings.expected_languages with the relevant codes to force or narrow detection. The bot also accepts leave_after_silence_seconds, which defaults to 5 minutes (300 seconds) of continuous silence before it leaves an empty call. See Notetaker media and settings for every option.

How do I get the recording and transcript?

Section titled “How do I get the recording and transcript?”

The media isn’t ready instantly; the bot has to finish the meeting and process it. Subscribe a webhook to the notetaker.media trigger, which fires when the recording and transcript are available, and to notetaker.meeting_state to track the bot through joining, recording, and leaving. These are 2 of the 5 Notetaker triggers. Nylas keeps media files for up to 14 days, so download them promptly.

When notetaker.media fires, fetch the output with a GET /v3/notetakers/{notetaker_id}/media request. It returns URLs for the recording and transcript that you download and store. The request below retrieves the media for one Notetaker.

For the webhook setup itself, see Get real-time updates with webhooks.

One behavior to plan for: Nylas doesn’t de-duplicate bots. Every POST /v3/notetakers request invites a new bot to the meeting, so if your code retries a failed request you can end up with 2 bots in the same call. Track the notetaker_id and cancel duplicates rather than re-sending blindly. When you fetch media, each download URL is valid for 60 minutes, so regenerate it through the media endpoint if a download fails.

This recipe uses standalone Notetakers, which take a raw meeting_link and need only your API key. If you instead want a bot to join meetings on a user’s connected calendar automatically, use the grant-based POST /v3/grants/{grant_id}/notetakers endpoint and Notetaker’s calendar sync. To attach recording to a booking flow, see Add scheduling with Notetaker.