# Zoom (/integrations/zoom)





{/* MANUAL-CONTENT-START:intro */}

Use [Zoom](https://zoom.us/) to manage meetings, retrieve invitations and recordings, and list past participants. Meeting and recording webhooks can start workflows.

Connect a Zoom account from the block or **Integrations** in your workspace sidebar. For account-level authentication, follow the [Server-to-Server OAuth setup](/integrations/zoom-service-account). Manage or disconnect the saved credential from **Integrations**.

{/* MANUAL-CONTENT-END */}

Connection guides: [Server-to-server OAuth apps](/integrations/zoom-service-account).

## OAuth scopes [#oauth-scopes]

Sim requests these scopes when someone connects a Zoom account. For a self-hosted deployment, register your own app with the provider using the settings below. See [Integrations and OAuth](/platform/self-hosting/integrations-oauth) for setup.

| Setting | Value |
| - | - |
| Redirect URI | `<NEXT_PUBLIC_APP_URL>/api/auth/oauth2/callback/zoom` |
| Environment variables | `ZOOM_CLIENT_ID`, `ZOOM_CLIENT_SECRET` |

| Scope | Description |
| - | - |
| `user:read:user` | View Zoom profile information |
| `meeting:write:meeting` | Create Zoom meetings |
| `meeting:read:meeting` | View Zoom meeting details |
| `meeting:read:list_meetings` | List Zoom meetings |
| `meeting:update:meeting` | Update Zoom meetings |
| `meeting:delete:meeting` | Delete Zoom meetings |
| `meeting:read:invitation` | View Zoom meeting invitations |
| `meeting:read:list_past_participants` | View past meeting participants |
| `cloud_recording:read:list_user_recordings` | List Zoom cloud recordings |
| `cloud_recording:read:list_recording_files` | View recording files |
| `cloud_recording:delete:recording_file` | Delete individual cloud recording files |

## Use the block [#usage-instructions]

Create, read, update, or delete meetings; retrieve invitations, cloud recordings, and past participants; or delete recordings. Meeting and recording webhooks can start workflows.

## Actions [#actions]

### Zoom Create Meeting [#zoom-create-meeting]

Create a new Zoom meeting

<ReferenceDetails>
  #### Input [#input]

  | Parameter | Type | Required | Description |
  | - | - | - | - |
  | `userId` | string | Yes | The user ID or email address (e.g., "me", "[user@example.com](mailto:user@example.com)", or "AbcDefGHi"). Use "me" for the authenticated user with OAuth credentials. With a Zoom server-to-server service account, "me" is not supported — provide the target user ID or email address. |
  | `topic` | string | Yes | Meeting topic (e.g., "Weekly Team Standup" or "Project Review") |
  | `type` | number | No | Meeting type: 1=instant, 2=scheduled, 3=recurring no fixed time, 8=recurring fixed time |
  | `startTime` | string | No | Meeting start time in ISO 8601 format (e.g., 2025-06-03T10:00:00Z) |
  | `duration` | number | No | Meeting duration in minutes (e.g., 30, 60, 90) |
  | `timezone` | string | No | Timezone for the meeting (e.g., America/Los\_Angeles) |
  | `password` | string | No | Meeting password |
  | `agenda` | string | No | Meeting agenda or description text |
  | `hostVideo` | boolean | No | Start with host video on |
  | `participantVideo` | boolean | No | Start with participant video on |
  | `joinBeforeHost` | boolean | No | Allow participants to join before host |
  | `muteUponEntry` | boolean | No | Mute participants upon entry |
  | `waitingRoom` | boolean | No | Enable waiting room |
  | `autoRecording` | string | No | Auto recording setting: local, cloud, or none |

  #### Output [#output]

  | Parameter | Type | Description |
  | - | - | - |
  | `meeting` | object | The created meeting with all its properties |
  | ↳ `id` | number | Meeting ID |
  | ↳ `uuid` | string | Meeting UUID |
  | ↳ `host_id` | string | Host user ID |
  | ↳ `host_email` | string | Host email address |
  | ↳ `topic` | string | Meeting topic |
  | ↳ `type` | number | Meeting type: 1=instant, 2=scheduled, 3=recurring no fixed time, 8=recurring fixed time |
  | ↳ `status` | string | Meeting status (e.g., waiting, started) |
  | ↳ `start_time` | string | Start time in ISO 8601 format |
  | ↳ `duration` | number | Duration in minutes |
  | ↳ `timezone` | string | Timezone (e.g., America/Los\_Angeles) |
  | ↳ `agenda` | string | Meeting agenda |
  | ↳ `created_at` | string | Creation timestamp in ISO 8601 format |
  | ↳ `start_url` | string | URL for host to start the meeting |
  | ↳ `join_url` | string | URL for participants to join the meeting |
  | ↳ `password` | string | Meeting password |
  | ↳ `h323_password` | string | H.323/SIP room system password |
  | ↳ `pstn_password` | string | PSTN password for phone dial-in |
  | ↳ `encrypted_password` | string | Encrypted password for joining |
  | ↳ `settings` | object | Meeting settings |
  | ↳ `host_video` | boolean | Start with host video on |
  | ↳ `participant_video` | boolean | Start with participant video on |
  | ↳ `join_before_host` | boolean | Allow participants to join before host |
  | ↳ `mute_upon_entry` | boolean | Mute participants upon entry |
  | ↳ `watermark` | boolean | Add watermark when viewing shared screen |
  | ↳ `audio` | string | Audio options: both, telephony, or voip |
  | ↳ `auto_recording` | string | Auto recording: local, cloud, or none |
  | ↳ `waiting_room` | boolean | Enable waiting room |
  | ↳ `meeting_authentication` | boolean | Require meeting authentication |
  | ↳ `approval_type` | number | Approval type: 0=auto, 1=manual, 2=none |
  | ↳ `recurrence` | object | Recurrence settings for recurring meetings |
  | ↳ `type` | number | Recurrence type: 1=daily, 2=weekly, 3=monthly |
  | ↳ `repeat_interval` | number | Interval between recurring meetings |
  | ↳ `weekly_days` | string | Days of week for weekly recurrence (1-7, comma-separated) |
  | ↳ `monthly_day` | number | Day of month for monthly recurrence |
  | ↳ `monthly_week` | number | Week of month for monthly recurrence |
  | ↳ `monthly_week_day` | number | Day of week for monthly recurrence |
  | ↳ `end_times` | number | Number of occurrences |
  | ↳ `end_date_time` | string | End date time in ISO 8601 format |
  | ↳ `occurrences` | array | Meeting occurrences for recurring meetings |
  | ↳ `occurrence_id` | string | Occurrence ID |
  | ↳ `start_time` | string | Start time in ISO 8601 format |
  | ↳ `duration` | number | Duration in minutes |
  | ↳ `status` | string | Occurrence status |
</ReferenceDetails>

### Zoom List Meetings [#zoom-list-meetings]

List all meetings for a Zoom user

<ReferenceDetails>
  #### Input [#input-1]

  | Parameter | Type | Required | Description |
  | - | - | - | - |
  | `userId` | string | Yes | The user ID or email address (e.g., "me", "[user@example.com](mailto:user@example.com)", or "AbcDefGHi"). Use "me" for the authenticated user with OAuth credentials. With a Zoom server-to-server service account, "me" is not supported — provide the target user ID or email address. |
  | `type` | string | No | Meeting type filter: scheduled, live, upcoming, upcoming\_meetings, or previous\_meetings |
  | `pageSize` | number | No | Number of records per page, 1-300 (e.g., 30, 50, 100) |
  | `nextPageToken` | string | No | Token for pagination to get next page of results |

  #### Output [#output-1]

  | Parameter | Type | Description |
  | - | - | - |
  | `meetings` | array | List of meetings |
  | ↳ `id` | number | Meeting ID |
  | ↳ `uuid` | string | Meeting UUID |
  | ↳ `host_id` | string | Host user ID |
  | ↳ `topic` | string | Meeting topic |
  | ↳ `type` | number | Meeting type |
  | ↳ `start_time` | string | Start time in ISO 8601 format |
  | ↳ `duration` | number | Duration in minutes |
  | ↳ `timezone` | string | Timezone |
  | ↳ `agenda` | string | Meeting agenda |
  | ↳ `created_at` | string | Creation timestamp |
  | ↳ `join_url` | string | URL for participants to join |
  | `pageInfo` | object | Pagination information |
  | ↳ `pageCount` | number | Total number of pages |
  | ↳ `pageNumber` | number | Current page number |
  | ↳ `pageSize` | number | Number of records per page |
  | ↳ `totalRecords` | number | Total number of records |
  | ↳ `nextPageToken` | string | Token for next page of results |
</ReferenceDetails>

### Zoom Get Meeting [#zoom-get-meeting]

Get details of a specific Zoom meeting

<ReferenceDetails>
  #### Input [#input-2]

  | Parameter | Type | Required | Description |
  | - | - | - | - |
  | `meetingId` | string | Yes | The meeting ID (e.g., "1234567890" or "85746065432") |
  | `occurrenceId` | string | No | Occurrence ID for recurring meetings |
  | `showPreviousOccurrences` | boolean | No | Show previous occurrences for recurring meetings |

  #### Output [#output-2]

  | Parameter | Type | Description |
  | - | - | - |
  | `meeting` | object | The meeting details |
  | ↳ `id` | number | Meeting ID |
  | ↳ `uuid` | string | Meeting UUID |
  | ↳ `host_id` | string | Host user ID |
  | ↳ `host_email` | string | Host email address |
  | ↳ `topic` | string | Meeting topic |
  | ↳ `type` | number | Meeting type: 1=instant, 2=scheduled, 3=recurring no fixed time, 8=recurring fixed time |
  | ↳ `status` | string | Meeting status (e.g., waiting, started) |
  | ↳ `start_time` | string | Start time in ISO 8601 format |
  | ↳ `duration` | number | Duration in minutes |
  | ↳ `timezone` | string | Timezone (e.g., America/Los\_Angeles) |
  | ↳ `agenda` | string | Meeting agenda |
  | ↳ `created_at` | string | Creation timestamp in ISO 8601 format |
  | ↳ `start_url` | string | URL for host to start the meeting |
  | ↳ `join_url` | string | URL for participants to join the meeting |
  | ↳ `password` | string | Meeting password |
  | ↳ `h323_password` | string | H.323/SIP room system password |
  | ↳ `pstn_password` | string | PSTN password for phone dial-in |
  | ↳ `encrypted_password` | string | Encrypted password for joining |
  | ↳ `settings` | object | Meeting settings |
  | ↳ `host_video` | boolean | Start with host video on |
  | ↳ `participant_video` | boolean | Start with participant video on |
  | ↳ `join_before_host` | boolean | Allow participants to join before host |
  | ↳ `mute_upon_entry` | boolean | Mute participants upon entry |
  | ↳ `watermark` | boolean | Add watermark when viewing shared screen |
  | ↳ `audio` | string | Audio options: both, telephony, or voip |
  | ↳ `auto_recording` | string | Auto recording: local, cloud, or none |
  | ↳ `waiting_room` | boolean | Enable waiting room |
  | ↳ `meeting_authentication` | boolean | Require meeting authentication |
  | ↳ `approval_type` | number | Approval type: 0=auto, 1=manual, 2=none |
  | ↳ `recurrence` | object | Recurrence settings for recurring meetings |
  | ↳ `type` | number | Recurrence type: 1=daily, 2=weekly, 3=monthly |
  | ↳ `repeat_interval` | number | Interval between recurring meetings |
  | ↳ `weekly_days` | string | Days of week for weekly recurrence (1-7, comma-separated) |
  | ↳ `monthly_day` | number | Day of month for monthly recurrence |
  | ↳ `monthly_week` | number | Week of month for monthly recurrence |
  | ↳ `monthly_week_day` | number | Day of week for monthly recurrence |
  | ↳ `end_times` | number | Number of occurrences |
  | ↳ `end_date_time` | string | End date time in ISO 8601 format |
  | ↳ `occurrences` | array | Meeting occurrences for recurring meetings |
  | ↳ `occurrence_id` | string | Occurrence ID |
  | ↳ `start_time` | string | Start time in ISO 8601 format |
  | ↳ `duration` | number | Duration in minutes |
  | ↳ `status` | string | Occurrence status |
</ReferenceDetails>

### Zoom Update Meeting [#zoom-update-meeting]

Update an existing Zoom meeting

<ReferenceDetails>
  #### Input [#input-3]

  | Parameter | Type | Required | Description |
  | - | - | - | - |
  | `meetingId` | string | Yes | The meeting ID to update (e.g., "1234567890" or "85746065432") |
  | `topic` | string | No | Meeting topic (e.g., "Weekly Team Standup" or "Project Review") |
  | `type` | number | No | Meeting type: 1=instant, 2=scheduled, 3=recurring no fixed time, 8=recurring fixed time |
  | `startTime` | string | No | Meeting start time in ISO 8601 format (e.g., 2025-06-03T10:00:00Z) |
  | `duration` | number | No | Meeting duration in minutes (e.g., 30, 60, 90) |
  | `timezone` | string | No | Timezone for the meeting (e.g., America/Los\_Angeles) |
  | `password` | string | No | Meeting password |
  | `agenda` | string | No | Meeting agenda or description text |
  | `hostVideo` | boolean | No | Start with host video on |
  | `participantVideo` | boolean | No | Start with participant video on |
  | `joinBeforeHost` | boolean | No | Allow participants to join before host |
  | `muteUponEntry` | boolean | No | Mute participants upon entry |
  | `waitingRoom` | boolean | No | Enable waiting room |
  | `autoRecording` | string | No | Auto recording setting: local, cloud, or none |

  #### Output [#output-3]

  | Parameter | Type | Description |
  | - | - | - |
  | `success` | boolean | Whether the meeting was updated successfully |
</ReferenceDetails>

### Zoom Delete Meeting [#zoom-delete-meeting]

Delete or cancel a Zoom meeting

<ReferenceDetails>
  #### Input [#input-4]

  | Parameter | Type | Required | Description |
  | - | - | - | - |
  | `meetingId` | string | Yes | The meeting ID to delete (e.g., "1234567890" or "85746065432") |
  | `occurrenceId` | string | No | Occurrence ID for deleting a specific occurrence of a recurring meeting |
  | `scheduleForReminder` | boolean | No | Send cancellation reminder email to registrants |
  | `cancelMeetingReminder` | boolean | No | Send cancellation email to registrants and alternative hosts |

  #### Output [#output-4]

  | Parameter | Type | Description |
  | - | - | - |
  | `success` | boolean | Whether the meeting was deleted successfully |
</ReferenceDetails>

### Zoom Get Meeting Invitation [#zoom-get-meeting-invitation]

Get the meeting invitation text for a Zoom meeting

<ReferenceDetails>
  #### Input [#input-5]

  | Parameter | Type | Required | Description |
  | - | - | - | - |
  | `meetingId` | string | Yes | The meeting ID (e.g., "1234567890" or "85746065432") |

  #### Output [#output-5]

  | Parameter | Type | Description |
  | - | - | - |
  | `invitation` | string | The meeting invitation text |
</ReferenceDetails>

### Zoom List Recordings [#zoom-list-recordings]

List all cloud recordings for a Zoom user

<ReferenceDetails>
  #### Input [#input-6]

  | Parameter | Type | Required | Description |
  | - | - | - | - |
  | `userId` | string | Yes | The user ID or email address (e.g., "me", "[user@example.com](mailto:user@example.com)", or "AbcDefGHi"). Use "me" for the authenticated user with OAuth credentials. With a Zoom server-to-server service account, "me" is not supported — provide the target user ID or email address. |
  | `from` | string | No | Start date in yyyy-mm-dd format (within last 6 months) |
  | `to` | string | No | End date in yyyy-mm-dd format |
  | `pageSize` | number | No | Number of records per page, 1-300 (e.g., 30, 50, 100) |
  | `nextPageToken` | string | No | Token for pagination to get next page of results |
  | `trash` | boolean | No | Set to true to list recordings from trash |

  #### Output [#output-6]

  | Parameter | Type | Description |
  | - | - | - |
  | `recordings` | array | List of recordings |
  | ↳ `uuid` | string | Meeting UUID |
  | ↳ `id` | number | Meeting ID |
  | ↳ `account_id` | string | Account ID |
  | ↳ `host_id` | string | Host user ID |
  | ↳ `topic` | string | Meeting topic |
  | ↳ `type` | number | Meeting type |
  | ↳ `start_time` | string | Meeting start time |
  | ↳ `duration` | number | Meeting duration in minutes |
  | ↳ `total_size` | number | Total size of all recordings in bytes |
  | ↳ `recording_count` | number | Number of recording files |
  | ↳ `share_url` | string | URL to share recordings |
  | ↳ `recording_files` | array | List of recording files |
  | ↳ `id` | string | Recording file ID |
  | ↳ `meeting_id` | string | Meeting ID associated with the recording |
  | ↳ `recording_start` | string | Start time of the recording |
  | ↳ `recording_end` | string | End time of the recording |
  | ↳ `file_type` | string | Type of recording file (MP4, M4A, etc.) |
  | ↳ `file_extension` | string | File extension |
  | ↳ `file_size` | number | File size in bytes |
  | ↳ `play_url` | string | URL to play the recording |
  | ↳ `download_url` | string | URL to download the recording |
  | ↳ `status` | string | Recording status |
  | ↳ `recording_type` | string | Type of recording (shared\_screen, audio\_only, etc.) |
  | `pageInfo` | object | Pagination information |
  | ↳ `from` | string | Start date of query range |
  | ↳ `to` | string | End date of query range |
  | ↳ `pageSize` | number | Number of records per page |
  | ↳ `totalRecords` | number | Total number of records |
  | ↳ `nextPageToken` | string | Token for next page of results |
</ReferenceDetails>

### Zoom Get Meeting Recordings [#zoom-get-meeting-recordings]

Get all recordings for a specific Zoom meeting

<ReferenceDetails>
  #### Input [#input-7]

  | Parameter | Type | Required | Description |
  | - | - | - | - |
  | `meetingId` | string | Yes | The meeting ID or meeting UUID (e.g., "1234567890" or "4444AAABBBccccc12345==") |
  | `includeFolderItems` | boolean | No | Include items within a folder |
  | `ttl` | number | No | Time to live for download URLs in seconds (max 604800) |
  | `downloadFiles` | boolean | No | Download recording files into file outputs |

  #### Output [#output-7]

  | Parameter | Type | Description |
  | - | - | - |
  | `recording` | object | The meeting recording with all files |
  | ↳ `uuid` | string | Meeting UUID |
  | ↳ `id` | number | Meeting ID |
  | ↳ `account_id` | string | Account ID |
  | ↳ `host_id` | string | Host user ID |
  | ↳ `topic` | string | Meeting topic |
  | ↳ `type` | number | Meeting type |
  | ↳ `start_time` | string | Meeting start time |
  | ↳ `duration` | number | Meeting duration in minutes |
  | ↳ `total_size` | number | Total size of all recordings in bytes |
  | ↳ `recording_count` | number | Number of recording files |
  | ↳ `share_url` | string | URL to share recordings |
  | ↳ `recording_files` | array | List of recording files |
  | ↳ `id` | string | Recording file ID |
  | ↳ `meeting_id` | string | Meeting ID associated with the recording |
  | ↳ `recording_start` | string | Start time of the recording |
  | ↳ `recording_end` | string | End time of the recording |
  | ↳ `file_type` | string | Type of recording file (MP4, M4A, etc.) |
  | ↳ `file_extension` | string | File extension |
  | ↳ `file_size` | number | File size in bytes |
  | ↳ `play_url` | string | URL to play the recording |
  | ↳ `download_url` | string | URL to download the recording |
  | ↳ `status` | string | Recording status |
  | ↳ `recording_type` | string | Type of recording (shared\_screen, audio\_only, etc.) |
  | `files` | file\[] | Downloaded recording files |
</ReferenceDetails>

### Zoom Delete Recording [#zoom-delete-recording]

Delete cloud recordings for a Zoom meeting

<ReferenceDetails>
  #### Input [#input-8]

  | Parameter | Type | Required | Description |
  | - | - | - | - |
  | `meetingId` | string | Yes | The meeting ID or meeting UUID (e.g., "1234567890" or "4444AAABBBccccc12345==") |
  | `recordingId` | string | No | Specific recording file ID to delete. If not provided, deletes all recordings. |
  | `action` | string | No | Delete action: "trash" (move to trash) or "delete" (permanently delete) |

  #### Output [#output-8]

  | Parameter | Type | Description |
  | - | - | - |
  | `success` | boolean | Whether the recording was deleted successfully |
</ReferenceDetails>

### Zoom List Past Participants [#zoom-list-past-participants]

List participants from a past Zoom meeting

<ReferenceDetails>
  #### Input [#input-9]

  | Parameter | Type | Required | Description |
  | - | - | - | - |
  | `meetingId` | string | Yes | The past meeting ID or UUID (e.g., "1234567890" or "4444AAABBBccccc12345==") |
  | `pageSize` | number | No | Number of records per page, 1-300 (e.g., 30, 50, 100) |
  | `nextPageToken` | string | No | Token for pagination to get next page of results |

  #### Output [#output-9]

  | Parameter | Type | Description |
  | - | - | - |
  | `participants` | array | List of meeting participants |
  | ↳ `id` | string | Participant unique identifier |
  | ↳ `user_id` | string | User ID if registered Zoom user |
  | ↳ `name` | string | Participant display name |
  | ↳ `user_email` | string | Participant email address |
  | ↳ `join_time` | string | Time when participant joined (ISO 8601) |
  | ↳ `leave_time` | string | Time when participant left (ISO 8601) |
  | ↳ `duration` | number | Duration in seconds participant was in meeting |
  | ↳ `attentiveness_score` | string | Attentiveness score (deprecated) |
  | ↳ `failover` | boolean | Whether participant failed over to another data center |
  | ↳ `status` | string | Participant status |
  | `pageInfo` | object | Pagination information |
  | ↳ `pageSize` | number | Number of records per page |
  | ↳ `totalRecords` | number | Total number of records |
  | ↳ `nextPageToken` | string | Token for next page of results |
</ReferenceDetails>

## Triggers [#triggers]

A trigger starts a workflow when a supported event occurs in this service.

### Zoom Meeting Ended [#zoom-meeting-ended]

Trigger workflow when a Zoom meeting ends

<ReferenceDetails label="Configuration and outputs">
  #### Configuration [#configuration]

  | Parameter | Type | Required | Description |
  | - | - | - | - |
  | `secretToken` | string | Yes | Found in your Zoom app's Features page. Required for endpoint validation and webhook signature verification. |

  #### Output [#output-10]

  | Parameter | Type | Description |
  | - | - | - |
  | `event` | string | The webhook event type (e.g., meeting.started) |
  | `event_ts` | number | Unix timestamp in milliseconds when the event occurred |
  | `payload` | object | |
  | ↳ `account_id` | string | Zoom account ID |
  | ↳ `object` | object | Meeting details (shape aligns with Zoom Meetings webhook object fields) |
  | ↳ `id` | number | Meeting ID |
  | ↳ `uuid` | string | Meeting UUID |
  | ↳ `topic` | string | Meeting topic |
  | ↳ `meeting_type` | number | Meeting type (1=instant, 2=scheduled, etc.; maps to Zoom `type`) |
  | ↳ `host_id` | string | Host user ID |
  | ↳ `host_email` | string | Host email address (when provided by Zoom) |
  | ↳ `start_time` | string | Meeting start time (ISO 8601) |
  | ↳ `end_time` | string | Meeting end time (ISO 8601, present on meeting.ended) |
  | ↳ `timezone` | string | Meeting timezone |
  | ↳ `duration` | number | Meeting duration in minutes |
  | ↳ `agenda` | string | Meeting agenda or description (when provided) |
  | ↳ `join_url` | string | URL for participants to join (when provided) |
  | ↳ `password` | string | Meeting password (when provided) |
  | ↳ `status` | string | Meeting status (e.g. waiting, started; when provided) |
  | ↳ `created_at` | string | Creation timestamp in ISO 8601 format (when provided) |
</ReferenceDetails>

### Zoom Meeting Started [#zoom-meeting-started]

Trigger workflow when a Zoom meeting starts

<ReferenceDetails label="Configuration and outputs">
  #### Configuration [#configuration-1]

  | Parameter | Type | Required | Description |
  | - | - | - | - |
  | `secretToken` | string | Yes | Found in your Zoom app's Features page. Required for endpoint validation and webhook signature verification. |

  #### Output [#output-11]

  | Parameter | Type | Description |
  | - | - | - |
  | `event` | string | The webhook event type (e.g., meeting.started) |
  | `event_ts` | number | Unix timestamp in milliseconds when the event occurred |
  | `payload` | object | |
  | ↳ `account_id` | string | Zoom account ID |
  | ↳ `object` | object | Meeting details (shape aligns with Zoom Meetings webhook object fields) |
  | ↳ `id` | number | Meeting ID |
  | ↳ `uuid` | string | Meeting UUID |
  | ↳ `topic` | string | Meeting topic |
  | ↳ `meeting_type` | number | Meeting type (1=instant, 2=scheduled, etc.; maps to Zoom `type`) |
  | ↳ `host_id` | string | Host user ID |
  | ↳ `host_email` | string | Host email address (when provided by Zoom) |
  | ↳ `start_time` | string | Meeting start time (ISO 8601) |
  | ↳ `end_time` | string | Meeting end time (ISO 8601, present on meeting.ended) |
  | ↳ `timezone` | string | Meeting timezone |
  | ↳ `duration` | number | Meeting duration in minutes |
  | ↳ `agenda` | string | Meeting agenda or description (when provided) |
  | ↳ `join_url` | string | URL for participants to join (when provided) |
  | ↳ `password` | string | Meeting password (when provided) |
  | ↳ `status` | string | Meeting status (e.g. waiting, started; when provided) |
  | ↳ `created_at` | string | Creation timestamp in ISO 8601 format (when provided) |
</ReferenceDetails>

### Zoom Participant Joined [#zoom-participant-joined]

Trigger workflow when a participant joins a Zoom meeting

#### Configuration [#configuration-2]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `secretToken` | string | Yes | Found in your Zoom app's Features page. Required for endpoint validation and webhook signature verification. |

#### Output [#output-12]

| Parameter | Type | Description |
| - | - | - |
| `event` | string | The webhook event type (e.g., meeting.participant\_joined) |
| `event_ts` | number | Unix timestamp in milliseconds when the event occurred |
| `payload` | object | |
| ↳ `account_id` | string | Zoom account ID |
| ↳ `object` | object | Meeting and participant details |
| ↳ `id` | number | Meeting ID |
| ↳ `uuid` | string | Meeting UUID |
| ↳ `topic` | string | Meeting topic |
| ↳ `host_id` | string | Host user ID |
| ↳ `join_url` | string | URL for participants to join (when provided) |
| ↳ `participant` | object | Participant details |
| ↳ `id` | string | Participant identifier |
| ↳ `user_id` | string | Participant user ID (when a Zoom user) |
| ↳ `user_name` | string | Participant display name |
| ↳ `email` | string | Participant email (when available) |
| ↳ `join_time` | string | Time participant joined (ISO 8601) |
| ↳ `leave_time` | string | Time participant left (ISO 8601, present on participant\_left) |
| ↳ `duration` | number | Seconds the participant was in the meeting (when provided) |

***

### Zoom Participant Left [#zoom-participant-left]

Trigger workflow when a participant leaves a Zoom meeting

#### Configuration [#configuration-3]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `secretToken` | string | Yes | Found in your Zoom app's Features page. Required for endpoint validation and webhook signature verification. |

#### Output [#output-13]

| Parameter | Type | Description |
| - | - | - |
| `event` | string | The webhook event type (e.g., meeting.participant\_joined) |
| `event_ts` | number | Unix timestamp in milliseconds when the event occurred |
| `payload` | object | |
| ↳ `account_id` | string | Zoom account ID |
| ↳ `object` | object | Meeting and participant details |
| ↳ `id` | number | Meeting ID |
| ↳ `uuid` | string | Meeting UUID |
| ↳ `topic` | string | Meeting topic |
| ↳ `host_id` | string | Host user ID |
| ↳ `join_url` | string | URL for participants to join (when provided) |
| ↳ `participant` | object | Participant details |
| ↳ `id` | string | Participant identifier |
| ↳ `user_id` | string | Participant user ID (when a Zoom user) |
| ↳ `user_name` | string | Participant display name |
| ↳ `email` | string | Participant email (when available) |
| ↳ `join_time` | string | Time participant joined (ISO 8601) |
| ↳ `leave_time` | string | Time participant left (ISO 8601, present on participant\_left) |
| ↳ `duration` | number | Seconds the participant was in the meeting (when provided) |

***

### Zoom Recording Completed [#zoom-recording-completed]

Trigger workflow when a Zoom cloud recording is completed

#### Configuration [#configuration-4]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `secretToken` | string | Yes | Found in your Zoom app's Features page. Required for endpoint validation and webhook signature verification. |

#### Output [#output-14]

| Parameter | Type | Description |
| - | - | - |
| `event` | string | The webhook event type (recording.completed) |
| `event_ts` | number | Unix timestamp in milliseconds when the event occurred |
| `payload` | object | |
| ↳ `account_id` | string | Zoom account ID |
| ↳ `object` | object | Cloud recording details (aligns with Zoom cloud recording objects) |
| ↳ `id` | number | Meeting ID |
| ↳ `uuid` | string | Meeting UUID |
| ↳ `topic` | string | Meeting topic |
| ↳ `meeting_type` | number | Meeting type (when provided; maps to Zoom `type`) |
| ↳ `host_id` | string | Host user ID |
| ↳ `host_email` | string | Host email |
| ↳ `start_time` | string | Recording start time (ISO 8601) |
| ↳ `timezone` | string | Meeting timezone (when provided) |
| ↳ `agenda` | string | Meeting agenda (when provided) |
| ↳ `duration` | number | Recording duration in minutes |
| ↳ `total_size` | number | Total recording size in bytes |
| ↳ `recording_count` | number | Number of recording files |
| ↳ `share_url` | string | URL to share the recording |
| ↳ `recording_files` | json | Array of recording file objects (e.g. id, file\_type, play\_url, download\_url) per Zoom cloud recording payloads |

***

### Zoom Webhook (All Events) [#zoom-webhook-all-events]

Trigger workflow on any Zoom webhook event

#### Configuration [#configuration-5]

| Parameter | Type | Required | Description |
| - | - | - | - |
| `secretToken` | string | Yes | Found in your Zoom app's Features page. Required for endpoint validation and webhook signature verification. |

#### Output [#output-15]

| Parameter | Type | Description |
| - | - | - |
| `event` | string | The webhook event type (e.g., meeting.started, recording.completed) |
| `event_ts` | number | Unix timestamp in milliseconds when the event occurred |
| `payload` | json | Complete webhook payload (structure varies by event type) |
