Zoom
Connect & Ingest data from Zoom
Zoom is a video communications platform for meetings, webinars, and team chat. The Sling Zoom connector extracts data from the Zoom REST API v2 using Server-to-Server OAuth, supporting users, meetings, webinars, reports, and channels.
CLI Pro Required: APIs require a CLI Pro token or Platform Plan.
Setup
The following credentials are accepted:
Secrets:
account_id(required) -> Your Zoom Account IDclient_id(required) -> Your Server-to-Server OAuth App Client IDclient_secret(required) -> Your Server-to-Server OAuth App Client Secret
Inputs:
anchor_date(optional) -> Starting date for the first sync of incremental endpoints (ISO 8601 format, e.g.,2024-01-01T00:00:00Z). Defaults to 1 year ago.
Creating a Server-to-Server OAuth App
Go to the Zoom App Marketplace
Click Develop β Build App
Select Server-to-Server OAuth and click Create
Name your app (e.g., "Sling Data Extractor")
Note the Account ID, Client ID, and Client Secret from the App Credentials tab
Fill in the required Information fields (Company Name, Developer Contact)
Under Scopes, add the following:
user:read:list_users:adminβ View all usersmeeting:read:list_meetings:adminβ View all meetingsmeeting:read:list_registrants:adminβ View meeting registrantsmeeting:read:list_polls:adminβ View meeting pollswebinar:read:list_webinars:adminβ View all webinarswebinar:read:list_registrants:adminβ View webinar registrantswebinar:read:list_panelists:adminβ View webinar panelistswebinar:read:list_polls:adminβ View webinar pollswebinar:read:list_absentees:adminβ View webinar absenteesreport:read:list_meeting_participants:adminβ View meeting participant reportsteam_chat:read:list_channels:adminβ View Team Chat channels
Click Activate to activate the app
Plan Limitations: Some endpoints require specific Zoom plans. Meeting registrants and polls require a Pro plan or higher. Webinar endpoints require the Webinar add-on. Report endpoints require a Pro, Business, or Education plan.
Using sling conns
sling connsHere are examples of setting a connection named ZOOM. We must provide the type=api property:
Environment Variable
See here to learn more about the .env.sling file.
Sling Env File YAML
See here to learn more about the sling env.yaml file.
Replication
Here's an example replication configuration to sync Zoom data to a PostgreSQL database:
Incremental sync for meeting reports:
Endpoints
users
All active users in the account
No
β
meetings
Scheduled meetings for each user
No
users
meeting_registrants
Registrants for each meeting
No
meetings
meeting_polls
Polls for each meeting
No
meetings
webinars
Webinars for each user
No
users
webinar_registrants
Registrants for each webinar
No
webinars
webinar_panelists
Panelists for each webinar
No
webinars
webinar_polls
Polls for each webinar
No
webinars
webinar_absentees
Absentees for past webinars
No
webinars
webinar_tracking_sources
Tracking sources for each webinar
No
webinars
report_meetings
Meeting reports for completed meetings
Yes
users
report_meeting_participants
Participants for completed meetings
No
meetings
channels
Team Chat channels
No
β
The connector uses a queue-based architecture to handle parent-child relationships. The users endpoint populates user IDs used by meetings, webinars, and report_meetings. The meetings endpoint populates meeting IDs used by meeting_registrants, meeting_polls, and report_meeting_participants. The webinars endpoint populates webinar IDs used by webinar_registrants, webinar_panelists, webinar_polls, webinar_absentees, and webinar_tracking_sources.
To discover available endpoints:
Endpoint Details
users β Returns all active users in the Zoom account, including profile information, email, timezone, and login details. User IDs are queued for child endpoints.
meetings β Returns scheduled meetings for each user. Meeting IDs are queued for registrant, poll, and report endpoints. Each meeting includes topic, start time, duration, and join URL.
meeting_registrants β Returns registrants for each meeting. Requires meeting registration to be enabled (Pro plan or higher).
meeting_polls β Returns polls configured for each meeting. Requires the Polls feature (Pro plan or higher).
webinars β Returns webinars for each user. Requires the Webinar add-on. Webinar IDs are queued for child endpoints.
webinar_registrants β Returns registrants for each webinar. Includes registration details like name, email, and custom questions.
webinar_panelists β Returns panelists assigned to each webinar.
webinar_polls β Returns polls configured for each webinar.
webinar_absentees β Returns registered attendees who did not attend past webinars.
webinar_tracking_sources β Returns tracking sources configured for each webinar, useful for marketing attribution.
report_meetings β Returns meeting reports for completed meetings. Supports incremental sync using the meeting end time. Note: the Zoom Reports API limits date ranges to a maximum of 1 month per request. Requires a Pro, Business, or Education plan.
report_meeting_participants β Returns participant details for completed meetings, including join/leave times and duration.
channels β Returns Team Chat channels accessible to the authenticated user.
Incremental Sync
The report_meetings endpoint supports incremental sync using the end_time field:
First run: Fetches reports from the last 30 days (Zoom Reports API limits date ranges to 1 month)
Subsequent runs: Only fetches reports since the last sync timestamp
You can customize the starting date with the anchor_date input:
All other endpoints run in full-refresh mode since they represent current state.
Rate Limiting
The Zoom API enforces rate limits:
General: 10 requests per second per account
Reports: Lower rate limits apply
The connector automatically:
Limits to 3 requests per second with concurrency of 3
Retries with exponential backoff on 429 (rate limit) responses
Allows up to 5 retry attempts
Gracefully skips endpoints that return 400/404 errors (e.g., features not available on your plan)
If you are facing issues connecting, please reach out to us at [email protected], on discord or open a Github Issue here.
Last updated
Was this helpful?