Skip to main content

About Zoom

Zoom is a video communications platform covering meetings, phone, and conference rooms. Serval connects to your Zoom account through a Server-to-Server OAuth app that you create in the Zoom App Marketplace, then calls the Zoom REST API on your account’s behalf. The integration spans three Zoom product areas - users, meetings, and rooms - so workflows can read meeting history and reports, manage user settings, and work with Zoom Rooms. Authentication: Server-to-Server OAuth (OAuth 2.0 client credentials). You provide the Account ID, Client ID, and Client Secret from a Server-to-Server OAuth app in the Zoom App Marketplace - no browser sign-in is involved. Data sync: On-demand only. Serval runs no background sync, polling, or webhook ingestion for Zoom - data is read or written at the moment a workflow runs.

What the Zoom integration enables

Anything in the integration’s typed users, meetings, and rooms surface of the Zoom API can be accessed through Serval.

Get your credentials

Serval authenticates with a Server-to-Server OAuth app that lives in your Zoom account. You create the app once, enable the scopes your workflows need, and copy three values from its App Credentials page. Zoom’s official guide: Create a Server-to-Server OAuth app.
1

Open the Zoom App Marketplace

Log in to your Zoom account and navigate to the Zoom App Marketplace.
2

Start a new app

Click Develop, then Build App.
3

Create a Server to Server OAuth app

Choose the Server to Server OAuth app type and give it a name.
4

Select scopes

Continue through the setup process, selecting scopes for any APIs you want to access via Serval. Report-based workflows need report scopes; the delegate workflow needs the user write admin, phone read admin, and phone write shared setting admin scopes.
5

Activate the app

Activate the app so it can issue tokens.
6

Copy your credentials

Open the app’s App Credentials page and copy the Account ID, Client ID, and Client Secret.
Scopes are chosen entirely on the Zoom side. Serval never requests or narrows scopes during connection - the connection carries exactly the scopes enabled on your Zoom app, and scope changes made in Zoom take effect the next time Serval mints a token.To modify scopes after creating the app, return to the Zoom App Marketplace, click your app, open the Scopes tab, and click Add Scopes.

Connect in Serval

The Zoom connect form has four fields. None of them display inline validation messages, but all four are needed for a working connection - Serval sends the Account ID with every token request and uses the Client ID and Client Secret to mint access tokens.
1

Account ID

Paste the Account ID from your app’s App Credentials page. Serval stores it with the connection and sends it on every token request, so tokens are always scoped to this account.
2

Account Name

Enter an Account Name - a friendly label Serval displays for this connection.
3

Client ID

Paste the Client ID from the App Credentials page.
4

Client Secret

Paste the Client Secret from the App Credentials page. After saving, Serval displays it obfuscated - bullet dots with only the last 4 characters visible.
When editing an existing Zoom connection, re-enter the complete set of values - Account ID, Account Name, Client ID, and Client Secret - before saving. Do not clear pre-filled fields or leave any field blank, even when you are only rotating the Client Secret, so the connection is always saved with a full, valid credential set.

Verifying the connection

Zoom does not surface named health checks in Serval - there is no built-in connection test with success or failure messages. The most direct way to confirm the connection works end-to-end is to run one of the shipped read-only workflows (for example, List Zoom Meetings for a known user) and check that it returns results.
A connection that mints tokens successfully can still fail individual workflows with permission errors. That almost always means a scope is missing on the Server-to-Server OAuth app in Zoom - add the scope there (not in Serval) and re-run; the next token picks it up automatically.

Gotchas and troubleshooting

Serval does not request OAuth scopes during connection - the token carries exactly the scopes enabled on your Server-to-Server OAuth app in the Zoom App Marketplace. If a workflow fails with a scope or permission error, add the missing scope to the app in Zoom; reconfiguring the connection in Serval will not help. The delegate workflow specifically needs the user write admin, phone read admin, and phone write shared setting admin scopes.
When you edit the Zoom connection settings, do not clear or blank out any pre-filled fields. If you are rotating the Client Secret (or changing any value), re-enter the full credential set - Account ID, Account Name, Client ID, and Client Secret - before saving, so the connection is updated with a complete, valid set of values.
Zoom list endpoints return one page at a time along with a “next_page_token” value. A custom workflow that reads only the first response silently truncates results. Loop until the token comes back empty or absent, typically with a page size of 300. The shipped list and attendance-report workflows already paginate this way.
Zoom is a multi-product integration. Every API call must go through one of the three submodules - zoom.users.apiRequest, zoom.meeting.apiRequest, or zoom.rooms.apiRequest - there is no top-level zoom.apiRequest. Meeting reports (past meetings, participants, attendance, Q&A) live under zoom.meeting.
All three submodules send requests to Zoom’s v2 API base, and the integration’s typed paths are written without the v2 prefix. Do not add the prefix yourself when building custom workflow requests - it would be applied twice.
On the settings page, the saved Client Secret is displayed with all but the last 4 characters replaced by bullet dots. This is normal obfuscation, not corruption. To change the secret, paste the actual new value.

Need help? Contact support@serval.com for assistance with your Zoom integration.