Zoom
Use
scripts/zoom.py
to interact with Zoom's REST API.
Prerequisites
pip3 install requests PyJWT --break-system-packages
Authentication
Set these in the skill's
.env
file (copy from
.env.example
):
ZOOM_ACCOUNT_ID
— Account ID (from Zoom Marketplace app)
ZOOM_CLIENT_ID
— OAuth Client ID
ZOOM_CLIENT_SECRET
— OAuth Client Secret
ZOOM_USER_EMAIL
— Email of the Zoom user to act as (required for S2S apps; defaults to me
if unset)
ZOOM_RTMS_CLIENT_ID
— Client ID of the RTMS Marketplace app (required for rtms-start
/rtms-stop
; this is a separate app from the S2S OAuth app)
Create a Server-to-Server OAuth app at https://marketplace.zoom.us/ for full API access.
See references/AUTH.md for detailed setup guide.
Commands
Meetings
# List upcoming meetings
python3 scripts/zoom.py meetings list
List live/in-progress meetings (requires Business+ plan with Dashboard)
python3 scripts/zoom.py meetings live
Start RTMS for a live meeting (requires ZOOM_RTMS_CLIENT_ID)
python3 scripts/zoom.py meetings rtms-start <meeting_id>
Stop RTMS for a live meeting
python3 scripts/zoom.py meetings rtms-stop <meeting_id>
Get meeting details
python3 scripts/zoom.py meetings get <meeting_id>
Schedule a new meeting
python3 scripts/zoom.py meetings create --topic "Standup" --start "2026-01-28T10:00:00" --duration 30
Schedule with options
python3 scripts/zoom.py meetings create --topic "Review" --start "2026-01-28T14:00:00" --duration 60 --agenda "Sprint review" --password "abc123"
Delete a meeting
python3 scripts/zoom.py meetings delete <meeting_id>
Update a meeting
python3 scripts/zoom.py meetings update <meeting_id> --topic "New Title" --start "2026-01-29T10:00:00"
Calendar (upcoming schedule)
# Today's meetings
python3 scripts/zoom.py meetings list --from today --to today
This week's meetings
python3 scripts/zoom.py meetings list --from today --days 7
Recordings
# List cloud recordings
python3 scripts/zoom.py recordings list
List recordings for date range
python3 scripts/zoom.py recordings list --from "2026-01-01" --to "2026-01-31"
Get recording details
python3 scripts/zoom.py recordings get <meeting_id>
Download recording files (video/audio)
python3 scripts/zoom.py recordings download <meeting_id>
python3 scripts/zoom.py recordings download <meeting_id> --output ~/Downloads
Download transcript files only
python3 scripts/zoom.py recordings download-transcript <meeting_id>
python3 scripts/zoom.py recordings download-transcript <meeting_id> --output ~/Downloads
Download AI Companion summary as markdown
python3 scripts/zoom.py recordings download-summary <meeting_uuid>
python3 scripts/zoom.py recordings download-summary <meeting_uuid> --output ~/Downloads
Delete a recording
python3 scripts/zoom.py recordings delete <meeting_id>
AI Meeting Summary (AI Companion)
# List meeting summaries
python3 scripts/zoom.py summary list
python3 scripts/zoom.py summary list --from "2026-01-01" --to "2026-01-31"
Get AI summary for a specific meeting
python3 scripts/zoom.py summary get <meeting_id>
Users
# Get my profile
python3 scripts/zoom.py users me
List users (admin)
python3 scripts/zoom.py users list
Team Chat
# List chat channels
python3 scripts/zoom.py chat channels
List messages in a channel
python3 scripts/zoom.py chat messages <channel_id>
Send a message to a channel
python3 scripts/zoom.py chat send <channel_id> "Hello team!"
Send a direct message
python3 scripts/zoom.py chat dm <email> "Hey, are you free?"
List contacts
python3 scripts/zoom.py chat contacts
Phone (Zoom Phone)
# List call logs
python3 scripts/zoom.py phone calls --from "2026-01-01" --to "2026-01-31"
Scopes Required
For Server-to-Server OAuth, enable these scopes in your Zoom Marketplace app.
Only add the scopes you need — each command group requires specific scopes:
| Command Group | Scopes Needed |
|---|
users me / users list
| user:read:admin
|
meetings list/get/create/update/delete
| meeting:read:admin , meeting:write:admin
|
recordings list/get/delete
| recording:read:admin , recording:write:admin
|
chat channels/messages/send/dm
| chat_channel:read:admin , chat_message:read:admin , chat_message:write:admin
|
chat contacts
| contact:read:admin
|
summary list/get
| meeting_summary:read:admin
|
phone calls
| phone:read:admin (requires Zoom Phone enabled on account) |
If you get a scope error, go to https://marketplace.zoom.us/ → your app → Scopes, and add the missing scope listed in the error message.
Rate Limits
Zoom API has rate limits (varies by endpoint, typically 30-100 req/sec). The script handles 429 responses with automatic retry.