You want your app to capture what happened in a Zoom, Microsoft Teams, or Google Meet call without asking anyone to hit record. Building that yourself means writing a separate meeting bot for each platform, solving three different join and admission flows, capturing audio and video reliably, then bolting speech-to-text on top. That’s three integrations and a transcription pipeline before you produce a single useful sentence.
A notetaker API collapses all of that into one call. You send a meeting link, a bot joins the call, and minutes after the meeting ends you get back a recording, a transcript, a summary, and a list of action items. This page explains what a notetaker API is, how it differs from a plain transcription service, and how to wire one into a scheduling workflow.
What is a notetaker API and how does it work for meeting transcription?
Section titled “What is a notetaker API and how does it work for meeting transcription?”A notetaker API is an interface that programmatically sends a bot into a live video meeting to record and transcribe it. The bot joins Zoom, Teams, or Google Meet as a guest participant, captures audio and video, and after the call returns an MP4 recording plus a speaker-labeled JSON transcript through a webhook. You never run the bot infrastructure yourself.
The Nylas Notetaker API works in four stages. First, you create a bot with POST /v3/grants/{grant_id}/notetakers and pass a meeting_link. The bot joins immediately, or at a Unix timestamp you set through join_time. Second, it records the call and emits notetaker.meeting_state webhooks as it connects, attends, and disconnects. Third, after the meeting ends, the API processes the media. Fourth, a notetaker.media webhook fires once each file is ready. One endpoint covers all 3 platforms. If nobody admits the bot from the lobby, the join ends in a failed_entry state with an admission_timeout reason rather than hanging forever. The Notetaker API guide walks through the full create-to-download flow.
What is the difference between a meeting recorder app and a transcription?
Section titled “What is the difference between a meeting recorder app and a transcription?”A meeting recorder captures the live call (it joins the meeting, grabs audio and video, and produces a recording file). Transcription is a separate step that converts that recorded audio into text. A standalone transcription API like a speech-to-text service only handles the second half: you still have to get the audio out of the meeting yourself, which is the hard part.
A notetaker API does both, plus the AI layer on top. With the Nylas Notetaker API you toggle each output through the meeting_settings object. Set audio_recording and video_recording to true for the capture, transcription for the text, and summary or action_items for the AI outputs. The dependency chain is strict: transcription requires both recording flags on, and summary and action_items each require transcription. A pure transcription service can’t enforce that because it never touches the meeting. The table below shows where each tool stops.
| Capability | Speech-to-text API | Meeting recorder app | Nylas Notetaker API |
|---|---|---|---|
| Joins the live meeting | No | Yes | Yes |
| Records audio and video | No | Yes | Yes |
| Produces a transcript | Yes (from a file you supply) | Sometimes | Yes |
| AI summary and action items | No | Rarely | Yes |
| Delivery method | API response | Varies | Webhook (notetaker.media) |
| Platforms covered | N/A | Often 1 | Zoom, Teams, Meet |
How do I integrate an AI note taker into a scheduling app workflow?
Section titled “How do I integrate an AI note taker into a scheduling app workflow?”Trigger the notetaker bot from the same event that confirms a booking. When a meeting is scheduled and a conferencing link exists, send that link to POST /v3/grants/{grant_id}/notetakers with join_time set to the meeting’s start, in Unix seconds. The bot waits and joins on schedule, so every booked call records itself with no manual step per meeting.
The cleanest pattern uses the booking confirmation as the hook. Your scheduling page creates a calendar event with a Zoom, Teams, or Meet link, and your backend reads that link and creates one Notetaker bot for it. To avoid double bots, remember the API doesn’t de-duplicate: every create request invites a new bot, so store the returned notetaker_id and skip a second create for the same event. You can also set leave_after_silence_seconds (between 10 and 3600, default 300) so the bot leaves once the call goes quiet instead of recording an empty room. The scheduling with notetaking guide shows the end-to-end wiring.
Create a notetaker bot
Section titled “Create a notetaker bot”The request below creates a bot through POST /v3/grants/{grant_id}/notetakers. You pass the meeting_link and, optionally, a meeting_settings object to choose outputs. Only meeting_link is required. Omit join_time and the bot joins right away. The meeting_settings object toggles audio recording, video recording, transcription, summary, and action items independently, so a single call can capture audio only or produce all five outputs at once.
curl --request POST \ --url 'https://api.us.nylas.com/v3/grants/<NYLAS_GRANT_ID>/notetakers' \ --header 'Authorization: Bearer <NYLAS_API_KEY>' \ --header 'Content-Type: application/json' \ --data '{ "meeting_link": "https://meet.google.com/abc-defg-hij", "name": "Acme Notetaker", "meeting_settings": { "audio_recording": true, "video_recording": true, "transcription": true, "summary": true, "action_items": true } }'from nylas import Client
nylas = Client(api_key="<NYLAS_API_KEY>")
notetaker = nylas.notetakers.invite( request_body={ "meeting_link": "https://meet.google.com/abc-defg-hij", "name": "Acme Notetaker", "meeting_settings": { "audio_recording": True, "video_recording": True, "transcription": True, "summary": True, "action_items": True, }, }, identifier="<NYLAS_GRANT_ID>",)
print(notetaker.data.id)Fetch the recording and transcript
Section titled “Fetch the recording and transcript”Once the notetaker.media webhook fires, call GET /v3/grants/{grant_id}/notetakers/{notetaker_id}/media to get download links for the recording, transcript, summary, and action items. Each download link is valid for 60 minutes from generation, so download promptly or call the endpoint again for fresh links. Nylas retains the underlying files for up to 14 days before they’re deleted from its servers.
curl --request GET \ --url 'https://api.us.nylas.com/v3/grants/<NYLAS_GRANT_ID>/notetakers/<NOTETAKER_ID>/media' \ --header 'Authorization: Bearer <NYLAS_API_KEY>'The response nests each file under its own object. The recording object holds a url (an MP4) and a duration in seconds, the transcript object holds a url (JSON with speaker labels), and summary and action_items objects appear when those settings were on. Every object also reports size, expires_at, and ttl, so treat the links as fetch-once-and-store rather than long-lived references. To verify each notetaker.media payload before acting on it, follow the Notetaker webhooks guide.
When a standalone bot is the right choice
Section titled “When a standalone bot is the right choice”Use the standalone POST /v3/notetakers endpoint when the meeting doesn’t belong to a connected account. Standalone Notetakers don’t reference a grant_id, so they suit cases where you have a meeting link but no authenticated calendar (a one-off interview link, a customer call pasted into a form, or a meeting outside your users’ connected accounts). Roughly any link-first flow fits here.
The honest tradeoff: standalone bots skip calendar context, so they can’t auto-discover upcoming meetings or sync to a user’s events. If your product records meetings from users’ connected calendars, the grant-scoped endpoint is the better fit because it ties each recording to a known account and unlocks calendar sync. Pick standalone for link-in, media-out simplicity; pick grant-scoped when the meeting lives on a calendar you already manage. For a side-by-side with a build-it-yourself bot service, see the Recall.ai alternative comparison.
What’s next
Section titled “What’s next”- Notetaker API guide for the full create, record, and download flow
- Add a scheduling page with automatic notetaking to record every booked meeting
- Verify and handle Notetaker webhooks for the
notetaker.mediapayload - Getting started with Nylas to create a project and your first grant