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.

circle-check

Setup

The following credentials are accepted:

Secrets:

  • account_id (required) -> Your Zoom Account ID

  • client_id (required) -> Your Server-to-Server OAuth App Client ID

  • client_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

  1. Click Develop β†’ Build App

  2. Select Server-to-Server OAuth and click Create

  3. Name your app (e.g., "Sling Data Extractor")

  4. Note the Account ID, Client ID, and Client Secret from the App Credentials tab

  5. Fill in the required Information fields (Company Name, Developer Contact)

  6. Under Scopes, add the following:

    • user:read:list_users:admin β€” View all users

    • meeting:read:list_meetings:admin β€” View all meetings

    • meeting:read:list_registrants:admin β€” View meeting registrants

    • meeting:read:list_polls:admin β€” View meeting polls

    • webinar:read:list_webinars:admin β€” View all webinars

    • webinar:read:list_registrants:admin β€” View webinar registrants

    • webinar:read:list_panelists:admin β€” View webinar panelists

    • webinar:read:list_polls:admin β€” View webinar polls

    • webinar:read:list_absentees:admin β€” View webinar absentees

    • report:read:list_meeting_participants:admin β€” View meeting participant reports

    • team_chat:read:list_channels:admin β€” View Team Chat channels

  7. Click Activate to activate the app

circle-exclamation

Using sling conns

Here 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

Endpoint
Description
Incremental
Depends On

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]envelope, on discordarrow-up-right or open a Github Issue herearrow-up-right.

Last updated

Was this helpful?