zoom-cli
A command-line interface for the Zoom API -- manage meetings, recordings, users, webinars, and reports from your terminal.
Install
# From crates.io
cargo install zoom-cli
# From PyPI (pre-built binaries, no Rust toolchain needed)
pip install zoom-cli
# From GitHub Releases (Linux, macOS)
curl -fsSL https://github.com/rvben/zoom-cli/releases/latest/download/zoom-$(uname -m)-unknown-linux-gnu.tar.gz | tar xz
Quick Start
# Interactive setup (creates config with your Zoom OAuth credentials)
zoom init
# Verify the active profile against Zoom
zoom auth status
# List your upcoming meetings
zoom meetings list
# Create a meeting
zoom meetings create --topic "Standup" --duration 30
# List cloud recordings from a date range
zoom recordings list --from 2026-01-01
# Get current user info
zoom users me
Configuration
Config file
~/.config/zoom-cli/config.toml
active_profile = "default"
[default]
account_id = "YOUR_ACCOUNT_ID"
client_id = "YOUR_CLIENT_ID"
client_secret = "YOUR_CLIENT_SECRET"
[work]
account_id = "..."
client_id = "..."
client_secret = "..."
Requires a Zoom Server-to-Server OAuth app.
Environment variables
| Variable | Description |
|---|---|
ZOOM_ACCOUNT_ID |
OAuth account ID |
ZOOM_CLIENT_ID |
OAuth client ID |
ZOOM_CLIENT_SECRET |
OAuth client secret |
ZOOM_PROFILE |
Active profile name (default: default) |
Precedence
CLI flags > environment variables > config file
Use the same account workflow as the other enterprise CLIs:
zoom init --profile work
zoom auth login --profile work
zoom auth status [--offline] --profile work
zoom auth logout --profile work
zoom profile list
zoom profile use work
zoom profile remove work --yes
zoom config show
zoom config path
zoom doctor [--offline]
auth status and doctor verify credentials against Zoom by default. Their
--offline option validates only local configuration. auth logout removes
the stored client secret but preserves the rest of the profile. Environment
variables still take precedence and cannot be removed by the CLI.
Commands
Meetings
| Command | Description |
|---|---|
zoom meetings list [--user <id>] [--type <t>] |
List meetings for a user |
zoom meetings get <id> |
Get meeting details |
zoom meetings create --topic <t> [--duration <m>] [--start <dt>] [--password <p>] |
Create a meeting |
zoom meetings update <id> [--topic <t>] [--duration <m>] [--start <dt>] |
Update a meeting |
zoom meetings delete <id> |
Delete a meeting |
zoom meetings end <id> |
End a live meeting |
zoom meetings participants <id> |
List past meeting participants |
zoom meetings invite <id> |
Get meeting invitation text |
Recordings
| Command | Description |
|---|---|
zoom recordings list [--user <id>] [--from <date>] [--to <date>] |
List cloud recordings |
zoom recordings get <meeting_id> |
Get recording details |
zoom recordings download <meeting_id> [--out <dir>] |
Download recording files |
zoom recordings delete <meeting_id> [--permanent] |
Delete cloud recordings |
zoom recordings start <meeting_id> |
Start recording a live meeting |
zoom recordings stop <meeting_id> |
Stop recording |
zoom recordings pause <meeting_id> |
Pause recording |
zoom recordings resume <meeting_id> |
Resume recording |
zoom recordings transcript <meeting_id> [--out <dir>] |
Download transcript files |
Users
| Command | Description |
|---|---|
zoom users list [--status <s>] |
List account users |
zoom users get <id_or_email> |
Get user details |
zoom users me |
Get current user |
zoom users create --email <e> [--first-name <n>] [--last-name <n>] [--type <t>] |
Create a user |
zoom users deactivate <id_or_email> |
Deactivate a user |
zoom users activate <id_or_email> |
Reactivate a user |
Webinars
| Command | Description |
|---|---|
zoom webinars list [--user <id>] |
List webinars |
zoom webinars get <id> |
Get webinar details |
Reports
| Command | Description |
|---|---|
zoom reports meetings --from <date> [--to <date>] [--user <id>] |
Meeting summary report |
zoom reports participants <meeting_id> |
Participant report for a past meeting |
Configuration & Setup
| Command | Description |
|---|---|
zoom init [--profile <name>] |
Set up credentials interactively |
zoom auth login [--profile <name>] |
Configure and verify credentials (init is retained as an alias) |
zoom auth status [--offline] [--profile <name>] |
Check authentication state |
zoom auth logout [--profile <name>] |
Remove the selected profile's stored client secret |
zoom profile list |
List profiles |
zoom profile use <name> |
Select the default profile |
zoom profile remove <name> --yes |
Remove a profile |
zoom config show |
Show current configuration |
zoom config path |
Print the configuration file path |
zoom config delete <profile> [--force] |
Delete a profile |
zoom doctor [--offline] |
Check configuration and Zoom connectivity |
zoom schema |
Print the machine-readable command schema |
zoom completions <shell> |
Generate shell completions (bash, zsh, fish, elvish, powershell) |
Shell Completions
# zsh
zoom completions zsh > ~/.zsh/completions/_zoom
# bash
zoom completions bash > /etc/bash_completion.d/zoom
# fish
zoom completions fish > ~/.config/fish/completions/zoom.fish
Agent Integration
JSON output
JSON output is automatic when stdout is not a TTY, or forced with --json. Data goes to stdout, messages to stderr.
zoom meetings list --json | jq '.[].topic'
Schema introspection
zoom schema | jq '.commands[] | select(.name == "meetings list")'
The schema command outputs a JSON description of commands, arguments, and
result fields -- enabling agents to discover operations without parsing help
text.
Exit codes
| Code | Meaning |
|---|---|
0 |
Success |
1 |
General error |
2 |
Auth or config error |
3 |
Not found |
License
MIT
Releasing
Vership owns versioning, changelog generation, release commits, and tags. See the release runbook for the verified workflow and recovery policy.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file zoomcli-0.2.8.tar.gz.
File metadata
- Download URL: zoomcli-0.2.8.tar.gz
- Upload date:
- Size: 88.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4f9af1177e08da06a3a6fe840374b1355813efd2cf6cdb8a6e1d0049313af8da
|
|
| MD5 |
4e7f17b0e1a46b6c85889133ab8c1365
|
|
| BLAKE2b-256 |
c2b9826eb512ba38fec7e664d580ea7f4f036a0ce674b312bd73aa496d445a51
|
File details
Details for the file zoomcli-0.2.8-py3-none-win_amd64.whl.
File metadata
- Download URL: zoomcli-0.2.8-py3-none-win_amd64.whl
- Upload date:
- Size: 3.0 MB
- Tags: Python 3, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a723e1111db2762ed97bd42ae0a11fe458ce0c3ca78f416c1f186378beee947d
|
|
| MD5 |
be4b40ea9314ec2ab34505d5d0c37448
|
|
| BLAKE2b-256 |
c19d7bbb6c61119f6faf6b2c32320259d43de0542846f783b6fb2ede93aa1ad7
|
File details
Details for the file zoomcli-0.2.8-py3-none-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: zoomcli-0.2.8-py3-none-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 2.9 MB
- Tags: Python 3, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b54999c6117349caf6b8c436adf845a3d64ad2e0351956b2e9a5fee57de8e3e5
|
|
| MD5 |
38f36c33893d10528538a341feeb0c29
|
|
| BLAKE2b-256 |
ec2978c520172252591bd59238f5a27c3d09ddd066abf0f139975bb4e09d91ed
|
File details
Details for the file zoomcli-0.2.8-py3-none-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: zoomcli-0.2.8-py3-none-manylinux_2_28_aarch64.whl
- Upload date:
- Size: 2.8 MB
- Tags: Python 3, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4b2552dd3373fc5238d72dfe1be5fd2077b312d246594617e942a7525198384a
|
|
| MD5 |
3455d3169d54786d4ae8d60e50475bcd
|
|
| BLAKE2b-256 |
70e200aadb21eba8f5e2a304a106ea056fb295808ec0742e97d7986cf1f93991
|
File details
Details for the file zoomcli-0.2.8-py3-none-macosx_11_0_arm64.whl.
File metadata
- Download URL: zoomcli-0.2.8-py3-none-macosx_11_0_arm64.whl
- Upload date:
- Size: 2.7 MB
- Tags: Python 3, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
98ac1fe8cc1eb5b464420a330c06e34488eee1a04bd5c481a43d86fd658f19cf
|
|
| MD5 |
b4b34222fcae71dfaf9e5a7094026f9c
|
|
| BLAKE2b-256 |
3c61556e66de7efd6b08ef093818535c1d790f3aa74703166129f23f5b45e1bf
|
File details
Details for the file zoomcli-0.2.8-py3-none-macosx_10_12_x86_64.whl.
File metadata
- Download URL: zoomcli-0.2.8-py3-none-macosx_10_12_x86_64.whl
- Upload date:
- Size: 2.8 MB
- Tags: Python 3, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6258363be75f2bf2b7ff97af2339f27a1ce822307fe368b3a8a60aa184956f7d
|
|
| MD5 |
1d13e44f13094773bc04d420acabccc6
|
|
| BLAKE2b-256 |
fdabcab360934cd044c9a06729a05e21c0458353c11b886c471f16acf7a5da60
|