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

# Zoom

> Manage Zoom meetings, reports, and cloud recordings

## Overview

The Zoom tools let you automate Zoom from your flows: create and update meetings (including recurring series), list a user's meetings, retrieve meeting reports and participant lists after a meeting ends, and work with cloud recordings — all using Zoom Server-to-Server OAuth authentication.

## Key Features

* `ZOOM_CREATE_MEETING`
  * Create instant, scheduled, or recurring meetings for a host (`user_id`: Zoom user ID or email).
  * Key inputs: `topic` (required), `type` (1: instant, 2: scheduled — default, 3: recurring without fixed time, 8: recurring with fixed time), `start_time` (ISO 8601), `duration` (minutes), `timezone`, `agenda`, `password` (max 10 characters), `recurrence` (required when `type` is 8; JSON string or object), `settings` (JSON string or object).
* `ZOOM_LIST_MEETINGS`
  * List meetings for a user (`user_id`; use `me` for the admin account).
  * Key inputs: `type` (`scheduled` — default, `upcoming`, `live`, `upcoming_meetings`, `previous_meetings`), `page_size` (1-300), `next_page_token`, `from` / `to` (YYYY-MM-DD, for past meetings).
* `ZOOM_UPDATE_MEETING`
  * Update an existing meeting by `meeting_id` (ID or UUID). At least one field must be provided.
  * Key inputs: `topic`, `type`, `start_time`, `duration`, `timezone`, `agenda`, `password`, `recurrence`, `settings` (e.g. alternative hosts), and `occurrence_id` for a single occurrence of a recurring meeting.
* `ZOOM_LIST_MEETING_PARTICIPANTS`
  * List participants of a past meeting by `meeting_id`.
  * Key inputs: `page_size` (1-300, default 100), `next_page_token`, `dedupe` (default `true` — collapses duplicate entries by user ID, email, or name).
* `ZOOM_GET_MEETING_REPORT`
  * Two modes: pass `meeting_id` for a detailed report of one meeting, or omit it to list report summaries for a user and date range.
  * Key inputs (list mode): `user_id` (default `me`), `from` / `to` (YYYY-MM-DD), `type` (`past` — default, `pastJoined`, `pastOne`, `live`), `page_size` (1-30), `next_page_token`.
* `ZOOM_LIST_CLOUD_RECORDINGS`
  * List cloud recordings for a user, with optional date range and trash filters.
  * Key inputs: `user_id` (default `me`), `from` / `to` (YYYY-MM-DD), `page_size` (1-300, default 30), `next_page_token`, `trash`, `trash_type` (`meeting_recordings` or `recording_file`).
* `ZOOM_GET_CLOUD_RECORDING`
  * Get cloud recording details for a meeting by `meeting_id`, including `recording_files`, `share_url`, and `password`.
  * Key inputs: `include_fields` (optional comma-separated value).
* `ZOOM_UPDATE_RECORDING_SETTINGS`
  * Update sharing and viewing settings of a cloud recording by `meeting_id`. At least one setting must be provided.
  * Key inputs: `share_recording` (`none`, `internally`, `publicly`), `viewer_download`, `password`, `on_demand`, `approval_type`, and a `settings` JSON object for advanced Zoom fields.

## Authentication

All Zoom tools use **Server-to-Server OAuth**. Create a Server-to-Server OAuth app in the [Zoom App Marketplace](https://marketplace.zoom.us/) and register the following values as a `ZOOM_SERVER_TO_SERVER_OAUTH` secret:

* **Account ID**: Your Zoom account ID.
* **Client ID**: The OAuth client ID of the app.
* **Client Secret**: The OAuth client secret of the app.

Access tokens are issued automatically with the `account_credentials` grant, so no user login or token refresh handling is required on your side.

**Note**: Treat credentials as sensitive information and never commit them to public repositories.

### Example: Create a Scheduled Meeting

```yaml theme={null}
- id: create_meeting
  tool: ZOOM_CREATE_MEETING
  config:
    - name: client_id
      value: "{{secrets.ZOOM_SERVER_TO_SERVER_OAUTH.client_id}}"
    - name: client_secret
      value: "{{secrets.ZOOM_SERVER_TO_SERVER_OAUTH.client_secret}}"
    - name: account_id
      value: "{{secrets.ZOOM_SERVER_TO_SERVER_OAUTH.account_id}}"
  input:
    - name: user_id
      value: host@example.com
    - name: topic
      value: Weekly Sync
    - name: type
      value: "2"
    - name: start_time
      value: 2026-07-20T09:00:00Z
    - name: duration
      value: "30"
    - name: timezone
      value: Asia/Tokyo
    - name: agenda
      value: Review progress and blockers for the week.
```

### Example: Summarize a Past Meeting (Report + Participants)

```yaml theme={null}
- id: get_report
  tool: ZOOM_GET_MEETING_REPORT
  config:
    - name: client_id
      value: "{{secrets.ZOOM_SERVER_TO_SERVER_OAUTH.client_id}}"
    - name: client_secret
      value: "{{secrets.ZOOM_SERVER_TO_SERVER_OAUTH.client_secret}}"
    - name: account_id
      value: "{{secrets.ZOOM_SERVER_TO_SERVER_OAUTH.account_id}}"
  input:
    - name: meeting_id
      value: "123456789"
- id: list_participants
  tool: ZOOM_LIST_MEETING_PARTICIPANTS
  config:
    - name: client_id
      value: "{{secrets.ZOOM_SERVER_TO_SERVER_OAUTH.client_id}}"
    - name: client_secret
      value: "{{secrets.ZOOM_SERVER_TO_SERVER_OAUTH.client_secret}}"
    - name: account_id
      value: "{{secrets.ZOOM_SERVER_TO_SERVER_OAUTH.account_id}}"
  input:
    - name: meeting_id
      value: "123456789"
    - name: dedupe
      value: true
- id: summarize
  tool: OPENAI_INVOKE
  config:
    - name: version
      value: gpt-4
  input:
    - name: prompt
      value: |
        Summarize the following Zoom meeting for the team.

        ==Meeting Report==
        {{steps.get_report.result.report}}

        ==Participants==
        {{steps.list_participants.result.participants}}

        ==Instructions==
        1. Summarize the meeting (topic, duration, attendance)
        2. List the participants and their time in the meeting
        3. Keep it concise and suitable for a Slack post
```

## Notes

* The host specified in `user_id` must belong to the same Zoom account as the Server-to-Server OAuth app. `me` refers to the admin account.
* To create a recurring meeting series, set `type` to `8` and supply a `recurrence` object (e.g. `{ "type": 2, "repeat_interval": 1, "weekly_days": "2,4", "end_times": 10 }`); `recurrence` is ignored for other meeting types.
* `recurrence` and `settings` inputs accept either a JSON string or a structured object matching Zoom's API objects.
* `ZOOM_LIST_MEETING_PARTICIPANTS` and `ZOOM_GET_MEETING_REPORT` work on **past** meetings; run them after the meeting has ended.
* List-style tools are paginated: pass the returned `next_page_token` back in to fetch the next page. `page_size` is capped at 300 (30 for the meeting report list mode).
* `ZOOM_UPDATE_MEETING` and `ZOOM_UPDATE_RECORDING_SETTINGS` fail if no field to update is provided.
* Access tokens issued via the `account_credentials` grant expire after 1 hour; the tools cache and refresh them automatically.
