> ## Documentation Index
> Fetch the complete documentation index at: https://docs.onyx.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Zoom

> Index the transcripts of Zoom cloud recordings

The Zoom connector indexes the transcript of each cloud-recorded meeting and webinar.
Point it at meeting or webinar IDs, host emails, or a Zoom Group. With **Sync with Zoom**,
each transcript is visible only to the people who can watch the recording in Zoom.

## Before you begin

You need:

* An Onyx administrator account.
* A Zoom account on a **Pro** plan or higher, and a Zoom user who can build apps on the App Marketplace:
  the account owner, or an admin with the **Server-to-Server OAuth app** permission.
* **Audio transcript** turned on in Zoom's cloud recording settings.
  Zoom only creates a transcript for recordings made after you turn it on.
* The **Webinar** add-on, if you index webinars.
* For [permission sync](#permission-sync), the Onyx Enterprise Edition.

## Create a Zoom app

<Steps>
  <Step title="Build a Server-to-Server OAuth app">
    Sign in at [marketplace.zoom.us](https://marketplace.zoom.us) and open **Develop → Build App**.
    Choose **Server to Server OAuth App** and give it a name, such as "Onyx".

    <img className="rounded-image" src="https://mintcdn.com/danswer/0s3pOtsOG7E8HUpF/assets/admins/connectors/zoom/build_app.png?fit=max&auto=format&n=0s3pOtsOG7E8HUpF&q=85&s=f391ff99a11c7c5b60634f749cd395bf" alt="Zoom's app type chooser, with Server to Server OAuth App as one of the choices" width="1120" height="1078" data-path="assets/admins/connectors/zoom/build_app.png" />
  </Step>

  <Step title="Copy the credentials">
    On **App Credentials**, copy the **Account ID**, **Client ID**, and **Client Secret**. Onyx needs all three.

    <img className="rounded-image" src="https://mintcdn.com/danswer/0s3pOtsOG7E8HUpF/assets/admins/connectors/zoom/app_credentials.png?fit=max&auto=format&n=0s3pOtsOG7E8HUpF&q=85&s=b33223429a71631bd30872a082815540" alt="The App Credentials page, with the Account ID, Client ID, and Client Secret" width="1120" height="1078" data-path="assets/admins/connectors/zoom/app_credentials.png" />
  </Step>

  <Step title="Fill in the Information tab">
    Enter a short description, your company name, and a developer contact. Zoom does not activate an app without them.
  </Step>

  <Step title="Add the scopes">
    On **Scopes**, select **Add Scopes**. Search for each scope below, tick it, and select **Done**.

    <img className="rounded-image" src="https://mintcdn.com/danswer/0s3pOtsOG7E8HUpF/assets/admins/connectors/zoom/add_scopes.png?fit=max&auto=format&n=0s3pOtsOG7E8HUpF&q=85&s=f93fc109b8fe479a290e1c5fd6b9147f" alt="The Add Scopes dialog, filtered to the cloud_recording:read scopes" width="1120" height="1078" data-path="assets/admins/connectors/zoom/add_scopes.png" />

    Add these scopes:

    * `cloud_recording:read:list_user_recordings:admin`
    * `cloud_recording:read:list_recording_files:admin`
    * `user:read:list_users:admin`
    * `group:read:list_members:admin`
    * `meeting:read:meeting:admin`
    * `meeting:read:past_meeting:admin`
    * `meeting:read:list_past_instances:admin`
    * `webinar:read:webinar:admin`
    * `webinar:read:list_past_instances:admin`

    For **Sync with Zoom**, also add:

    * `cloud_recording:read:recording_settings:admin`
    * `cloud_recording:read:list_recording_registrants:admin`
    * `user:read:user:admin`
    * `user:read:settings:admin`

    All of them are read-only. Onyx never changes anything in Zoom.
  </Step>

  <Step title="Activate the app">
    On **Activation**, select **Activate your app**.

    <img className="rounded-image" src="https://mintcdn.com/danswer/0s3pOtsOG7E8HUpF/assets/admins/connectors/zoom/activation.png?fit=max&auto=format&n=0s3pOtsOG7E8HUpF&q=85&s=ad5660bcf422783f4f7260aab37fc0ac" alt="The Activation tab, showing the app is activated on the account" width="1120" height="1078" data-path="assets/admins/connectors/zoom/activation.png" />
  </Step>
</Steps>

## Configure the connector in Onyx

<Steps>
  <Step title="Open the Zoom connector">
    Go to **Admin Panel → Add Connector** and select **Zoom** under **Meetings**.
  </Step>

  <Step title="Pick the Zoom plan">
    Under **Zoom Plan**, choose `pro` on a Pro account, or `business_plus` on Business, Education, Enterprise,
    or Partner. This sets how fast Onyx may call Zoom.
  </Step>

  <Step title="Add the credential">
    Under **Authentication Account**, select **New Zoom Account**. Enter the **Zoom Account ID**, **Zoom Client ID**,
    and **Zoom Client Secret** from your Zoom app, then select **Create**.

    <img className="rounded-image" src="https://mintcdn.com/danswer/0s3pOtsOG7E8HUpF/assets/admins/connectors/zoom/onyx_credential.png?fit=max&auto=format&n=0s3pOtsOG7E8HUpF&q=85&s=517dad773e452845deadba58467f8994" alt="The Zoom setup page in Onyx, with the Zoom Plan field and the New Zoom Account form" width="1148" height="1000" data-path="assets/admins/connectors/zoom/onyx_credential.png" />
  </Step>

  <Step title="Test the connection">
    Select **Start Checks**. Onyx checks the credential and the scopes against Zoom and reports anything Zoom refuses.
  </Step>

  <Step title="Choose what to index">
    Under **Connector Content**, fill in any of these:

    * **Meeting IDs** and **Webinar IDs**: the numbers from the session's invitation, one per entry.
    * **Host Emails**: every recording these people host.
    * **Zoom Group ID**: every recording the group's members host.
      Find the ID in **User Management → Groups** in the Zoom web portal.

    Turn off **Include meetings** or **Include webinars** to leave one session type out.

    <img className="rounded-image" src="https://mintcdn.com/danswer/0s3pOtsOG7E8HUpF/assets/admins/connectors/zoom/onyx_content.png?fit=max&auto=format&n=0s3pOtsOG7E8HUpF&q=85&s=be1814fd86363572cd922156080819fe" alt="The Connector Content section of the Zoom setup page" width="1148" height="1000" data-path="assets/admins/connectors/zoom/onyx_content.png" />
  </Step>

  <Step title="Choose who can see the transcripts">
    Under **Connector Settings**, name the connector and set **Document Access**:

    * **Everyone in Your Organization**: every Onyx user can see every transcript.
    * **Specific Groups**: only the Onyx groups you name.
    * **Sync with Zoom**: each transcript is visible to the people who can watch the recording in Zoom.
      See [Permission sync](#permission-sync).

    <img className="rounded-image" src="https://mintcdn.com/danswer/0s3pOtsOG7E8HUpF/assets/admins/connectors/zoom/onyx_access.png?fit=max&auto=format&n=0s3pOtsOG7E8HUpF&q=85&s=940027c2eba847a5e126bf7596aec8fe" alt="The Document Access options on the Zoom setup page" width="1148" height="1000" data-path="assets/admins/connectors/zoom/onyx_access.png" />
  </Step>

  <Step title="Set a start date and create">
    Under **Schedule**, set **Index Documents After**. Without a date, the first run reads your whole recording history,
    which can take a long time. Then select **Create Connector**.
  </Step>
</Steps>

## Permission sync

With **Sync with Zoom**,
Onyx reads each recording's **Link access** setting in Zoom and grants the transcript to the same people.
The recording's owner can always see it.

<img className="rounded-image" src="https://mintcdn.com/danswer/0s3pOtsOG7E8HUpF/assets/admins/connectors/zoom/link_access.png?fit=max&auto=format&n=0s3pOtsOG7E8HUpF&q=85&s=1af781a39210dd072da69fb79d91aa26" alt="The Share dialog of a Zoom cloud recording, with its Link access setting" width="1028" height="754" data-path="assets/admins/connectors/zoom/link_access.png" />

| Link access in Zoom | Who can see the transcript in Onyx |
| - | - |
| Private to me | The owner |
| Only people with access | The owner. Zoom's API does not share that list |
| Signed-in users in my account | Everyone |
| Signed-in users from specific domains | Users with an email address in those domains |
| Anyone with the link | Everyone |

People who registered to watch a recording can see its transcript in every case.
Onyx rereads the settings every 6 hours.

<Note>
  To limit every transcript to its owner instead of **Everyone**,
  turn off **Treat link access as public** in the connector settings.
</Note>

## Troubleshooting

<AccordionGroup>
  <Accordion title="Onyx cannot connect to Zoom">
    The error says Zoom refused to issue a token. Either the app is not activated,
    or one of the three credentials is wrong. Activate the app on its **Activation** tab, then copy the Account ID,
    Client ID, and Client Secret again.
  </Accordion>

  <Accordion title="The connection check reports a missing scope">
    The error names the scope Zoom denied. Add that scope on the app's **Scopes** tab, then run the check again.
  </Accordion>

  <Accordion title="Webinars are not indexed">
    The host has no Webinar add-on, so Zoom refuses every webinar request. Assign the add-on in Zoom,
    or turn off **Include webinars**.
  </Accordion>

  <Accordion title="A host email is reported as an indexing error">
    Onyx found no active Zoom user with that email. Check the spelling, and check that the user is still active in Zoom.
    A deactivated or deleted user does not match.
  </Accordion>

  <Accordion title="A recording is in Zoom but not in Onyx">
    The recording has no audio transcript, or Zoom is still processing it.
    Turn **Audio transcript** on in Zoom's recording settings; only recordings made after that get a transcript.
  </Accordion>

  <Accordion title="A colleague cannot see a transcript that is shared with them in Zoom">
    The recording uses **Only people with access**. Zoom's API does not share that list, so Onyx grants the owner only.
    Share the recording with your account or a domain instead,
    or set the connector's **Document Access** to **Everyone in Your Organization**.
  </Accordion>
</AccordionGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.