Zoom
Communication Server-to-server OAuth appCreate and manage Zoom meetings, users and recordings from any Windmill script, flow or app.
Set up in 3 steps
Create a server-to-server OAuth app
In the Zoom App Marketplace, create a Server-to-Server OAuth app, add the scopes your scripts need, and activate it. Its credentials page shows the account id, client id and secret.
Add the resource in Windmill
Open Resources, add a resource of type zoom, and fill accountId, oauthClientId and oauthClientSecret. webhookSecretToken is only needed if a flow verifies incoming Zoom webhooks.
Run your first script
Fork any script below and read before writing anything.
Scripts
Building blocks, if none of the projects above fit. Fork one, run it, or call it as a step inside your own flow.
List meeting registrants
Get Meeting
Delete Cloud Recording
Update Webinar
Create Webinar
Add webinar panelist
End meeting
Delete webinar panelist
List meetings
List webinar registrants
Get Webinar
Update a meeting
List Webinars
Update Webinar Registrant Status
List Cloud Recordings
Add webinar registrant
Create a meeting
Add meeting registrant
Delete meeting
Delete webinar
Update Webinar
List Webinar Participants Report
Get Meeting Details
Get Webinar Details
Delete User
Add Webinar Registrant
Create Meeting
List Past Meeting Participants
Update Meeting
List Channels
Resource type
zoom — the shape of the credential every script on this page expects.
| Field | Type | Required | What it is |
|---|---|---|---|
| accountId | string | Yes | |
| oauthClientId | string | Yes | |
| oauthClientSecret | string | Yes | |
| webhookSecretToken | string | No |
Questions
Why three fields and not a token?
The scripts exchange them for a short-lived token on each run, so nothing expires in the resource.
A call fails on a missing scope
Scopes live on the app, not the token. Add it in the Marketplace and reactivate the app — the credentials stay the same.
Are my credentials stored on the hub?
Never. They live only in your own Windmill workspace, encrypted at rest.