Skip to content
Skip to main content

Record Zoom, Google Meet, and Teams from the CLI

Recording a meeting usually means setting up a per-platform integration — Zoom’s OAuth app, Meet’s Workspace add-on, Teams’ admin policy. Nylas Notetaker collapses that into one command: drop a meeting URL on nylas notetaker create and a bot joins the call, records the audio, and produces a transcript when the meeting ends.

This recipe walks through joining an in-progress call, scheduling future recordings, retrieving the artifacts, and tearing down.

nylas notetaker create --meeting-link "https://zoom.us/j/123456789"

The same shape works for every supported platform:

ProviderExample URL
Zoomhttps://zoom.us/j/123456789
Google Meethttps://meet.google.com/abc-defg-hij
Microsoft Teamshttps://teams.microsoft.com/l/meetup-join/...

You get back a Notetaker ID like ntk_abc123def456. Optionally name the bot so participants know what they’re seeing in the attendee list:

nylas notetaker create \
--meeting-link "https://meet.google.com/abc-defg-hij" \
--bot-name "Notetaker"

Pass --join-time to queue the bot to join at a future moment:

nylas notetaker create \
--meeting-link "https://teams.microsoft.com/l/..." \
--join-time "2026-04-01 14:00"

The flag accepts ISO timestamps, natural-language strings ("tomorrow 9am"), or relative offsets ("30m"). The bot stays dormant and joins on schedule.

nylas notetaker list
nylas notetaker show ntk_abc123def456

Status moves through these states:

scheduled → joining → recording → processing → completed

show prints metadata — join time, meeting URL, current state — so you can poll programmatically while the bot does its job.

Once the state hits completed:

nylas notetaker media ntk_abc123def456

Add --json to get URLs you can pipe into something else:

nylas notetaker media ntk_abc123def456 --json |
jq -r '.transcript_url' |
xargs curl -o transcript.json

The recording is delivered as MP4 and the transcript as structured JSON. Both URLs expire — fetch them within the displayed window or re-request.

If you don’t want to poll for completed:

nylas webhook create \
--url "https://api.example.com/notetaker-done" \
--triggers notetaker.media

Your endpoint receives a POST the moment processing finishes, with the media URLs in the payload.

nylas notetaker delete ntk_abc123def456

Deleting before the bot joins prevents any recording. Deleting mid-recording stops the bot and discards the captured audio. Already-completed recordings stay available for the standard retention window — delete removes the metadata but doesn’t claw back transcripts you’ve already fetched.

  • One API surface, three platforms. The CLI absorbs Zoom’s paid-account requirement, Meet’s Workspace licensing, and Teams’ admin dependencies. You provide a URL; Nylas handles the auth dance.
  • Bot visibility. Most platforms surface the bot as a participant. Use --bot-name to give it a human-readable label.
  • Concurrent recordings. Multiple Notetakers can run in parallel — the API doesn’t gate on a single in-flight bot per grant.