Source: https://cli.nylas.com/guides/record-meetings-from-terminal

# 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. Calendar integration works across all major providers.

Written by [Pouya Sanooei](https://cli.nylas.com/authors/pouya-sanooei) Software Engineer

Reviewed by [Hazik](https://cli.nylas.com/authors/hazik)

Updated May 2, 2026

> **TL;DR:** `nylas notetaker create --meeting-link <URL>` sends a bot to your meeting. Get the transcript and recording with `nylas notetaker media <id>`.

## 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)](https://zoom.us/pricing). Google Meet recording requires a [Workspace Business Standard license or higher](https://workspace.google.com/pricing). 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

```bash
brew install nylas/nylas-cli/nylas
```

For shell-script, PowerShell, and Go installs, see the [getting started guide](https://cli.nylas.com/guides/getting-started).

## 2. Authenticate

```bash
nylas auth config --api-key <your-nylas-api-key>
```

Get your API key from the [Nylas dashboard](https://dashboard.nylas.com/). 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.

```bash
# 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:

```bash
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.

```text
Notetaker created: ntk_abc123def456
Status: joining
```

## 4. Schedule a recording in advance

Use `--join-time` to schedule the bot for a future meeting. Accepts a timestamp or natural language:

```bash
# 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:

```bash
# List all notetakers
nylas notetaker list

# Show a specific notetaker
nylas notetaker show ntk_abc123def456
```

```text
$ 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 UTC
```

Status values: `scheduled` → `joining` → `recording` → `processing` → `completed`.

## 6. Get the recording and transcript

Once the meeting ends and processing completes, fetch the media:

```bash
nylas notetaker media ntk_abc123def456
```

```text
$ 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:      completed
```

URLs expire after a short window. Download them immediately or pipe into a script. Use `--json` for machine-readable output:

```bash
# 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.mp4
```

## 7. 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:

```bash
nylas webhook create \
  --url "https://your-server.com/webhooks/notetaker" \
  --triggers notetaker.media
```

The webhook payload includes the notetaker ID. Your server can then call `nylas notetaker media <id>` to fetch the recording and transcript URLs.

```bash
# 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:

```bash
nylas notetaker delete ntk_abc123def456
```

Cancelling after the bot has already joined stops the recording and discards any captured media.

## Next steps

- [Manage calendar events from the terminal](https://cli.nylas.com/guides/manage-calendar-from-terminal) — create events and check availability from the CLI
- [AI meeting scheduler with Manus](https://cli.nylas.com/guides/manus-ai-meeting-scheduler) — automate scheduling with natural language
- [Build an email agent with the CLI](https://cli.nylas.com/guides/build-email-agent-cli) — wrap CLI commands as LLM agent tools
- [Getting started with Nylas CLI](https://cli.nylas.com/guides/getting-started) — install, authenticate, and run your first command
- [Nylas CLI vs Recall.ai](https://cli.nylas.com/guides/nylas-vs-recall-ai-agent-email) — email/calendar vs meeting recordings for AI agents
- [Command reference](https://cli.nylas.com/docs/commands) — every flag, subcommand, and example
