Guide
Record Zoom, Meet, and Teams from the CLI
Send a notetaker bot to any Zoom, Google Meet, or Microsoft Teams call and get the recording and transcript back from the command line. Works with Gmail, Outlook, Exchange, Yahoo, iCloud, and IMAP.
By Pouya Sanooei
The problem with meeting recordings
Getting recordings from video calls is harder than it should be. Zoom requires a paid plan ($13.33/mo minimum per user as of March 2026). Google Meet recording requires a Workspace Business Standard license or higher. Microsoft Teams recording availability depends on your organization's admin policies. Three platforms, three permission models, no shared API, and no way to get a transcript without clicking through each platform's UI.
The Nylas CLI solves this with a notetaker bot. One command sends a bot to the meeting. The bot records, transcribes, and hands back the media files through a single API — regardless of which platform the meeting is on.
1. Install
# macOS / Linux (Homebrew)
brew install nylas/nylas-cli/nylas
# macOS / Linux (shell script)
curl -fsSL https://cli.nylas.com/install.sh | bash
# Windows (PowerShell)
irm https://cli.nylas.com/install.ps1 | iex2. Authenticate
nylas auth config --api-key <your-nylas-api-key>Get your API key from the Nylas dashboard. The notetaker feature requires a Nylas account with notetaker permissions enabled.
3. Send a notetaker to a meeting
Pass the meeting link. The bot joins at the meeting's start time by default.
# Zoom
nylas notetaker create --meeting-link "https://zoom.us/j/123456789"
# Google Meet
nylas notetaker create --meeting-link "https://meet.google.com/abc-defg-hij"
# Microsoft Teams
nylas notetaker create --meeting-link "https://teams.microsoft.com/l/meetup-join/..."The bot joins as a participant. Use --bot-name to give it a recognizable name in the participant list:
nylas notetaker create \
--meeting-link "https://zoom.us/j/123456789" \
--bot-name "Notetaker"The command returns a notetaker ID. Save it — you'll need it to fetch the media.
Notetaker created: ntk_abc123def456
Status: joining4. Schedule a recording in advance
Use --join-time to schedule the bot for a future meeting. Accepts a timestamp or natural language:
# Specific timestamp
nylas notetaker create \
--meeting-link "https://zoom.us/j/987654321" \
--join-time "2026-04-01 14:00"
# Relative time
nylas notetaker create \
--meeting-link "https://meet.google.com/xyz-uvwx-yz" \
--join-time "tomorrow 9am"
# 30 minutes from now
nylas notetaker create \
--meeting-link "https://zoom.us/j/555000111" \
--join-time "30m"5. Check notetaker status
List all your notetakers or check a specific one:
# List all notetakers
nylas notetaker list
# Show a specific notetaker
nylas notetaker show ntk_abc123def456$ nylas notetaker show ntk_abc123def456
ID: ntk_abc123def456
Status: recording
Meeting: https://zoom.us/j/123456789
Bot name: Notetaker
Joined at: 2026-04-01 14:02:31 UTCStatus values: scheduled → joining → recording → processing → completed.
6. Get the recording and transcript
Once the meeting ends and processing completes, fetch the media:
nylas notetaker media ntk_abc123def456$ nylas notetaker media ntk_abc123def456
Recording: https://storage.nylas.com/media/ntk_abc123def456/recording.mp4
Transcript: https://storage.nylas.com/media/ntk_abc123def456/transcript.json
Duration: 47m 23s
Status: completedURLs expire after a short window. Download them immediately or pipe into a script. Use --json for machine-readable output:
# Download transcript to a file
nylas notetaker media ntk_abc123def456 --json | jq -r '.transcript_url' | xargs curl -o transcript.json
# Download recording
nylas notetaker media ntk_abc123def456 --json | jq -r '.recording_url' | xargs curl -o recording.mp47. Get notified when the transcript is ready
Polling nylas notetaker show works, but a webhook is cleaner. Set one up to fire when media is available:
nylas webhook create \
--url "https://your-server.com/webhooks/notetaker" \
--triggers notetaker.mediaThe webhook payload includes the notetaker ID. Your server can then call nylas notetaker media <id> to fetch the recording and transcript URLs.
# List active webhooks
nylas webhook list
# Delete a webhook
nylas webhook delete <webhook-id>8. Cancel a scheduled notetaker
If the meeting is cancelled or you don't need the recording, delete the notetaker before it joins:
nylas notetaker delete ntk_abc123def456Cancelling after the bot has already joined stops the recording and discards any captured media.
Next steps
- Manage calendar events from the terminal — create events and check availability from the CLI
- AI meeting scheduler with Manus — automate scheduling with natural language
- Build an email agent with the CLI — wrap CLI commands as LLM agent tools
- Getting started with Nylas CLI — install, authenticate, and run your first command