> For the complete documentation index, see [llms.txt](https://docs.stackai.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.stackai.com/integrations/catalog/zoom.md).

# Zoom

Zoom is a video conferencing platform. Access meeting transcripts, recordings, and more.

## Connectors

Choose the connector that matches your authentication method. The options below use the names shown in StackAI.

| Connector               | Authentication |
| ----------------------- | -------------- |
| Zoom (Server-to-Server) | Credentials    |

### Zoom (Server-to-Server)

Connect to Zoom using Server-to-Server OAuth for accessing meeting recordings and transcripts. Requires a Server-to-Server OAuth app from Zoom Marketplace with scopes: cloud\_recording:read:list\_user\_recordings:admin, cloud\_recording:read:meeting\_transcript:admin, user:read:list\_users:admin.

#### Set up in Zoom

1. Sign in to the Zoom App Marketplace at <https://marketplace.zoom.us> as an account admin.
2. Click Develop → Build App, choose Server-to-Server OAuth, and create the app.
3. Add the required scopes: cloud\_recording:read:list\_user\_recordings:admin, cloud\_recording:read:meeting\_transcript:admin, and user:read:list\_users:admin, then activate the app.
4. Open the App Credentials section and copy the Account ID, Client ID, and Client Secret.

#### Set up in StackAI

1. Open **Settings → Connections**, add a connection, and select **Zoom (Server-to-Server)**.
2. Enter the credentials and connection details in the fields below.
3. Save the connection and check its connection status. Select this saved connection when configuring an action or feature that uses it.

**Connection fields**

| StackAI field        | Required                 | What to enter                                                                                                                                                                                                                                                                                   |
| -------------------- | ------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Account ID           | Yes                      | Create a Server-to-Server OAuth app in Zoom Marketplace and enable scopes: cloud\_recording:read:list\_user\_recordings, cloud\_recording:read:meeting\_transcript, user:read:user:admin. Copy the Account ID from your app credentials. [Provider instructions](https://marketplace.zoom.us/). |
| Client ID            | Yes                      | The Client ID from your Zoom Server-to-Server OAuth app credentials.                                                                                                                                                                                                                            |
| Client Secret        | Yes                      | The Client Secret from your Zoom Server-to-Server OAuth app credentials.                                                                                                                                                                                                                        |
| Webhook Secret Token | Optional / as applicable | The Secret Token from your Zoom app's Feature > Event Subscriptions. Used to answer Zoom's endpoint validation handshake and to verify the signature of incoming webhook events. Leave blank if you are not using Zoom triggers.                                                                |

**Provider documentation:** [Setup reference](https://developers.zoom.us/docs/internal-apps/create/).

### Verify the connection

Check that the connection is healthy. Then run a read operation against a resource the connected account can access. A successful connection check confirms authentication; it does not guarantee permission for every action.

If access is denied, check the credential or OAuth permissions, the selected account or environment, and access to the specific resource. Update expired credentials or reconnect after permissions change.

## Use an action

1. Add the required **Zoom** action to the workflow.
2. Select a connection when the action requests one.
3. Complete the required fields. Use the reference picker when a value comes from another workflow step.
4. Run the workflow and inspect the action’s output. Check the result before using it in a later step.

## Actions

### Get Meeting Transcript

Get a meeting's transcript information and content from Zoom.

**Required permissions:** `cloud_recording:read:meeting_transcript:admin`.

#### Inputs

| Field        | Type   | Required | Description                                                            |
| ------------ | ------ | -------- | ---------------------------------------------------------------------- |
| Meeting UUID | string | Yes      | The meeting UUID to get the transcript for (from search\_transcripts). |

#### Outputs

| Field              | Type   | Description                            |
| ------------------ | ------ | -------------------------------------- |
| Transcript Content | string | The full transcript text content.      |
| Host ID            | string | The Zoom user ID of the meeting host.  |
| Host Email         | string | The email address of the meeting host. |
| Host Name          | string | The display name of the meeting host.  |

### Search Transcripts

Get multiple meeting transcripts from Zoom with date/time and topic filters. Supports single user or company-wide (all users) mode.

**Required permissions:** `cloud_recording:read:list_user_recordings:admin`, `cloud_recording:read:meeting_transcript:admin`, `user:read:list_users:admin`.

#### Inputs

| Field                    | Type    | Required | Description                                                                                                                                  |
| ------------------------ | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| All Users (Company-wide) | boolean | No       | If enabled, fetches recordings from ALL users in the organization. Requires admin scopes. When enabled, host\_id is ignored. Default: false. |
| Host ID                  | string  | No       | The Zoom host ID to get recordings for. Use 'me' for the authenticated user. Ignored if 'All Users' is enabled. Default: me.                 |
| From Date/Time           | string  | No       | Start date/time filter. Use YYYY-MM-DD for date only, or YYYY-MM-DDTHH:MM:SS for precise time filtering. Defaults to 7 days ago.             |
| To Date/Time             | string  | No       | End date/time filter. Use YYYY-MM-DD for date only, or YYYY-MM-DDTHH:MM:SS for precise time filtering. Defaults to today.                    |
| Topic Contains           | string  | No       | Filter meetings by topic containing this text (case-insensitive).                                                                            |
| Download Content         | boolean | No       | Whether to download the actual transcript text content. Default: true.                                                                       |

#### Outputs

| Field                  | Type          | Description                                            |
| ---------------------- | ------------- | ------------------------------------------------------ |
| Transcripts            | object\_array | List of meeting transcripts with metadata and content. |
| Transcripts Downloaded | integer       | Number of transcripts successfully downloaded.         |

## Triggers

A trigger starts a workflow when its configured event occurs. Configure the event and filters before enabling the trigger.

### On Transcript Ready

Trigger a workflow when a Zoom meeting's audio transcript finishes processing.

1. In your Zoom Server-to-Server OAuth app, open the Feature tab and turn on Event Subscriptions. 2. Add an event subscription and select the 'Recording > Transcript files have completed' event (recording.transcript\_completed). 3. Set the Event notification endpoint URL to: {{webhook\_url}} 4. Copy your app's Secret Token and paste it into this connection's 'Webhook Secret Token' field. 5. Click Validate in Zoom to complete the endpoint handshake, then Save.

**Required permissions:** `cloud_recording:read:meeting_transcript:admin`.

#### Event inputs

| Field              | Type    | Required | Description                                      |
| ------------------ | ------- | -------- | ------------------------------------------------ |
| Transcript Text    | string  | Yes      | The meeting transcript as cleaned plain text.    |
| Transcript VTT     | string  | Yes      | The raw WebVTT transcript, including timestamps. |
| Meeting Topic      | string  | Yes      | The topic of the meeting.                        |
| Meeting ID         | string  | Yes      | The numeric Zoom meeting ID.                     |
| Host Email         | string  | Yes      | The email address of the meeting host.           |
| Start Time         | string  | Yes      | The meeting start time (ISO 8601).               |
| Duration (minutes) | integer | Yes      | The meeting duration in minutes.                 |
| Event              | string  | Yes      | The Zoom event name that fired the trigger.      |

#### Outputs

| Field              | Type    | Description                                      |
| ------------------ | ------- | ------------------------------------------------ |
| Transcript Text    | string  | The meeting transcript as cleaned plain text.    |
| Transcript VTT     | string  | The raw WebVTT transcript, including timestamps. |
| Meeting Topic      | string  | The topic of the meeting.                        |
| Meeting ID         | string  | The numeric Zoom meeting ID.                     |
| Host Email         | string  | The email address of the meeting host.           |
| Start Time         | string  | The meeting start time (ISO 8601).               |
| Duration (minutes) | integer | The meeting duration in minutes.                 |
| Event              | string  | The Zoom event name that fired the trigger.      |

## Important behavior

Actions that create, update, send, or delete data can change the connected service. Review their inputs before running them. A retry can repeat an operation; consider this when configuring retries for actions that change data.

The catalog lists the fields and capabilities available in the supplied provider definition. Availability can also depend on your deployment and organization’s Feature Access settings.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.stackai.com/integrations/catalog/zoom.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
