Repository navigation
commands
Look up the exact command, arguments and options for reading meetings, archiving recordings or managing the Zoom schedule. Stored meeting IDs differ from remote Zoom IDs; archive destinations are explicit local directories. Start with installation or a task guide when connecting for the first time.
These options apply to every command.
| Option | What it does |
|---|---|
-V, --version |
output the version number. |
--json |
one JSON value. |
--jsonl |
one JSON object per item. |
--no-input |
disable interactive login. |
--interactive |
permit browser approval in an interactive terminal. |
--quiet |
suppress non-error diagnostics. |
--fields <paths> |
project result fields, such as id,title. |
--timeout <duration> |
command deadline: reads 30s, login 5m, downloads/transcription 1h; watch/MCP have no default. |
--max-output-bytes <bytes> |
bound rendered result bytes (default 4194304; zero is unlimited). |
--offline |
refuse network requests. |
--debug |
on a failure, its whole record — cause and stack — in place of the short line. |
local Zoom configuration
show local configuration
zm config showset a configuration value
Changes local data.
zm config set <key> <value>| Argument | What it is | |
|---|---|---|
key |
required | setting name, such as account.profile. |
value |
required | new value. |
stored meetings and their records
list stored meetings
zm meetings list [options]| Option | What it does |
|---|---|
--json |
one JSON value. |
--jsonl |
one JSON object per item. |
--since-time <time> |
meetings starting at or after this ISO 8601 date or time. |
--until-time <time> |
meetings starting at or before this ISO 8601 date or time. |
--limit <n> |
meetings per page. Default: 100. |
--page <n> |
page number. Default: 1. |
show a stored meeting
zm meetings show <meeting> [options]| Argument | What it is | |
|---|---|---|
meeting |
required | stored meeting id. |
| Option | What it does |
|---|---|
--json |
one JSON value. |
--jsonl |
one JSON object per item. |
show current meeting transcripts
zm meetings transcript <meeting> [options]| Argument | What it is | |
|---|---|---|
meeting |
required | stored meeting id. |
| Option | What it does |
|---|---|
--history |
include superseded transcript versions. |
--json |
one JSON value. |
--jsonl |
one JSON object per item. |
show stored meeting summaries
zm meetings summary <meeting> [options]| Argument | What it is | |
|---|---|---|
meeting |
required | stored meeting id. |
| Option | What it does |
|---|---|
--json |
one JSON value. |
--jsonl |
one JSON object per item. |
export a meeting as Markdown or one transcript as WebVTT
Changes local data.
zm meetings export <meeting> [options]| Argument | What it is | |
|---|---|---|
meeting |
required | stored meeting id. |
| Option | What it does |
|---|---|
--format <format> |
export format. One of: markdown, vtt. Default: markdown. |
--transcript-id <id> |
export a specific transcript version. |
--output <file> |
write content to a file through the host's writer. |
--json |
one JSON value. |
--jsonl |
one JSON object per item. |
find meeting participants by name or email
zm meetings people <query> [options]| Argument | What it is | |
|---|---|---|
query |
required | a name or an email address. |
| Option | What it does |
|---|---|
--json |
one JSON value. |
--jsonl |
one JSON object per item. |
bring the stored meetings up to date from the connected account
Changes local data.
zm meetings sync [options]| Option | What it does |
|---|---|
--json |
one JSON value. |
--jsonl |
one JSON object per item. |
--since-time <time> |
fetch meetings starting at or after this ISO 8601 date or time. |
--lookback-days <days> |
revisit recent occurrences for late transcripts (0–31). Default: 0. |
import downloaded meeting transcripts
Changes local data.
zm meetings import <folder> [options]| Argument | What it is | |
|---|---|---|
folder |
required | folder of transcripts downloaded from the provider. |
| Option | What it does |
|---|---|
--json |
one JSON value. |
--jsonl |
one JSON object per item. |
preview linking a stored meeting to an event; --yes applies it
Changes local data.
zm meetings update <reference> [options]| Argument | What it is | |
|---|---|---|
reference |
required | meeting reference, such as meeting:1/1. |
| Option | What it does |
|---|---|
--event-id <id> |
stored event id, or none to unlink. |
--expected-event-id <id> |
compare current event id, or none. |
--yes |
apply this local change once. |
--dry-run |
preview even when --yes is present. |
preview linking a meeting participant to a stored person; --yes applies it
Changes local data.
zm meetings link <reference> [options]| Argument | What it is | |
|---|---|---|
reference |
required | meeting reference, such as meeting:1/1. |
| Option | What it does |
|---|---|
--participant-id <id> |
participant id from this meeting. |
--person <uid> |
explicit stored person UID. |
--target-accounts <ids> |
explicit additional account ids authorized for target-person lookup. |
--expected-person <uid> |
compare current person UID, or none. |
--yes |
apply this local change once. |
--dry-run |
preview even when --yes is present. |
preview transcribing a recording on this machine; --yes adds the transcript
Changes local data.
zm meetings transcribe <meeting> <file> [options]| Argument | What it is | |
|---|---|---|
meeting |
required | stored meeting id or meeting reference. |
file |
required | local PCM16 WAV file (16 or 48 kHz, mono/stereo). |
| Option | What it does |
|---|---|
--model <model> |
installed speech model. |
--models-dir <directory> |
shared installed speech-model directory. |
--max-bytes <bytes> |
largest audio file to read, in bytes (default 1 GiB). |
--max-duration <duration> |
longest audio to transcribe (default 4h). |
--max-segments <n> |
most recognized segments (default 10000). |
--max-text-bytes <bytes> |
most transcript text, in bytes (default 4 MiB). |
--yes |
recognize locally and append to the existing meeting. |
--dry-run |
preview even when --yes is present. |
read the stored transcript lines, chat or summary behind a meeting reference
zm meetings evidence <reference> [options]| Argument | What it is | |
|---|---|---|
reference |
required | meeting reference, such as meeting:3/15. |
| Option | What it does |
|---|---|
--cues <n> |
how many transcript lines, 1 through 1000. |
--bytes <bytes> |
how much text, in bytes, 2 through 4194304. |
--cursor <cursor> |
continue after this line reference from the previous page. |
--after-transcript-id <id> |
resume root-reference revision scan, including empty revisions. |
--max-read-bytes <bytes> |
most stored bytes to read per page (default 4 MiB). |
--max-transcript-pages <n> |
most transcript pages to read, 1 through 1000. |
what the stored meetings say about a person, through linked identities
zm meetings context <person> [options]| Argument | What it is | |
|---|---|---|
person |
required | stored person, such as person:7. |
| Option | What it does |
|---|---|
--cues <n> |
how many transcript lines, 1 through 1000. |
--bytes <bytes> |
how much text, in bytes, 2 through 4194304. |
--meetings <n> |
how many meetings, 1 through 100. |
--scan-limit <n> |
most identity links to look at, 1 through 1000. |
--since-time <time> |
only identity links since this ISO 8601 time. |
preview the task a meeting line would become, without creating it
zm meetings task-proposal <reference> [options]| Argument | What it is | |
|---|---|---|
reference |
required | transcript line reference, such as meeting:3/15/20/0. |
| Option | What it does |
|---|---|
--type <type> |
question, request, mention or promise. |
read a cited cue with bounded context before and after it
zm meetings passage <reference> [options]| Argument | What it is | |
|---|---|---|
reference |
required | retained transcript cue reference from a search hit. |
| Option | What it does |
|---|---|
--before-n <n> |
preceding cues (default 3). |
--after-n <n> |
following cues (default 3); at most 999 surrounding cues in total. |
--bytes <bytes> |
cue JSON byte budget (default 65536); the anchor must fit. |
--max-read-bytes <bytes> |
stored text byte budget (default 4194304); boundary probes read metadata only. |
--expected-fingerprint <hash> |
reject a changed anchor using its previously read cue fingerprint. |
--format <format> |
compact text, Markdown or structured JSON. One of: text, markdown, json. Default: text. |
preview building meeting vectors; --yes builds one batch
Changes local data.
zm meetings embeddings [options]| Option | What it does |
|---|---|
--model <model> |
embedding model: an installed local one, or one served at --base-url. |
--base-url <url> |
remote embedding service; OpenAI reads OPENAI_API_KEY. |
--dims <n> |
vector size the remote service returns, in dimensions. |
--limit <n> |
how many results or items in one batch, 1 through 1000. |
--max-rows <n> |
most transcript lines to read, 1 through 100000. |
--max-text-bytes <bytes> |
most transcript text to read, in bytes (default 4 MiB). |
--after-transcript-id <id> |
continue splitting transcripts after this one. |
--after-hash <hash> |
continue embedding after this passage. |
--yes |
split transcripts and build their vectors; otherwise only preview. |
the owner's stored events
list stored events
zm events list [options]| Option | What it does |
|---|---|
--json |
one JSON value. |
--jsonl |
one JSON object per item. |
discover commands, flags and examples, optionally scoped to a command path
zm commands [path]| Argument | What it is | |
|---|---|---|
path |
optional | resource or command path. |
answer shell completion requests
zm complete [words]| Argument | What it is | |
|---|---|---|
words |
optional | shell words ending in the partial word. |
check local runtime and public config without a login or database
zm doctorthe saved Zoom login, separate from local data profiles
show cached login state; remote verification is explicit
zm session status [options]| Option | What it does |
|---|---|
--check |
verify the session with Zoom. |
log in to Zoom through your browser
Changes local data.
zm session start [options]| Option | What it does |
|---|---|
--browser <program> |
browser program. |
keep fetching new meetings from Zoom, or rescanning a folder, until stopped
Changes local data.
zm watch [target] [folder] [options]| Argument | What it is | |
|---|---|---|
target |
optional | api or files; otherwise the configured source. One of: api, files. |
folder |
optional | with files: folder of downloaded transcripts; otherwise files.folder. |
| Option | What it does |
|---|---|
--since-time <time> |
on the first run, fetch meetings from this ISO 8601 time. |
--lookback-days <days> |
API cursor overlap for late transcripts (0 through 31). |
--interval <duration> |
delay after each completed receipt (1s through 24h). Default: 10000. |
cloud recording assets and verified local archives
list cloud recording occurrences (last 30 days by default)
zm recordings list [options]| Option | What it does |
|---|---|
--since-time <time> |
first day, YYYY-MM-DD. |
--until-time <time> |
last day, YYYY-MM-DD. |
download a date range of recordings into an archive folder, a month at a time
Changes local data.
zm recordings sync [options]| Option | What it does |
|---|---|
--since-time <time> |
first day, YYYY-MM-DD. |
--until-time <time> |
last day, YYYY-MM-DD; at most ten years after the first. |
--destination <directory> |
explicit archive directory. |
--max-bytes <bytes> |
maximum bytes per recording file. |
--resume |
resume verified partial downloads and archive progress; requires a local profile. |
--no-resume |
disable persistent resume state for this invocation. |
--checkpoint <file> |
explicit durable checkpoint file; implies resume. |
--recheck-since-time <time> |
look again from this day, YYYY-MM-DD, for recordings that came late. |
--max-pages <pages> |
catalog page limit from 1 through 10000 (default 1000). |
--max-entries <entries> |
occurrence limit from 1 through 10000 (default 10000). |
show downloadable asset metadata without signed URLs
zm recordings show <meeting>| Argument | What it is | |
|---|---|---|
meeting |
required | meeting id or occurrence UUID. |
stream recording assets into a verified local archive
Changes local data.
zm recordings download <meeting> [options]| Argument | What it is | |
|---|---|---|
meeting |
required | meeting id or occurrence UUID. |
| Option | What it does |
|---|---|
--destination <directory> |
explicit archive directory. |
--file-ids <ids> |
comma-separated recording file ids. |
--max-bytes <bytes> |
per-file download byte limit (default 20 GiB). |
--resume |
resume verified partial downloads and archive progress; requires a local profile. |
--no-resume |
disable persistent resume state for this invocation. |
inspect archives without Zoom or a database
read the transcripts of a local archive, checking each file first
zm recordings archive transcript <directory> [options]| Argument | What it is | |
|---|---|---|
directory |
required | archive folder. |
| Option | What it does |
|---|---|
--uuid <uuid> |
select an occurrence UUID. |
--file-ids <ids> |
select comma-separated transcript asset ids. |
--max-bytes <bytes> |
largest transcript file to read, in bytes (default 8 MiB). |
show what a local archive holds, from its transfer records
zm recordings archive show <directory>| Argument | What it is | |
|---|---|---|
directory |
required | archive folder. |
check the size and checksum of every file in a local archive
zm recordings archive check <directory>| Argument | What it is | |
|---|---|---|
directory |
required | archive folder. |
list the locks on a local archive: active, stale or another machine's
zm recordings archive locks <directory>| Argument | What it is | |
|---|---|---|
directory |
required | archive folder. |
preview removing stale locks; --yes removes them
Changes local data.
zm recordings archive recover <directory> [options]| Argument | What it is | |
|---|---|---|
directory |
required | archive folder. |
| Option | What it does |
|---|---|
--yes |
remove recognized locks left by a dead local process. |
--dry-run |
preview only, including when --yes is present. |
check an archive's transcripts, then add them to the stored meetings
Changes local data.
zm recordings archive import <directory> [options]| Argument | What it is | |
|---|---|---|
directory |
required | archive folder. |
| Option | What it does |
|---|---|
--uuid <uuid> |
select an occurrence UUID. |
--file-ids <ids> |
select comma-separated transcript asset ids. |
--max-bytes <bytes> |
largest transcript file, in bytes (default 8 MiB). |
--max-total-bytes <bytes> |
most transcript bytes in all, checked before any write (default 64 MiB). |
local archive jobs and Linux user systemd timers
preview a daily archive job; --yes installs its timer
Changes local data.
zm recordings schedule create [options]| Option | What it does |
|---|---|
--name <name> |
local job name. |
--destination <directory> |
absolute archive directory. |
--since-time <time> |
first day to archive, YYYY-MM-DD. |
--at <time> |
daily HH:mm time. |
--timezone <zone> |
IANA timezone for the timer. |
--lookback-days <days> |
revisit the latest zero through 31 UTC days (default seven). |
--max-bytes <bytes> |
maximum bytes per recording file (default 20 GiB). |
--yes |
install and enable the captured timer. |
--dry-run |
preview even when --yes is present. |
list saved local jobs; live timer state is not checked
zm recordings schedule listshow one saved local job and its captured settings
zm recordings schedule show <job>| Argument | What it is | |
|---|---|---|
job |
required | saved job id. |
run the captured job once with durable archive progress
Changes local data.
zm recordings schedule run <job>| Argument | What it is | |
|---|---|---|
job |
required | saved job id. |
preview disabling a saved timer; --yes disables it without deleting files
Changes local data.
zm recordings schedule disable <job> [options]| Argument | What it is | |
|---|---|---|
job |
required | saved job id. |
| Option | What it does |
|---|---|
--yes |
disable and stop the timer. |
--dry-run |
preview even when --yes is present. |
upcoming Zoom meetings; stored meeting reads remain under meetings
list upcoming meetings
zm remote-meetings listshow an upcoming meeting
zm remote-meetings show <meeting>| Argument | What it is | |
|---|---|---|
meeting |
required | positive numeric Zoom meeting id. |
read invitation text
zm remote-meetings invitation <meeting>| Argument | What it is | |
|---|---|---|
meeting |
required | positive numeric Zoom meeting id. |
preview a meeting creation; --yes performs it once
Changes remote Zoom data.
zm remote-meetings create [options]| Option | What it does |
|---|---|
--title <text> |
meeting title. |
--start-time <timestamp> |
ISO start time with timezone. |
--duration-minutes <minutes> |
positive meeting duration in minutes. |
--timezone <zone> |
IANA timezone. |
--agenda <text> |
meeting agenda. |
--type <type> |
instant (1) or scheduled (2). |
--yes |
apply the remote mutation once instead of previewing. |
--dry-run |
preview only, including when --yes is present. |
preview a meeting update; --yes performs it once
Changes remote Zoom data.
zm remote-meetings update <meeting> [options]| Argument | What it is | |
|---|---|---|
meeting |
required | positive numeric Zoom meeting id. |
| Option | What it does |
|---|---|
--title <text> |
meeting title. |
--start-time <timestamp> |
ISO start time with timezone. |
--duration-minutes <minutes> |
positive meeting duration in minutes. |
--timezone <zone> |
IANA timezone. |
--agenda <text> |
meeting agenda. |
--type <type> |
instant (1) or scheduled (2). |
--yes |
apply the remote mutation once instead of previewing. |
--dry-run |
preview only, including when --yes is present. |
preview a cancellation; --yes performs it once
Changes remote Zoom data.
zm remote-meetings cancel <meeting> [options]| Argument | What it is | |
|---|---|---|
meeting |
required | positive numeric Zoom meeting id. |
| Option | What it does |
|---|---|
--occurrence-id <id> |
cancel one recurring occurrence. |
--yes |
apply cancellation once instead of previewing. |
--dry-run |
preview only, including when --yes is present. |
the instructions an agent is given for this tool
print SKILL.md — zm skill install puts it where Claude Code, Codex and Gemini CLI look for it
zm skill showwrite SKILL.md to ~/.claude/skills/zoom-cli/ (Claude Code) and ~/.agents/skills/zoom-cli/ (Codex, Gemini CLI)
Changes local data.
zm skill install [options]| Option | What it does |
|---|---|
--for <agents> |
which agents to install for. One of: claude, agents, all. Default: all. |
serve read-only meeting tools over MCP stdio
zm serve [options]| Option | What it does |
|---|---|
--mcp |
use the MCP JSON-RPC protocol. |
--unified-search |
include selected-profile meetings-only unified search. |
--meeting-context |
include account-fixed evidence, person context and task proposals. |
--semantic |
include read-only meeting vector search with an explicit query model. |
--model <model> |
query embedding model: an installed one, or one served at --base-url. |
--base-url <url> |
explicit remote embedding endpoint for semantic queries. |
--dims <n> |
vector size the remote service returns, in dimensions. |
opt-in shared store search; meetings by default
search meetings and, with --only, messages, mail and notes in the local store
zm search all <query> [options]| Argument | What it is | |
|---|---|---|
query |
required | words to find; a word also matches longer words it starts. |
| Option | What it does |
|---|---|
--only <resources> |
comma-separated meetings,messages,mail,notes (default meetings). |
--limit <n> |
how many results, 1 through 1000 (default 100). Default: 100. |
--max-meetings <n> |
most meetings to look at, 1 through 1000 (default 100). Default: 100. |
--meeting-cursor <json> |
source-only continuation from meetings.next_cursor. |
--exact |
request exact matching; unsupported meeting queries are reported as skipped. |
find words in stored meetings, by meaning with --model, or in an archive folder
zm search meetings <query> [options]| Argument | What it is | |
|---|---|---|
query |
required | words to find; each also matches its other word forms. |
| Option | What it does |
|---|---|
--meeting-id <id> |
only this stored meeting. |
--identity-id <id> |
meetings with this participant identity; does not say who spoke a hit. |
--person-id <id> |
meetings with a participant linked to this person. |
--event-id <id> |
only meetings linked to this stored event. |
--series-id <id> |
only meetings in this stored series. |
--project <name> |
meetings confirmed in this project, by name, key or alias. |
--tag <name> |
meetings with this tag, by name or alias. |
--topic <name> |
meetings with this topic, by name or alias. |
--since-time <time> |
meetings starting at or after this ISO 8601 date or time. |
--until-time <time> |
meetings starting at or before this ISO 8601 date or time. |
--limit <n> |
how many hits, 1 through 1000 (default 100). |
--cursor <cursor> |
continue from the previous page's nextCursor, with the same query and filters. |
--max-read-bytes <bytes> |
most stored bytes to read, 1 through 67108864 (default 4194304). |
--model <model> |
search by meaning with this embedding model, building missing vectors first. |
--base-url <url> |
remote embedding service for --model; OpenAI reads OPENAI_API_KEY. |
--dims <n> |
vector size the remote service returns, in dimensions. |
--max-chunks <n> |
by meaning: most stored passages to compare. |
--max-rows <n> |
by meaning: most transcript lines to read, 1 through 100000. |
--max-text-bytes <bytes> |
by meaning: most transcript text to read (default 4 MiB). |
--archive <directory> |
search the transcripts of this archive folder, before any import. |
--uuid <uuid> |
with --archive: only this occurrence UUID. |
--file-ids <ids> |
with --archive: only these comma-separated transcript asset ids. |
--max-bytes <bytes> |
with --archive: largest transcript file to read (default 8 MiB). |
Use the shared exit code rather than matching diagnostic text.
| Code | When |
|---|---|
0 |
it worked |
2 |
validation_error |
3 |
configuration_error |
4 |
authentication_error |
5 |
permission_error |
6 |
not_found |
7 |
confirmation_required |
8 |
rate_limited |
9 |
timeout |
10 |
network_error |
11 |
provider_error |
12 |
provider_unavailable |
13 |
invalid_response |
14 |
outcome_unknown |
130 |
cancelled |
1 |
anything else |
Remote meeting changes preview by default. Exit code 14 reports an uncertain dispatched outcome; inspect the remote state before retrying. Foreground watches require JSONL when output is piped.