Zoom Server-to-Server OAuth apps

Connect Zoom with a Server-to-Server OAuth app. Activate the app, grant the scopes your workflows need, and add its Account ID, Client ID, and client secret to Sim.

Prerequisites

You need a Zoom admin whose role has permission to view and edit Server-to-Server OAuth apps, plus permission for the scopes the app will use. The Develop option in the Zoom Marketplace only appears for accounts with this permission.

Scope selection is capped by the creating admin's own role permissions, and Zoom automatically removes admin-level scopes from the app if that admin's role is later downgraded — workflows then start failing with scope errors even though nothing changed in Sim. Create the app from an admin account you expect to keep.

Set up the Server-to-Server OAuth app

1. Create the app

Sign in at marketplace.zoom.us as a Zoom admin, click Develop → Build an app, select Server-to-Server OAuth app, and click Create. Give it a name (e.g. Sim)

On the App Credentials page, copy the Account ID, Client ID, and Client secret — these are the three values you'll paste into Sim

Use the Account ID from this App Credentials page — it's an opaque string, not a number. The numeric account number shown in your Zoom web-portal profile is a different value, and pasting it is a documented common mistake that produces "bad request" errors when minting tokens.

In the Information section, fill in the required short description, company name, and developer name and email — the app can't be activated without them

In Scopes, click Add Scopes and add the admin-level granular scopes your workflows need (see the list below)

In Activation, resolve any remaining blockers and activate the app

Tokens cannot be minted until the app is activated — and deactivating it later immediately kills every token it has issued, stopping all workflows that use the credential.

2. Choose scopes

Server-to-Server OAuth apps use Zoom's granular scopes with account-level (:admin) variants. Grant only what your workflows use. The set Sim's Zoom tools can draw on is:

Users:

user:read:user:admin

Meetings:

meeting:read:meeting:admin
meeting:read:list_meetings:admin
meeting:write:meeting:admin
meeting:update:meeting:admin
meeting:delete:meeting:admin
meeting:read:invitation:admin
meeting:read:list_past_participants:admin

Cloud recordings:

cloud_recording:read:list_user_recordings:admin
cloud_recording:read:list_recording_files:admin
cloud_recording:delete:recording_file:admin
cloud_recording:delete:meeting_recording:admin

Deleting a specific recording file uses cloud_recording:delete:recording_file:admin. Omitting recordingId deletes the meeting's recordings and requires cloud_recording:delete:meeting_recording:admin. See Zoom's granular scope reference.

Match these against what the Marketplace Scopes picker actually offers — Zoom's granular-scope catalog shows the :admin variants for account-level apps, but names occasionally differ from the user-level scopes Sim's OAuth flow requests. If a picker entry differs slightly from this list, prefer the picker's name for the matching action.

A missing scope surfaces at run time as a 4xx error from the Zoom API naming a scope problem. Add the scope in the app's Scopes section and re-run the workflow — no changes are needed in Sim.

3. Copy the credentials

The Client secret is bearer material for your entire Zoom account, limited only by the app's scopes. Treat it like a password — do not commit it to source control or share it publicly. Sim encrypts it at rest.

Regenerating the Client secret in the Zoom Marketplace invalidates the stored pair. If you rotate it, update the credential in Sim right away.

Add the Server-to-Server app to Sim

Open Integrations from your workspace sidebar

Search for "Zoom" and open it, then click Add to Sim and choose Add server-to-server app

In the Add Zoom server-to-server app dialog, paste the Client ID, Client secret, and Account ID, and optionally set a display name and description

Click Add server-to-server app. Sim verifies the credentials by minting a real access token from Zoom — if it fails, the error tells you whether Zoom rejected the credentials or couldn't be reached. A rejection usually means bad credentials, an app that isn't a Server-to-Server OAuth app, or an app that hasn't been activated.

Use the credential in workflows

Add a Zoom block to your workflow. In the credential dropdown, select the saved Zoom server-to-server app. Configure the selected operation.

The block calls api.zoom.us using a minted access token. Operations use the same API request paths as the OAuth flow, subject to app scopes and account access.

The me keyword does not work with service accounts. With a personal OAuth connection, user-scoped operations (create meeting, list meetings, list recordings) accept me for the connected user. A Server-to-Server app has no user context — Zoom rejects me with an error like "This API does not support client credentials for authorization." Always pass an explicit user ID or email address in the block's user field when using a service account.

Sim's Zoom tools call the standard api.zoom.us host. Standard commercial Zoom accounts work as-is; Zoom for Government and other regionally partitioned accounts may not be reachable at that host and aren't currently supported with service accounts.

Token behavior

Access tokens minted from the app live for one hour and there is no refresh token — Sim simply mints a new token when one is needed. Zoom explicitly allows multiple concurrently valid tokens, so minting never invalidates workflows already in flight. Account changes can interrupt access:

  • Deactivating the app — all minted tokens die immediately and no new ones can be issued until it's reactivated
  • Regenerating the Client secret — the stored credentials cannot mint new tokens; reconnect the credential in Sim with the new secret

Troubleshooting and rotation

ProblemWhat to check
Token request is rejectedCopy all three values from the app's App Credentials page. Use its opaque Account ID, rather than the numeric account number from your Zoom profile.
Unsupported grant or inactive appConfirm that the credentials belong to a Server-to-Server OAuth app and that it is activated. A regular OAuth app cannot use this grant.
A user-scoped action rejects client credentialsReplace me with the target Zoom user's ID or email address.
Scope errors after a role changeInspect the app's scopes and the creating admin's permissions, restore the required scopes, and retry.

To rotate, regenerate the client secret in App Credentials, then select Reconnect on the saved Zoom credential in Sim and paste the new credentials. Coordinate the change: the old stored secret stops working when it is replaced.

See Zoom's Server-to-Server OAuth guide for activation, role permissions, and token behavior.