@kody/zoom
Call Zoom users, meetings, recordings, and webinars through OAuth or Server-to-Server secrets.
OtherTopics: zoom, meetings, recordings, webinars, users, oauth, s2s, server-to-server, multi-account, dry-run
- Version
- 0.0.0
- License
- MIT
- Published
- October 14, 2026
- Pinned commit
479b410- Rating
- ★ 5.0 (1)
- Forks
- 3
- Adaptation effort
- 1.0
README
Agent docs@kody/zoom
Official Zoom wordmark (Simple Icons path from Zoom brand) in white on Zoom Blue #0B5CFF. Paths are unmodified. Zoom® is a trademark of Zoom Communications, Inc. This package is not affiliated with or endorsed by Zoom.
Intent
Reusable Zoom REST helpers for Kody agents. One package covers bring-your-own user OAuth applications and Server-to-Server OAuth secrets for users, meetings, recordings, and webinars. Multi-account routing is zoom / zoom-* via integrationName or account — there are no hard-coded personal aliases or meeting IDs.
This listing is meant to be forked. After you fork, connect your Zoom account. Do not treat the live @kody/zoom package as a shared meeting calendar.
Share this listing at https://kody.codes/@kody/zoom
What it does
- Call the Zoom REST API with the correct saved credential (
request,paginate) - Verify which Zoom identity will perform an action (
get-current-user) - List and fetch users, meetings, recordings, and webinars
- Preview or apply meeting and webinar writes (
meetings/*,webinars/*)
It does not register a Zoom Marketplace app for you. There is no built-in Zoom platform app.
Prerequisites / setup
| Lane | Credential | When to use |
|---|---|---|
| A. User OAuth | Saved integration zoom (or zoom-*) | Refreshable user OAuth; me works for the connected user |
| B. Server-to-Server OAuth | Secrets zoomClientId, zoomS2sClientSecret, plus the plain accountId param | Account-level automations; pass auth: 's2s' and accountId |
Required hosts: api.zoom.us and zoom.us. Approve them in the account secrets UI. Never paste secrets into chat.
Lane A — bring-your-own OAuth
- Open Zoom Marketplace → Build an app and create a General OAuth app.
- Set the Redirect URL for OAuth exactly to
https://kody.codes/connect/oauth. - Add the user-level scopes you need (user / meeting / recording / webinar read+write).
- Connect:
https://kody.codes/connect/oauth?provider=zoom&authorizeUrl=https%3A%2F%2Fzoom.us%2Foauth%2Fauthorize&tokenUrl=https%3A%2F%2Fzoom.us%2Foauth%2Ftoken&flow=confidential&scopes=user%3Aread%3Auser%20meeting%3Aread%3Alist_meetings%20meeting%3Aread%3Ameeting%20meeting%3Awrite%3Ameeting%20meeting%3Aupdate%3Ameeting%20meeting%3Adelete%3Ameeting%20cloud_recording%3Aread%3Alist_user_recordings%20cloud_recording%3Aread%3Arecording%20webinar%3Aread%3Alist_webinars%20webinar%3Aread%3Awebinar%20webinar%3Awrite%3Awebinar%20webinar%3Aupdate%3Awebinar%20webinar%3Adelete%3Awebinar&allowedHosts=api.zoom.us%2Czoom.us&apiBaseUrl=https%3A%2F%2Fapi.zoom.us%2Fv2&dashboardUrl=https%3A%2F%2Fmarketplace.zoom.us%2Fdevelop%2Fcreate- Paste the client ID and secret into the Kody form, then authorize Zoom.
- Reconnect later at
https://kody.codes/connect/oauth?provider=zoom.
Lane B — Server-to-Server OAuth
- Create a Server-to-Server OAuth app in the Zoom Marketplace, add admin scopes, and Activate.
- Save the client ID and client secret as secrets (approve
api.zoom.usandzoom.us):
https://kody.codes/account/secrets/new?name=zoomClientId&description=Zoom%20Server-to-Server%20client%20ID&allowedHosts=api.zoom.us%2Czoom.us&scope=userhttps://kody.codes/account/secrets/new?name=zoomS2sClientSecret&description=Zoom%20Server-to-Server%20client%20secret&allowedHosts=api.zoom.us%2Czoom.us&scope=user- Copy the app's Account ID from its App Credentials page. It is an identifier, not a secret, so it is not saved in Kody: pass it as
accountIdon every S2S call. (Zoom's token exchange only accepts the account ID in the form body or query, and Kody only puts secrets in request headers.)
zoomS2sClientSecret is intentional — do not reuse zoomClientSecret from /connect/oauth. Call helpers with auth: 's2s', accountId: '<your Zoom account ID>'.
Multi-account / mutations / jobs
account: 'work'→zoom-work(and matching S2S secret suffixes); S2S calls pass that account'saccountId.- Meeting/webinar writes need
dryRun: trueorconfirm: true. upcoming-meetingsis declared and disabled by default.
Agents: import paths, smoke snippets, and confirm examples live in AGENTS.md.
Done when
- OAuth connected or both S2S secrets saved (and
accountIdpassed on S2S calls); hostsapi.zoom.us/zoom.usapproved - Smoke /
get-current-userreturns identity without tokens - Meeting/webinar helpers refuse live writes unless
confirm: true;dryRun: truenever writes
Troubleshooting
- Redirect URI mismatch: callback must be exactly
https://kody.codes/connect/oauth. 401with OAuth: reconnect athttps://kody.codes/connect/oauth?provider=zoom.401on S2S: app activated;accountIdand both secrets from the same app; hosts approved.- Webinar errors: host needs a webinar license and matching scopes.
- Mutation-guard errors: pass
dryRun: trueorconfirm: true.
Docs
Report this listing
Log in to report this listing.