Record and transcribe meetings with the Nylas Notetaker API Nylas has launched a Notetaker API that allows developers to programmatically join, record, and transcribe meetings from Zoom, Google Meet, and Microsoft Teams. The API supports both grant-scoped notetakers tied to a connected account and standalone notetakers that only require a meeting link. Developers can create notetakers via HTTP or the Nylas CLI, with options for custom bot names, scheduled join times, and toggles for video, audio, and transcription. Meeting notes are the feature everyone wants and nobody wants to build. The hard part isn't the summary — an LLM handles that. The hard part is getting into the meeting: a bot that joins Zoom, Google Meet, and Microsoft Teams, survives each platform's waiting room and admission flow, records cleanly, and produces a transcript you can feed downstream. Each provider has its own join mechanics, and none of them ships a tidy "record this meeting" API. The Nylas Notetaker API is that bot as a service. You point it at a meeting link, it joins on schedule, records, and generates a transcript, and you fetch the recording and transcript through one endpoint. This post walks the Notetaker surface from the HTTP API and the Nylas CLI https://cli.nylas.com/docs/commands , which mirrors the whole lifecycle for terminal use and quick testing. I work on the CLI, so the terminal commands below are exactly what I run when I'm testing a notetaker against a live meeting. Before any code, there's one architectural choice worth understanding, because it changes the endpoint you call. A grant-scoped notetaker is tied to a connected account and lives under /v3/grants/{grant id}/notetakers . Use it when the bot acts on behalf of a specific user — it can read that user's calendar and join their meetings as them. A standalone notetaker has no grant at all and lives under /v3/notetakers . You hand it a raw meeting link and it joins, no connected account required. This is the one to reach for when you just have a URL and want a recording — a public webinar, a meeting on an account you haven't connected, or a system that deals in links rather than users. Same request body, same lifecycle, same media output; the only difference is whether there's a grant id in the path. See the Notetaker overview https://developer.nylas.com/docs/v3/notetaker/ for how both models fit together. You need a Nylas API key. If you're using a grant-scoped notetaker you also need a connected account; for standalone, the API key alone is enough. The CLI gets you started: nylas init create an account, generate an API key nylas auth login only needed for grant-scoped notetakers The supported meeting providers are Zoom, Google Meet, and Microsoft Teams. Any meeting link from those three works as the target. Creating a notetaker is one call. The only required field is the meeting link; everything else has a sensible default. The CLI joins immediately if you don't pass a time: Join right now nylas notetaker create --meeting-link "https://zoom.us/j/123456789" Join at a specific time, with a custom display name nylas notetaker create \ --meeting-link "https://meet.google.com/abc-defg-hij" \ --join-time "2026-06-23 14:00" \ --bot-name "Acme Notetaker" The --bot-name flag sets what the other participants see in the attendee list, which matters more than it sounds — a bot labeled "Acme Notetaker" reads as intentional, while a generic name makes people wonder who joined. The --join-time flag accepts an absolute time, a relative offset like 30m , or natural phrasing like tomorrow 9am . Over HTTP, the request body fields are meeting link required , join time , name , and meeting settings : curl --request POST \ --url "https://api.us.nylas.com/v3/grants/