Zoom is a video communications platform for meetings, phone, and conference rooms - Serval connects to it to pull meeting reports, attendance, and Q&A data, and to manage meeting and phone delegates through workflows.
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.
Detailed attendance report for a Zoom meeting - meeting details, participant count, duration, and each participant’s join/leave times and email. Shipped workflow; no approval required.
Get Q&A of a Meeting
Fetches the question-and-answer data from a past meeting: every question asked by attendees and the corresponding answers. Shipped workflow; no approval required.
List Meeting Participants
The participant list from a past meeting, including names, emails, join times, and leave times. Shipped workflow; no approval required.
List Zoom Meetings
Historical meetings for a user within a date range - topics, times, durations, and IDs. Shipped workflow; no approval required.
Update Zoom Meeting and Phone Delegate for User
Adds or removes a person as both a Zoom Meetings scheduling assistant and a Zoom Phone call delegate for a target user. Requires the user write admin, phone read admin, and phone write shared setting admin scopes on your Zoom app. Shipped workflow; installer approval by default.
Typed Zoom API access
Custom workflows can call nearly 200 Zoom endpoints through three product submodules - zoom.users (users, groups, contact groups, assistants, settings, status), zoom.meeting (meetings, webinars, registrants, polls, recordings, past meetings, and reports), and zoom.rooms (rooms, devices, locations, tags, calendar services, workspaces).
Anything in the integration’s typed users, meetings, and rooms surface of the Zoom API can be accessed through Serval.
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.
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.
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.
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.
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.
Re-enter all credentials when editing the connection
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.
Lists are paginated - read every page
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.
No root zoom.apiRequest - use the product submodules
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.
API paths already include the v2 base - don't add it again
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.
Client Secret looks like bullets after saving
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.