Meetings

  • OpenAPI Version: 3.1.1
  • API Version: 2

The Zoom Meeting APIs allow developers to interface with Zoom Meetings and Webinars programmatically.

Servers

  • URL: https://api.zoom.us/v2

Operations

List archived files

  • Method: GET
  • Path: /accounts/{accountId}/archive_files
  • Tags: Archiving

Get an account's archived meeting or webinar files.

Zoom's archiving solution lets account administrators set up an automated mechanism to record, collect, and archive meeting data to a third-party platform of their choice to satisfy FINRA or other compliance requirements.

Prerequisites:

Scopes: recording:master

Granular Scopes: archiving:read:list_archived_files:master

Rate Limit Label: MEDIUM

Responses

Status: 200 **HTTP Status Code:** `200` Archived files returned.
Content-Type: application/json
  • from

    string, format: date-time — The queried start date.

  • meetings

    array — Information about the meeting or webinar.

    Items:

    • account_name (required)

      string — The user's account name.

    • archive_files (required)

      array — Information about the archive files.

      Items:

      • download_url (required)

        string — The URL to download the the archive file. **OAuth apps** If a user has authorized and installed your OAuth app that contains recording scopes, use the user's [OAuth access token](/docs/integrations/oauth/) to download the file. For example, `https://{{base-domain}}/rec/archive/download/xxx--header 'Authorization: Bearer {{OAuth-access-token}}'` **Note:** This field does **not** return for [Zoom on-premise accounts](https://support.zoom.us/hc/en-us/articles/360034064852-Zoom-On-Premise-Deployment). Instead, this API will return the `file_path` field.

      • encryption_fingerprint (required)

        string — The archived file's encryption fingerprint, using the SHA256 hash algorithm.

      • file_extension (required)

        string — The archived file's extension.

      • file_size (required)

        integer — The archived file's size, in bytes.

      • file_type (required)

        string, possible values: "MP4", "M4A", "CHAT", "CC", "CHAT_MESSAGE", "TRANSCRIPT", "SUB_GROUP_MEMBER_LOG", "AIC_COVERSATION" — The archive file's type. * `MP4` - Video file. * `M4A` - Audio-only file. * `CHAT` - A TXT file containing in-meeting chat messages. * `CC` - A file containing the closed captions of the recording, in VTT file format. * `CHAT_MESSAGE` - A JSON file encoded in base64 format containing chat messages. The file also includes waiting room chats, deleted messages, meeting emojis and non-verbal feedback. * `TRANSCRIPT` - A JSON file include audio transcript wording. * `SUB_GROUP_MEMBER_LOG` - A json file containing records of members entering and leaving the subgroup. * `AIC_COVERSATION` - A json file include internal user archive aic content.

      • id (required)

        string — The archive file's unique ID.

      • individual (required)

        boolean — Whether the archive file is an individual recording file. * `true` - An individual recording file. * `false` - An entire meeting file.

      • participant_join_time (required)

        string, format: date-time — The join time for the generated recording file. If this value is returned when the individual value is `true`, it is the recording file's participant join time. When the individual value is `false`, it returns the join time for the archiving gateway.

      • participant_leave_time (required)

        string, format: date-time — The leave time for the generated recording file. If this value is returned when the individual value is `true`, it is the recording file's participant leave time. When the individual value is `false`, it returns the leave time for the archiving gateway.

      • recording_type (required)

        string, possible values: "shared_screen_with_speaker_view", "audio_only", "chat_file", "closed_caption", "chat_message", "audio_transcript", "aic_conversation" — The archive file's recording type. * `shared_screen_with_speaker_view` * `audio_only` * `chat_file` * `closed_caption` * `chat_message` * `audio_transcript` * `aic_conversation` For more information, read our [Managing and sharing cloud recordings](https://support.zoom.us/hc/en-us/articles/205347605-Managing-and-sharing-cloud-recordings#h_9898497b-e736-4980-a749-d55608f10773) documentation.

      • status (required)

        string, possible values: "completed", "processing", "failed" — The archived file's processing status. * `completed` - The processing of the file is complete. * `processing` - The file is processing. * `failed` - The processing of the file failed.

      • auto_delete

        boolean — Whether to auto delete the archived file. **Prerequisites:** Enable the "Tag Archiving Files for Deletion" feature in OP. Contact [Zoom Support](https://support.zoom.us/hc/en-us/articles/201362003) to open.

      • file_path

        string — The file path to the on-premise account archive file. **Note:** The API only returns this field for [Zoom on-premise accounts](https://support.zoom.us/hc/en-us/articles/360034064852-Zoom-On-Premise-Deployment). It does **not** return the `download_url` field.

      • number_of_messages

        integer — The number of `TXT` or `JSON` file messages. This field returns only when the `file_extension` is `JSON` or `TXT`.

      • participant_email

        string, format: email — The individual recording file's participant email address. This value is returned when the `individual` value is `true`. If the participant is **not** part of the host's account, this returns an empty string value, with some exceptions. See [Email address display rules](/docs/api/using-zoom-apis/#email-address-display-rules) for details.

      • storage_location

        string, possible values: "US", "AU", "BR", "CA", "EU", "IN", "JP", "SG", "CH" — The region where the file is stored. This field returns only `Enable Distributed Compliance Archiving` op feature is enabled.

    • complete_time (required)

      string, format: date-time — The meeting or webinar's archive completion time.

    • duration (required)

      integer — The meeting or webinar's scheduled duration.

    • duration_in_second (required)

      integer — The meeting or webinar's duration, in seconds.

    • host_id (required)

      string — The ID of the user set as the host of the archived meeting or webinar.

    • id (required)

      integer, format: int64 — The meeting or webinar ID, either `meetingId` or `webinarId`.

    • is_breakout_room (required)

      boolean — Whether the room is a [breakout room](https://support.zoom.us/hc/en-us/articles/115005769646-Participating-in-breakout-rooms).

    • meeting_type (required)

      string, possible values: "internal", "external" — Whether the meeting or webinar is internal or external. * `internal` - An internal meeting or webinar. * `external` - An external meeting or webinar. The `id`, `host_id`, and `topic` PII (Personal Identifiable Information) values in this response are removed when this value is `external`.

    • recording_count (required)

      integer — The number of archived files returned in the API call response.

    • start_time (required)

      string, format: date-time — The meeting or webinar's start time.

    • status (required)

      string, possible values: "completed", "processing" — The archive's processing status. * `completed` - The archive's processing is complete. * `processing` - The archive is processing.

    • timezone (required)

      string — The meeting or webinar's [timezone](/docs/api/references/abbreviations/#timezones).

    • topic (required)

      string — The meeting or webinar topic.

    • total_size (required)

      integer — The total size of the archive file, in bytes.

    • type (required)

      integer, possible values: 1, 2, 3, 4, 5, 6, 7, 8, 9, 100 — The type of archived meeting or webinar. Meeting recordings use these archive types. * `1` - Instant meeting. * `2` - Scheduled meeting. * `3` - A recurring meeting with no fixed time. * `4` - A meeting created via PMI (Personal Meeting ID). * `7` - A [Personal Audio Conference](https://support.zoom.us/hc/en-us/articles/204517069-Getting-Started-with-Personal-Audio-Conference) (PAC). * `8` - Recurring meeting with a fixed time. Webinar recordings use these archive types. * `5` - A webinar. * `6` - A recurring webinar without a fixed time. * `9` - A recurring webinar with a fixed time. If the recording is **not** from a meeting or webinar: * `100` - A [breakout room](https://support.zoom.us/hc/en-us/articles/115005769646-Participating-in-breakout-rooms).

    • uuid (required)

      string — The recorded meeting or webinar instance's universally unique identifier (UUID). Each meeting or webinar instance generates a UUID.

    • group_id

      string — Primary group IDs of participants who belong to your account. Each group ID is separated by a comma.

    • parent_meeting_id

      string — The parent meeting's universally unique ID (UUID). Each meeting or webinar instance generates a UUID. If the `is_breakout_room` value is `true`, the API returns this value.

    • physical_files

      array — Information about the physical files.

      Items:

      • download_url

        string — The URL to download the the archive file. **OAuth apps** If a user has authorized and installed your OAuth app that contains recording scopes, use the user's [OAuth access token](/docs/integrations/oauth/) to download the file. Example: `https://{{base-domain}}/rec/archive/attached/download/xxx--header 'Authorization: Bearer {{OAuth-access-token}}'`

      • file_id

        string — The physical file's unique ID.

      • file_name

        string — The physical file's name.

      • file_size

        integer — The physical file's size, in bytes.

  • next_page_token

    string — Use the next page token to paginate through large result sets. A next page token is returned whenever the set of available results exceeds the current page size. This token's expiration period is 15 minutes. **Note:** if you use `next_page_token` as a parameter, your other request parameters should be changeless to make sure that the large result set is what you want. For example, if your `to` parameter is for a future time, Zoom resets this value to the current time and returns this value in the response body, along with the `next_page_token` value. Use these same `to` and `next_page_token` values in requests for the remaining results set; otherwise you will get an invalid token error.

  • page_size

    integer — The number of records returned within a single API call.

  • to

    string, format: date-time — The queried end date.

  • total_records

    integer — The total number of returned meeting records.

Example:

{
  "from": "2021-03-12T02:12:27Z",
  "meetings": [
    {
      "account_name": "account_01",
      "archive_files": [
        {
          "download_url": "https://example.com/recording/download/Qg75t7xZBtEbAkjdlgbfdngBBBB",
          "file_extension": "JSON",
          "file_path": "/9090876528/path01/demo.mp4",
          "file_size": 165743,
          "file_type": "CHAT",
          "id": "a2f19f96-9294-4f51-8134-6f0eea108eb2",
          "individual": true,
          "participant_email": "jchill@example.com",
          "participant_join_time": "2021-03-12T02:07:27Z",
          "participant_leave_time": "2021-03-12T02:12:27Z",
          "recording_type": "chat_message",
          "status": "completed",
          "encryption_fingerprint": "abf85f0fe6a4db3cdd8c37e505e1dd18a34d9696170a14b5bc6395677472cf43",
          "number_of_messages": 150,
          "storage_location": "US",
          "auto_delete": false
        }
      ],
      "complete_time": "2021-03-12T02:57:27Z",
      "duration": 1,
      "duration_in_second": 1800,
      "host_id": "Dhjdfgdkg8w",
      "id": 553068284,
      "is_breakout_room": false,
      "meeting_type": "internal",
      "parent_meeting_id": "atsXxhSEQWit9t+U02HXNQ==",
      "recording_count": 2,
      "start_time": "2021-04-26T05:23:18Z",
      "timezone": "Asia/Shanghai",
      "topic": "My Personal Meeting Room",
      "total_size": 364463,
      "type": 1,
      "uuid": "yO3dfhh3t467UkQ==",
      "status": "completed",
      "group_id": "pvFIYKSDTum9iCDOOtQL4w,_FsqLyI0RlO6LVPeUVWi8g",
      "physical_files": [
        {
          "file_id": "pvKocCqVSMygaOcKus5Afw",
          "file_name": "Screenshot 2025-02-12 at 10.42.27 AM.png",
          "file_size": 540680,
          "download_url": "https://example.com/rec/archive/attached/download/HBAXbHc15BXbnq0JoDu6tc5MWlww9MAo9JJq2d14VAWkpcT5FEA.AK5calud4EJB7bMq"
        }
      ]
    }
  ],
  "next_page_token": "At6eWnFZ1FB3arCXnRxqHLXKhbDW18yz2i2",
  "page_size": 20,
  "to": "2021-03-12T02:12:27Z",
  "total_records": 20
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `2001` <br> Account does not exist: {accountId} <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rate-limits/).

Get meeting recordings

  • Method: GET
  • Path: /accounts/{accountId}/meetings/{meetingId}/recordings
  • Tags: Cloud Recording

Returns all of a meeting's recordings. Use the download_url property listed in the response to download the recording files. To access a password-protected cloud recording, send the download_access_token or the user's OAuth access token as a Bearer token in the Authorization header. For example:

curl -H 'Authorization: Bearer <ACCESS_TOKEN>' https://{{base-domain}}/rec/archive/download/xyz

Learn more about enabling cloud recordings and managing cloud recording settings.

Scopes: recording:master

Granular Scopes: cloud_recording:read:list_recording_files:master

Rate Limit Label: LIGHT

Responses

Status: 200 **HTTP Status Code:** `200` Recording object returned. **Error Code:** `200` You do not have the right permissions.
Content-Type: application/json

All of:

All of:

  • account_id

    string — The user account's unique identifier.

  • auto_delete

    boolean — Auto-delete status of a meeting's [cloud recording](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0062627). Prerequisite: To get the auto-delete status, the host of the recording must have the recording setting **Delete cloud recordings after a specified number of days** enabled.

  • auto_delete_date

    string — The date when the recording will be auto-deleted when `auto_delete` is true. Otherwise, no date will be returned.

  • duration

    integer — The duration of the meeting's recording.

  • host_id

    string — The ID of the user set as the host of the meeting.

  • id

    integer — The meeting ID, also known as the meeting number.

  • recording_count

    integer — The number of recording files returned in the response of this API call. This includes the `recording_files` and `participant_audio_files` files.

  • recording_play_passcode

    string — The cloud recording's passcode to be used in the URL. Directly splice this recording's passcode in `play_url` or `share_url` with `?pwd=` to access and play. Example: 'https://zoom.us/rec/share/**************?pwd=yNYIS408EJygs7rE5vVsJwXIz4-VW7MH'.

  • start_time

    string, format: date-time — The time when the meeting started.

  • topic

    string — The meeting topic.

  • total_size

    integer, format: int64 — The recording's total file size. This includes the `recording_files` and `participant_audio_files` files.

  • type

    string, possible values: "1", "2", "3", "4", "5", "6", "7", "8", "9", "99" — The recording's associated type of meeting or webinar. If the recording is of a meeting: * `1` - Instant meeting. * `2` - Scheduled meeting. * `3` - A recurring meeting with no fixed time. * `4` - A meeting created via PMI (Personal Meeting ID). * `7` - A [Personal Audio Conference](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0060449) (PAC). * `8` - Recurring meeting with a fixed time. If the recording is of a webinar: * `5` - A webinar. * `6` - A recurring webinar without a fixed time * `9` - A recurring webinar with a fixed time. If the recording is **not** from a meeting or webinar: * `99` - A recording uploaded via the [**Recordings**](https://zoom.us/recording) interface on the Zoom Web Portal.

  • uuid

    string — The unique meeting identifier. Each instance of the meeting has its own UUID.

All of:

  • recording_files

    array — List of recording files.

    Items:

    All of:

    • deleted_time

      string — The time when the recording was deleted. Returned in the response only for the trash query.

    • download_url

      string — The URL to download the recording. If a user has authorized and installed your OAuth app that contains recording scopes, use the `download_access_token` or the user's [OAuth access token](/docs/integrations/oauth/) to download the file. Set the `access_token` as a Bearer token in the Authorization header. For example: `curl -H 'Authorization: Bearer <ACCESS_TOKEN>' https://{{base-domain}}/rec/archive/download/xyz`. **Note:** This field does **not** return for Zoom on-premise accounts. Instead, this API returns the `file_path` field. The URL may be a redirect. In that case, use `curl --location` to follow redirects or use another tool, like Postman.

    • file_extension

      string, possible values: "MP4", "M4A", "TXT", "VTT", "CSV", "JSON", "JPG" — The file extension type of the recording file.

    • file_path

      string — The file path to the on-premise account recording. **Note:** This API only returns this field for Zoom On-Premise accounts. It does **not** return the `download_url` field.

    • file_size

      number — The recording file size.

    • file_type

      string, possible values: "MP4", "M4A", "CHAT", "TRANSCRIPT", "CSV", "TB", "CC", "CHAT_MESSAGE", "SUMMARY" — The recording file type. `MP4` - Video file of the recording. `M4A` - Audio-only file of the recording. `TIMELINE` - Timestamp file of the recording in JSON file format. To get a timeline file, the **Add a timestamp to the recording** setting must be enabled in the [recording settings](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0062627#h_3f14c3a4-d16b-4a3c-bbe5-ef7d24500048). The time will display in the host's timezone, set on their Zoom profile. `TRANSCRIPT` - Transcription file of the recording in VTT format. `CHAT` - A TXT file containing in-meeting chat messages that were sent during the meeting. `CC` - File containing closed captions of the recording in VTT file format. `CSV` - File containing polling data in csv format. A recording file object with file type of either `CC` or `TIMELINE` **does not have** these properties. `id`, `status`, `file_size`, `recording_type`, and `play_url`. `SUMMARY` - Summary file of the recording in JSON file format.

    • id

      string — The recording file ID. It's included in the response of the general query.

    • meeting_id

      string — The meeting ID.

    • play_url

      string — The URL that can play a recording file.

    • recording_end

      string — The recording end time. The response is in the general query.

    • recording_start

      string — The recording start time.

    • recording_type

      string, possible values: "shared_screen_with_speaker_view(CC)", "shared_screen_with_speaker_view", "shared_screen_with_gallery_view", "active_speaker", "gallery_view", "shared_screen", "audio_only", "audio_transcript", "chat_file", "poll", "host_video", "closed_caption", "timeline", "thumbnail", "audio_interpretation", "summary", "summary_next_steps", "summary_smart_chapters", "sign_interpretation", "production_studio" — The recording type.

    • status

      string, possible values: "completed" — The recording status.

  • download_access_token

    string — The JWT token to download the meeting's recording. This response only returns if the `download_access_token` is included in the `include_fields` query parameter.

  • password

    string — The cloud recording's password. Include fields in the response. The password field requires the user role of the authorized account to enable the `View Recording Content` permission.

  • recording_play_passcode

    string — The cloud recording's passcode to be used in the URL. Directly splice this recording's passcode in `play_url` or `share_url` with `?pwd=` to access and play. Example: 'https://zoom.us/rec/share/**************?pwd=yNYIS408EJygs7rE5vVsJwXIz4-VW7MH'.

All of:

  • participant_audio_files

    array — A list of recording files. The API only returns this response when the **Record a separate audio file of each participant** setting is enabled.

    Items:

    All of:

    • download_url

      string — The URL to download the recording. If a user has authorized and installed your OAuth app that contains recording scopes, use the user's [OAuth access token](/docs/integrations/oauth/) to download the file, and set the `access_token` as a Bearer token in the Authorization header. `curl -H 'Authorization: Bearer <ACCESS_TOKEN>' https://{{base-domain}}/rec/archive/download/xyz` **Note:** This field does **not** return for Zoom On-Premise accounts. Instead, this API will return the `file_path` field.

    • file_name

      string — The recording file's name.

    • file_path

      string — The file path to the on-premise account recording. **Note:** This API only returns this field for Zoom on-premise accounts. It does **not** return the `download_url` field.

    • file_size

      number — The recording file's size, in bytes.

    • file_type

      string — The recording file's format. * `MP4` - Video file. * `M4A` - Audio-only file. * `TIMELINE` - Timestamp file of the recording, in JSON file format. To get a timeline file, the **Add a timestamp to the recording** setting **must** be enabled in the [recording settings](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0062627#h_3f14c3a4-d16b-4a3c-bbe5-ef7d24500048). The time will display in the host's timezone. * `TRANSCRIPT` - A transcript of the recording, in VTT format. * `CHAT` - A text file containing chat messages sent during the meeting. * `CC` - A file containing the closed captions of the recording, in VTT file format. * `CSV` - A file containing polling data, in CSV format. A recording file object with file the `CC` or `TIMELINE` value **does not** have the `id`, `status`, `file_size`, `recording_type`, and `play_url` properties.

    • id

      string — The recording file's unique ID. This is included in the general query response.

    • play_url

      string — The URL where the recording file can be opened and played.

    • recording_end

      string, format: date-time — The recording file's end time. This is included in the general query response.

    • recording_start

      string, format: date-time — The recording file's start time.

    • status

      string, possible values: "completed" — The recording file's status.

Example:

{
  "account_id": "Cx3wERazSgup7ZWRHQM8-w",
  "duration": 20,
  "host_id": "_0ctZtY0REqWalTmwvrdIw",
  "id": 6840331990,
  "recording_count": 22,
  "start_time": "2021-03-18T05:41:36Z",
  "topic": "My Personal Meeting",
  "total_size": 22,
  "type": "1",
  "uuid": "BOKXuumlTAGXuqwr3bLyuQ==",
  "recording_play_passcode": "yNYIS408EJygs7rE5vVsJwXIz4-VW7MH",
  "auto_delete": true,
  "auto_delete_date": "2028-07-12",
  "recording_files": [
    {
      "deleted_time": "2021-03-18T05:41:36Z",
      "download_url": "https://example.com/rec/download/Qg75t7xZBtEbAkjdlgbfdngBBBB",
      "file_path": "/9090876528/path01/demo.mp4",
      "file_size": 7220,
      "file_type": "MP4",
      "file_extension": "M4A",
      "id": "72576a1f-4e66-4a77-87c4-f13f9808bd76",
      "meeting_id": "L0AGOEPVR9m5WSOOs/d+FQ==",
      "play_url": "https://example.com/rec/play/Qg75t7xZBtEbAkjdlgbfdngBBBB",
      "recording_end": "2021-03-18T05:41:36Z",
      "recording_start": "2021-03-18T05:41:36Z",
      "recording_type": "shared_screen_with_speaker_view",
      "status": "completed"
    }
  ],
  "download_access_token": "abJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJodHRwczovL2V2ZW50Lnpvb20udXMiLCJhY2NvdW50SWQiOiJNdDZzdjR1MFRBeVBrd2dzTDJseGlBIiwiYXVkIjoiaHR0cHM6Ly9vYXV0aC56b29tLnVzIiwibWlkIjoieFp3SEc0c3BRU2VuekdZWG16dnpiUT09IiwiZXhwIjoxNjI2MTM5NTA3LCJ1c2VySWQiOiJEWUhyZHBqclMzdWFPZjdkUGtrZzh3In0.a6KetiC6BlkDhf1dP4KBGUE1bb2brMeraoD45yhFx0eSSSTFdkHQnsKmlJQ-hdo9Zy-4vQw3rOxlyoHv583JyZ",
  "password": "981651",
  "participant_audio_files": [
    {
      "download_url": "https://example.com/rec/download/Qg75t7xZBtEbAkjdlgbfdngBBBB",
      "file_name": "test.json",
      "file_path": "/9090876528/path01/demo.mp4",
      "file_size": 65536,
      "file_type": "M4A",
      "id": "a2f19f96-9294-4f51-8134-6f0eea108eb2",
      "play_url": "https://example.com/rec/play/Qg75t7xZBtEbAkjdlgbfdngBBBB",
      "recording_end": "2021-06-30T22:14:57Z",
      "recording_start": "2021-06-30T22:14:57Z",
      "status": "completed"
    }
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `1010` <br> User not found on this account: {accountId}. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User "{userId}" does not exist or does not belong to this account. <br> **Error Code:** `3301` <br> There is no recording for this meeting. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rate-limits/).

Delete meeting or webinar recordings

  • Method: DELETE
  • Path: /accounts/{accountId}/meetings/{meetingId}/recordings
  • Tags: Cloud Recording

Delete all of a meeting's or webinar's recording files.

Prerequisites

Scopes: recording:master

Granular Scopes: cloud_recording:delete:meeting_recording:master

Rate Limit Label: LIGHT

Responses

Status: 204 The recording was successfully deleted.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `1010` <br> User does not belong to this account: {accountId}. <br> **Error Code:** `3310` <br> This recording was selected for a simulive webinar. You cannot delete or trash it. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User {userId} does not exist or does not belong to this account.<br> <br> **Error Code:** `3301` <br> There is no recording for this meeting. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Get a meeting or webinar recording's analytics details

  • Method: GET
  • Path: /accounts/{accountId}/meetings/{meetingId}/recordings/analytics_details
  • Tags: Cloud Recording

Retrieve a meeting or webinar recording's analytics details. Maximum duration: 1 month.

Granular Scopes: cloud_recording:read:recording_analytics_details:master

Responses

Status: 200 **HTTP Status Code:** `200` Analytics Detail listed successfully.
Content-Type: application/json
  • analytics_details

    array — Analytics Detail.

    Items:

    • date_time

      string, format: date-time — Explicit time to watch or download the recording.

    • duration

      integer — When the query type is `by_view`, this field indicates the viewing time, unit: seconds

    • email

      string — The user's email who downloaded this Meeting Recording.

    • name

      string — The user's name who watched or downloaded.

  • from

    string, format: date — The queried start date

  • next_page_token

    string — The next page token is used to paginate through large result sets. A next page token will be returned whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes.

  • page_size

    integer — The number of records returned within a single API call.

  • to

    string, format: date — The queried end date.

  • total_records

    integer — The total number of all the records available across pages.

Example:

{
  "from": "2020-07-30",
  "to": "2020-07-30",
  "next_page_token": "R4aF9Oj0fVM2hhezJTEmSKaBSkfesDwGy42",
  "page_size": 30,
  "total_records": 5,
  "analytics_details": [
    {
      "date_time": "2021-07-04T22:14:57Z",
      "name": "2",
      "email": "2",
      "duration": 60
    }
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `1010` <br> User not found on this account: {accountId}. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User "{userId}" does not exist or does not belong to this account. <br> **Error Code:** `3301` <br> There is no recording for this meeting. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Get a meeting or webinar recording's analytics summary

  • Method: GET
  • Path: /accounts/{accountId}/meetings/{meetingId}/recordings/analytics_summary
  • Tags: Cloud Recording

Retrieve meeting recording's analytics summary. Maximum duration: 1 month.

Granular Scopes: cloud_recording:read:recording_analytics_summary:master

Responses

Status: 200 **HTTP Status Code:** `200` Analytics Summary listed successfully.
Content-Type: application/json
  • analytics_summary

    array — Analytics Summary.

    Items:

    • date

      string — Date of viewing or downloading the recording.

    • downloads_total_count

      integer — The number of people who downloaded this Meeting Recording.

    • views_total_count

      integer — The number of people who have watched this Meeting Recording.

  • from

    string, format: date — The queried start date

  • to

    string, format: date — The queried end date.

Example:

{
  "from": "2020-07-30",
  "to": "2020-07-30",
  "analytics_summary": [
    {
      "date": "2022-07-06",
      "views_total_count": 2,
      "downloads_total_count": 2
    }
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `1010` <br> User not found on this account: {accountId}. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User "{userId}" does not exist or does not belong to this account. <br> **Error Code:** `3301` <br> There is no recording for this meeting. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

List recording registrants

  • Method: GET
  • Path: /accounts/{accountId}/meetings/{meetingId}/recordings/registrants
  • Tags: Cloud Recording

Get a list of registrants of a past meeting's on-demand cloud recordings. Users must register to view the recordings.

Scopes: recording:master

Granular Scopes: cloud_recording:read:list_recording_registrants:master

Rate Limit Label: MEDIUM

Responses

Status: 200 **HTTP Status Code:** `200` Registrants returned.
Content-Type: application/json

All of:

All of:

  • next_page_token

    string — Use the next page token to paginate through large result sets. A next page token is returned whenever the set of available results exceeds the current page size. This token's expiration period is 15 minutes.

  • page_count

    integer — The number of pages returned for the request made.

  • page_number

    integer, default: 1 — **Deprecated.** We will no longer support this field in a future release. Instead, use the `next_page_token` for pagination.

  • page_size

    integer, default: 30 — The number of records returned with a single API call.

  • total_records

    integer — The total number of all the records available across pages.

  • registrants

    array — Information about the cloud recording registrants.

    Items:

    All of:

    • id

      string — The registrant's ID.

    All of:

    • email (required)

      string, format: email — The registrant's email address. See [Email address display rules](https://developers.zoom.us/docs/api/rest/using-zoom-apis/#email-address-display-rules) for return value details.

    • first_name (required)

      string — The registrant's first name.

    • address

      string — The registrant's address.

    • city

      string — The registrant's city.

    • comments

      string — The registrant's questions and comments.

    • country

      string — The registrant's two-letter [country code](https://developers.zoom.us/docs/api/rest/other-references/abbreviation-lists/#countries).

    • custom_questions

      array — Information about custom questions.

      Items:

      • title

        string — The custom question's title.

      • value

        string — The custom question's response value. This has a limit of 128 characters.

    • industry

      string — The registrant's industry.

    • job_title

      string — The registrant's job title.

    • last_name

      string — The registrant's last name.

    • no_of_employees

      string, possible values: "", "1-20", "21-50", "51-100", "101-250", "251-500", "501-1,000", "1,001-5,000", "5,001-10,000", "More than 10,000" — The registrant's number of employees. * `1-20` * `21-50` * `51-100` * `101-250` * `251-500` * `501-1,000` * `1,001-5,000` * `5,001-10,000` * `More than 10,000`

    • org

      string — The registrant's organization.

    • phone

      string — The registrant's phone number.

    • purchasing_time_frame

      string, possible values: "", "Within a month", "1-3 months", "4-6 months", "More than 6 months", "No timeframe" — The registrant's purchasing time frame. * `Within a month` * `1-3 months` * `4-6 months` * `More than 6 months` * `No timeframe`

    • role_in_purchase_process

      string, possible values: "", "Decision Maker", "Evaluator/Recommender", "Influencer", "Not involved" — The registrant's role in the purchase process. * `Decision Maker` * `Evaluator/Recommender` * `Influencer` * `Not involved`

    • state

      string — The registrant's state or province.

    • status

      string, possible values: "approved", "denied", "pending" — The registrant's status. * `approved` - Registrant is approved. * `denied` - Registrant is denied. * `pending` - Registrant is waiting for approval.

    • zip

      string — The registrant's ZIP or postal code.

Example:

{
  "next_page_token": "w7587w4eiyfsudgf",
  "page_count": 1,
  "page_size": 30,
  "total_records": 20,
  "registrants": [
    {
      "id": "3Z7sEm0TQQieLav3c3OD_g",
      "address": "1800 Amphibious Blvd.",
      "city": "Mountain View",
      "comments": "Looking forward to the discussion.",
      "country": "US",
      "custom_questions": [
        {
          "title": "What do you hope to learn from this?",
          "value": "Look forward to learning how you come up with new recipes and what other services you offer."
        }
      ],
      "email": "jchill@example.com",
      "first_name": "Jill",
      "industry": "Food",
      "job_title": "Chef",
      "last_name": "Chill",
      "no_of_employees": "1-20",
      "org": "Cooking Org",
      "phone": "5550100",
      "purchasing_time_frame": "1-3 months",
      "role_in_purchase_process": "Influencer",
      "state": "CA",
      "status": "approved",
      "zip": "94045"
    }
  ]
}
Status: 404 **HTTP Status Code:** `404` <br> Not Found
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Create a recording registrant

  • Method: POST
  • Path: /accounts/{accountId}/meetings/{meetingId}/recordings/registrants
  • Tags: Cloud Recording

Register a user to gain access to On-demand cloud recordings of a previous meeting.

Cloud recordings of past Zoom meetings can be made on-demand. Users should be registered to view these recordings.

Scopes: recording:master

Granular Scopes: cloud_recording:write:recording_registrant:master

Rate Limit Label: LIGHT

Request Body

Content-Type: application/json

All of:

  • email (required)

    string, format: email — The registrant's email address. See [Email address display rules](https://developers.zoom.us/docs/api/rest/using-zoom-apis/#email-address-display-rules) for return value details.

  • first_name (required)

    string — The registrant's first name.

  • address

    string — The registrant's address.

  • city

    string — The registrant's city.

  • comments

    string — The registrant's questions and comments.

  • country

    string — The registrant's two-letter [country code](https://developers.zoom.us/docs/api/rest/other-references/abbreviation-lists/#countries).

  • custom_questions

    array — Information about custom questions.

    Items:

    • title

      string — The title of the custom question.

    • value

      string — The custom question's response value. This has a limit of 128 characters.

  • industry

    string — The registrant's industry.

  • job_title

    string — The registrant's job title.

  • last_name

    string — The registrant's last name.

  • no_of_employees

    string, possible values: "", "1-20", "21-50", "51-100", "101-250", "251-500", "501-1,000", "1,001-5,000", "5,001-10,000", "More than 10,000" — The registrant's number of employees. * `1-20` * `21-50` * `51-100` * `101-250` * `251-500` * `501-1,000` * `1,001-5,000` * `5,001-10,000` * `More than 10,000`

  • org

    string — The registrant's organization.

  • phone

    string — The registrant's phone number.

  • purchasing_time_frame

    string, possible values: "", "Within a month", "1-3 months", "4-6 months", "More than 6 months", "No timeframe" — The registrant's purchasing time frame. * `Within a month` * `1-3 months` * `4-6 months` * `More than 6 months` * `No timeframe`

  • role_in_purchase_process

    string, possible values: "", "Decision Maker", "Evaluator/Recommender", "Influencer", "Not involved" — The registrant's role in the purchase process. * `Decision Maker` * `Evaluator/Recommender` * `Influencer` * `Not involved`

  • state

    string — The registrant's state or province.

  • status

    string, possible values: "approved", "denied", "pending" — The registrant's status. * `approved` - Registrant is approved. * `denied` - Registrant is denied. * `pending` - Registrant is waiting for approval.

  • zip

    string — The registrant's ZIP or postal code.

Example:

{
  "address": "1800 Amphibious Blvd.",
  "city": "Mountain View",
  "comments": "Looking forward to the discussion.",
  "country": "US",
  "custom_questions": [
    {
      "title": "What do you hope to learn from this?",
      "value": "Look forward to learning how you come up with new recipes and what other services you offer."
    }
  ],
  "email": "jchill@example.com",
  "first_name": "Jill",
  "industry": "Food",
  "job_title": "Chef",
  "last_name": "Chill",
  "no_of_employees": "1-20",
  "org": "Cooking Org",
  "phone": "5550100",
  "purchasing_time_frame": "1-3 months",
  "role_in_purchase_process": "Influencer",
  "state": "CA",
  "status": "approved",
  "zip": "94045"
}

Responses

Status: 201 **HTTP Status Code:** `201` Registration submitted.
Content-Type: application/json
  • id

    integer, format: int64 — [Meeting ID](https://support.zoom.us/hc/en-us/articles/201362373-What-is-a-Meeting-ID-): Unique identifier of the meeting in &quot;**long**&quot; format(represented as int64 data type in JSON), also known as the meeting number.

  • registrant_id

    string — Registrant ID

  • share_url

    string — Share URL for the on-demand recording. This includes the &ldquo;tk&rdquo; token for the registrant. This is similar to the token that Zoom returns in the URL response to join a registered meeting, for example: `url?tk=xxxx`. Except while the meeting registration token can be used to join the meeting, this token can only be used to watch the recording.

  • topic

    string — Meeting Topic

Example:

{
  "id": 6840331980,
  "registrant_id": "3Z7sEm0TQQieLav3c3OD_g",
  "share_url": "https://example.com/rec/share/Qg75t7xZBtEbAkjdlgbfdngBBBB",
  "topic": "My Personal Meeting Room"
}
Status: 404 **HTTP Status Code:** `404` <br> Not Found
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Get registration questions

  • Method: GET
  • Path: /accounts/{accountId}/meetings/{meetingId}/recordings/registrants/questions
  • Tags: Cloud Recording

Retrieve a list of questions that are displayed for users to complete when registering to view the recording of a specific meeting.

For on-demand meeting recordings, you can include fields with questions that will be shown to registrants when they register to view the recording.

Learn more about enabling cloud recordings and managing cloud recording settings.

Scopes: recording:master

Granular Scopes: cloud_recording:read:registration_questions:master

Rate Limit Label: LIGHT

Responses

Status: 200 **HTTP Status Code:** `200` Recording registrant question object returned.
Content-Type: application/json
  • custom_questions

    array — Array of registrant custom questions.

    Items:

    • answers

      array — Answer choices for the question. Cannot be used with short answer type.

      Items:

      string

    • required

      boolean — Whether registrants are required to answer custom questions or not.

    • title

      string — The question's title.

    • type

      string, possible values: "short", "single", "multiple" — The type of registration question and answers.

  • questions

    array — Array of registrant questions.

    Items:

    • field_name

      string, possible values: "last_name", "address", "city", "country", "zip", "state", "phone", "industry", "org", "job_title", "purchasing_time_frame", "role_in_purchase_process", "no_of_employees", "comments" — Field name.

    • required

      boolean — Whether the field is required to be answered by the registrant or not.

Example:

{
  "custom_questions": [
    {
      "answers": [
        "true"
      ],
      "required": true,
      "title": "What's your name?",
      "type": "short"
    }
  ],
  "questions": [
    {
      "field_name": "last_name",
      "required": true
    }
  ]
}
Status: 404 **HTTP Status Code:** `404` <br> Not Found
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Update registration questions

  • Method: PATCH
  • Path: /accounts/{accountId}/meetings/{meetingId}/recordings/registrants/questions
  • Tags: Cloud Recording

Update registration questions for users to answer while registering to view a recording.

For on-demand meeting recordings, you can include fields with questions that will be shown to registrants when they register to view the recording.

Learn more about enabling cloud recordings and managing cloud recording settings.

Scopes: recording:master

Granular Scopes: cloud_recording:update:registration_questions:master

Rate Limit Label: LIGHT

Request Body

Content-Type: application/json

All of:

  • custom_questions

    array — Array of registrant custom questions.

    Items:

    • answers

      array — Answer choices for the question. Cannot be used with short answer type.

      Items:

      string

    • required

      boolean — Whether registrants are required to answer custom questions or not.

    • title

      string — The question's title.

    • type

      string, possible values: "short", "single", "multiple" — The type of registration question and answers.

  • questions

    array — Array of registrant questions.

    Items:

    • field_name

      string, possible values: "last_name", "address", "city", "country", "zip", "state", "phone", "industry", "org", "job_title", "purchasing_time_frame", "role_in_purchase_process", "no_of_employees", "comments" — Field name.

    • required

      boolean — Whether the field is required to be answered by the registrant or not.

Example:

{
  "custom_questions": [
    {
      "answers": [
        "true"
      ],
      "required": true,
      "title": "What's your name?",
      "type": "short"
    }
  ],
  "questions": [
    {
      "field_name": "last_name",
      "required": true
    }
  ]
}

Responses

Status: 204 **HTTP Status Code:** `200` Recording registrant questions updated
Status: 404 **HTTP Status Code:** `404` <br> Not Found
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Update a registrant's status

  • Method: PUT
  • Path: /accounts/{accountId}/meetings/{meetingId}/recordings/registrants/status
  • Tags: Cloud Recording

Update a registrant's status. A registrant can either be approved or denied from viewing the on-demand recording.

Learn more about enabling cloud recordings and managing cloud recording settings.

Scopes: recording:master

Granular Scopes: cloud_recording:update:registrant_status:master

Rate Limit Label: MEDIUM

Request Body

Content-Type: application/json
  • action (required)

    string, possible values: "approve", "deny"

  • registrants

    array — List of registrants.

    Items:

    • id

      string

Example:

{
  "action": "approve",
  "registrants": [
    {
      "id": "3Z7sEm0TQQieLav3c3OD_g"
    }
  ]
}

Responses

Status: 204 **HTTP Status Code:** `204` Registrant status updated.
Status: 404 **HTTP Status Code:** `404` <br> Not Found
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Get meeting recording settings

  • Method: GET
  • Path: /accounts/{accountId}/meetings/{meetingId}/recordings/settings
  • Tags: Cloud Recording

Retrieve settings applied to a meeting's cloud recording.

Response includes recording content access information, which requires the current user to have the View the recording content permission to access it.

Learn more about enabling cloud recordings and managing cloud recording settings.

Scopes: recording:master

Granular Scopes: cloud_recording:read:recording_settings:master

Rate Limit Label: LIGHT

Responses

Status: 200 **HTTP Status Code:** `200` Meeting recording settings returned.
Content-Type: application/json
  • approval_type

    integer, possible values: 0, 1, 2 — The registration approval type. `0` - Automatically approve the registration when a user registers. `1` - Manually approve or deny the registration of a user. `2` - No registration required to view the recording.

  • authentication_domains

    string — The domains for authentication.

  • authentication_name

    string — The name for authentication.

  • authentication_option

    string — The options for authentication.

  • auto_delete

    boolean — Auto-delete status of a meeting's [cloud recording](https://support.zoom.us/hc/en-us/articles/203741855-Cloud-Recording). Prerequisite: To get the auto-delete status, the host of the recording must have the recording setting "Delete cloud recordings after a specified number of days" enabled.

  • auto_delete_date

    string — The date when the recording will be auto-deleted when `auto_delete` is `true`. Otherwise, no date is returned.

  • on_demand

    boolean — This field determines whether registration is required to view the recording.

  • password

    string — This field enables passcode protection for the recording by setting a passcode. The passcode must have a minimum of **eight** characters with a mix of numbers, letters and special characters. **Note:** If the account owner or the admin has set minimum passcode strength requirements for recordings through Account Settings, the passcode value provided here must meet those requirements. If the requirements are enabled, you can view those requirements by calling either the [**Get user settings**](/api-reference/zoom-api/methods#operation/userSettings) API or the [**Get account settings**](/api-reference/zoom-api/ma#operation/accountSettings) API.

  • recording_authentication

    boolean — Only allow authenticated users to view.

  • send_email_to_host

    boolean — Enable sending an email to the host when someone registers to view the recording. This applies for On-demand recordings only.

  • share_recording

    string, possible values: "publicly", "internally", "none" — Determine how the meeting recording is shared.

  • show_social_share_buttons

    boolean — Show social share buttons on the registration page. This applies for On-demand recordings only.

  • topic

    string — The recording's name.

  • viewer_download

    boolean — Determine whether a viewer can download the recording file or not.

Example:

{
  "approval_type": 0,
  "authentication_domains": "example.com",
  "authentication_option": "auth_option",
  "authentication_name": "auth display name",
  "on_demand": false,
  "password": "975238724",
  "recording_authentication": true,
  "send_email_to_host": false,
  "share_recording": "publicly",
  "show_social_share_buttons": true,
  "topic": "My Personal Meeting Room",
  "viewer_download": true,
  "auto_delete": true,
  "auto_delete_date": "2028-07-12"
}
Status: 404 **HTTP Status Code:** `404` <br> Not Found
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rate-limits/).

Update meeting recording settings

  • Method: PATCH
  • Path: /accounts/{accountId}/meetings/{meetingId}/recordings/settings
  • Tags: Cloud Recording

Update settings applied to a meeting's cloud recording. The request contains the recording content access information, which requires the current user to have the view recording content and recording editing permissions to access.

Learn more about enabling cloud recordings and managing cloud recording settings.

Scopes: recording:master

Granular Scopes: cloud_recording:update:recording_settings:master

Rate Limit Label: LIGHT

Request Body

Content-Type: application/json
  • approval_type

    integer, possible values: 0, 1, 2 — The approval type for the registration. `0`- Automatically approve the registration when a user registers. `1` - Manually approve or deny the registration of a user. `2` - No registration required to view the recording.

  • authentication_domains

    string — The authentication domains.

  • authentication_option

    string — The authentication options.

  • auto_delete

    boolean — Update the auto-delete status of a meeting's [cloud recording](https://support.zoom.us/hc/en-us/articles/203741855-Cloud-Recording). Prerequisite: To update the auto-delete status, the host of the recording must have the recording setting "Delete cloud recordings after a specified number of days" enabled.

  • on_demand

    boolean — Determine whether the registration is required to view the recording.

  • password

    string — Enable passcode protection for the recording by setting a passcode. The passcode must have a minimum of **eight** characters with a mix of numbers, letters and special characters. **Note:** If the account owner or the admin has set minimum passcode strength requirements for recordings through Account Settings, the passcode value provided here must meet those requirements. If the requirements are enabled, you can view those requirements by calling either the [**Get user settings**](/api-reference/zoom-api/methods#operation/userSettings) API or the [**Get account settings**](/api-reference/zoom-api/ma#operation/accountSettings) API.

  • recording_authentication

    boolean — Indicate that only authenticated users can view.

  • send_email_to_host

    boolean — Send an email to host when someone registers to view the recording. This setting applies for On-demand recordings only.

  • share_recording

    string, possible values: "publicly", "internally", "none" — Determine how the meeting recording is shared.

  • show_social_share_buttons

    boolean — Show social share buttons on registration page. This setting applies for On-demand recordings only.

  • topic

    string — The name of the recording.

  • viewer_download

    boolean — Determine whether a viewer can download the recording file or not.

Example:

{
  "approval_type": 0,
  "authentication_domains": "test.com",
  "authentication_option": "auth_option",
  "on_demand": false,
  "password": "975238724",
  "recording_authentication": true,
  "send_email_to_host": false,
  "share_recording": "publicly",
  "show_social_share_buttons": true,
  "topic": "My Personal Meeting Room",
  "viewer_download": true,
  "auto_delete": false
}

Responses

Status: 204 **HTTP Status Code:** `204` Meeting recording setting's updated.
Status: 404 **HTTP Status Code:** `404` <br> Not Found
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Delete a recording file for a meeting or webinar

  • Method: DELETE
  • Path: /accounts/{accountId}/meetings/{meetingId}/recordings/{recordingId}
  • Tags: Cloud Recording

Delete a specific recording file from a meeting or webinar. Note: To use this API, you must enable the The host can delete cloud recordings setting. Find this setting in the Recording tab of the Settings interface in the Zoom web portal.

Scopes: recording:master

Granular Scopes: cloud_recording:delete:recording_file:master

Rate Limit Label: LIGHT

Responses

Status: 204 The recording file was successfully deleted.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `1010` <br> User does not belong to this account: {accountId}.<br> <br> **Error Code:** `3303` <br> You can not delete an uncompleted meeting. <br> **Error Code:** `3310` <br> This recording was selected for a simulive webinar. You cannot delete or trash it. <br> **Error Code:** `3310` <br> Unable to delete this file because this recording is being used for Zoom IQ for Sales. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User {userId} does not exist or does not belong to this account.<br> <br> **Error Code:** `3301` <br> There is no recording for this meeting. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Recover a single recording

  • Method: PUT
  • Path: /accounts/{accountId}/meetings/{meetingId}/recordings/{recordingId}/status
  • Tags: Cloud Recording

Recover a single recording file from the meeting.

Zoom lets users recover recordings from trash for up to 30 days from the deletion date.

Scopes: recording:master

Granular Scopes: cloud_recording:update:recover_single_recording:master

Rate Limit Label: LIGHT

Request Body

Content-Type: application/json
  • action

    string, possible values: "recover"

Example:

{
  "action": "recover"
}

Responses

Status: 204 **HTTP Status Code:** `204` Meeting recording recovered.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `1010` <br> User does not belong to this account: {accountId}. <br> **Error Code:** `3309` <br> Not enough cloud storage available. Either purchase additional storage or delete cloud recordings to free up storage. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User {userId} does not exist or does not belong to this account.<br> <br> **Error Code:** `3301` <br> There is no recording for this meeting. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Recover meeting recordings

  • Method: PUT
  • Path: /accounts/{accountId}/meetings/{meetingUUID}/recordings/status
  • Tags: Cloud Recording

Recover all deleted cloud recordings of a specific meeting.
Zoom lets users recover recordings from trash for up to 30 days from the deletion date.

Prerequisites:

  • A Pro user with Cloud Recording enabled.

Scopes: recording:master

Granular Scopes: cloud_recording:update:recover_meeting_recordings:master

Rate Limit Label: LIGHT

Request Body

Content-Type: application/json
  • action

    string, possible values: "recover"

Example:

{
  "action": "recover"
}

Responses

Status: 200 **HTTP Status Code:** `200` Recordings recovered. **Error Code:** `200` You do not have the right permissions.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `1010` <br> User does not belong to this account: {accountId}. <br> **Error Code:** `3309` <br> Not enough cloud storage available. Either purchase additional storage or delete cloud recordings to free up storage. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User does not exist: {userId}.<br> <br> **Error Code:** `3301` <br> There is no recording for this meeting. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

List an account's recordings

  • Method: GET
  • Path: /accounts/{accountId}/recordings
  • Tags: Cloud Recording

Lists the cloud recordings available on an account.

To access a passcode protected cloud recording, send the access token through the authorization header. curl -H "Authorization: Bearer ACCESS_TOKEN" https://BASE_DOMAIN/rec/archive/download/xyz

Prerequisites:

  • A Pro or a higher paid plan with Cloud Recording option enabled.

Scopes: recording:master

Granular Scopes: cloud_recording:read:list_account_recordings:master,cloud_recording:read:list_account_recordings:admin

Rate Limit Label: MEDIUM

Responses

Status: 200 **Response Error Code:** `200` Only available for Paid accounts. **HTTP Status Code:** `200` Recordings listed successfully.
Content-Type: application/json
  • from

    string, format: date — The queried start date.

  • meetings

    array — The information about the meetings.

    Items:

    • duration

      integer — The meeting's scheduled duration.

    • external_storage_addr

      string — NFS addres.s

    • host_id

      string — The meeting host's user ID.

    • id

      integer — The meeting's ID.

    • instance_id

      string — The unique ID for the hybrid recorder or recording connector. Only RC and HRC recording returns this data.

    • rc_zone

      string — Recording zone used in the Zoom Node Platform. Only RC recording returns this data.

    • recording_count

      integer — The total number of recordings retrieved from the account.

    • recording_files

      array — The information about the recording files.

      Items:

      • download_url

        string — The URL to download the the recording. If a user has authorized and installed your OAuth app that contains recording scopes, use the user's [OAuth access token](https://developers.zoom.us/docs/integrations/oauth/) to download the file. Send the `access_token` as a Bearer token in the Authorization header. `https://{{base-domain}}/rec/archive/download/xxx?access_token={{OAuth-access-token}}` **Note:** This field does **not** return for [Zoom on-premise accounts](https://support.zoom.us/hc/en-us/articles/360034064852-Zoom-On-Premise-Deployment). Instead, this API will return the `file_path` field.

      • file_extension

        string, possible values: "MP4", "M4A", "TXT", "VTT", "CSV", "JSON", "JPG" — The file extension type of the recording file.

      • file_path

        string — The file path to the on-premise account recording. **Note:** This API only returns this field for [Zoom on-premise accounts](https://support.zoom.us/hc/en-us/articles/360034064852-Zoom-On-Premise-Deployment). It does **not** return the `download_url` field.

      • file_size

        integer — The size of the recording file, in bytes.

      • file_type

        string, possible values: "MP4", "M4A", "CHAT", "TRANSCRIPT", "CSV", "TB", "CC", "CHAT_MESSAGE", "SUMMARY", "TIMELINE" — The recording file's type. * `MP4` &mdash; Video file. * `M4A` &mdash; Audio-only file. * `CHAT` &mdash; A TXT file containing in-meeting chat messages. * `TRANSCRIPT` &mdash; A transcription file, in VTT format. * `CC` &mdash; A file containing the closed captions of the recording, in VTT file format. * `CSV` &mdash; A file containing polling data, in CSV format. * `TB` &mdash; A timestamp file, in JSON format. A recording file with the `CC` or `TB` type value will not return the `id`, `status`, `file_size`, `recording_type`, and `play_url` responses.

      • id

        string — The recording's ID.

      • meeting_id

        string — The recorded meeting's ID.

      • play_url

        string — The URL that indicates the recording can be played.

      • recording_end

        string, format: date-time — The date and time when the recording ended.

      • recording_start

        string, format: date-time — The date and time when the recording started.

      • recording_type

        string, possible values: "shared_screen_with_speaker_view(CC)", "shared_screen_with_speaker_view", "shared_screen_with_gallery_view", "active_speaker", "gallery_view", "shared_screen", "audio_only", "audio_transcript", "chat_file", "poll", "host_video", "closed_caption", "timeline", "thumbnail", "audio_interpretation", "summary", "summary_next_steps", "summary_smart_chapters", "sign_interpretation", "production_studio" — The recording file type. * `shared_screen_with_speaker_view(CC)` * `shared_screen_with_speaker_view` * `shared_screen_with_gallery_view` * `gallery_view` * `shared_screen` * `audio_only` * `audio_transcript` * `chat_file` * `active_speaker` * `host_video` * `audio_only_each_participant` * `cc_transcript` * `closed_caption` * `poll` * `timeline` * `thumbnail` * `audio_interpretation` * `summary` * `summary_next_steps` * `summary_smart_chapters` *`sign_interpretation` *`production_studio` For more information, read our [Managing and sharing cloud recordings](https://support.zoom.us/hc/en-us/articles/205347605-Managing-and-sharing-cloud-recordings#h_9898497b-e736-4980-a749-d55608f10773) documentation.

      • status

        string, possible values: "completed", "processing" — The participant audio file's processing status: * `completed` &mdash; The processing of the file is complete. * `processing` &mdash; The file is processing.

    • service_name

      string — The name of the Zoom Node Service.

    • start_time

      string, format: date-time — The date and time when the meeting started.

    • topic

      string — The meeting's topic.

    • total_size

      integer — The total size of the recording file, in bytes.

    • type

      integer, possible values: 1, 2, 3, 4, 5, 6, 7, 8, 9, 99 — The recording's associated type of meeting or webinar: If the recording is of a meeting: * `1` &mdash; Instant meeting. * `2` &mdash; Scheduled meeting. * `3` &mdash; A recurring meeting with no fixed time. * `4` &mdash; A meeting created via PMI (Personal Meeting ID). * `7` &mdash; A [Personal Audio Conference](https://support.zoom.us/hc/en-us/articles/204517069-Getting-Started-with-Personal-Audio-Conference) (PAC). * `8` - Recurring meeting with a fixed time. If the recording is of a webinar: * `5` &mdash; A webinar. * `6` &mdash; A recurring webinar without a fixed time * `9` &mdash; A recurring webinar with a fixed time. If the recording is **not** from a meeting or webinar: * `99` &mdash; A recording uploaded via the [**Recordings**](https://zoom.us/recording) interface on the Zoom Web Portal.

    • uuid

      string — The meeting's universally unique ID.

  • next_page_token

    string — Use the next page token to paginate through large result sets. A next page token is returned whenever the set of available results exceeds the current page size. This token's expiration period is 15 minutes.

  • page_size

    integer — The number of records returned within a single API call.

  • to

    string, format: date — The queried end date.

  • total_records

    integer — The total number of all the records available across pages.

Example:

{
  "from": "2020-07-30",
  "to": "2020-07-30",
  "next_page_token": "R4aF9Oj0fVM2hhezJTEmSKaBSkfesDwGy42",
  "page_size": 30,
  "total_records": 5,
  "meetings": [
    {
      "duration": 60,
      "host_id": "x1yCzABCDEfg23HiJKl4mN",
      "id": 1234567890,
      "recording_count": 1,
      "recording_files": [
        {
          "id": "ed6c2f27-2ae7-42f4-b3d0-835b493e4fa8",
          "meeting_id": "098765ABCD",
          "recording_start": "2021-06-30T22:14:57Z",
          "recording_end": "2021-06-30T23:15:41Z",
          "recording_type": "audio_only",
          "file_type": "M4A",
          "file_size": 246560,
          "play_url": "https://example.com/rec/play/Qg75t7xZBtEbAkjdlgbfdngBBBB",
          "download_url": "https://example.com/rec/download/Qg75t7xZBtEbAkjdlgbfdngBBBB",
          "status": "completed"
        },
        {
          "id": "388ffb46-1541-460d-8447-4624451a1db7",
          "meeting_id": "098765ABCD",
          "recording_start": "2021-07-02T23:04:51Z",
          "recording_end": "2021-07-02T23:15:00Z",
          "recording_type": "shared_screen_with_speaker_view",
          "file_type": "MP4",
          "file_size": 282825,
          "file_extension": "MP4",
          "play_url": "https://example.com/rec/play/Qg75t7xZBtEbAkjdlgbfdngCCCC",
          "download_url": "https://example.com/rec/download/Qg75t7xZBtEbAkjdlgbfdngCCCC",
          "status": "completed"
        }
      ],
      "start_time": "2021-06-30T22:05:17Z",
      "topic": "My Personal Recording",
      "total_size": 3328371,
      "type": 4,
      "uuid": "4444AAAiAAAAAiAiAiiAii==",
      "rc_zone": "zone-1202",
      "instance_id": "01fe6a07d0462b39717fa009f32541ab803e6690a4169d82a66f9a8a4da84225 ",
      "service_name": "recording_1 ",
      "external_storage_addr": "192.163.1.2"
    }
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> The selected groups of role scope have more than {0} members. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

List all recordings

  • Method: GET
  • Path: /accounts/{accountId}/users/{userId}/recordings
  • Tags: Cloud Recording

Lists all cloud recordings for a user.

For user-level apps, pass the me value instead of the userId parameter. To access a user's passcode protected cloud recording, send the user's OAuth access token as a bearer token in the authorization header.

Example: curl -H "Authorization: Bearer <ACCESS_TOKEN>" https://{{base-domain}}/rec/archive/download/xyz

Prerequisites:

Scopes: recording:master

Granular Scopes: cloud_recording:read:list_user_recordings:master

Rate Limit Label: MEDIUM

Responses

Status: 200 **HTTP Status Code:** `200` List of recording objects returned.
Content-Type: application/json

All of:

  • from

    string, format: date — The start date.

  • to

    string, format: date — The end date.

  • next_page_token

    string — The next page token paginates through a large set of results. A next page token returns whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes.

  • page_count

    integer — The number of pages returned for the request made.

  • page_size

    integer, default: 30 — The number of records returned within a single API call.

  • total_records

    integer — The number of all records available across pages.

  • meetings

    array — List of recordings.

    Items:

    All of:

    All of:

    • account_id

      string — Unique Identifier of the user account.

    • auto_delete

      boolean — Auto-delete status of a meeting's [cloud recording](https://support.zoom.us/hc/en-us/articles/203741855-Cloud-Recording). Prerequisite: To get the auto-delete status, the host of the recording must have the recording setting **Delete cloud recordings after a specified number of days** enabled.

    • auto_delete_date

      string — The date when the recording will be auto-deleted when `auto_delete` is `true`. Otherwise, no date will be returned.

    • duration

      integer — Meeting duration.

    • host_id

      string — ID of the user set as host of meeting.

    • id

      integer — Meeting ID - also known as the meeting number.

    • recording_count

      integer — Number of recording files returned in the response of this API call. This includes the `recording_files` and `participant_audio_files` files.

    • recording_play_passcode

      string — The cloud recording's passcode to be used in the URL. Include fields in the response. The password field requires the user role of the authorized account to enable the **View Recording Content** permission to be returned. This recording's passcode can be directly spliced in `play_url` or `share_url` with `?pwd=` to access and play. For example, 'https://zoom.us/rec/share/**************?pwd=yNYIS408EJygs7rE5vVsJwXIz4-VW7MH'. If you want to use this field, please contact Zoom support.

    • start_time

      string, format: date-time — The time when the meeting started.

    • topic

      string — Meeting topic.

    • total_size

      integer, format: int64 — The total file size of the recording. This includes the `recording_files` and `participant_audio_files` files.

    • type

      string, possible values: "1", "2", "3", "4", "5", "6", "7", "8", "9", "99" — The recording's associated type of meeting or webinar: If the recording is of a meeting: * `1` - Instant meeting. * `2` - Scheduled meeting. * `3` - A recurring meeting with no fixed time. * `4` - A meeting created viaPersonal Meeting ID (PMI). * `7` - A [Personal Audio Conference](https://support.zoom.us/hc/en-us/articles/204517069-Getting-Started-with-Personal-Audio-Conference) (PAC). * `8` - Recurring meeting with a fixed time. If the recording is of a webinar: * `5` - A webinar. * `6` - A recurring webinar without a fixed time * `9` - A recurring webinar with a fixed time. If the recording is **not** from a meeting or webinar: * `99` - A recording uploaded via the [**Recordings**](https://zoom.us/recording) interface on the Zoom Web Portal.

    • uuid

      string — Unique Meeting Identifier. Each instance of the meeting will have its own UUID.

    All of:

    • recording_files

      array — List of recording file.

      Items:

      All of:

      • deleted_time

        string — The time when recording was deleted. Returned in the response only for trash query.

      • download_url

        string — The URL to download the recording. If a user has authorized and installed your OAuth app that contains recording scopes, use the `download_access_token` or the user's [OAuth access token](https://developers.zoom.us/docs/integrations/oauth/) to download the file. Set the token as a Bearer token in the Authorization header. `curl -H 'Authorization: Bearer <ACCESS_TOKEN>' https://{{base-domain}}/rec/archive/download/xyz`. **Note:** This field does **not** return for [Zoom On-Premise accounts](https://support.zoom.us/hc/en-us/articles/360034064852-Zoom-On-Premise-Deployment). Instead, this API will return the `file_path` field. The URL may be a redirect. In that case, use `curl --location` to follow redirects or use another tool, like Postman.

      • file_extension

        string, possible values: "MP4", "M4A", "TXT", "VTT", "CSV", "JSON", "JPG" — The file extension type of the recording file.

      • file_path

        string — The file path to the On-Premise account recording. **Note:** This API only returns this field for [Zoom On-Premise accounts](https://support.zoom.us/hc/en-us/articles/360034064852-Zoom-On-Premise-Deployment). It does **not** return the `download_url` field.

      • file_size

        number — The recording file size.

      • file_type

        string, possible values: "MP4", "M4A", "CHAT", "TRANSCRIPT", "CSV", "TB", "CC", "CHAT_MESSAGE", "SUMMARY" — The recording file type. `MP4` - Video file of the recording. `M4A` Audio-only file of the recording. `TIMELINE` - Timestamp file of the recording in JSON file format. To get a timeline file, the **Add a timestamp to the recording** setting must be enabled in the [recording settings](https://support.zoom.us/hc/en-us/articles/203741855-Cloud-recording#h_3f14c3a4-d16b-4a3c-bbe5-ef7d24500048). The time will display in the host's timezone, set on their Zoom profile. `TRANSCRIPT` - Transcription file of the recording in VTT format. `CHAT` - A TXT file containing in-meeting chat messages that were sent during the meeting. `CC` - File containing closed captions of the recording in VTT file format. `CSV` - File containing polling data in CSV format. A recording file object with file type of either `CC` or `TIMELINE` **does not have** the following properties: `id`, `status`, `file_size`, `recording_type`, and `play_url`. `SUMMARY` - Summary file of the recording in JSON file format.

      • id

        string — The recording file ID. Included in the response of general query.

      • meeting_id

        string — The meeting ID.

      • play_url

        string — The URL to play a recording file.

      • recording_end

        string — The recording end time. Response in general query.

      • recording_start

        string — The recording start time.

      • recording_type

        string, possible values: "shared_screen_with_speaker_view(CC)", "shared_screen_with_speaker_view", "shared_screen_with_gallery_view", "active_speaker", "gallery_view", "shared_screen", "audio_only", "audio_transcript", "chat_file", "poll", "host_video", "closed_caption", "timeline", "thumbnail", "audio_interpretation", "summary", "summary_next_steps", "summary_smart_chapters", "sign_interpretation", "production_studio" — The recording type. `shared_screen_with_speaker_view(CC)` `shared_screen_with_speaker_view` `shared_screen_with_gallery_view` `active_speaker` `gallery_view` `shared_screen` `audio_only` `audio_transcript` `chat_file` `poll` `timeline` `closed_caption` `audio_interpretation` `summary` `summary_next_steps` `summary_smart_chapters` `sign_interpretation` `production_studio`

      • status

        string, possible values: "completed" — The recording status.

Example:

{
  "from": "2022-01-01",
  "to": "2022-04-01",
  "next_page_token": "Tva2CuIdTgsv8wAnhyAdU3m06Y2HuLQtlh3",
  "page_count": 1,
  "page_size": 30,
  "total_records": 1,
  "meetings": [
    {
      "account_id": "Cx3wERazSgup7ZWRHQM8-w",
      "duration": 20,
      "host_id": "_0ctZtY0REqWalTmwvrdIw",
      "id": 6840331990,
      "recording_count": 22,
      "start_time": "2021-03-18T05:41:36Z",
      "topic": "My Personal Meeting",
      "total_size": 22,
      "type": "1",
      "uuid": "BOKXuumlTAGXuqwr3bLyuQ==",
      "recording_play_passcode": "yNYIS408EJygs7rE5vVsJwXIz4-VW7MH",
      "auto_delete": true,
      "auto_delete_date": "2028-07-12",
      "recording_files": [
        {
          "deleted_time": "2021-03-18T05:41:36Z",
          "download_url": "https://example.com/rec/download/Qg75t7xZBtEbAkjdlgbfdngBBBB",
          "file_path": "/9090876528/path01/demo.mp4",
          "file_size": 7220,
          "file_type": "MP4",
          "file_extension": "M4A",
          "id": "72576a1f-4e66-4a77-87c4-f13f9808bd76",
          "meeting_id": "L0AGOEPVR9m5WSOOs/d+FQ==",
          "play_url": "https://example.com/rec/play/Qg75t7xZBtEbAkjdlgbfdngBBBB",
          "recording_end": "2021-03-18T05:41:36Z",
          "recording_start": "2021-03-18T05:41:36Z",
          "recording_type": "shared_screen_with_speaker_view",
          "status": "completed"
        }
      ]
    }
  ]
}
Status: 401 **HTTP Status Code:** `401` <br> Unauthorized **Error Code:** `124` <br> Requires an access token. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User {userId} does not exist, or does not belong to this account. <br> **Error Code:** `3301` <br> There is no recording for this session. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

List H.323/SIP devices

  • Method: GET
  • Path: /accounts/{accountId}/h323/devices
  • Tags: H323 Devices

A H.323 or SIP device can make a video call to a Room Connector to join a Zoom cloud meeting. A Room Connector can also call out to a H.323 or SIP device to join a Zoom cloud meeting. Use this API to list all H.323/SIP Devices on a Zoom account.

Scopes: h323:master

Rate Limit Label: MEDIUM

Responses

Status: 200 **HTTP Status Code:** `200` List of H.323/SIP devices returned. **Error Code:** `200` No permission.
Content-Type: application/json

All of:

  • next_page_token

    string — The next page token is used to paginate through large result sets. A next page token will be returned whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes.

  • page_count

    integer — The number of pages returned for the request made.

  • page_number

    integer, default: 1 — **Deprecated.** We will no longer support this field in a future release. Instead, use the `next_page_token` for pagination.

  • page_size

    integer, default: 30 — The number of records returned with a single API call.

  • total_records

    integer — The total number of all the records available across pages.

  • devices

    array — List of H.323/SIP Device objects.

    Items:

    All of:

    • id

      string — Device ID.

    • encryption (required)

      string, possible values: "auto", "yes", "no" — Device encryption: `auto` - auto. `yes` - yes. `no` - no.

    • ip (required)

      string — Device IP.

    • name (required)

      string — Device name.

    • protocol (required)

      string, possible values: "H.323", "SIP" — Device protocol: `H.323` - H.323. `SIP` - SIP.

Example:

{
  "next_page_token": "w7587w4eiyfsudgf",
  "page_count": 1,
  "page_size": 30,
  "total_records": 20,
  "devices": [
    {
      "id": "abceHewahkrehwiK",
      "encryption": "auto",
      "ip": "127.0.0.1",
      "name": "api_test_20190508",
      "protocol": "H.323"
    }
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request
Status: 401 **HTTP Status Code:** `401` <br> Unauthorized
Status: 403 **HTTP Status Code:** `403` <br> Forbidden
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Create a H.323/SIP device

  • Method: POST
  • Path: /accounts/{accountId}/h323/devices
  • Tags: H323 Devices

A H.323 or SIP device can make a video call to a Room Connector to join a Zoom cloud meeting. A Room Connector can also call out to a H.323 or SIP device to join a Zoom cloud meeting. Use this API to add a H.323/SIP device to your Zoom account

Scopes: h323:master

Rate Limit Label: LIGHT

Request Body

Content-Type: application/json
  • encryption (required)

    string, possible values: "auto", "yes", "no" — Device encryption: `auto` - auto. `yes` - yes. `no` - no.

  • ip (required)

    string — Device IP.

  • name (required)

    string — Device name.

  • protocol (required)

    string, possible values: "H.323", "SIP" — Device protocol: `H.323` - H.323. `SIP` - SIP.

Example:

{
  "encryption": "auto",
  "ip": "127.0.0.1",
  "name": "api_test_20190508",
  "protocol": "H.323"
}

Responses

Status: 201 **HTTP Status Code:** `201` H.323/SIP device created.
Content-Type: application/json

All of:

  • id

    string — Device ID.

  • encryption (required)

    string, possible values: "auto", "yes", "no" — Device encryption: `auto` - auto. `yes` - yes. `no` - no.

  • ip (required)

    string — Device IP.

  • name (required)

    string — Device name.

  • protocol (required)

    string, possible values: "H.323", "SIP" — Device protocol: `H.323` - H.323. `SIP` - SIP.

Example:

{
  "id": "abceHewahkrehwiK",
  "encryption": "auto",
  "ip": "127.0.0.1",
  "name": "api_test_20190508",
  "protocol": "H.323"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> No permission. <br>
Status: 401 **HTTP Status Code:** `401` <br> Unauthorized
Status: 403 **HTTP Status Code:** `403` <br> Forbidden
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `2020` <br> H.323 device's display name {displayName} is already in use. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Delete a H.323/SIP device

  • Method: DELETE
  • Path: /accounts/{accountId}/h323/devices/{deviceId}
  • Tags: H323 Devices

A H.323 or SIP device can make a video call to a Room Connector to join a Zoom cloud meeting. A Room Connector can also call out to a H.323 or SIP device to join a Zoom cloud meeting. Use this API to delete a H.323/SIP device from your Zoom account.

Scopes: h323:master

Rate Limit Label: LIGHT

Responses

Status: 200 You do not have the permission to delete this device.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request
Status: 401 **HTTP Status Code:** `401` <br> Unauthorized
Status: 403 **HTTP Status Code:** `403` <br> Forbidden
Status: 404 **HTTP Status Code:** `404` <br> Not Found
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Update a H.323/SIP device

  • Method: PATCH
  • Path: /accounts/{accountId}/h323/devices/{deviceId}
  • Tags: H323 Devices

Edit information for a H.323/SIP device from your Zoom account.

A H.323 or SIP device can make a video call to a Room Connector to join a Zoom cloud meeting. A Room Connector can also call out to a H.323 or SIP device to join a Zoom cloud meeting.

Scopes: h323:master

Rate Limit Label: LIGHT

Request Body

Content-Type: application/json
  • encryption (required)

    string, possible values: "auto", "yes", "no" — Device encryption: `auto` - auto. `yes` - yes. `no` - no.

  • ip (required)

    string — Device IP.

  • name (required)

    string — Device name.

  • protocol (required)

    string, possible values: "H.323", "SIP" — Device protocol. `H.323` - H.323. `SIP` - SIP.

Example:

{
  "encryption": "auto",
  "ip": "127.0.0.1",
  "name": "api_test_20190508",
  "protocol": "H.323"
}

Responses

Status: 204 **HTTP Status Code:** `204` H.323/SIP device updated.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request
Status: 401 **HTTP Status Code:** `401` <br> Unauthorized
Status: 403 **HTTP Status Code:** `403` <br> Forbidden
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `2020` <br> H.323 device's display name {displayName} is already in use. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

In-meeting controls

  • Method: PATCH
  • Path: /accounts/{accountId}/live_meetings/{meetingId}/events
  • Tags: In-Meeting Features

In-meeting controls include starting, stopping, pausing, and resuming a recording; inviting participants; updating the waiting room with a custom message; and starting, stopping, or disabling the AI Companion.

Note: This API's recording control only works for cloud recordings, not for local recordings.

Prerequisites:

Scopes: meeting:master

Granular Scopes: meeting:update:in_meeting_controls:master

Rate Limit Label: MEDIUM

Request Body

Content-Type: application/json
  • method

    string, possible values: "recording.start", "recording.stop", "recording.pause", "recording.resume", "participant.invite", "participant.invite.callout", "participant.invite.room_system_callout", "waiting_room.update", "ai_companion.start", "ai_companion.stop", "ai_companion.disable" — The method that you would like to control. * `recording.start` - Start the recording. * `recording.stop` - Stop the recording. * `recording.pause` - Pause the recording. * `recording.resume` - Resume a paused recording. * `participant.invite` - Invite a participant to the meeting. * `participant.invite.callout` - Invite a participant to the meeting through [call out (phone)](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0062038). * `participant.invite.room_system_callout` - Invite a participant to the meeting through [call out (room system)](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0065721). * `waiting_room.update` - Update the waiting room with a custom message. * `ai_companion.start` - Start the AI Companion. * `ai_companion.stop` - Stop the AI Companion. * `ai_companion.disable` - Disable the AI Companion.

  • params

    object — The in-meeting parameters.

    • ai_companion_mode

      string, possible values: "questions", "summary", "all", default: "all" — Which AI Companion mode to start or stop. Use this field if you pass the `ai_companion.start` or `ai_companion.stop` value for the `method` field. * `questions` — The AI Companion for answering questions. * `summary` — The AI Companion for generating meeting summaries. * `all` — Both modes. If this field is not provided, `all` is used by default.

    • call_type

      string — The type of call out. Use a value of `h323` or `sip`. Use this field if you pass the `participant.invite.room_system_callout` value for the `method` field.

    • contacts

      array — The user's email address or the user ID, up to a maximum of 10 contacts. The account must be a part of the meeting host's account.

      Items:

      • email

        string — The user's email address. Use this value if you do not have the user's ID. If you pass the `id` value, the API ignores this query parameter.

      • id

        string — The user's ID.

    • delete_meeting_assets

      boolean, default: false — Whether to delete all meeting assets - such as transcripts and summaries - when stopping the AI Companion. Use this field only if you pass the `ai_companion.stop` value for the `method` field **and** the `ai_companion_mode` field is set to `all`.

    • device_ip

      string — The user's device IP address or URI. Use this field if you pass the `participant.invite.room_system_callout` value for the `method` field.

    • h323_headers

      object — Enable customers to leverage services that require customization of the FROM header to identify the caller. Use this field if you pass the `participant.invite.room_system_callout` value for the `method` field and the `h323` value for the `call_type` field.

      • from_display_name

        string — Custom name that will be used within the h323 Header.

      • to_display_name

        string — Custom remote name that will be used within the meeting.

    • invite_options

      object — Information about the `participant.invite.callout` settings.

      • require_greeting

        boolean, default: true — Whether to require a greeting before being connected. Use this field if you pass the `participant.invite.callout` value for the `method` field.

      • require_pressing_one

        boolean, default: true — Whether to require pressing 1 before being connected. Use this field if you pass the `participant.invite.callout` value for the `method` field.

    • invitee_name

      string — The user's name to display in the meeting. Use this field if you pass the `participant.invite.callout` value for the `method` field.

    • phone_number

      string — The user's phone number. Use this field if you pass the `participant.invite.callout` value for the `method` field. As a best practice, ensure this includes a country code and area code. If you are dialing a phone number that includes an extension, type a hyphen '-' after the phone number and enter the extension. For example, 6032331333-156 dials the extension 156.

    • retain_meeting_transcript

      boolean — Whether to retain the meeting transcript when starting or stopping the AI Companion meeting summary. This field applies only when both of these conditions are met: * The `method` is `ai_companion.start` or `ai_companion.stop`. * The `ai_companion_mode` is `summary` or `all`. **Note:** This field only takes effect when the account-level setting **Allow users to retain transcripts generated by meeting summary for use by other AI Companion services** is enabled. If this account-level setting is disabled, this field has no effect. If this field is not provided, the behavior follows the user-level setting **Start meeting transcript**.

    • sip_headers

      object — Enable customers to leverage services that require customization of the FROM header to identify the caller. Use this field if you pass the `participant.invite.room_system_callout` value for the `method` field and the `sip` value for the `call_type` field.

      • additional_headers

        array — Ability to add 1 to 10 custom headers, each of which has a maximum length of 256 bytes to comply with SIP standards. Custom headers would leverage header names starting with 'X-' per SIP guidelines.

        Items:

        • key

          string — Additional custom SIP header's key.

        • value

          string — Additional custom SIP header's value.

      • from_display_name

        string — Custom name that will be used within the SIP Header.

      • from_uri

        string — Custom URI that will be used within the SIP Header. The URI must start with 'sip:' or 'sips:' as a valid URI based on parameters defined by the platform.

      • to_display_name

        string — Custom remote name that will be used within the meeting.

    • waiting_room_description

      string — The description shown in the waiting room. Use this field if you pass the `waiting_room.update` value for the `method` field.

    • waiting_room_title

      string — The title displayed in the waiting room. Use this field if you pass the `waiting_room.update` value for the `method` field.

Example:

{
  "method": "recording.start",
  "params": {
    "contacts": [
      {
        "email": "jchill@example.com",
        "id": "30R7kT7bTIKSNUFEuH_Qlg"
      }
    ],
    "invitee_name": "Jill Chill",
    "phone_number": "5550100",
    "invite_options": {
      "require_greeting": true,
      "require_pressing_one": true
    },
    "call_type": "h323",
    "device_ip": "10.100.111.237",
    "h323_headers": {
      "from_display_name": "display name",
      "to_display_name": "display name"
    },
    "sip_headers": {
      "from_display_name": "display name",
      "to_display_name": "display name",
      "from_uri": "sip:username@domain.company.org",
      "additional_headers": [
        {
          "key": "X-Header1",
          "value": "X-body1"
        }
      ]
    },
    "waiting_room_title": "waiting room title",
    "waiting_room_description": "waiting room description",
    "ai_companion_mode": "questions",
    "retain_meeting_transcript": true,
    "delete_meeting_assets": false
  }
}

Responses

Status: 202 **HTTP Status:** `202` **Accepted** Request processed successfully.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> * Meeting ID does not exist.<br> * Invalid meeting ID.<br> * Meeting does not exist.<br> * No permission.<br> * This API is not available for this account. Please contact Zoom support. <br> **Error Code:** `3309` <br> Not enough cloud storage available. Either purchase additional storage or delete cloud recordings to free up storage. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `2314` <br> Not allowed to manage the AI Companion. To use this feature, enable either the **Allow users to ask AI Companion questions about the meeting** setting or the **Meeting summary with AI Companion** setting in the **Settings** page of the Zoom web portal. <br> **Error Code:** `2314` <br> Not allowed to manage the AI Companion summary. To use this feature, enable the **Meeting summary with AI Companion** setting in the **Settings** page of the Zoom web portal. <br> **Error Code:** `2314` <br> Not allowed to manage the AI Companion questions. To use this feature, enable the **Allow users to ask AI Companion questions about the meeting** setting in the **Settings** page of the Zoom web portal. <br> **Error Code:** `2314` <br> Not allowed to manage the AI Companion. To use this feature, enable either the **Allow users to ask AI Companion questions about the webinar** setting or the **Webinar summary with AI Companion** setting in the **Settings** page of the Zoom web portal. <br> **Error Code:** `2314` <br> Not allowed to manage the AI Companion summary. To use this feature, enable the **Webinar summary with AI Companion** setting in the **Settings** page of the Zoom web portal. <br> **Error Code:** `2314` <br> Not allowed to manage the AI Companion questions. To use this feature, enable the **Allow users to ask AI Companion questions about the webinar** setting in the **Settings** page of the Zoom web portal. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Meeting {meetingId} is not found or has expired. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Get meeting's token

  • Method: GET
  • Path: /accounts/{accountId}/meetings/{meetingId}/token
  • Tags: In-Meeting Features

Get a meeting's closed caption token (caption URL). This token lets you use a third-party service to stream text to their closed captioning software to the Zoom meeting.

Prerequisites:

  • The Closed captioning setting enabled in the Zoom web portal.
  • The Allow use of caption API Token to integrate with third-party closed captioning services setting enabled.

Scopes: meeting:master

Granular Scopes: meeting:read:token:master

Rate Limit Label: LIGHT

Responses

Status: 200 **HTTP Status Code:** `200` Meeting token returned.
Content-Type: application/json
  • token

    string — The generated meeting token.

Example:

{
  "token": "https://example.com/closedcaption?id=200610693&ns=GZHkEA==&expire=86400&spparams=id%2Cns%2Cexpire&signature=nYtXJqRKCW"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Invalid meeting ID. <br> **Error Code:** `3161` <br> Meeting hosting and scheduling capabilities are not allowed for your user account. <br> **Error Code:** `3000` <br> Cannot access webinar information. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `300` <br> Meeting ID does not exist. <br> **Error Code:** `3001` <br> Meeting does not exist: {meetingId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rest/rate-limits/).

Perform batch registration

  • Method: POST
  • Path: /accounts/{accountId}/meetings/{meetingId}/batch_registrants
  • Tags: Invitation & Registration

Register up to 30 registrants at once for a meeting that requires registration.

Prerequisites:

  • The meeting host must be a Licensed user.
  • The meeting must require registration and should be of type 2, i.e., they should be scheduled meetings. Instant meetings and Recurring meetings are not supported by this API.

Scopes: meeting:master

Granular Scopes: meeting:write:batch_registrants:master

Rate Limit Label: HEAVY

Request Body

Content-Type: application/json
  • auto_approve

    boolean — If a meeting was scheduled with approval_type `1` (manual approval), but you would like to automatically approve the registrants that are added via this API, you can set the value of this field to `true`. You **cannot** use this field to change approval setting for a meeting that was originally scheduled with approval_type `0` (automatic approval).

  • registrants

    array

    Items:

    • email (required)

      string, format: email — Email address of the registrant.

    • first_name (required)

      string — First name of the registrant.

    • last_name

      string — Last name of the registrant.

  • registrants_confirmation_email

    boolean — Send confirmation Email to Registrants

Example:

{
  "auto_approve": true,
  "registrants_confirmation_email": true,
  "registrants": [
    {
      "email": "jchill@example.com",
      "first_name": "Jill",
      "last_name": "Chill"
    }
  ]
}

Responses

Status: 201 **HTTP Status Code:** `200` **OK** Registrants added.
Content-Type: application/json
  • registrants

    array

    Items:

    • email

      string — Email address of the registrant.

    • join_url

      string — Unique URL using which registrant can join the meeting.

    • participant_pin_code

      integer, format: int64 — The participant PIN code is used to authenticate audio participants before they join the meeting.

    • registrant_id

      string — Unique identifier of the registrant.

Example:

{
  "registrants": [
    {
      "email": "jchill@example.com",
      "join_url": "https://example.com/j/11111",
      "registrant_id": "9tboDiHUQAeOnbmudzWa5g",
      "participant_pin_code": 380303
    }
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `3038` <br> Meeting is over, you can not register now. If you have any questions, please contact the Meeting host. <br> **Error Code:** `303` <br> This API can only be used for scheduled meeting(meeting type: 2). Batch registration is not supported for other meeting types. <br> **Error Code:** `3161` <br> Meeting hosting and scheduling capabilities are not allowed for your user account. <br> **Error Code:** `3043` <br> Meeting has reached maximum attendee capacity. <br> **Error Code:** `404` <br> Registration has not been enabled for this meeting: {meetingId}. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Meeting does not exist: {meetingId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rest/rate-limits/).

Get meeting invitation

  • Method: GET
  • Path: /accounts/{accountId}/meetings/{meetingId}/invitation
  • Tags: Invitation & Registration

Retrieve the meeting invitation note for a specific meeting.

Prerequisites:

  • Host user must have a Zoom Meetings Basic license or higher.

Scopes: meeting:master

Granular Scopes: meeting:read:invitation:master

Rate Limit Label: LIGHT

Responses

Status: 200 **HTTP Status Code:** `200` Meeting invitation returned.
Content-Type: application/json
  • invitation

    string — Meeting invitation.

  • sip_links

    array — A list of SIP phone addresses.

    Items:

    string

Example:

{
  "invitation": "Jill Chill is inviting you to a scheduled Zoom meeting.\r\n\r\nTopic: My Meeting\r\nTime: Mar 25, 2022 03:32 PM America, Los_Angeles\r\n\r\nJoin Zoom Meeting\r\nhttps://zoom.us/j/55544443210?pwd=8pEkRweVXPV3Ob2KJYgFTRlDtl1gSn.1\r\n\r\nMeeting ID: 555 4444 3210\r\nPasscode: 123456\r\nOne tap mobile\r\n+5678901234,,55544443210#,,,,*123456# US (gg)\r\n\r\nDial by your location\r\n+1 15550100 US (gg)\r\nMeeting ID: 555 4444 3210\r\nPasscode: 123456\r\nFind your local number: https://zoom.us/u/ab12cdef34jh\r\n\r\nJoin by SIP\r\n5550100@zoomcrc.com\r\n\r\nJoin by H.323\r\n192.0.2.1 (US West)\r\nMeeting ID: 555 4444 3210\r\nPasscode: 123456\r\n\r\n",
  "sip_links": [
    "5550100@zoomcrc.com"
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `3161` <br> Meeting hosting and scheduling capabilities are not allowed for your user account. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Meeting does not exist: {meetingId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rest/rate-limits/).

Create a meeting's invite links

  • Method: POST
  • Path: /accounts/{accountId}/meetings/{meetingId}/invite_links
  • Tags: Invitation & Registration

Create a batch of invitation links for a meeting.

Prerequisites:

  • The ttl value, in seconds, defines the invite link's expiration time. It must be between 0 or no expiration and 7776000 or 90 days, and has a default value of 7200 or 2 hours.

Scopes: meeting:master

Granular Scopes: meeting:write:invite_links:master

Rate Limit Label: LIGHT

Request Body

Content-Type: application/json
  • attendees

    array — The attendees list.

    Items:

    • name (required)

      string — User display name.

    • disable_audio

      boolean, default: false — Whether to disable participant audio when joining the meeting. If not provided or set to `false`, the participant audio will follow the meeting's default settings.

    • disable_video

      boolean, default: false — Whether to disable participant video when joining the meeting. If not provided or set to `false`, the participant video will follow the meeting's default settings.

  • ttl

    integer, format: int64, default: 7200 — The invite link's expiration time, in seconds. This value defaults to `7200`.

Example:

{
  "attendees": [
    {
      "name": "Jill Chill",
      "disable_video": false,
      "disable_audio": false
    }
  ],
  "ttl": 1000
}

Responses

Status: 201 **HTTP Status Code:** `201` Meeting invitation links created.
Content-Type: application/json
  • attendees

    array — The attendee list.

    Items:

    • join_url

      string — The URL to join the meeting.

    • name

      string — The user's display name.

Example:

{
  "attendees": [
    {
      "join_url": "https://example.com/j/11111",
      "name": "Jill Chill"
    }
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Invalid meeting ID. <br> **Error Code:** `3000` <br> Cannot access webinar information. <br> **Error Code:** `3161` <br> Meeting hosting and scheduling capabilities are not allowed for your user account. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Meeting does not exist: {meetingId} <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rest/rate-limits/).

List meeting registrants

  • Method: GET
  • Path: /accounts/{accountId}/meetings/{meetingId}/registrants
  • Tags: Invitation & Registration

List users that have registered for a meeting. A host or a user with admin permission can require registration for a Zoom meeting.

Prerequisites:

  • Host user type must be Pro or higher plan.
  • Registration must be enabled for the meeting.

Scopes: meeting:master

Granular Scopes: meeting:read:list_registrants:master

Rate Limit Label: MEDIUM

Responses

Status: 200 **HTTP Status Code:** `200` Successfully listed meeting registrants.
Content-Type: application/json

All of:

All of:

  • next_page_token

    string — Use the next page token to paginate through large result sets. A next page token is returned whenever the set of available results exceeds the current page size. This token's expiration period is 15 minutes.

  • page_count

    integer — The number of pages returned for the request made.

  • page_number

    integer, default: 1 — **Deprecated.** We will no longer support this field in a future release. Instead, use the `next_page_token` for pagination.

  • page_size

    integer, default: 30 — The number of records returned with a single API call.

  • total_records

    integer — The total number of all the records available across pages.

  • registrants

    array — List of registrant objects.

    Items:

    All of:

    • id

      string — Registrant ID.

    All of:

    • email (required)

      string, format: email — The registrant's email address. See [Email address display rules](https://developers.zoom.us/docs/api/rest/using-zoom-apis/#email-address-display-rules) for return value details.

    • first_name (required)

      string — The registrant's first name.

    • address

      string — The registrant's address.

    • city

      string — The registrant's city.

    • comments

      string — The registrant's questions and comments.

    • country

      string — The registrant's two-letter [country code](/docs/api/rest/other-references/abbreviation-lists/#countries).

    • custom_questions

      array — Information about custom questions.

      Items:

      • title

        string — The title of the custom question.

      • value

        string — The custom question's response value. This has a limit of 128 characters.

    • industry

      string — The registrant's industry.

    • job_title

      string — The registrant's job title.

    • last_name

      string — The registrant's last name.

    • no_of_employees

      string, possible values: "", "1-20", "21-50", "51-100", "101-250", "251-500", "501-1,000", "1,001-5,000", "5,001-10,000", "More than 10,000" — The registrant's number of employees. * `1-20` * `21-50` * `51-100` * `101-250` * `251-500` * `501-1,000` * `1,001-5,000` * `5,001-10,000` * `More than 10,000`

    • org

      string — The registrant's organization.

    • phone

      string — The registrant's phone number.

    • purchasing_time_frame

      string, possible values: "", "Within a month", "1-3 months", "4-6 months", "More than 6 months", "No timeframe" — The registrant's purchasing time frame. * `Within a month` * `1-3 months` * `4-6 months` * `More than 6 months` * `No timeframe`

    • role_in_purchase_process

      string, possible values: "", "Decision Maker", "Evaluator/Recommender", "Influencer", "Not involved" — The registrant's role in the purchase process. * `Decision Maker` * `Evaluator/Recommender` * `Influencer` * `Not involved`

    • state

      string — The registrant's state or province.

    • status

      string, possible values: "approved", "denied", "pending" — The registrant's status. * `approved` - Registrant is approved. * `denied` - Registrant is denied. * `pending` - Registrant is waiting for approval.

    • zip

      string — The registrant's ZIP or postal code.

    • create_time

      string, format: date-time — The time when the registrant registered.

    • join_url

      string, format: string — The URL that an approved registrant can use to join the meeting or webinar.

    • participant_pin_code

      integer, format: int64 — The participant PIN code is used to authenticate audio participants before they join the meeting.

    • status

      string — The status of the registrant's registration. `approved` - User has been successfully approved for the webinar. `pending` - The registration is still pending. `denied` - User has been denied from joining the webinar.

Example:

{
  "next_page_token": "w7587w4eiyfsudgf",
  "page_count": 1,
  "page_size": 30,
  "total_records": 20,
  "registrants": [
    {
      "id": "9tboDiHUQAeOnbmudzWa5g",
      "address": "1800 Amphibious Blvd.",
      "city": "Mountain View",
      "comments": "Looking forward to the discussion.",
      "country": "US",
      "custom_questions": [
        {
          "title": "What do you hope to learn from this?",
          "value": "Look forward to learning how you come up with new recipes and what other services you offer."
        }
      ],
      "email": "jchill@example.com",
      "first_name": "Jill",
      "industry": "Food",
      "job_title": "Chef",
      "last_name": "Chill",
      "no_of_employees": "1-20",
      "org": "Cooking Org",
      "phone": "5550100",
      "purchasing_time_frame": "1-3 months",
      "role_in_purchase_process": "Influencer",
      "state": "CA",
      "status": "approved",
      "zip": "94045",
      "create_time": "2022-03-22T05:59:09Z",
      "join_url": "https://example.com/j/11111",
      "participant_pin_code": 380303
    }
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Cannot access webinar info. <br> **Error Code:** `3161` <br> Meeting hosting and scheduling capabilities are not allowed for your user account. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Meeting does not exist: {meetingId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rest/rate-limits/).

Add a meeting registrant

  • Method: POST
  • Path: /accounts/{accountId}/meetings/{meetingId}/registrants
  • Tags: Invitation & Registration

Create and submit a user's registration to a meeting. See Customizing webinar registration for details on how to set the requirements for these fields. Note that there is a maximum limit of 4,999 registrants per meeting and users will see an error if the meeting's capacity is reached.

Prerequisites:

  • The host must be a Licensed user type.

Scopes: meeting:master

Granular Scopes: meeting:write:registrant:master

Rate Limit Label: LIGHT

Request Body

Content-Type: application/json

All of:

  • email (required)

    string, format: email — The registrant's email address.

  • first_name (required)

    string — The registrant's first name.

  • address

    string — The registrant's address.

  • city

    string — The registrant's city.

  • comments

    string — The registrant's questions and comments.

  • country

    string — The registrant's two-letter [country code](https://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#countries).

  • custom_questions

    array — Information about custom questions.

    Items:

    • title

      string — The title of the custom question.

    • value

      string — The custom question's response value. This has a limit of 128 characters.

  • industry

    string — The registrant's industry.

  • job_title

    string — The registrant's job title.

  • last_name

    string — The registrant's last name.

  • no_of_employees

    string, possible values: "", "1-20", "21-50", "51-100", "101-500", "500-1,000", "1,001-5,000", "5,001-10,000", "More than 10,000" — The registrant's number of employees: * `1-20` * `21-50` * `51-100` * `101-500` * `500-1,000` * `1,001-5,000` * `5,001-10,000` * `More than 10,000`

  • org

    string — The registrant's organization.

  • phone

    string — The registrant's phone number.

  • purchasing_time_frame

    string, possible values: "", "Within a month", "1-3 months", "4-6 months", "More than 6 months", "No timeframe" — The registrant's purchasing time frame: * `Within a month` * `1-3 months` * `4-6 months` * `More than 6 months` * `No timeframe`

  • role_in_purchase_process

    string, possible values: "", "Decision Maker", "Evaluator/Recommender", "Influencer", "Not involved" — The registrant's role in the purchase process: * `Decision Maker` * `Evaluator/Recommender` * `Influencer` * `Not involved`

  • state

    string — The registrant's state or province.

  • zip

    string — The registrant's ZIP or postal code.

  • language

    string, possible values: "en-US", "de-DE", "es-ES", "fr-FR", "jp-JP", "pt-PT", "ru-RU", "zh-CN", "zh-TW", "ko-KO", "it-IT", "vi-VN", "pl-PL", "Tr-TR" — The registrant's language preference for confirmation emails: * `en-US` &mdash; English (US) * `de-DE` &mdash; German (Germany) * `es-ES` &mdash; Spanish (Spain) * `fr-FR` &mdash; French (France) * `jp-JP` &mdash; Japanese * `pt-PT` &mdash; Portuguese (Portugal) * `ru-RU` &mdash; Russian * `zh-CN` &mdash; Chinese (PRC) * `zh-TW` &mdash; Chinese (Taiwan) * `ko-KO` &mdash; Korean * `it-IT` &mdash; Italian (Italy) * `vi-VN` &mdash; Vietnamese * `pl-PL` &mdash; Polish * `Tr-TR` &mdash; Turkish

  • auto_approve

    boolean — If a meeting was scheduled with the `approval_type` field value of `1` (manual approval) but you want to automatically approve meeting registrants, set the value of this field to `true`. **Note:** You cannot use this field to change approval setting for a meeting originally scheduled with the `approval_type` field value of `0` (automatic approval).

Example:

{
  "first_name": "Jill",
  "last_name": "Chill",
  "email": "jchill@example.com",
  "address": "1800 Amphibious Blvd.",
  "city": "Mountain View",
  "state": "CA",
  "zip": "94045",
  "country": "US",
  "phone": "5550100",
  "comments": "Looking forward to the discussion.",
  "custom_questions": [
    {
      "title": "What do you hope to learn from this?",
      "value": "Look forward to learning how you come up with new recipes and what other services you offer."
    }
  ],
  "industry": "Food",
  "job_title": "Chef",
  "no_of_employees": "1-20",
  "org": "Cooking Org",
  "purchasing_time_frame": "1-3 months",
  "role_in_purchase_process": "Influencer",
  "language": "en-US",
  "auto_approve": true
}

Responses

Status: 201 **HTTP Status Code:** `201` Meeting registration created.
Content-Type: application/json
  • id

    integer, format: int64 — The meeting ID.

  • join_url

    string — The URL the registrant can use to join the meeting. The API will not return this field if the meeting was [created](/docs/api-reference/zoom-api/methods#operation/meetingCreate) with the `approval_type` field value of `1` (manual approval).

  • occurrences

    array — Array of occurrence objects.

    Items:

  • participant_pin_code

    integer, format: int64 — The participant PIN code is used to authenticate audio participants before they join the meeting.

  • registrant_id

    string — The registrant's ID.

  • start_time

    string, format: date-time — The meeting's start time.

  • topic

    string — The meeting's topic.

Example:

{
  "id": 85746065,
  "join_url": "https://example.com/j/11111",
  "registrant_id": "fdgsfh2ey82fuh",
  "start_time": "2021-07-13T21:44:51Z",
  "topic": "My Meeting",
  "occurrences": [
    {
      "duration": 60,
      "occurrence_id": "1648194360000",
      "start_time": "2022-03-25T07:46:00Z",
      "status": "available"
    }
  ],
  "participant_pin_code": 380303
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `3043` <br> Meeting has reached maximum attendee capacity. <br> **Error Code:** `3000` <br> Cannot access meeting info. <br> **Error Code:** `3161` <br> Meeting hosting and scheduling capabilities are not allowed for your user account. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> Meeting does not exist: {meetingId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

List registration questions

  • Method: GET
  • Path: /accounts/{accountId}/meetings/{meetingId}/registrants/questions
  • Tags: Invitation & Registration

List registration questions that will be displayed to users while registering for a meeting.

Prerequisites:

  • Host user type must be Pro or higher plan.
  • Registration must be enabled for the meeting.

Scopes: meeting:master

Rate Limit Label: LIGHT

Responses

Status: 200 **HTTP Status Code:** `200` Meeting Registrant Question object returned
Content-Type: application/json

All of:

  • custom_questions

    array — Array of custom questions for registrants.

    Items:

    • answers

      array — Answer choices for the question. Can not be used for `short` question type as this type of question requires registrants to type out the answer.

      Items:

      string

    • required

      boolean — Whether or not the custom question is required to be answered by participants or not.

    • title

      string — Title of the custom question.

    • type

      string, possible values: "short", "single" — Type of the question being asked.

  • questions

    array — Array of registrant questions.

    Items:

    • field_name

      string, possible values: "last_name", "address", "city", "country", "zip", "state", "phone", "industry", "org", "job_title", "purchasing_time_frame", "role_in_purchase_process", "no_of_employees", "comments" — Field name of the question.

    • required

      boolean — Whether or not the displayed fields are required to be filled out by registrants.

Example:

{
  "custom_questions": [
    {
      "answers": [
        "Good"
      ],
      "required": true,
      "title": "How are you?",
      "type": "short"
    }
  ],
  "questions": [
    {
      "field_name": "last_name",
      "required": true
    }
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `3161` <br> Meeting hosting and scheduling capabilities are not allowed for your user account. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Meeting does not exist: {meetingId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rest/rate-limits/).

Update registration questions

  • Method: PATCH
  • Path: /accounts/{accountId}/meetings/{meetingId}/registrants/questions
  • Tags: Invitation & Registration

Update registration questions that will be displayed to users while registering for a meeting.

Prerequisites:

  • Host user type must be Pro or higher plan.
  • Registration must be enabled for the meeting.

Scopes: meeting:master

Granular Scopes: meeting:update:registration_question:master

Rate Limit Label: LIGHT

Request Body

Content-Type: application/json

All of:

  • custom_questions

    array — Array of Registrant Custom Questions

    Items:

    • answers

      array — Answer choices for the question. Can not be used for `short` question type as this type of question requires registrants to type out the answer.

      Items:

      string

    • required

      boolean — Indicates whether or not the custom question is required to be answered by participants or not.

    • title

      string — Title of the custom question.

    • type

      string, possible values: "short", "single" — The type of question being asked.

  • questions

    array — Array of registrant questions.

    Items:

    • field_name

      string, possible values: "last_name", "address", "city", "country", "zip", "state", "phone", "industry", "org", "job_title", "purchasing_time_frame", "role_in_purchase_process", "no_of_employees", "comments" — The question's field name.

    • required

      boolean — Indicates whether or not the displayed fields are required to be filled out by registrants.

Example:

{
  "custom_questions": [
    {
      "answers": [
        "Good"
      ],
      "required": true,
      "title": "How are you?",
      "type": "short"
    }
  ],
  "questions": [
    {
      "field_name": "last_name",
      "required": true
    }
  ]
}

Responses

Status: 204 **HTTP Status Code:** `204` Meeting Registrant Questions Updated
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `3161` <br> Meeting hosting and scheduling capabilities are not allowed for your user account. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Meeting does not exist: {meetingId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rest/rate-limits/).

Update registrant's status

  • Method: PUT
  • Path: /accounts/{accountId}/meetings/{meetingId}/registrants/status
  • Tags: Invitation & Registration

Update a meeting registrant's status by either approving, cancelling or denying a registrant from joining the meeting.

Prerequisites:

  • Host user type must be Pro or higher plan.
  • Registration must be enabled for the meeting.

This API has an additional rate limit of requests per registrant, per 24-hour period. See the Rate Limits page for more information.

Scopes: meeting:master

Granular Scopes: meeting:update:registrant_status:master

Rate Limit Label: MEDIUM

Request Body

Content-Type: application/json
  • action (required)

    string, possible values: "approve", "cancel", "deny" — Registrant status. `approve` - Approve registrant. `cancel` - Cancel previously approved registrant's registration. `deny` - Deny registrant.

  • registrants

    array — List of registrants.

    Items:

    • email

      string

    • id

      string

Example:

{
  "action": "approve",
  "registrants": [
    {
      "email": "jchill@example.com",
      "id": "9tboDiHUQAeOnbmudzWa5g"
    }
  ]
}

Responses

Status: 204 **HTTP Status Code:** `204` Registrant status updated.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `3000` <br> Cannot access webinar information. <br> **Error Code:** `3161` <br> Meeting hosting and scheduling capabilities are not allowed for your user account. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Meeting does not exist: {meetingId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rest/rate-limits/).

Get a meeting registrant

  • Method: GET
  • Path: /accounts/{accountId}/meetings/{meetingId}/registrants/{registrantId}
  • Tags: Invitation & Registration

Retrieve details on a specific user who has registered for the meeting. A host or a user with administrative permissions can require registration for Zoom meetings.

Prerequisites:

  • The account must have a Meeting plan

Scopes: meeting:master

Granular Scopes: meeting:read:registrant:master

Rate Limit Label: LIGHT

Responses

Status: 200 Success.
Content-Type: application/json

All of:

  • id

    string

All of:

  • email (required)

    string, format: email — The registrant's email address. See [Email address display rules](https://developers.zoom.us/docs/api/rest/using-zoom-apis/#email-address-display-rules) for return value details.

  • first_name (required)

    string — The registrant's first name.

  • address

    string — The registrant's address.

  • city

    string — The registrant's city.

  • comments

    string — The registrant's questions and comments.

  • country

    string — The registrant's two-letter [country code](https://developers.zoom.us/docs/api/rest/other-references/abbreviation-lists/#countries).

  • custom_questions

    array — Information about custom questions.

    Items:

    • title

      string — The title of the custom question.

    • value

      string — The custom question's response value. This has a limit of 128 characters.

  • industry

    string — The registrant's industry.

  • job_title

    string — The registrant's job title.

  • last_name

    string — The registrant's last name.

  • no_of_employees

    string, possible values: "", "1-20", "21-50", "51-100", "101-250", "251-500", "501-1,000", "1,001-5,000", "5,001-10,000", "More than 10,000" — The registrant's number of employees. * `1-20` * `21-50` * `51-100` * `101-250` * `251-500` * `501-1,000` * `1,001-5,000` * `5,001-10,000` * `More than 10,000`

  • org

    string — The registrant's organization.

  • phone

    string — The registrant's phone number.

  • purchasing_time_frame

    string, possible values: "", "Within a month", "1-3 months", "4-6 months", "More than 6 months", "No timeframe" — The registrant's purchasing time frame. * `Within a month` * `1-3 months` * `4-6 months` * `More than 6 months` * `No timeframe`

  • role_in_purchase_process

    string, possible values: "", "Decision Maker", "Evaluator/Recommender", "Influencer", "Not involved" — The registrant's role in the purchase process. * `Decision Maker` * `Evaluator/Recommender` * `Influencer` * `Not involved`

  • state

    string — The registrant's state or province.

  • status

    string, possible values: "approved", "denied", "pending" — The registrant's status. * `approved` - Registrant is approved. * `denied` - Registrant is denied. * `pending` - Registrant is waiting for approval.

  • zip

    string — The registrant's ZIP or postal code.

  • create_time

    string, format: date-time — The registrant's registration date and time.

  • join_url

    string, format: url — The URL with which the approved registrant can join the meeting.

  • participant_pin_code

    integer, format: int64 — The participant PIN code is used to authenticate audio participants before they join the meeting.

  • status

    string, possible values: "approved", "pending", "denied" — The registrant's registration status. * `approved` - The registrant is approved to join the meeting. * `pending` - The registrant's registration is pending. * `denied` - The registrant was declined to join the meeting.

Example:

{
  "id": "9tboDiHUQAeOnbmudzWa5g",
  "address": "1800 Amphibious Blvd.",
  "city": "Mountain View",
  "comments": "Looking forward to the discussion.",
  "country": "US",
  "custom_questions": [
    {
      "title": "What do you hope to learn from this?",
      "value": "Look forward to learning how you come up with new recipes and what other services you offer."
    }
  ],
  "email": "jchill@example.com",
  "first_name": "Jill",
  "industry": "Food",
  "job_title": "Chef",
  "last_name": "Chill",
  "no_of_employees": "1-20",
  "org": "Cooking Org",
  "phone": "5550100",
  "purchasing_time_frame": "1-3 months",
  "role_in_purchase_process": "Influencer",
  "state": "CA",
  "status": "approved",
  "zip": "94045",
  "create_time": "2022-03-22T05:58:44Z",
  "join_url": "https://example.com/j/11111",
  "participant_pin_code": 380303
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `3000` <br> Cannot access webinar info. <br> **Error Code:** `3161` <br> Meeting hosting and scheduling capabilities are not allowed for your user account. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Meeting does not exist: {meetingId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Delete a meeting registrant

  • Method: DELETE
  • Path: /accounts/{accountId}/meetings/{meetingId}/registrants/{registrantId}
  • Tags: Invitation & Registration

Delete a meeting registrant.

Prerequisites:

  • Host user type must be Pro or higher plan.

  • Registration must be enabled for the meeting.

  • For recurring meetings:

    • The registration_type must be 2 or 3 to require the occurrence_id field.
    • If the registration_type is 1, the occurrence_id is not needed, as registrants can attend any occurrence.

Scopes: meeting:master

Granular Scopes: meeting:delete:registrant:master

Rate Limit Label: LIGHT

Responses

Status: 204 **HTTP status code:** `204` OK
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> Only available for paid users: {userId}. <br> **Error Code:** `300` <br> The value that you entered for the Registrant ID field is invalid. Enter a valid value and try again. <br> **Error Code:** `300` <br> Registration has not been enabled for this meeting: {meetingId}. <br> **Error Code:** `3000` <br> Cannot access webinar info. <br> **Error Code:** `3161` <br> Meeting hosting and scheduling capabilities are not allowed for your user account. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Meeting does not exist: {meetingId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rest/rate-limits/).

Get livestream details

  • Method: GET
  • Path: /accounts/{accountId}/meetings/{meetingId}/livestream
  • Tags: Live streaming

Zoom allows users to livestream a meeting to a custom platform. Get a meeting's livestream configuration details such as Stream URL, Stream Key and Page URL.

Prerequisites:

  • Meeting host must be a licensed user with a Pro or higher plan.

  • Live streaming details must have been configured for the meeting.

Scopes: meeting:master

Granular Scopes: meeting:read:livestream:master

Rate Limit Label: LIGHT

Responses

Status: 200 **HTTP Status Code:** `200` **OK** Live Stream details returned.
Content-Type: application/json
  • page_url

    string — Live streaming page URL. This is the URL using which anyone can view the livestream of the meeting.

  • resolution

    string — The number of pixels in each dimension that the video camera can display.

  • stream_key

    string — Stream Key.

  • stream_url

    string — Stream URL.

Example:

{
  "page_url": "https://example.com/livestream/123",
  "stream_key": "contact-ic@example.com",
  "stream_url": "https://example.com/livestream",
  "resolution": "720p"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Invalid meeting id. <br> **Error Code:** `3161` <br> Meeting hosting and scheduling capabilities are not allowed for your user account. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Meeting does not exist: {meetingId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rest/rate-limits/).

Update a livestream

  • Method: PATCH
  • Path: /accounts/{accountId}/meetings/{meetingId}/livestream
  • Tags: Live streaming

Update a meeting's livestream information. Zoom allows users to livestream a meeting to a custom platform.

Prerequisites:

  • Meeting host must have a Pro license.

Scopes: meeting:master

Granular Scopes: meeting:update:livestream:master

Rate Limit Label: LIGHT

Request Body

Content-Type: application/json
  • page_url (required)

    string, format: uri — The live stream page URL.

  • stream_key (required)

    string — Stream name and key.

  • stream_url (required)

    string — Streaming URL.

  • resolution

    string — The number of pixels in each dimension that the video camera can display, required when a user enables 1080p. Use a value of `720p` or `1080p`

Example:

{
  "page_url": "https://example.com/livestream/123",
  "stream_key": "contact-it@example.com",
  "stream_url": "https://example.com/livestream",
  "resolution": "720p"
}

Responses

Status: 204 **HTTP Status Code:** `204` Meeting livestream updated.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `3000` <br> Cannot access webinar info. <br> **Error Code:** `3161` <br> Meeting hosting and scheduling capabilities are not allowed for your user account. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Meeting does not exist: {meetingId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Update livestream status

  • Method: PATCH
  • Path: /accounts/{accountId}/meetings/{meetingId}/livestream/status
  • Tags: Live streaming

Zoom allows users to livestream a meeting to a custom platform. Update the status of a meeting's livestream.

Prerequisites:

  • Meeting host must have a Pro license.

Scopes: meeting:master

Granular Scopes: meeting:update:livestream_status:master

Rate Limit Label: LIGHT

Request Body

Content-Type: application/json
  • action

    string, possible values: "start", "stop", "mode" — The meeting's livestream status. * `start` - Start a livestream. * `stop` - Stop an ongoing livestream. * `mode` - Control a livestream view at runtime.

  • settings

    object — The meeting's livestreaming settings.

    • active_speaker_name

      boolean — Whether to display the name of the active speaker during a meeting's livestream. Use this field if you pass the `start` value for the `action` field.

    • close_caption

      string, possible values: "burnt-in", "embedded", "off", default: "burnt-in" — The livestream's closed caption type for this session. Use this field if you pass the `start` or `mode` value for the `action` field. * `burnt-in` - Burnt in captions. * `embedded` - Embedded captions. * `off` - Turn off captions.

    • display_name

      string — The display name of the meeting's livestream. Use this field if you pass the `start` value for the `action` field.

    • layout

      string, possible values: "follow_host", "gallery_view", "speaker_view", default: "follow_host" — The layout of the meeting's livestream. Use this field if you pass the `start` or `mode` value for the `action` field. * `follow_host` - Follow host view. * `gallery_view` - Gallery view. * `speaker_view` - Speaker view.

Example:

{
  "action": "start",
  "settings": {
    "active_speaker_name": true,
    "display_name": "Jill Chill",
    "layout": "follow_host",
    "close_caption": "burnt-in"
  }
}

Responses

Status: 204 **HTTP Status Code:** `204` <br> Meeting livestream updated.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `3000` <br> Cannot access webinar info. <br> **Error Code:** `3161` <br> Your user account is not allowed meeting hosting and scheduling capabilities. <br> **Error Code:** `4400` <br> End-to-end encrypted meetings currently do not support the livestreaming feature. <br> **Error Code:** `300` <br> Invalid meeting ID. <br> **Error Code:** `4927` <br> Meeting {meetingId} has not started. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Meeting does not exist: {meetingId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rest/rate-limits/).

Get a meeting

  • Method: GET
  • Path: /accounts/{accountId}/meetings/{meetingId}
  • Tags: Meetings

Retrieve the given meeting's details.

Prerequisites

  • Host user must have a Zoom Meetings Basic license or higher.

Scopes: meeting:master

Granular Scopes: meeting:read:meeting:master

Rate Limit Label: LIGHT

Responses

Status: 200 **HTTP Status Code:** `200` Meeting object returned.
Content-Type: application/json
  • agenda

    string — The meeting description.

  • assistant_id

    string — The ID of the user who scheduled this meeting on behalf of the host.

  • chat_join_url

    string — The URL to join the chat.

  • created_at

    string, format: date-time — The creation time.

  • creation_source

    string, possible values: "other", "open_api", "web_portal" — The platform used when creating the meeting. * `other` - Created through another platform. * `open_api` - Created through Open API. * `web_portal` - Created through the web portal.

  • duration

    integer — The meeting duration.

  • dynamic_host_key

    string — The meeting dynamic host key.

  • encrypted_password

    string — Encrypted passcode for third party endpoints (H323/SIP).

  • h323_password

    string — H.323/SIP room system passcode.

  • host_email

    string, format: email — The meeting host's email address.

  • host_id

    string — The ID of the user who is set as the meeting host.

  • id

    integer, format: int64 — [Meeting ID](https://support.zoom.us/hc/en-us/articles/201362373-What-is-a-Meeting-ID-): Unique identifier of the meeting in **long** format, represented as int64 data type in JSON, also known as the meeting number.

  • join_url

    string — The URL for participants to join the meeting. This URL should only be shared with users invited to the meeting.

  • occurrences

    array — Array of occurrence objects.

    Items:

    • duration

      integer — Duration.

    • occurrence_id

      string — Occurrence ID. The unique identifier for an occurrence of a recurring meeting. [Recurring meetings](https://support.zoom.us/hc/en-us/articles/214973206-Scheduling-Recurring-Meetings) can have a maximum of 50 occurrences.

    • start_time

      string, format: date-time — Start time.

    • status

      string, possible values: "available", "deleted" — Occurrence status. `available` - Available occurrence. `deleted` - Deleted occurrence.

  • password

    string — Meeting passcode.

  • pmi

    string — [Personal meeting ID (PMI)](/docs/api/rest/using-zoom-apis/#understanding-personal-meeting-id-pmi). Only used for scheduled meetings and recurring meetings with no fixed time.

  • pre_schedule

    boolean, default: false — Whether the prescheduled meeting was created via the [GSuite app](https://support.zoom.us/hc/en-us/articles/360020187492-Zoom-for-GSuite-add-on). This **only** supports the meeting `type` value of `2` (scheduled meetings) and `3` (recurring meetings with no fixed time). * `true` - A GSuite prescheduled meeting. * `false` - A regular meeting.

  • pstn_password

    string — Password for participants to join the meeting via [PSTN](https://support.zoom.us/hc/en-us/articles/204517069-Getting-Started-with-Personal-Audio-Conference).

  • recurrence

    object — Recurrence object. Use this object only for a meeting with type `8`, a recurring meeting with a fixed time.

    • type (required)

      integer, possible values: 1, 2, 3 — Recurring meeting types. `1` - Daily. `2` - Weekly. `3` - Monthly.

    • end_date_time

      string, format: date-time — Select the final date when the meeting will recur before it is canceled. Should be in UTC time, such as 2017-11-25T12:00:00Z. (Cannot be used with `end_times`.)

    • end_times

      integer, default: 1 — Select how many times the meeting should recur before it is canceled. If `end_times` is set to 0, it means there is no end time. The maximum number of recurrences is 60. Cannot be used with `end_date_time`.

    • monthly_day

      integer, default: 1 — Use this field only if you're scheduling a recurring meeting of type `3` to state the day in a month when the meeting should recur. The value range is from 1 to 31. For example, for a meeting to recur on 23rd of each month, provide `23` as this field's value and `1` as the `repeat_interval` field's value. Instead, to have the meeting to recur every three months on 23rd of the month, change the `repeat_interval` field's value to `3`.

    • monthly_week

      integer, possible values: -1, 1, 2, 3, 4 — Use this field only if you're scheduling a recurring meeting of type `3` to state the week of the month when the meeting should recur. If you use this field, **you must also use the `monthly_week_day` field to state the day of the week when the meeting should recur.** `-1` - Last week of the month. `1` - First week of the month. `2` - Second week of the month. `3` - Third week of the month. `4` - Fourth week of the month.

    • monthly_week_day

      integer, possible values: 1, 2, 3, 4, 5, 6, 7 — Use this field **only if you're scheduling a recurring meeting of type** `3` to state a specific day in a week when the monthly meeting should recur. To use this field, you must also use the `monthly_week` field. `1` - Sunday. `2` - Monday. `3` - Tuesday. `4` - Wednesday. `5` - Thursday. `6` - Friday. `7` - Saturday.

    • repeat_interval

      integer — Define the interval when the meeting should recur. For instance, to schedule a meeting that recurs every two months, you must set this field's value as `2` and the `type` parameter's value as `3`. For a daily meeting, the maximum interval you can set is `99` days. For a weekly meeting the maximum interval that you can set is of `50` weeks. For a monthly meeting, there is a maximum of `10` months.

    • weekly_days

      string, possible values: "1", "2", "3", "4", "5", "6", "7", default: "1" — This field is required if you're scheduling a recurring meeting of type `2` to state which days of the week the meeting should repeat. The value for this field could be a number between `1` to `7` in string format. For instance, if the meeting should recur on Sunday, provide `1` as this field's value. **Note** To have the meeting occur on multiple days of a week, provide comma separated values for this field. For instance, if the meeting should recur on Sundays and Tuesdays provide `1,3` as this field's value. `1` - Sunday. `2` - Monday. `3` - Tuesday. `4` - Wednesday. `5` - Thursday. `6` - Friday. `7` - Saturday.

  • registration_url

    string — The URL that registrants can use to register for a meeting. This field is only returned for meetings that have enabled registration.

  • settings

    object — Meeting settings.

    • additional_data_center_regions

      array — Add additional meeting [data center regions](https://support.zoom.us/hc/en-us/articles/360042411451-Selecting-data-center-regions-for-hosted-meetings-and-webinars). Provide this value as an array of [country codes](/docs/api/references/abbreviations/#countries) for the countries available as data center regions in the [**Account Profile**](https://zoom.us/account/setting) interface but have been opted out of in the [user settings](https://zoom.us/profile). For example, the data center regions selected in your [**Account Profile**](https://zoom.us/account) are `Europe`, `Hong Kong SAR`, `Australia`, `India`, `Japan`, `China`, `United States`, and `Canada`. However, in the [**My Profile**](https://zoom.us/profile) settings, you did **not** select `India` and `Japan` for meeting and webinar traffic routing. To include `India` and `Japan` as additional data centers, use the `[IN, TY]` value for this field.

      Items:

      string

    • allow_host_control_participant_mute_state

      boolean — Whether to allow the host and co-hosts to fully control the mute state of participants. This option cannot be used together with `request_permission_to_unmute_participants`, only one of the two can be enabled at a time.

    • allow_multiple_devices

      boolean — Allow attendees to join the meeting from multiple devices. This setting only works for meetings that require [registration](https://support.zoom.us/hc/en-us/articles/211579443-Setting-up-registration-for-a-meeting).

    • alternative_host_manage_cloud_recording

      boolean — Whether to allow an alternative host to manage meeting cloud recordings.

    • alternative_host_manage_meeting_summary

      boolean — Whether to allow an alternative host to manage meeting summaries.

    • alternative_host_update_polls

      boolean — Whether the **Allow alternative hosts to add or edit polls** feature is enabled. This requires Zoom version 5.8.0 or higher.

    • alternative_hosts

      string — A semicolon-separated list of the meeting's alternative hosts' email addresses or IDs.

    • alternative_hosts_email_notification

      boolean, default: true — Flag to determine whether to send email notifications to alternative hosts, default value is true.

    • approval_type

      integer, possible values: 0, 1, 2, default: 2 — Enable registration and set approval for the registration. Note that this feature requires the host to be of **Licensed** user type. **Registration cannot be enabled for a basic user.** `0` - Automatically approve. `1` - Manually approve. `2` - No registration required.

    • approved_or_denied_countries_or_regions

      object — Approve or block users from specific regions/countries from joining this meeting.

      • approved_list

        array — List of countries/regions from where participants can join this meeting.

        Items:

        string

      • denied_list

        array — List of countries or regions from where participants can not join this meeting.

        Items:

        string

      • enable

        boolean — `true` - Setting enabled to either allow users or block users from specific regions to join your meetings. `false` - Setting disabled.

      • method

        string, possible values: "approve", "deny" — Specify whether to allow users from specific regions to join this meeting; or block users from specific regions from joining this meeting. `approve`: Allow users from specific regions/countries to join this meeting. If this setting is selected, the approved regions/countries must be included in the `approved_list`. `deny`: Block users from specific regions/countries from joining this meeting. If this setting is selected, the approved regions/countries must be included in the `denied_list`

    • audio

      string, possible values: "both", "telephony", "voip", "thirdParty", default: "both" — Determine how participants can join the audio portion of the meeting. `both` - Both Telephony and VoIP. `telephony` - Telephony only. `voip` - VoIP only. `thirdParty` - Third party audio conference.

    • audio_conference_info

      string — Third party audio conference information.

    • authentication_domains

      string — If user has configured [Sign Into Zoom with Specified Domains](https://support.zoom.us/hc/en-us/articles/360037117472-Authentication-Profiles-for-Meetings-and-Webinars#h_5c0df2e1-cfd2-469f-bb4a-c77d7c0cca6f) option, this will list the domains that are authenticated.

    • authentication_exception

      array — The participants added here will receive unique meeting invite links and bypass authentication.

      Items:

      • email

        string, format: email — The participant's email address.

      • join_url

        string — URL for participants to join the meeting

      • name

        string — The participant's name.

    • authentication_name

      string — Authentication name set in the [authentication profile](https://support.zoom.us/hc/en-us/articles/360037117472-Authentication-Profiles-for-Meetings-and-Webinars#h_5c0df2e1-cfd2-469f-bb4a-c77d7c0cca6f).

    • authentication_option

      string — Meeting authentication option ID.

    • auto_add_recording_to_video_management

      object — Automatically add meeting recordings to a video channel in video management. To enable this feature for your account, please [contact Zoom Support](https://support.zoom.us/hc/en-us).

      • enable (required)

        boolean, default: false — Whether to automatically add the meeting recording to video management.

      • channels

        array — List of video management channels where the meeting recording will be added.

        Items:

        • channel_id (required)

          string — The unique ID of a video management channel.

        • name

          string — The name of the video management channel.

    • auto_recording

      string, possible values: "local", "cloud", "none", default: "none" — Automatic recording. `local` - Record on local. `cloud` - Record on cloud. `none` - Disabled.

    • auto_start_ai_companion_questions

      boolean, default: false — Whether to automatically start AI Companion questions.

    • auto_start_meeting_summary

      boolean, default: false — Whether to automatically start a meeting summary.

    • breakout_room

      object — Setting to [pre-assign breakout rooms](https://support.zoom.us/hc/en-us/articles/360032752671-Pre-assigning-participants-to-breakout-rooms#h_36f71353-4190-48a2-b999-ca129861c1f4).

    • calendar_type

      integer, possible values: 1, 2 — Indicates the type of calendar integration used to schedule the meeting. * `1` - [Zoom Outlook add-in](https://support.zoom.us/hc/en-us/articles/360031592971-Getting-started-with-Outlook-plugin-and-add-in) * `2` - [Zoom for Google Workspace add-on](https://support.zoom.us/hc/en-us/articles/360020187492-Using-the-Zoom-for-Google-Workspace-add-on) Works with the `private_meeting` field to determine whether to share details of meetings or not.

    • close_registration

      boolean, default: false — Close registration after event date.

    • cn_meeting

      boolean, default: false — Host meeting in China.

    • contact_email

      string — Contact email for registration.

    • contact_name

      string — Contact name for registration.

    • continuous_meeting_chat

      object — Information about the **Enable continuous meeting chat** feature. This setting only applies to scheduled and recurring meetings, types `2`, `3`, or `8`. It is **not supported** for type `1` instant meetings or type `10` screen share only meetings.

      • auto_add_invited_external_users

        boolean — Whether to enable the **Automatically add invited external users** setting.

      • auto_add_meeting_participants

        boolean — Whether to enable the **Automatically add meeting participants** setting.

      • channel_id

        string — The channel's ID.

      • enable

        boolean — Whether to enable the **Enable continuous meeting chat** setting.

    • custom_keys

      array — Custom keys and values assigned to the meeting.

      Items:

      • key

        string — Custom key associated with the user.

      • value

        string — Value of the custom key associated with the user.

    • device_testing

      boolean, default: false — Enable the device testing.

    • disable_participant_video

      boolean, default: false — Whether to disable the participant video during meeting. To enable this feature for your account, please [contact Zoom Support](https://support.zoom.us/hc/en-us).

    • email_in_attendee_report

      boolean — Whether to include authenticated guest's email addresses in meetings' attendee reports.

    • email_notification

      boolean, default: true — Whether to send email notifications to [alternative hosts](https://support.zoom.us/hc/en-us/articles/208220166) and [users with scheduling privileges](https://support.zoom.us/hc/en-us/articles/201362803-Scheduling-privilege). This value defaults to `true`.

    • encryption_type

      string, possible values: "enhanced_encryption", "e2ee" — Choose between enhanced encryption and [end-to-end encryption](https://support.zoom.us/hc/en-us/articles/360048660871) when starting or a meeting. When using end-to-end encryption, several features (e.g. cloud recording, phone/SIP/H.323 dial-in) will be **automatically disabled**. `enhanced_encryption` - Enhanced encryption. Encryption is stored in the cloud if you enable this option. `e2ee` - [End-to-end encryption](https://support.zoom.us/hc/en-us/articles/360048660871). The encryption key is stored in your local device and can not be obtained by anyone else. Enabling this setting also **disables** the join before host, cloud recording, streaming, live transcription, breakout rooms, polling, 1:1 private chat, and meeting reactions features.

    • enforce_login

      boolean — Only signed in users can join this meeting. **This field is deprecated and will not be supported in the future.** As an alternative, use the `meeting_authentication`, `authentication_option`, and `authentication_domains` fields to understand the [authentication configurations](https://support.zoom.us/hc/en-us/articles/360037117472-Authentication-Profiles-for-Meetings-and-Webinars) set for the meeting.

    • enforce_login_domains

      string — Only signed in users with specified domains can join meetings. **This field is deprecated and will not be supported in the future.** As an alternative, use the `meeting_authentication`, `authentication_option`, and `authentication_domains` fields to understand the [authentication configurations](https://support.zoom.us/hc/en-us/articles/360037117472-Authentication-Profiles-for-Meetings-and-Webinars) set for the meeting.

    • focus_mode

      boolean — Whether the [**Focus Mode** feature](https://support.zoom.us/hc/en-us/articles/360061113751-Using-focus-mode) is enabled when the meeting starts.

    • global_dial_in_countries

      array — List of global dial-in countries.

      Items:

      string

    • global_dial_in_numbers

      array — Global Dial-in Countries and Regions

      Items:

      • city

        string — City of the number, if any. For example, Chicago.

      • country

        string — Country code, such as BR.

      • country_name

        string — Full name of country, such as Brazil.

      • number

        string — Phone number, such as +1 2332357613.

      • type

        string, possible values: "toll", "tollfree" — Type of number.

    • host_save_video_order

      boolean — Whether the **Allow host to save video order** feature is enabled.

    • host_video

      boolean — Start video when the host joins the meeting.

    • in_meeting

      boolean, default: false — Host meeting in India.

    • internal_meeting

      boolean, default: false — Whether to set the meeting as an internal meeting.

    • jbh_time

      integer, possible values: 0, 5, 10, 15 — If the value of `join_before_host` field is set to true, this field can be used to indicate time limits when a participant may join a meeting before a host. * `0` - Allow participant to join anytime. * `5` - Allow participant to join 5 minutes before meeting start time. * `10` - Allow participant to join 10 minutes before meeting start time. * `15` - Allow participant to join 15 minutes before meeting start time.

    • join_before_host

      boolean, default: false — Allow participants to join the meeting before the host starts the meeting. Only used for scheduled or recurring meetings.

    • language_interpretation

      object — The meeting's [language interpretation settings](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0064768). Make sure to add the language in the web portal in order to use it in the API. See link for details. **Note:** This feature is only available for certain Meeting add-on, Education, and Business and higher plans. If this feature is not enabled on the host's account, this setting will **not** be applied to the meeting.

      • enable

        boolean — Whether to enable [language interpretation](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0064768) for the meeting.

      • interpreters

        array — Information about the meeting's language interpreters.

        Items:

        • email

          string, format: email — The interpreter's email address.

        • interpreter_languages

          string — A comma-separated list of the interpreter's languages. The string must contain exactly two languages. To get this value, use the `language_interpretation` object's `languages` and `custom_languages` values in the [**Get user settings**](/docs/api/users/#tag/users/GET/users/{userId}/settings) API response. **languages**: System-supported languages include `English`, `Chinese`, `Japanese`, `German`, `French`, `Russian`, `Portuguese`, `Spanish`, and `Korean`. **custom_languages**: User-defined languages added by the user. For example, an interpreter translating between English and French should use `English,French`.

        • languages

          string — A comma-separated list of the interpreter's languages. The string must contain exactly two country IDs. Only system-supported languages are allowed: `US` (English), `CN` (Chinese), `JP` (Japanese), `DE` (German), `FR` (French), `RU` (Russian), `PT` (Portuguese), `ES` (Spanish), and `KR` (Korean). For example, to set an interpreter translating from English to Chinese, use `US,CN`.

    • meeting_authentication

      boolean — `true` - Only authenticated users can join meetings.

    • meeting_invitees

      array — A list of the meeting's invitees.

      Items:

      • email

        string, format: email — The invitee's email address.

      • internal_user

        boolean, default: false — Whether the meeting invitee is an internal user.

    • mute_upon_entry

      boolean, default: false — Mute participants upon entry.

    • participant_focused_meeting

      boolean, default: false — Whether to set the meeting as a participant focused meeting.

    • participant_video

      boolean — Start video when participants join the meeting.

    • private_meeting

      boolean — Whether the meeting is set as private.

    • push_change_to_calendar

      boolean, default: false — Whether to push meeting changes to the calendar. To enable this feature, configure the **Configure Calendar and Contacts Service** in the user's profile page of the Zoom web portal and enable the **Automatically sync Zoom calendar events information bi-directionally between Zoom and integrated calendars.** setting in the **Settings** page of the Zoom web portal. * `true` - Push meeting changes to the calendar. * `false` - Do not push meeting changes to the calendar.

    • question_and_answer

      object — [Q&amp;A](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0065237) for meeting.

      • allow_anonymous_questions

        boolean — * `true` - Allow participants to send questions without providing their name to the host, co-host, and panelists. * `false` - Don't allow anonymous questions. Not supported for simulive meetings.

      • allow_submit_questions

        boolean — * `true` - Allow participants to submit questions. * `false` - Don't allow participants to submit questions.

      • attendees_can_comment

        boolean — * `true` - Attendees can answer questions or leave a comment in the question thread. * `false` - Attendees can't answer questions or leave a comment in the question thread.

      • attendees_can_upvote

        boolean — * `true` - Attendees can select the thumbs up button to bring popular questions to the top of the Q&amp;A window. * `false` - Attendees can't select the thumbs up button on questions.

      • enable

        boolean — * `true` - Enable [Q&amp;A](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0065237) for the meeting. * `false` - Disable Q&amp;A for the meeting.

      • question_visibility

        string, possible values: "answered", "all" — Indicate whether you want attendees to be able to view only answered questions, or view all questions. * `answered` - Attendees can only view answered questions. * `all` - Attendees can view all questions submitted in the Q&amp;A.

    • registrants_confirmation_email

      boolean — Whether to send registrants an email confirmation. * `true` - Send a confirmation email. * `false` - Do not send a confirmation email.

    • registrants_email_notification

      boolean — Whether to send registrants email notifications about their registration approval, cancellation, or rejection. * `true` - Send an email notification. * `false` - Do not send an email notification. Set this value to `true` to also use the `registrants_confirmation_email` parameter.

    • registration_type

      integer, possible values: 1, 2, 3, default: 1 — Registration type. Used for recurring meeting with fixed time only. `1` Attendees register once and can attend any of the occurrences. `2` Attendees need to register for each occurrence to attend. `3` Attendees register once and can choose one or more occurrences to attend.

    • request_permission_to_unmute_participants

      boolean — Whether to enable the [**Request permission to unmute participants**](https://support.zoom.us/hc/en-us/articles/203435537-Muting-and-unmuting-participants-in-a-meeting) setting. This option cannot be used together with `allow_host_control_participant_mute_state`, only one of the two can be enabled at a time.

    • resources

      array — The meeting's resources.

      Items:

      • permission_level

        string, possible values: "editor", "commenter", "viewer", default: "editor" — The permission levels for users to access the whiteboard. * `editor` - Users with link access can edit the board. * `commenter` - Users with link access can comment on the board. * `viewer` - Users with link access can view the board.

      • resource_id

        string — The resource ID.

      • resource_type

        string, possible values: "whiteboard" — The resource type.

    • show_join_info

      boolean — Whether to show the meeting's join information on the registration confirmation page. This setting is only applied to meetings with registration enabled.

    • show_share_button

      boolean — Show social share buttons on the meeting registration page. This setting only works for meetings that require [registration](https://support.zoom.us/hc/en-us/articles/211579443-Setting-up-registration-for-a-meeting).

    • sign_language_interpretation

      object — The meeting's [sign language interpretation settings](https://support.zoom.us/hc/en-us/articles/9644962487309-Using-sign-language-interpretation-in-a-meeting-or-webinar). Make sure to add the language in the web portal in order to use it in the API. See link for details. **Note:** If this feature is not enabled on the host's account, this setting will **not** be applied to the meeting.

      • enable

        boolean — Whether to enable [sign language interpretation](https://support.zoom.us/hc/en-us/articles/9644962487309-Using-sign-language-interpretation-in-a-meeting-or-webinar) for the meeting.

      • interpreters

        array — Information about the meeting's sign language interpreters.

        Items:

        • email

          string, format: email — The interpreter's email address.

        • sign_language

          string — The interpreter's sign language. To get this value, use the `sign_language_interpretation` object's `languages` and `custom_languages` values in the [**Get user settings**](/docs/api/rest/reference/zoom-api/methods#operation/userSettings) API response.

    • summary_template_id

      string — The summary template ID used to generate a meeting summary based on a predefined template. To get available summary templates, use the **Get user summary templates** API. To enable this feature for your account, please [contact Zoom Support](https://support.zoom.com/hc/en).

    • use_pmi

      boolean — Whether to use a [Personal Meeting ID (PMI)](/docs/api/using-zoom-apis/#understanding-personal-meeting-id-pmi) for the meeting. This field is only used for scheduled meetings(`2`) and recurring meetings with no fixed time(`3`).

    • waiting_room

      boolean, default: false — Enable waiting room

    • waiting_room_options

      object — Configuration settings for the meeting's waiting room.

      • mode (required)

        string, possible values: "follow_setting", "custom" — This field specifies the waiting room behavior for this meeting. * `follow_setting` - Use the Zoom web portal setting. * `custom` - Specify which participants should go into the waiting room.

      • who_goes_to_waiting_room

        string, possible values: "everyone", "users_not_in_account", "users_not_in_account_or_whitelisted_domains", "users_not_on_invite", "users_not_in_org" — Which participants should be placed into the waiting room. Required if `mode` is set to `custom`. * `everyone` - Everyone. * `users_not_in_account` - Users not in your account. * `users_not_in_account_or_whitelisted_domains` - Users who are not in your account and not part of your whitelisted domains. * `users_not_on_invite` - Users not on the meeting invite. * `users_not_in_org` - Users not in your organization.

    • watermark

      boolean, default: false — Add a watermark when viewing a shared screen.

    • who_can_ask_questions

      integer, possible values: 1, 2, 3, 4, 5 — Defines who can ask questions about this meeting's transcript. This field is applicable only when `auto_start_ai_companion_questions` is set to `true`. * `1` - All participants and invitees. * `2` - All participants only from when they join. * `3` - Only meeting host. * `4` - Participants and invitees in our organization. * `5` - Participants in our organization only from when they join.

    • who_will_receive_summary

      integer, possible values: 1, 2, 3, 4 — Defines who will receive a summary after this meeting. This field is applicable only when `auto_start_meeting_summary` is set to `true`. * `1` - Only meeting host. * `2` - Only meeting host, co-hosts, and alternative hosts. * `3` - Only meeting host and meeting invitees in our organization. * `4` - All meeting invitees including those outside of our organization.

  • start_time

    string, format: date-time — Meeting start time in GMT or UTC. Start time will not be returned if the meeting is an **instant** meeting.

  • start_url

    string — The `start_url` of a meeting is a URL that a host or an alternative host can start the meeting. The expiration time for the `start_url` field listed in the response of the [**Create a meeting**](/docs/api/rest/reference/zoom-api/methods#operation/meetingCreate) API is two hours for all regular users. For users created using the `custCreate` option via the [**Create users**](/docs/api/rest/reference/zoom-api/methods#operation/userCreate) API, the expiration time of the `start_url` field is 90 days. For security reasons, to retrieve the updated value for the `start_url` field programmatically after the expiry time, you must call the [**Get a meeting](/docs/api/rest/reference/zoom-api/methods#operation/meeting) API and refer to the value of the `start_url` field in the response. This URL should only be used by the host of the meeting and **should not be shared with anyone other than the host** of the meeting as anyone with this URL will be able to login to the Zoom Client as the host of the meeting.

  • status

    string, possible values: "waiting", "started" — The meeting status. * `waiting` - The meeting has not started. * `started` - The meeting is currently in progress.

  • template_id

    string — The account admin meeting template ID used to schedule a meeting using a [meeting template](https://support.zoom.us/hc/en-us/articles/360036559151-Meeting-templates). For a list of account admin-provided meeting templates, use the [**List meeting templates**](/docs/api-reference/zoom-api/methods#operation/listMeetingTemplates) API. * At this time, this field **only** accepts account admin meeting template IDs. * To enable the account admin meeting templates feature, [contact Zoom support](https://support.zoom.us/hc/en-us).

  • timezone

    string — The timezone to format the meeting start time.

  • topic

    string — Meeting topic.

  • tracking_fields

    array — Tracking fields.

    Items:

    • field

      string — The tracking field's label.

    • value

      string — The tracking field's value.

    • visible

      boolean — Indicates whether the [tracking field](https://support.zoom.us/hc/en-us/articles/115000293426-Scheduling-Tracking-Fields) is visible in the meeting scheduling options in the Zoom Web Portal or not. `true`: Tracking field is visible. `false`: Tracking field is not visible to the users when they look at the meeting details in the Zoom Web Portal but the field was used while scheduling this meeting via API. An invisible tracking field can be used by users while scheduling meetings via API only.

  • type

    integer, possible values: 1, 2, 3, 4, 8, 10, default: 2 — The type of meeting. * `1` - An instant meeting. * `2` - A scheduled meeting. * `3` - A recurring meeting with no fixed time. * `4` - A PMI Meeting. * `8` - A recurring meeting with fixed time. * `10` - A screen share only meeting.

  • uuid

    string — Unique meeting ID. Each meeting instance generates its own meeting UUID - after a meeting ends, a new UUID is generated for the next instance of the meeting. Retrieve a list of UUIDs from past meeting instances using the [**List past meeting instances**](/docs/api/rest/reference/zoom-api/methods#operation/pastMeetings) API. [Double encode](/docs/api/rest/using-zoom-apis/#meeting-id-and-uuid) your UUID when using it for API calls if the UUID begins with a `/` or contains `//` in it.

Example:

{
  "assistant_id": "kFFvsJc-Q1OSxaJQLvaa_A",
  "host_email": "jchill@example.com",
  "host_id": "30R7kT7bTIKSNUFEuH_Qlg",
  "id": 97763643886,
  "uuid": "aDYlohsHRtCd4ii1uC2+hA==",
  "registration_url": "https://example.com/meeting/register/7ksAkRCoEpt1Jm0wa-E6lICLur9e7Lde5oW6",
  "agenda": "My Meeting",
  "created_at": "2022-03-25T07:29:29Z",
  "duration": 60,
  "encrypted_password": "8pEkRweVXPV3Ob2KJYgFTRlDtl1gSn.1",
  "pstn_password": "123456",
  "h323_password": "123456",
  "join_url": "https://example.com/j/11111",
  "chat_join_url": "https://example.com/launch/jc/11111",
  "occurrences": [
    {
      "duration": 60,
      "occurrence_id": "1648194360000",
      "start_time": "2022-03-25T07:46:00Z",
      "status": "available"
    }
  ],
  "password": "123456",
  "pmi": "97891943927",
  "pre_schedule": false,
  "recurrence": {
    "end_date_time": "2022-04-02T15:59:00Z",
    "end_times": 7,
    "monthly_day": 1,
    "monthly_week": 1,
    "monthly_week_day": 1,
    "repeat_interval": 1,
    "type": 1,
    "weekly_days": "1"
  },
  "settings": {
    "additional_data_center_regions": [
      "TY"
    ],
    "allow_multiple_devices": true,
    "alternative_hosts": "jchill@example.com;thill@example.com",
    "alternative_hosts_email_notification": true,
    "alternative_host_update_polls": true,
    "alternative_host_manage_meeting_summary": true,
    "alternative_host_manage_cloud_recording": false,
    "approval_type": 0,
    "approved_or_denied_countries_or_regions": {
      "approved_list": [
        "CX"
      ],
      "denied_list": [
        "CA"
      ],
      "enable": true,
      "method": "approve"
    },
    "audio": "telephony",
    "audio_conference_info": "test",
    "authentication_domains": "example.com",
    "authentication_exception": [
      {
        "email": "jchill@example.com",
        "name": "Jill Chill",
        "join_url": "https://example.com/s/11111"
      }
    ],
    "authentication_name": "Sign in to Zoom",
    "authentication_option": "signIn_D8cJuqWVQ623CI4Q8yQK0Q",
    "auto_recording": "cloud",
    "auto_add_recording_to_video_management": {
      "enable": true,
      "channels": [
        {
          "channel_id": "Uyh5qeykTDiA66YQEYmFPg",
          "name": "Team Weekly Meetings"
        }
      ]
    },
    "breakout_room": {
      "enable": true,
      "rooms": [
        {
          "name": "room1",
          "participants": [
            "jchill@example.com"
          ]
        }
      ]
    },
    "calendar_type": 1,
    "close_registration": false,
    "contact_email": "jchill@example.com",
    "contact_name": "Jill Chill",
    "custom_keys": [
      {
        "key": "key1",
        "value": "value1"
      }
    ],
    "email_notification": true,
    "encryption_type": "enhanced_encryption",
    "focus_mode": true,
    "global_dial_in_countries": [
      "US"
    ],
    "global_dial_in_numbers": [
      {
        "city": "New York",
        "country": "US",
        "country_name": "US",
        "number": "+1 1000200200",
        "type": "toll"
      }
    ],
    "host_video": true,
    "jbh_time": 0,
    "join_before_host": true,
    "question_and_answer": {
      "enable": true,
      "allow_submit_questions": true,
      "allow_anonymous_questions": true,
      "question_visibility": "all",
      "attendees_can_comment": true,
      "attendees_can_upvote": true
    },
    "language_interpretation": {
      "enable": true,
      "interpreters": [
        {
          "email": "interpreter@example.com",
          "interpreter_languages": "English,French"
        }
      ]
    },
    "sign_language_interpretation": {
      "enable": true,
      "interpreters": [
        {
          "email": "interpreter@example.com",
          "sign_language": "American"
        }
      ]
    },
    "meeting_authentication": true,
    "mute_upon_entry": false,
    "participant_video": false,
    "private_meeting": false,
    "registrants_confirmation_email": true,
    "registrants_email_notification": true,
    "registration_type": 1,
    "show_share_button": true,
    "show_join_info": true,
    "use_pmi": false,
    "waiting_room": false,
    "waiting_room_options": {
      "mode": "follow_setting",
      "who_goes_to_waiting_room": "everyone"
    },
    "watermark": false,
    "host_save_video_order": true,
    "internal_meeting": false,
    "meeting_invitees": [
      {
        "email": "jchill@example.com",
        "internal_user": false
      }
    ],
    "continuous_meeting_chat": {
      "enable": true,
      "channel_id": "cabc1234567defghijkl01234"
    },
    "participant_focused_meeting": false,
    "push_change_to_calendar": false,
    "resources": [
      {
        "resource_type": "whiteboard",
        "resource_id": "X4Hy02w3QUOdskKofgb9Jg",
        "permission_level": "editor"
      }
    ],
    "auto_start_meeting_summary": false,
    "who_will_receive_summary": 1,
    "auto_start_ai_companion_questions": false,
    "who_can_ask_questions": 1,
    "summary_template_id": "1e1356ad",
    "device_testing": false,
    "request_permission_to_unmute_participants": true,
    "allow_host_control_participant_mute_state": false,
    "disable_participant_video": false,
    "email_in_attendee_report": true
  },
  "start_time": "2022-03-25T07:29:29Z",
  "start_url": "https://example.com/s/11111",
  "status": "waiting",
  "template_id": "Dv4YdINdTk+Z5RToadh5ug==",
  "timezone": "America/Los_Angeles",
  "topic": "My Meeting",
  "tracking_fields": [
    {
      "field": "field1",
      "value": "value1",
      "visible": true
    }
  ],
  "type": 2,
  "dynamic_host_key": "123456",
  "creation_source": "open_api"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `3000` <br> Cannot access webinar info. <br> **Error Code:** `3161` <br> Your user account is not allowed meeting hosting and scheduling capabilities. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Meeting does not exist: {meetingId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rate-limits/).

Delete a meeting

  • Method: DELETE
  • Path: /accounts/{accountId}/meetings/{meetingId}
  • Tags: Meetings

Delete a meeting.

Prerequisites:

  • For recurring meetings, the occurrence_id is required to delete a specific occurrence. If not provided, the entire recurring series will be deleted.

Scopes: meeting:master

Granular Scopes: meeting:delete:meeting:master

Rate Limit Label: LIGHT

Responses

Status: 204 **HTTP Status Code**: `204` Meeting deleted.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Invalid parameter: `occurrence_id`. <br> **Error Code:** `3000` <br> Cannot access webinar information. <br> **Error Code:** `3018` <br> Not allowed to delete PMI. <br> **Error Code:** `3037` <br> Not allowed to delete PAC. <br> **Error Code:** `3161` <br> Meeting hosting and scheduling capabilities are not allowed for your user account. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Meeting does not exist: {meetingId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rest/rate-limits/).

Update a meeting

  • Method: PATCH
  • Path: /accounts/{accountId}/meetings/{meetingId}
  • Tags: Meetings

Updates meeting details.

Prerequisites

  • The start_time value must be a future date. If the value is omitted or a date is in the past, the API ignores this value and does not update any recurring meetings.
  • The recurrence object is required only when updating the entire series of a recurring meeting with type=8.
  • This API has a rate limit of 100 requests per day. You can update a meeting for a maximum of 100 times within a 24-hour period.

Scopes: meeting:master

Granular Scopes: meeting:update:meeting:master

Rate Limit Label: LIGHT

Request Body

Content-Type: application/json
  • agenda

    string — Meeting description.

  • duration

    integer — The meeting's scheduled duration, in minutes. This field is used for type `2` scheduled meetings and type `8` recurring meetings with a fixed time. The value must be between 1 and 1440 minutes, which equates to 24 hours.

  • password

    string — The passcode required to join the meeting. By default, a passcode can **only** have a maximum length of 10 characters and only contain alphanumeric characters and the `@`, `-`, `_`, and `*` characters. **Note** * If the account owner or administrator has configured [minimum passcode requirement settings](https://support.zoom.us/hc/en-us/articles/360033559832-Meeting-and-webinar-passwords#h_a427384b-e383-4f80-864d-794bf0a37604), the passcode **must** meet those requirements. * If passcode requirements are enabled, use the [**Get user settings**](/docs/api/users/#tag/users/GET/users/{userId}/settings) API or the [**Get account settings**](/docs/api/accounts/#tag/accounts/GET/accounts/{accountId}/settings) API to get the requirements. * If the **Require a passcode when scheduling new meetings** account setting is enabled and locked, a passcode will be automatically generated if one is not provided.

  • pre_schedule

    boolean, default: false — Whether to create a prescheduled meeting through the [GSuite app](https://support.zoom.us/hc/en-us/articles/360020187492-Zoom-for-GSuite-add-on). This **only** supports the meeting `type` value of `2` - scheduled meetings- and `3` - recurring meetings with no fixed time. * `true` - Create a prescheduled meeting. * `false` - Create a regular meeting.

  • recurrence

    object — Recurrence object. Use this object only for a meeting with type `8`, a recurring meeting with fixed time.

    • type (required)

      integer, possible values: 1, 2, 3 — Recurrence meeting types. `1` - Daily. `2` - Weekly. `3` - Monthly.

    • end_date_time

      string, format: date-time — Select the final date when the meeting recurs before it is canceled. Should be in UTC time, such as 2017-11-25T12:00:00Z. Cannot be used with `end_times`.

    • end_times

      integer, default: 1 — Select how many times the meeting should recur before it is canceled. If `end_times` is set to 0, it means there is no end time. The maximum number of recurrences is 60. Cannot be used with `end_date_time`.

    • monthly_day

      integer, default: 1 — Use this field **only if you're scheduling a recurring meeting of type** `3` to state the day in a month when the meeting should recur. The value range is from 1 to 31. For instance, if the meeting should recur on 23rd of each month, provide `23` as this field's value and `1` as the `repeat_interval` field's value. If the meeting should recur every three months on 23rd of the month, change the `repeat_interval` field's value to `3`.

    • monthly_week

      integer, possible values: -1, 1, 2, 3, 4 — Use this field **only if you're scheduling a recurring meeting of type** `3` to state the week of the month when the meeting should recur. If you use this field, you must also use the `monthly_week_day` field to state the day of the week when the meeting should recur. `-1` - Last week of the month. `1` - First week of the month. `2` - Second week of the month. `3` - Third week of the month. `4` - Fourth week of the month.

    • monthly_week_day

      integer, possible values: 1, 2, 3, 4, 5, 6, 7 — Use this field only if you're scheduling a recurring meeting of type `3` to state a specific day in a week when a monthly meeting should recur. To use this field, you must also use the `monthly_week` field. `1` - Sunday. `2` - Monday. `3` - Tuesday. `4` - Wednesday. `5` - Thursday. `6` - Friday. `7` - Saturday.

    • repeat_interval

      integer — Define the interval when the meeting should recur. For instance, to schedule a meeting that recurs every two months, set this field's value as `2` and the `type` parameter's value to `3`. For a daily meeting, the maximum interval is `99` days. For a weekly meeting, the maximum interval is `50` weeks. For a monthly meeting, the maximum value is `10` months.

    • weekly_days

      string, possible values: "1", "2", "3", "4", "5", "6", "7", default: "1" — This field is required if you're scheduling a recurring meeting of type `2`, to state which days of the week the meeting should repeat. Thiw field's value could be a number between `1` to `7` in string format. For instance, if the meeting should recur on Sunday, provide `1` as this field's value. **Note** If you would like the meeting to occur on multiple days of a week, you should provide comma separated values for this field. For instance, if the meeting should recur on Sundays and Tuesdays provide `1,3` as this field's value. `1` - Sunday. `2` - Monday. `3` - Tuesday. `4` - Wednesday. `5` - Thursday. `6` - Friday. `7` - Saturday.

  • schedule_for

    string — The email address or `userId` of the user to schedule a meeting for.

  • settings

    object — Meeting settings.

    • allow_host_control_participant_mute_state

      boolean — Whether to allow the host and co-hosts to fully control the mute state of participants. This option cannot be used together with `request_permission_to_unmute_participants`, only one of the two can be enabled at a time.

    • allow_multiple_devices

      boolean — Allow attendees to join the meeting from multiple devices. This setting only works for meetings that require [registration](https://support.zoom.us/hc/en-us/articles/211579443-Setting-up-registration-for-a-meeting).

    • alternative_host_manage_cloud_recording

      boolean — Whether to allow an alternative host to manage meeting cloud recordings.

    • alternative_host_manage_meeting_summary

      boolean — Whether to allow an alternative host to manage meeting summaries.

    • alternative_host_update_polls

      boolean — Whether the **Allow alternative hosts to add or edit polls** feature is enabled. This requires Zoom version 5.8.0 or higher.

    • alternative_hosts

      string — A semicolon-separated list of the meeting's alternative hosts' email addresses or IDs.

    • alternative_hosts_email_notification

      boolean, default: true — Flag to determine whether to send email notifications to alternative hosts, default value is true.

    • approval_type

      integer, possible values: 0, 1, 2, default: 2 — Enable registration and set approval for the registration. Note that this feature requires the host to be of **Licensed** user type. **Registration cannot be enabled for a basic user.** `0` - Automatically approve. `1` - Manually approve. `2` - No registration required.

    • approved_or_denied_countries_or_regions

      object — Approve or block users from specific regions or countries from joining this meeting.

      • approved_list

        array — List of countries or regions from where participants can join this meeting.

        Items:

        string

      • denied_list

        array — List of countries or regions from where participants can not join this meeting.

        Items:

        string

      • enable

        boolean — `true` - Setting enabled to either allow users or block users from specific regions to join your meetings. `false` - Setting disabled.

      • method

        string, possible values: "approve", "deny" — Specify whether to allow users from specific regions to join this meeting, or block users from specific regions from joining this meeting. `approve` - Allow users from specific regions or countries to join this meeting. If this setting is selected, include the approved regions or countries in the `approved_list`. `deny` - Block users from specific regions or countries from joining this meeting. If this setting is selected, include the approved regions orcountries in the `denied_list`

    • audio

      string, possible values: "both", "telephony", "voip", "thirdParty", default: "both" — Determine how participants can join the audio portion of the meeting. `both` - Both Telephony and VoIP. `telephony` - Telephony only. `voip` - VoIP only. `thirdParty` - Third party audio conference.

    • audio_conference_info

      string — Third party audio conference info.

    • authentication_domains

      string — If user has configured [Sign Into Zoom with Specified Domains](https://support.zoom.us/hc/en-us/articles/360037117472-Authentication-Profiles-for-Meetings-and-Webinars#h_5c0df2e1-cfd2-469f-bb4a-c77d7c0cca6f) option, this will list the domains that are authenticated.

    • authentication_exception

      array — The participants added here will receive unique meeting invite links and bypass authentication.

      Items:

      • email

        string, format: email — The participant's email address.

      • join_url

        string — URL for participants to join the meeting

      • name

        string — The participant's name.

    • authentication_name

      string — Authentication name set in the [authentication profile](https://support.zoom.us/hc/en-us/articles/360037117472-Authentication-Profiles-for-Meetings-and-Webinars#h_5c0df2e1-cfd2-469f-bb4a-c77d7c0cca6f).

    • authentication_option

      string — Meeting authentication option ID.

    • auto_add_recording_to_video_management

      object — Automatically add meeting recordings to a video channel in video management. To enable this feature for your account, please [contact Zoom Support](https://support.zoom.us/hc/en-us).

      • enable (required)

        boolean, default: false — Whether to automatically add the meeting recording to video management.

      • channels

        array — List of video management channels where the meeting recording will be added.

        Items:

        • channel_id (required)

          string — The unique ID of a video management channel.

        • name

          string — The video management channel's name.

    • auto_recording

      string, possible values: "local", "cloud", "none", default: "none" — Automatic recording. `local` - Record on local. `cloud` - Record on cloud. `none` - Disabled.

    • auto_start_ai_companion_questions

      boolean, default: false — Whether to automatically start AI Companion questions.

    • auto_start_meeting_summary

      boolean, default: false — Whether to automatically start meeting summary.

    • breakout_room

      object — Setting to [pre-assign breakout rooms](https://support.zoom.us/hc/en-us/articles/360032752671-Pre-assigning-participants-to-breakout-rooms#h_36f71353-4190-48a2-b999-ca129861c1f4).

    • calendar_type

      integer, possible values: 1, 2 — The type of calendar integration used to schedule the meeting. * `1` - [Zoom Outlook add-in](https://support.zoom.us/hc/en-us/articles/360031592971-Getting-started-with-Outlook-plugin-and-add-in) * `2` - [Zoom for Google Workspace add-on](https://support.zoom.us/hc/en-us/articles/360020187492-Using-the-Zoom-for-Google-Workspace-add-on) Works with the `private_meeting` field to determine whether to share details of meetings.

    • close_registration

      boolean, default: false — Close registration after the event date.

    • cn_meeting

      boolean, default: false — Host the meeting in China.

    • contact_email

      string — Contact email for registration.

    • contact_name

      string — Contact name for registration.

    • continuous_meeting_chat

      object — Information about the **Enable continuous meeting chat** feature. This setting only applies to scheduled and recurring meetings, type `2`, `3`, and `8`. It is **not supported** for type `1` instant meetings or type `10` screen share only meetings.

      • auto_add_invited_external_users

        boolean — Whether to enable the **Automatically add invited external users** setting.

      • auto_add_meeting_participants

        boolean — Whether to enable the **Automatically add meeting participants** setting.

      • enable

        boolean — Whether to enable the **Enable continuous meeting chat** setting.

    • custom_keys

      array — Custom keys and values assigned to the meeting.

      Items:

      • key

        string — Custom key associated with the user.

      • value

        string — Value of the custom key associated with the user.

    • device_testing

      boolean, default: false — Enable the device testing.

    • disable_participant_video

      boolean, default: false — Whether to disable the participant video during a meeting. To enable this feature for your account, [contact Zoom Support](https://support.zoom.us/hc/en-us).

    • email_in_attendee_report

      boolean — Whether to include authenticated guest's email addresses in meetings' attendee reports.

    • email_notification

      boolean, default: true — Whether to send email notifications to [alternative hosts](https://support.zoom.us/hc/en-us/articles/208220166) and [users with scheduling privileges](https://support.zoom.us/hc/en-us/articles/201362803-Scheduling-privilege). This value defaults to `true`.

    • encryption_type

      string, possible values: "enhanced_encryption", "e2ee" — Choose between enhanced encryption and [end-to-end encryption](https://support.zoom.us/hc/en-us/articles/360048660871) when starting or a meeting. When using end-to-end encryption, several features such cloud recording and phone/SIP/H.323 dial-in, will be **automatically disabled**. `enhanced_encryption` - Enhanced encryption. Encryption is stored in the cloud if you enable this option. `e2ee` - [End-to-end encryption](https://support.zoom.us/hc/en-us/articles/360048660871). The encryption key is stored in your local device and can not be obtained by anyone else. Enabling this setting also **disables** the features join before host, cloud recording, streaming, live transcription, breakout rooms, polling, 1:1 private chat, and meeting reactions.

    • enforce_login

      boolean — Only signed in users can join this meeting. **This field is deprecated and will not be supported in the future.** As an alternative, use the `meeting_authentication`, `authentication_option`, and `authentication_domains` fields to understand the [authentication configurations](https://support.zoom.us/hc/en-us/articles/360037117472-Authentication-Profiles-for-Meetings-and-Webinars) set for the meeting.

    • enforce_login_domains

      string — Only signed in users with specified domains can join meetings. **This field is deprecated and will not be supported in the future.** As an alternative, use the `meeting_authentication`, `authentication_option`. and `authentication_domains` fields to understand the [authentication configurations](https://support.zoom.us/hc/en-us/articles/360037117472-Authentication-Profiles-for-Meetings-and-Webinars) set for the meeting.

    • focus_mode

      boolean — Whether the [**Focus Mode** feature](https://support.zoom.us/hc/en-us/articles/360061113751-Using-focus-mode) is enabled when the meeting starts.

    • global_dial_in_countries

      array — List of global dial-in countries

      Items:

      string

    • global_dial_in_numbers

      array — Global dial-in countries or regions

      Items:

      • city

        string — City of the number, if any, such as Chicago.

      • country

        string — Country code, such as BR.

      • country_name

        string — Full name of country, such as Brazil.

      • number

        string — Phone number, such as +1 2332357613.

      • type

        string, possible values: "toll", "tollfree" — Type of number.

    • host_save_video_order

      boolean — Whether the **Allow host to save video order** feature is enabled.

    • host_video

      boolean — Start video when the host joins the meeting.

    • in_meeting

      boolean, default: false — Host meeting in India.

    • internal_meeting

      boolean, default: false — Whether to set the meeting as an internal meeting.

    • jbh_time

      integer, possible values: 0, 5, 10, 15 — If the value of `join_before_host` field is set to true, use this field to indicate time limits for a participant to join a meeting before a host. * `0` - Allow participant to join anytime. * `5` - Allow participant to join 5 minutes before meeting start time. * `10` - Allow participant to join 10 minutes before meeting start time. * `15` - Allow participant to join 15 minutes before meeting start time.

    • join_before_host

      boolean, default: false — Allow participants to join the meeting before the host starts the meeting. Only used for scheduled or recurring meetings.

    • language_interpretation

      object — The meeting's [language interpretation settings](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0064768). Make sure to add the language in the web portal in order to use it in the API. See link for details. **Note:** This feature is only available for certain Meeting add-on, Education, and Business and higher plans. If this feature is not enabled on the host's account, this setting will **not** be applied to the meeting.

      • enable

        boolean — Whether to enable [language interpretation](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0064768) for the meeting.

      • interpreters

        array — Information about the meeting's language interpreters.

        Items:

        • email

          string, format: email — The interpreter's email address.

        • interpreter_languages

          string — A comma-separated list of the interpreter's languages. The string must contain exactly two languages. To get this value, use the `language_interpretation` object's `languages` and `custom_languages` values in the [**Get user settings**](/docs/api/users/#tag/users/GET/users/{userId}/settings) API response. **languages**: System-supported languages include `English`, `Chinese`, `Japanese`, `German`, `French`, `Russian`, `Portuguese`, `Spanish`, and `Korean`. **custom_languages**: User-defined languages added by the user. For example, an interpreter translating between English and French should use `English,French`.

        • languages

          string — A comma-separated list of the interpreter's languages. The string must contain exactly two country IDs. Only system-supported languages are allowed: `US` (English), `CN` (Chinese), `JP` (Japanese), `DE` (German), `FR` (French), `RU` (Russian), `PT` (Portuguese), `ES` (Spanish), and `KR` (Korean). For example, to set an interpreter translating from English to Chinese, use `US,CN`.

    • meeting_authentication

      boolean — `true`- Only authenticated users can join meetings.

    • meeting_invitees

      array — A list of the meeting's invitees.

      Items:

      • email

        string, format: email — The invitee's email address.

    • mute_upon_entry

      boolean, default: false — Mute participants upon entry.

    • participant_focused_meeting

      boolean, default: false — Whether to set the meeting as a participant focused meeting.

    • participant_video

      boolean — Start video when participants join the meeting.

    • private_meeting

      boolean — Whether the meeting is set as private.

    • push_change_to_calendar

      boolean — Whether to push meeting changes to the calendar. To enable this feature, configure the **Configure Calendar and Contacts Service** in the user's profile page of the Zoom web portal and enable the **Automatically sync Zoom calendar events information bi-directionally between Zoom and integrated calendars.** setting in the **Settings** page of the Zoom web portal. * `true` - Push meeting changes to the calendar. * `false` - Do not push meeting changes to the calendar.

    • question_and_answer

      object — [Q&amp;A](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0065237) for meeting.

      • allow_anonymous_questions

        boolean — * `true` - Allow participants to send questions without providing their name to the host, co-host, and panelists.. * `false` - Do not allow anonymous questions.(Not supported for simulive meeting.)

      • allow_submit_questions

        boolean — * `true`: Allow participants to submit questions. * `false`: Do not allow submit questions.

      • attendees_can_comment

        boolean — * `true` - Attendees can answer questions or leave a comment in the question thread. * `false` - Attendees can not answer questions or leave a comment in the question thread

      • attendees_can_upvote

        boolean — * `true` - Attendees can click the thumbs up button to bring popular questions to the top of the Q&amp;A window. * `false` - Attendees can not click the thumbs up button on questions.

      • enable

        boolean — * `true` - Enable [Q&amp;A](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0065237) for meeting. * `false` - Disable Q&amp;A for meeting.

      • question_visibility

        string, possible values: "answered", "all" — Indicate whether you want attendees to be able to view answered questions only or view all questions. * `answered` - Attendees are able to view answered questions only. * `all` - Attendees are able to view all questions submitted in the Q&amp;A.

    • registrants_confirmation_email

      boolean — Whether to send registrants an email confirmation. * `true` - Send a confirmation email. * `false` - Do not send a confirmation email.

    • registrants_email_notification

      boolean — Whether to send registrants email notifications about their registration approval, cancellation, or rejection. * `true` - Send an email notification. * `false` - Do not send an email notification. Set this value to `true` to also use the `registrants_confirmation_email` parameter.

    • registration_type

      integer, possible values: 1, 2, 3, default: 1 — Registration type. Used for recurring meeting with fixed time only. `1` - Attendees register once and can attend any of the occurrences. `2` - Attendees need to register for each occurrence to attend. `3` - Attendees register once and can choose one or more occurrences to attend.

    • request_permission_to_unmute_participants

      boolean — Whether to enable the [**Request permission to unmute participants**](https://support.zoom.us/hc/en-us/articles/203435537-Muting-and-unmuting-participants-in-a-meeting) setting. This option cannot be used together with `allow_host_control_participant_mute_state`, only one of the two can be enabled at a time.

    • resources

      array — The meeting's resources.

      Items:

      • permission_level

        string, possible values: "editor", "commenter", "viewer", default: "editor" — The permission levels for users to access the whiteboard. * `editor` - Users with link access can edit the board. * `commenter` - Users with link access can comment on the board. * `viewer` - Users with link access can view the board.

      • resource_id

        string — The resource ID.

      • resource_type

        string, possible values: "whiteboard" — The resource type.

    • show_share_button

      boolean — Show social share buttons on the meeting registration page. This setting only works for meetings that require [registration](https://support.zoom.us/hc/en-us/articles/211579443-Setting-up-registration-for-a-meeting).

    • sign_language_interpretation

      object — The meeting's [sign language interpretation settings](https://support.zoom.us/hc/en-us/articles/9644962487309-Using-sign-language-interpretation-in-a-meeting-or-webinar). Make sure to add the language in the web portal in order to use it in the API. See link for details. **Note:** If this feature is not enabled on the host's account, this setting will **not** be applied to the meeting.

      • enable

        boolean — Whether to enable [sign language interpretation](https://support.zoom.us/hc/en-us/articles/9644962487309-Using-sign-language-interpretation-in-a-meeting-or-webinar) for the meeting.

      • interpreters

        array — Information about the meeting's sign language interpreters.

        Items:

        • email

          string, format: email — The interpreter's email address.

        • sign_language

          string — The interpreter's sign language. To get this value, use the `sign_language_interpretation` object's `languages` and `custom_languages` values in the [**Get user settings**](/api-reference/zoom-api/methods#operation/userSettings) API response.

    • summary_template_id

      string — The summary template ID used to generate a meeting summary based on a predefined template. To get available summary templates, use the **Get user summary templates** API. To enable this feature for your account, please [contact Zoom Support](https://support.zoom.com/hc/en).

    • use_pmi

      boolean — Whether to use a [Personal Meeting ID (PMI)](/docs/api/using-zoom-apis/#understanding-personal-meeting-id-pmi) for the meeting. This field is only used for scheduled meetings(`2`) and recurring meetings with no fixed time(`3`).

    • waiting_room

      boolean, default: false — Enable waiting room.

    • waiting_room_options

      object — Configuration settings for the meeting's waiting room.

      • mode (required)

        string, possible values: "follow_setting", "custom" — The waiting room behavior for this meeting. * `follow_setting` - Use the Zoom web portal setting. * `custom` - Specify which participants should go into the waiting room.

      • who_goes_to_waiting_room

        string, possible values: "everyone", "users_not_in_account", "users_not_in_account_or_whitelisted_domains", "users_not_on_invite", "users_not_in_org" — Which participants should be placed into the waiting room. Required if `mode` is set to `custom`. * `everyone` - Everyone. * `users_not_in_account` - Users not in your account. * `users_not_in_account_or_whitelisted_domains` - Users who are not in your account and not part of your whitelisted domains. * `users_not_on_invite` - Users not on the meeting invite. * `users_not_in_org` - Users not in your organization.

    • watermark

      boolean, default: false — Add a watermark when viewing a shared screen.

    • who_can_ask_questions

      integer, possible values: 1, 2, 3, 4, 5 — Defines who can ask questions about this meeting's transcript. This field is applicable only when `auto_start_ai_companion_questions` is set to `true`. * `1` - All participants and invitees. * `2` - All participants only from when they join. * `3` - Only meeting host. * `4` - Participants and invitees in our organization. * `5` - Participants in our organization only from when they join.

    • who_will_receive_summary

      integer, possible values: 1, 2, 3, 4 — Defines who will receive a summary after this meeting. This field is applicable only when `auto_start_meeting_summary` is set to `true`. * `1` - Only meeting host. * `2` - Only meeting host, co-hosts, and alternative hosts. * `3` - Only meeting host and meeting invitees in our organization. * `4` - All meeting invitees including those outside of our organization.

  • start_time

    string, format: date-time — Meeting start time. When using a format like `yyyy-MM-dd'T'HH:mm:ss'Z'`, always use GMT time. When using a format like `yyyy-MM-dd'T'HH:mm:ss`, use local time and specify the time zone. Only used for scheduled meetings and recurring meetings with a fixed time.

  • template_id

    string — Unique identifier of the meeting template. [Schedule the meeting from a meeting template](https://support.zoom.us/hc/en-us/articles/360036559151-Meeting-templates#h_86f06cff-0852-4998-81c5-c83663c176fb). Retrieve this field's value by calling the [List meeting templates](/docs/api/meetings/#tag/templates/get/users/{userId}/meeting_templates) API.

  • timezone

    string — The timezone to assign to the `start_time` value. Only use this field for scheduled or recurring meetings with a fixed time. For a list of supported timezones and their formats, see our [timezone list](/docs/api/references/abbreviations/#timezones).

  • topic

    string — Meeting topic.

  • tracking_fields

    array — Tracking fields.

    Items:

    • field

      string — Tracking fields type.

    • value

      string — Tracking fields value.

  • type

    integer, possible values: 1, 2, 3, 8, 10, default: 2 — The type of meeting. * `1` - An instant meeting. * `2` - A scheduled meeting. * `3` - A recurring meeting with no fixed time. * `8` - A recurring meeting with fixed time. * `10` - A screen share only meeting.

Example:

{
  "agenda": "My Meeting",
  "duration": 60,
  "password": "123456",
  "pre_schedule": false,
  "schedule_for": "jchill@example.com",
  "recurrence": {
    "end_date_time": "2022-04-02T15:59:00Z",
    "end_times": 7,
    "monthly_day": 1,
    "monthly_week": 1,
    "monthly_week_day": 1,
    "repeat_interval": 1,
    "type": 1,
    "weekly_days": "1"
  },
  "settings": {
    "allow_multiple_devices": true,
    "alternative_hosts": "jchill@example.com;thill@example.com",
    "alternative_hosts_email_notification": true,
    "alternative_host_update_polls": true,
    "alternative_host_manage_meeting_summary": true,
    "alternative_host_manage_cloud_recording": false,
    "approval_type": 0,
    "approved_or_denied_countries_or_regions": {
      "approved_list": [
        "CX"
      ],
      "denied_list": [
        "CA"
      ],
      "enable": true,
      "method": "approve"
    },
    "audio": "telephony",
    "audio_conference_info": "test",
    "authentication_domains": "example.com",
    "authentication_exception": [
      {
        "email": "jchill@example.com",
        "name": "Jill Chill",
        "join_url": "https://example.com/s/11111"
      }
    ],
    "authentication_name": "Sign in to Zoom",
    "authentication_option": "signIn_D8cJuqWVQ623CI4Q8yQK0Q",
    "auto_recording": "cloud",
    "auto_add_recording_to_video_management": {
      "enable": true,
      "channels": [
        {
          "channel_id": "Uyh5qeykTDiA66YQEYmFPg",
          "name": "Team Weekly Meetings"
        }
      ]
    },
    "breakout_room": {
      "enable": true,
      "rooms": [
        {
          "name": "room1",
          "participants": [
            "jchill@example.com"
          ]
        }
      ]
    },
    "calendar_type": 1,
    "close_registration": false,
    "contact_email": "jchill@example.com",
    "contact_name": "Jill Chill",
    "custom_keys": [
      {
        "key": "key1",
        "value": "value1"
      }
    ],
    "email_notification": true,
    "encryption_type": "enhanced_encryption",
    "focus_mode": true,
    "global_dial_in_countries": [
      "US"
    ],
    "global_dial_in_numbers": [
      {
        "city": "New York",
        "country": "US",
        "country_name": "US",
        "number": "+1 1000200200",
        "type": "toll"
      }
    ],
    "host_video": true,
    "jbh_time": 0,
    "join_before_host": true,
    "question_and_answer": {
      "enable": true,
      "allow_submit_questions": true,
      "allow_anonymous_questions": true,
      "question_visibility": "all",
      "attendees_can_comment": true,
      "attendees_can_upvote": true
    },
    "language_interpretation": {
      "enable": true,
      "interpreters": [
        {
          "email": "interpreter@example.com",
          "interpreter_languages": "English,French"
        }
      ]
    },
    "sign_language_interpretation": {
      "enable": true,
      "interpreters": [
        {
          "email": "interpreter@example.com",
          "sign_language": "American"
        }
      ]
    },
    "meeting_authentication": true,
    "meeting_invitees": [
      {
        "email": "jchil@example.com"
      }
    ],
    "mute_upon_entry": false,
    "participant_video": false,
    "private_meeting": false,
    "registrants_confirmation_email": true,
    "registrants_email_notification": true,
    "registration_type": 1,
    "show_share_button": true,
    "use_pmi": false,
    "waiting_room": false,
    "waiting_room_options": {
      "mode": "follow_setting",
      "who_goes_to_waiting_room": "everyone"
    },
    "watermark": false,
    "host_save_video_order": true,
    "internal_meeting": false,
    "continuous_meeting_chat": {
      "enable": true
    },
    "participant_focused_meeting": false,
    "push_change_to_calendar": false,
    "resources": [
      {
        "resource_type": "whiteboard",
        "resource_id": "X4Hy02w3QUOdskKofgb9Jg",
        "permission_level": "editor"
      }
    ],
    "auto_start_meeting_summary": false,
    "who_will_receive_summary": 1,
    "auto_start_ai_companion_questions": false,
    "who_can_ask_questions": 1,
    "summary_template_id": "1e1356ad",
    "device_testing": false,
    "request_permission_to_unmute_participants": true,
    "allow_host_control_participant_mute_state": false,
    "disable_participant_video": false,
    "email_in_attendee_report": true
  },
  "start_time": "2022-03-25T07:29:29Z",
  "template_id": "5Cj3ceXoStO6TGOVvIOVPA==",
  "timezone": "America/Los_Angeles",
  "topic": "My Meeting",
  "tracking_fields": [
    {
      "field": "field1",
      "value": "value1"
    }
  ],
  "type": 2
}

Responses

Status: 204 **HTTP Status Code:** `204` Meeting updated.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `3161` <br> Your user account is not allowed meeting hosting and scheduling capabilities. <br> **Error Code:** `300` <br> The value that you entered in the `schedule_for` field is invalid. Enter a valid value and try again. <br> **Error Code:** `300` <br> Invalid `enforce_login_domains`. Separate multiple domains with semicolons. <br> **Error Code:** `3000` <br> Cannot access webinar information. <br> **Error Code:** `3000` <br> Instant meetings do not support the `schedule_for` parameter, and you can't schedule an instant meeting for another user. <br> **Error Code:** `3000` <br> Users in '{userId}' have been blocked from joining meetings and webinars. To unblock them, go to the **Settings** page in the Zoom web portal and update **Block users in specific domains from joining meetings and webinars**. <br> **Error Code:** `3000` <br> You cannot schedule a meeting for {userId} <br> **Error Code:** `3000` <br> Prescheduling is only available for scheduled meetings (type 2) and recurring meetings with no fixed time (type 3). <br> **Error Code:** `3000` <br> Unable to schedule for a user outside of your account for a meeting with continuous chat. <br>
Status: 401 **HTTP Status Code:** `401` <br> Unauthorized **Error Code:** `124` <br> Invalid access token. <br> **Error Code:** `124` <br> Access token has expired. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Meeting does not exist: {meetingId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rate-limits/). **Error Code:** `4001` <br> You have reached the maximum per-second rate limit for this API. Try again later. <br>

Update meeting status

  • Method: PUT
  • Path: /accounts/{accountId}/meetings/{meetingId}/status
  • Tags: Meetings

Update the status of a meeting.

Prerequisites:

  • Host user must have a Zoom Meetings Basic license or higher.

Scopes: meeting:master

Granular Scopes: meeting:update:status:master

Rate Limit Label: LIGHT

Request Body

Content-Type: application/json

Example:

{
  "action": "recover"
}

Responses

Status: 204 **HTTP Status Code:** `204` Meeting updated.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `3000` <br> Cannot access webinar info. <br> **Error Code:** `3063` <br> Can not end on-premise user's meeting: {meetingId}. <br> **Error Code:** `3161` <br> Meeting hosting and scheduling capabilities are not allowed for your user account. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Meeting does not exist: {meetingId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rest/rate-limits/).

List past meeting instances

  • Method: GET
  • Path: /accounts/{accountId}/past_meetings/{meetingId}/instances
  • Tags: Meetings

Return a list of past meeting instances.

Prerequisites

  • The meeting must have already occurred at least once. This endpoint only returns instances of meetings that have ended.
  • You cannot retrieve instances for meetings that occurred more than 15 months ago.

Scopes: meeting:master

Granular Scopes: meeting:read:list_past_instances:master

Rate Limit Label: MEDIUM

Responses

Status: 200 **HTTP Status Code:** `200` List of ended meeting instances returned.
Content-Type: application/json
  • meetings

    array — List of ended meeting instances.

    Items:

    • start_time

      string, format: date-time — Start time

    • uuid

      string — Meeting UUID. Unique meeting ID. Each meeting instance will generate its own Meeting UUID (i.e., after a meeting ends, a new UUID will be generated for the next instance of the meeting). [Double encode](https://marketplace.zoom.us/docs/api-reference/using-zoom-apis/#meeting-id-and-uuid) your UUID when using it for API calls if the UUID begins with a '/'or contains '//' in it.

Example:

{
  "meetings": [
    {
      "start_time": "2022-03-26T05:37:59Z",
      "uuid": "Vg8IdgluR5WDeWIkpJlElQ=="
    }
  ]
}
Status: 401 **HTTP Status Code:** `401` <br> Unauthorized
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Meeting does not exist: {meetingId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rate-limits/). **Error Code:** `4001` <br> You have reached the maximum per-second rate limit for this API. Try again later. <br>

List meetings

  • Method: GET
  • Path: /accounts/{accountId}/users/{userId}/meetings
  • Tags: Meetings

List a meeting host user's scheduled meetings. For user-level apps, pass the me value instead of the userId parameter.

Prerequisites:

  • This API only supports scheduled meetings. This API does not return information about instant meetings.
  • This API only returns a user's unexpired meetings.
  • When type is set to upcoming, upcoming_meetings, or previous_meetings, only a maximum of 6 months of meeting data will be returned.

Scopes: meeting:master

Granular Scopes: meeting:read:list_meetings:master

Rate Limit Label: MEDIUM

Responses

Status: 200 **HTTP Status Code:** `200` List of meeting objects returned.
Content-Type: application/json

All of:

  • next_page_token

    string — Use the next page token to paginate through large result sets. A next page token will be returned whenever the set of available results exceeds the current page size. This token's expiration period is 15 minutes.

  • page_count

    integer — The number of pages returned for the request made.

  • page_number

    integer, default: 1 — The page number of the current results.

  • page_size

    integer, default: 30 — The number of records returned with a single API call.

  • total_records

    integer — The total number of all the records available across pages.

  • meetings

    array — List of meeting objects.

    Items:

    All of:

    • agenda

      string — Meeting description. The length of agenda gets truncated to 250 characters when you list all of a user's meetings. To view a meeting's complete agenda, or to retrieve details for a single meeting, use the [**Get a meeting**](/docs/api-reference/zoom-api/methods#operation/meeting) API.

    • created_at

      string, format: date-time — Time of creation.

    • duration

      integer — Meeting duration.

    • host_id

      string — ID of the user who is set as the meeting's host.

    • id

      integer, format: int64 — Meeting ID - also known as the meeting number in long (int64) format.

    • join_url

      string — URL using which participants can join a meeting.

    • pmi

      string — [Personal meeting ID](/docs/api/using-zoom-apis/#understanding-personal-meeting-id-pmi). This field is only returned if PMI was used to schedule the meeting.

    • start_time

      string, format: date-time — Meeting start time.

    • timezone

      string — Timezone to format the meeting start time.

    • topic

      string — Meeting topic.

    • type

      integer, possible values: 1, 2, 3, 8 — Meeting types. `1` - Instant meeting. `2` - Scheduled meeting. `3` - Recurring meeting with no fixed time. `8` - Recurring meeting with fixed time.

    • uuid

      string — Unique Meeting ID. Each meeting instance will generate its own Meeting UUID.

Example:

{
  "next_page_token": "Tva2CuIdTgsv8wAnhyAdU3m06Y2HuLQtlh3",
  "page_count": 1,
  "page_number": 1,
  "page_size": 30,
  "total_records": 1,
  "meetings": [
    {
      "agenda": "My Meeting",
      "created_at": "2022-03-23T05:31:16Z",
      "duration": 60,
      "host_id": "30R7kT7bTIKSNUFEuH_Qlg",
      "id": 97763643886,
      "join_url": "https://example.com/j/11111",
      "pmi": "97891943927",
      "start_time": "2022-03-23T06:00:00Z",
      "timezone": "America/Los_Angeles",
      "topic": "My Meeting",
      "type": 2,
      "uuid": "aDYlohsHRtCd4ii1uC2+hA=="
    }
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `3161` <br> Meeting hosting and scheduling capabilities are not allowed for your user account. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `2306` <br> Not allowed to view meetings scheduled for others. To use this feature, enable the **Display meetings scheduled for others** setting in the **Account Settings** page of the Zoom web portal. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User does not exist: {userId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rate-limits/).

Create a meeting

  • Method: POST
  • Path: /accounts/{accountId}/users/{userId}/meetings
  • Tags: Meetings

Creates a meeting for a user. For user-level apps, pass the me value instead of the userId parameter.

Prerequisites:

  • A meeting's start_url value is the URL a host or an alternative host can use to start a meeting. The start_url value's expiration time is two hours for all regular users.
  • For custCreate meeting hosts - users created with the custCreate parameter via the Create users API - the expiration time of the start_url parameter is 90 days from the generation of the start_url.
  • For security reasons, the recommended way to programmatically get the updated start_url value after expiry is to call the Get a meeting API. Refer to the start_url value in the response.
  • 100 requests per day. The rate limit is applied against the userId of the meeting host used to make the request.

Scopes: meeting:master

Granular Scopes: meeting:write:meeting:master

Rate Limit Label: LIGHT

Request Body

Content-Type: application/json
  • agenda

    string — The meeting's agenda. This value has a maximum length of 2,000 characters.

  • default_password

    boolean, default: true — Whether to automatically generate a passcode for the meeting when no passcode is provided and the user's **Require a passcode when scheduling new meetings** setting is enabled. Defaults to `true`. When set to `false`, meetings will only have a passcode if one is explicitly provided.

  • duration

    integer, default: 60 — The meeting's scheduled duration, in minutes. This field is used for `2` scheduled meetings and `8` recurring meetings with a fixed time. The value must be between 1 and 1440 minutes, which is equivalent to 24 hours.

  • password

    string — The meeting passcode. By default, it can be up to 10 characters in length and may contain alphanumeric characters as well as special characters such as !, @, #, etc. **Note**: - If the account owner or administrator has configured [Passcode Requirement](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0063160#h_a427384b-e383-4f80-864d-794bf0a37604), the passcode **must** meet those requirements. You can retrieve the requirements using the [**Get user settings**](/docs/api/users/#tag/users/GET/users/{userId}/settings) API or the [**Get account settings**](/docs/api/accounts/#tag/accounts/GET/accounts/{accountId}/settings) API. - If the **Require a passcode when scheduling new meetings** user setting is enabled and `default_password` is not explicitly set to `false`, a passcode will be automatically generated when one is not provided. - If the **Require a passcode when scheduling new meetings** setting is enabled and [locked](https://support.zoom.us/hc/en-us/articles/115005269866-Using-Tiered-Settings#locked) for the user, a passcode will be automatically generated when one is not provided.

  • pre_schedule

    boolean, default: false — Whether to create a prescheduled meeting via the [GSuite app](https://support.zoom.us/hc/en-us/articles/360020187492-Zoom-for-GSuite-add-on). This **only** supports the meeting `type` value of `2` scheduled meetings and `3` recurring meetings with no fixed time. * `true` - Create a prescheduled meeting. * `false` - Create a regular meeting.

  • recurrence

    object — The recurrence object. Use this object only for a meeting with type `8`, a recurring meeting with a fixed time.

    • type (required)

      integer, possible values: 1, 2, 3 — The recurrence meeting types. `1` - Daily. `2` - Weekly. `3` - Monthly.

    • end_date_time

      string, format: date-time — This field selects the final date when the meeting will recur before it is canceled. Should be in UTC time, such as 2017-11-25T12:00:00Z. Cannot be used with `end_times`.

    • end_times

      integer, default: 1 — This field selects how many times the meeting should recur before it is canceled. If `end_times` is set to 0, it means there is no end time. The maximum number of recurring is 60. Cannot be used with `end_date_time`.

    • monthly_day

      integer, default: 1 — This field is **only** for scheduling a **recurring meeting of type `3`**. It states the day in a month when the meeting should recur. The value range is from `1` to `31`. For the meeting to recur on 23rd of each month, provide `23` as this field's value and `1` as the `repeat_interval` field's value. To have the meeting recur every three months on 23rd of the month, change the `repeat_interval` field value to `3`.

    • monthly_week

      integer, possible values: -1, 1, 2, 3, 4 — This field is **only if** for scheduling a **recurring meeting of type `3`**. It states the week of the month when the meeting should recur. If you use this field, you must also use the `monthly_week_day` field to state the day of the week when the meeting should recur. `-1` - Last week of the month. `1` - First week of the month. `2` - Second week of the month. `3` - Third week of the month. `4` - Fourth week of the month.

    • monthly_week_day

      integer, possible values: 1, 2, 3, 4, 5, 6, 7 — This field is **only if** for scheduling a **recurring meeting of type `3`**. It states a specific day in a week when the monthly meeting should recur. To use this field, you must also use the `monthly_week` field. `1` - Sunday. `2` - Monday. `3` - Tuesday. `4` - Wednesday. `5` - Thursday. `6` - Friday. `7` - Saturday.

    • repeat_interval

      integer — This field defines the interval when the meeting should recur. For instance, to schedule a meeting that recurs every two months, set this field's value as `2` and the value of the `type` parameter as `3`. For a daily meeting, the maximum number of recurrences is `99` days. For a weekly meeting, the maximum is `50` weeks. For a monthly meeting, the maximum is `10` months.

    • weekly_days

      string, possible values: "1", "2", "3", "4", "5", "6", "7", default: "1" — This field is **required** if you're scheduling a recurring meeting of type `2`. It states the days of the week when the meeting should repeat. This field's value could be a number between `1` to `7` in string format. For instance, if the meeting should recur on Sunday, provide `1` as this field's value. **Note:** To set the meeting to occur on multiple days of a week, provide comma separated values for this field. For instance, if the meeting should recur on Sundays and Tuesdays, provide `1,3` as this field's value. `1` - Sunday. `2` - Monday. `3` - Tuesday. `4` - Wednesday. `5` - Thursday. `6` - Friday. `7` - Saturday.

  • schedule_for

    string — The email address or user ID of the user to schedule a meeting for.

  • settings

    object — Information about the meeting's settings.

    • additional_data_center_regions

      array — This field adds additional meeting [data center regions](https://support.zoom.us/hc/en-us/articles/360042411451-Selecting-data-center-regions-for-hosted-meetings-and-webinars). Provide this value as an array of [country codes](/docs/api/references/abbreviations/#countries) for the countries available as data center regions in the [**Account Profile**](https://zoom.us/account/setting) interface but have been opted out of in the [user settings](https://zoom.us/profile). For example, the data center regions selected in your [**Account Profile**](https://zoom.us/account) are `Europe`, `Hong Kong SAR`, `Australia`, `India`, `Japan`, `China`, `United States`, and `Canada`. However, in the [**My Profile**](https://zoom.us/profile) settings, you did **not** select `India` and `Japan` for meeting and webinar traffic routing. To include `India` and `Japan` as additional data centers, use the `[IN, TY]` value for this field.

      Items:

      string

    • allow_host_control_participant_mute_state

      boolean — Whether to allow the host and co-hosts to fully control the mute state of participants. If not provided, the default value will be based on the user's setting. This option cannot be used together with `request_permission_to_unmute_participants`, only one of the two can be enabled at a time.

    • allow_multiple_devices

      boolean — Whether to allow attendees to join a meeting from multiple devices. This setting is only applied to meetings with registration enabled.

    • alternative_host_manage_cloud_recording

      boolean — Whether to allow an alternative host to manage meeting cloud recordings.

    • alternative_host_manage_meeting_summary

      boolean — Whether to allow an alternative host to manage meeting summaries.

    • alternative_host_update_polls

      boolean — Whether the **Allow alternative hosts to add or edit polls** feature is enabled. This requires Zoom version 5.8.0 or higher.

    • alternative_hosts

      string — A semicolon-separated list of the meeting's alternative hosts' email addresses or IDs.

    • alternative_hosts_email_notification

      boolean, default: true — Whether to send email notifications to alternative hosts. This value defaults to `true`.

    • approval_type

      integer, possible values: 0, 1, 2, default: 2 — Enable meeting registration approval. * `0` - Automatically approve registration. * `1` - Manually approve registration. * `2` - No registration required. This value defaults to `2`.

    • approved_or_denied_countries_or_regions

      object — The list of approved or blocked users from specific countries or regions who can join the meeting.

      • approved_list

        array — The list of approved countries or regions.

        Items:

        string

      • denied_list

        array — The list of blocked countries or regions.

        Items:

        string

      • enable

        boolean — Whether to enable the [**Approve or block entry for users from specific countries/regions**](https://support.zoom.us/hc/en-us/articles/360060086231-Approve-or-block-entry-for-users-from-specific-countries-regions) setting.

      • method

        string, possible values: "approve", "deny" — Whether to allow or block users from specific countries or regions. * `approve` - Allow users from specific countries or regions to join the meeting. If you select this setting, include the approved countries or regions in the `approved_list` field. * `deny` - Block users from specific countries or regions from joining the meeting. If you select this setting, include the blocked countries or regions in the `denied_list` field.

    • audio

      string, possible values: "both", "telephony", "voip", "thirdParty", default: "both" — How participants join the audio portion of the meeting. * `both` - Both telephony and VoIP. * `telephony` - Telephony only. * `voip` - VoIP only. * `thirdParty` - Third party audio conference.

    • audio_conference_info

      string — Third party audio conference information.

    • authentication_domains

      string — The meeting's authenticated domains. Only Zoom users whose email address contains an authenticated domain can join the meeting. Comma-separate multiple domains or use a wildcard for listing domains.

    • authentication_exception

      array — A list of participants who can bypass meeting authentication. These participants will receive a unique meeting invite.

      Items:

      • email

        string, format: email — The participant's email address.

      • name

        string — The participant's name.

    • authentication_option

      string — If the `meeting_authentication` value is `true`, the type of authentication required for users to join a meeting. To get this value, use the `authentication_options` array's `id` value in the [**Get user settings**](/docs/api-reference/zoom-api/methods#operation/userSettings) API response.

    • auto_add_recording_to_video_management

      object — Automatically add meeting recordings to a video channel in video management. To enable this feature for your account, please [contact Zoom Support](https://support.zoom.us/hc/en-us).

      • enable (required)

        boolean, default: false — Whether to automatically add the meeting recording to video management.

      • channels

        array — List of video management channels where the meeting recording will be added.

        Items:

        • channel_id (required)

          string — The unique ID of a video management channel.

        • name

          string — The name of the video management channel.

    • auto_recording

      string, possible values: "local", "cloud", "none", default: "none" — The automatic recording settings. * `local` - Record the meeting locally. * `cloud` - Record the meeting to the cloud. * `none` - Auto-recording disabled. This value defaults to `none`.

    • auto_start_ai_companion_questions

      boolean — Whether to automatically start AI Companion questions. If not provided, the default value will be based on the user's setting.

    • auto_start_meeting_summary

      boolean — Whether to automatically start a meeting summary. If not provided, the default value will be based on the user's setting.

    • breakout_room

      object — The [pre-assigned breakout rooms](https://support.zoom.us/hc/en-us/articles/360032752671-Pre-assigning-participants-to-breakout-rooms) settings.

    • calendar_type

      integer, possible values: 1, 2 — The type of calendar integration used to schedule the meeting. * `1` - [Zoom Outlook add-in](https://support.zoom.us/hc/en-us/articles/360031592971-Getting-started-with-Outlook-plugin-and-add-in) * `2` - [Zoom for Google Workspace add-on](https://support.zoom.us/hc/en-us/articles/360020187492-Using-the-Zoom-for-Google-Workspace-add-on) Works with the `private_meeting` field to determine whether to share details of meetings or not.

    • close_registration

      boolean, default: false — Whether to close registration after the event date. This value defaults to `false`.

    • cn_meeting

      boolean, default: false — Whether to host the meeting in China (CN). This value defaults to `false`.

    • contact_email

      string — The contact email address for meeting registration.

    • contact_name

      string — The contact name for meeting registration.

    • continuous_meeting_chat

      object — Information about the **Enable continuous meeting chat** feature. This setting only applies to scheduled and recurring meetings, types `2`, `3`, and `8`. It is **not supported** for type `1` instant meetings or type `10` screen share only meetings.

      • auto_add_invited_external_users

        boolean — Whether to enable the **Automatically add invited external users** setting.

      • auto_add_meeting_participants

        boolean — Whether to enable the **Automatically add meeting participants** setting.

      • enable

        boolean — Whether to enable the **Enable continuous meeting chat** setting. The default value is based on user settings. When the **Enable continuous meeting chat** setting is enabled, the default value is true. When the setting is disabled, the default value is false.

    • device_testing

      boolean, default: false — Enable the device testing.

    • disable_participant_video

      boolean, default: false — Whether to disable the participant video during meeting. To enable this feature for your account, please [contact Zoom Support](https://support.zoom.us/hc/en-us).

    • email_in_attendee_report

      boolean — Whether to include authenticated guest's email addresses in meetings' attendee reports.

    • email_notification

      boolean, default: true — Whether to send email notifications to [alternative hosts](https://support.zoom.us/hc/en-us/articles/208220166) and [users with scheduling privileges](https://support.zoom.us/hc/en-us/articles/201362803-Scheduling-privilege). This value defaults to `true`.

    • encryption_type

      string, possible values: "enhanced_encryption", "e2ee" — The type of [end-to-end (E2EE) encryption](https://support.zoom.us/hc/en-us/articles/360048660871) to use for the meeting. * `enhanced_encryption` - Enhanced encryption. Encryption is stored in the cloud when you enable this option. * `e2ee` - End-to-end encryption. The encryption key is stored on your local device and **cannot** be obtained by anyone else. When you use E2EE encryption, [certain features](https://support.zoom.us/hc/en-us/articles/360048660871), such as cloud recording or phone and SIP/H.323 dial-in, are **disabled**.

    • focus_mode

      boolean — Whether to enable the [**Focus Mode** feature](https://support.zoom.us/hc/en-us/articles/360061113751-Using-focus-mode) when the meeting starts.

    • global_dial_in_countries

      array — A list of available global dial-in countries.

      Items:

      string

    • host_save_video_order

      boolean — Whether the **Allow host to save video order** feature is enabled.

    • host_video

      boolean — Whether to start meetings with the host video on.

    • in_meeting

      boolean, default: false — Whether to host the meeting in India (IN). This value defaults to `false`.

    • internal_meeting

      boolean, default: false — Whether to set the meeting as an internal meeting.

    • jbh_time

      integer, possible values: 0, 5, 10, 15 — If the value of the `join_before_host` field is `true`, this field indicates the time limits when a participant can join a meeting before the meeting's host. * `0` - Allow the participant to join the meeting at anytime. * `5` - Allow the participant to join 5 minutes before the meeting's start time. * `10` - Allow the participant to join 10 minutes before the meeting's start time. * `15` - Allow the participant to join 15 minutes before the meeting's start time.

    • join_before_host

      boolean, default: false — Whether participants can join the meeting before its host. This field is only used for scheduled meetings (`2`) or recurring meetings (`3` and `8`). This value defaults to `false`. If the [**Waiting Room** feature](https://support.zoom.us/hc/en-us/articles/115000332726-Waiting-Room) is enabled, this setting is **disabled**.

    • language_interpretation

      object — The meeting's [language interpretation settings](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0064768). Make sure to add the language in the web portal in order to use it in the API. See link for details. **Note:** This feature is only available for certain Meeting add-on, Education, and Business and higher plans. If this feature is not enabled on the host's account, this setting will **not** be applied to the meeting.

      • enable

        boolean — Whether to enable [language interpretation](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0064768) for the meeting. If not provided, the default value will be based on the user's setting.

      • interpreters

        array — Information about the meeting's language interpreters.

        Items:

        • email

          string, format: email — The interpreter's email address.

        • interpreter_languages

          string — A comma-separated list of the interpreter's languages. The string must contain exactly two languages. To get this value, use the `language_interpretation` object's `languages` and `custom_languages` values in the [**Get user settings**](/docs/api/users/#tag/users/GET/users/{userId}/settings) API response. **languages**: System-supported languages include `English`, `Chinese`, `Japanese`, `German`, `French`, `Russian`, `Portuguese`, `Spanish`, and `Korean`. **custom_languages**: User-defined languages added by the user. For example, an interpreter translating between English and French should use `English,French`.

        • languages

          string — A comma-separated list of the interpreter's languages. The string must contain exactly two country IDs. Only system-supported languages are allowed: `US` (English), `CN` (Chinese), `JP` (Japanese), `DE` (German), `FR` (French), `RU` (Russian), `PT` (Portuguese), `ES` (Spanish), and `KR` (Korean). For example, to set an interpreter translating from English to Chinese, use `US,CN`.

    • meeting_authentication

      boolean — If true, only [authenticated](https://support.zoom.us/hc/en-us/articles/360037117472-Authentication-Profiles-for-Meetings-and-Webinars) users can join the meeting.

    • meeting_invitees

      array — A list of the meeting's invitees.

      Items:

      • email

        string, format: email — The invitee's email address.

    • mute_upon_entry

      boolean, default: false — Whether to mute participants upon entry.

    • participant_focused_meeting

      boolean, default: false — Whether to set the meeting as a participant focused meeting.

    • participant_video

      boolean — Whether to start meetings with the participant video on.

    • private_meeting

      boolean — Whether to set the meeting as private.

    • push_change_to_calendar

      boolean, default: false — Whether to push meeting changes to the calendar. To enable this feature, configure the **Configure Calendar and Contacts Service** in the user's profile page of the Zoom web portal and enable the **Automatically sync Zoom calendar events information bi-directionally between Zoom and integrated calendars.** setting in the **Settings** page of the Zoom web portal. * `true` - Push meeting changes to the calendar. * `false` - Do not push meeting changes to the calendar.

    • question_and_answer

      object — [Q&amp;A](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0065237) for meeting.

      • allow_anonymous_questions

        boolean — * `true` - Allow participants to send questions without providing their name to the host, co-host, and panelists. * `false` - Do not allow anonymous questions. Not supported for simulive meeting.

      • allow_submit_questions

        boolean — * `true` - Allow participants to submit questions. * `false` - Don't allow participants to submit questions.

      • attendees_can_comment

        boolean — * `true` - Attendees can answer questions or leave a comment in the question thread. * `false` - Attendees can not answer questions or leave a comment in the question thread

      • attendees_can_upvote

        boolean — * `true` - Attendees can select the thumbs up button to bring popular questions to the top of the Q&amp;A window. * `false` - Attendees can't select the thumbs up button on questions.

      • enable

        boolean — * `true` - Enable [Q&amp;A](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0065237) for meeting. * `false` - Disable Q&amp;A for meeting. If not provided, the default value will be based on the user's setting.

      • question_visibility

        string, possible values: "answered", "all" — Indicate whether you want to allow attendees to be able to view only answered questions or all questions. * `answered` - Attendees are able to view answered questions only. * `all` - Attendees are able to view all questions submitted in the Q&amp;A.

    • registrants_confirmation_email

      boolean — Whether to send registrants an email confirmation. * `true` - Send a confirmation email. * `false` - Do not send a confirmation email.

    • registrants_email_notification

      boolean — Whether to send registrants email notifications about their registration approval, cancellation, or rejection. * `true` - Send an email notification. * `false` - Do not send an email notification. Set this value to `true` to also use the `registrants_confirmation_email` parameter.

    • registration_type

      integer, possible values: 1, 2, 3, default: 1 — The meeting's registration type. * `1` - Attendees register once and can attend any meeting occurrence. * `2` - Attendees must register for each meeting occurrence. * `3` - Attendees register once and can select one or more meeting occurrences to attend. This field is only for recurring meetings with fixed times (`8`). This value defaults to `1`.

    • request_permission_to_unmute_participants

      boolean, default: false — Whether to enable the [**Request permission to unmute participants**](https://support.zoom.us/hc/en-us/articles/203435537-Muting-and-unmuting-participants-in-a-meeting) setting. This option cannot be used together with `allow_host_control_participant_mute_state`, only one of the two can be enabled at a time.

    • resources

      array — The meeting's resources.

      Items:

      • permission_level

        string, possible values: "editor", "commenter", "viewer", default: "editor" — The permission levels for users to access the whiteboard. * `editor` - Users with link access can edit the board. * `commenter` - Users with link access can comment on the board. * `viewer` - Users with link access can view the board.

      • resource_id

        string — The resource ID.

      • resource_type

        string, possible values: "whiteboard" — The resource type.

    • show_join_info

      boolean — Whether to show the meeting's join information on the registration confirmation page. This setting is only applied to meetings with registration enabled.

    • show_share_button

      boolean — Whether to include social media sharing buttons on the meeting's registration page. This setting is only applied to meetings with registration enabled.

    • sign_language_interpretation

      object — The meeting's [sign language interpretation settings](https://support.zoom.us/hc/en-us/articles/9644962487309-Using-sign-language-interpretation-in-a-meeting-or-webinar). Make sure to add the language in the web portal in order to use it in the API. See link for details. **Note:** If this feature is not enabled on the host's account, this setting will **not** be applied to the meeting.

      • enable

        boolean — Whether to enable [sign language interpretation](https://support.zoom.us/hc/en-us/articles/9644962487309-Using-sign-language-interpretation-in-a-meeting-or-webinar) for the meeting. If not provided, the default value will be based on the user's setting.

      • interpreters

        array — Information about the meeting's sign language interpreters.

        Items:

        • email

          string, format: email — The interpreter's email address.

        • sign_language

          string — The interpreter's sign language. To get this value, use the `sign_language_interpretation` object's `languages` and `custom_languages` values in the [**Get user settings**](/api-reference/zoom-api/methods#operation/userSettings) API response.

    • summary_template_id

      string — The summary template ID used to generate a meeting summary based on a predefined template. To get available summary templates, use the **Get user summary templates** API. If not provided, the default value will be based on the user's setting. To enable this feature for your account, please [contact Zoom Support](https://support.zoom.com/hc/en).

    • use_pmi

      boolean — Whether to use a [Personal Meeting ID (PMI)](/docs/api/using-zoom-apis/#understanding-personal-meeting-id-pmi) for the meeting. This field is only used for scheduled meetings(`2`) and recurring meetings with no fixed time(`3`). If not provided, the default value will be based on the user's setting.

    • waiting_room

      boolean — Whether to enable the [**Waiting Room** feature](https://support.zoom.us/hc/en-us/articles/115000332726-Waiting-Room). If this value is `true`, this **disables** the `join_before_host` setting.

    • waiting_room_options

      object — Configuration settings for the meeting's waiting room.

      • mode (required)

        string, possible values: "follow_setting", "custom" — The waiting room behavior for this meeting. * `follow_setting` - Use the Zoom web portal setting. * `custom` - Specify which participants should go into the waiting room.

      • who_goes_to_waiting_room

        string, possible values: "everyone", "users_not_in_account", "users_not_in_account_or_whitelisted_domains", "users_not_on_invite", "users_not_in_org" — Which participants should be placed into the waiting room. Required if `mode` is set to `custom`. * `everyone` - Everyone. * `users_not_in_account` - Users not in your account. * `users_not_in_account_or_whitelisted_domains` - Users who are not in your account and not part of your whitelisted domains. * `users_not_on_invite` - Users not on the meeting invite. * `users_not_in_org` - Users not in your organization.

    • watermark

      boolean — Whether to add a watermark when viewing a shared screen. If not provided, the default value will be based on the user's setting.

    • who_can_ask_questions

      integer, possible values: 1, 2, 3, 4, 5 — Defines who can ask questions about this meeting's transcript. This field is applicable only when `auto_start_ai_companion_questions` is set to `true`. * `1` - All participants and invitees. * `2` - All participants only from when they join. * `3` - Only meeting host. * `4` - Participants and invitees in our organization. * `5` - Participants in our organization only from when they join. If not provided, the default value will be based on the user's setting.

    • who_will_receive_summary

      integer, possible values: 1, 2, 3, 4 — Defines who will receive a summary after this meeting. This field is applicable only when `auto_start_meeting_summary` is set to `true`. * `1` - Only meeting host. * `2` - Only meeting host, co-hosts, and alternative hosts. * `3` - Only meeting host and meeting invitees in our organization. * `4` - All meeting invitees including those outside of our organization. If not provided, the default value will be based on the user's setting.

  • start_time

    string, format: date-time — The meeting's start time. This field is only used for scheduled or recurring meetings with a fixed time. This supports local time and GMT formats. * To set a meeting's start time in GMT, use the `yyyy-MM-ddTHH:mm:ssZ` date-time format, such as `2020-03-31T12:02:00Z`. * To set a meeting's start time using a specific timezone, use the `yyyy-MM-ddTHH:mm:ss` date-time format and specify the [timezone ID](/docs/api/references/abbreviations/#timezones) in the `timezone` field. If you do not specify a timezone, the `timezone` value defaults to your Zoom account's timezone. You can also use `UTC` for the `timezone` value. **Note:** If `start_time` is not specified or is set to a past value, it defaults to the current time.

  • template_id

    string — The account admin meeting template ID used to schedule a meeting using a [meeting template](https://support.zoom.us/hc/en-us/articles/360036559151-Meeting-templates). For a list of account admin-provided meeting templates, use the [**List meeting templates**](/docs/api-reference/zoom-api/methods#operation/listMeetingTemplates) API. * At this time, this field **only** accepts account admin meeting template IDs. * To enable the account admin meeting templates feature, [contact Zoom support](https://support.zoom.us/hc/en-us).

  • timezone

    string — The timezone to assign to the `start_time` value. This field is only used for scheduled or recurring meetings with a fixed time. For a list of supported timezones and their formats, see our [timezone list](/docs/api/references/abbreviations/#timezones).

  • topic

    string — The meeting's topic.

  • tracking_fields

    array — Information about the meeting's tracking fields.

    Items:

    • field (required)

      string — The tracking field's label.

    • value

      string — The tracking field's value.

  • type

    integer, possible values: 1, 2, 3, 8, 10, default: 2 — The type of meeting. * `1` - An instant meeting. * `2` - A scheduled meeting. * `3` - A recurring meeting with no fixed time. * `8` - A recurring meeting with fixed time. * `10` - A screen share only meeting.

Example:

{
  "agenda": "My Meeting",
  "default_password": true,
  "duration": 60,
  "password": "123456",
  "pre_schedule": false,
  "recurrence": {
    "end_date_time": "2022-04-02T15:59:00Z",
    "end_times": 7,
    "monthly_day": 1,
    "monthly_week": 1,
    "monthly_week_day": 1,
    "repeat_interval": 1,
    "type": 1,
    "weekly_days": "1"
  },
  "schedule_for": "jchill@example.com",
  "settings": {
    "additional_data_center_regions": [
      "TY"
    ],
    "allow_multiple_devices": true,
    "alternative_hosts": "jchill@example.com;thill@example.com",
    "alternative_hosts_email_notification": true,
    "approval_type": 2,
    "approved_or_denied_countries_or_regions": {
      "approved_list": [
        "CX"
      ],
      "denied_list": [
        "CA"
      ],
      "enable": true,
      "method": "approve"
    },
    "audio": "telephony",
    "audio_conference_info": "test",
    "authentication_domains": "example.com",
    "authentication_exception": [
      {
        "email": "jchill@example.com",
        "name": "Jill Chill"
      }
    ],
    "authentication_option": "signIn_D8cJuqWVQ623CI4Q8yQK0Q",
    "auto_recording": "cloud",
    "auto_add_recording_to_video_management": {
      "enable": true,
      "channels": [
        {
          "channel_id": "Uyh5qeykTDiA66YQEYmFPg",
          "name": "Team Weekly Meetings"
        }
      ]
    },
    "breakout_room": {
      "enable": true,
      "rooms": [
        {
          "name": "room1",
          "participants": [
            "jchill@example.com"
          ]
        }
      ]
    },
    "calendar_type": 1,
    "close_registration": false,
    "contact_email": "jchill@example.com",
    "contact_name": "Jill Chill",
    "email_notification": true,
    "encryption_type": "enhanced_encryption",
    "focus_mode": true,
    "global_dial_in_countries": [
      "US"
    ],
    "host_video": true,
    "jbh_time": 0,
    "join_before_host": false,
    "question_and_answer": {
      "enable": true,
      "allow_submit_questions": true,
      "allow_anonymous_questions": true,
      "question_visibility": "all",
      "attendees_can_comment": true,
      "attendees_can_upvote": true
    },
    "language_interpretation": {
      "enable": true,
      "interpreters": [
        {
          "email": "interpreter@example.com",
          "interpreter_languages": "English,French"
        }
      ]
    },
    "sign_language_interpretation": {
      "enable": true,
      "interpreters": [
        {
          "email": "interpreter@example.com",
          "sign_language": "American"
        }
      ]
    },
    "meeting_authentication": true,
    "meeting_invitees": [
      {
        "email": "jchill@example.com"
      }
    ],
    "mute_upon_entry": false,
    "participant_video": false,
    "private_meeting": false,
    "registrants_confirmation_email": true,
    "registrants_email_notification": true,
    "registration_type": 1,
    "show_share_button": true,
    "show_join_info": true,
    "use_pmi": false,
    "waiting_room": false,
    "waiting_room_options": {
      "mode": "follow_setting",
      "who_goes_to_waiting_room": "everyone"
    },
    "watermark": false,
    "host_save_video_order": true,
    "alternative_host_update_polls": true,
    "alternative_host_manage_meeting_summary": true,
    "alternative_host_manage_cloud_recording": false,
    "internal_meeting": false,
    "continuous_meeting_chat": {
      "enable": true
    },
    "participant_focused_meeting": false,
    "push_change_to_calendar": false,
    "resources": [
      {
        "resource_type": "whiteboard",
        "resource_id": "X4Hy02w3QUOdskKofgb9Jg",
        "permission_level": "editor"
      }
    ],
    "auto_start_meeting_summary": false,
    "who_will_receive_summary": 1,
    "auto_start_ai_companion_questions": false,
    "who_can_ask_questions": 1,
    "summary_template_id": "1e1356ad",
    "device_testing": false,
    "request_permission_to_unmute_participants": true,
    "allow_host_control_participant_mute_state": false,
    "disable_participant_video": false,
    "email_in_attendee_report": true
  },
  "start_time": "2022-03-25T07:32:55Z",
  "template_id": "Dv4YdINdTk+Z5RToadh5ug==",
  "timezone": "America/Los_Angeles",
  "topic": "My Meeting",
  "tracking_fields": [
    {
      "field": "field1",
      "value": "value1"
    }
  ],
  "type": 2
}

Responses

Status: 201 **HTTP Status Code:** `201` Meeting created.
Content-Type: application/json
  • agenda

    string — Agenda

  • assistant_id

    string — The ID of the user who scheduled this meeting on behalf of the host.

  • chat_join_url

    string — The URL to join the chat.

  • created_at

    string, format: date-time — The date and time when this meeting was created.

  • creation_source

    string, possible values: "other", "open_api", "web_portal" — The platform through which the meeting was created. * `other` - Created through another platform. * `open_api` - Created through Open API. * `web_portal` - Created through the web portal.

  • duration

    integer — The meeting duration.

  • dynamic_host_key

    string — The meeting dynamic host key.

  • encrypted_password

    string — Encrypted passcode for third party endpoints (H323/SIP).

  • h323_password

    string — H.323/SIP room system passcode

  • host_email

    string, format: email — The meeting host's email address.

  • host_id

    string — The ID of the user who is set as the meeting host.

  • id

    integer, format: int64 — The [meeting ID](https://support.zoom.us/hc/en-us/articles/201362373-What-is-a-Meeting-ID-): Unique identifier of the meeting in **long** format(represented as int64 data type in JSON), also known as the meeting number.

  • join_url

    string — URL for participants to join the meeting. This URL should only be shared with users that you would like to invite for the meeting.

  • occurrences

    array — Array of occurrence objects.

    Items:

    • duration

      integer — Duration.

    • occurrence_id

      string — Occurrence ID. The unique identifier for an occurrence of a recurring webinar. [Recurring webinars](https://support.zoom.us/hc/en-us/articles/216354763-How-to-Schedule-A-Recurring-Webinar) can have a maximum of 50 occurrences.

    • start_time

      string, format: date-time — Start time.

    • status

      string, possible values: "available", "deleted" — Occurrence status. `available` - Available occurrence. `deleted` - Deleted occurrence.

  • password

    string — The meeting passcode. By default, it can be up to 10 characters in length and may contain alphanumeric characters as well as special characters such as !, @, #, etc.

  • pmi

    string — [Personal meeting ID (PMI)](/docs/api/using-zoom-apis/#understanding-personal-meeting-id-pmi). Only used for scheduled meetings and recurring meetings with no fixed time.

  • pre_schedule

    boolean, default: false — Whether the prescheduled meeting was created via the [GSuite app](https://support.zoom.us/hc/en-us/articles/360020187492-Zoom-for-GSuite-add-on). This only supports the meeting `type` value of `2` (scheduled meetings) and `3` (recurring meetings with no fixed time). * `true` - A GSuite prescheduled meeting. * `false` - A regular meeting.

  • pstn_password

    string — Passcode for participants to join the meeting via [PSTN](https://support.zoom.us/hc/en-us/articles/204517069-Getting-Started-with-Personal-Audio-Conference).

  • recurrence

    object — Recurrence object. Use this object only for a meeting with type `8`, a recurring meeting with fixed time.

    • type (required)

      integer, possible values: 1, 2, 3 — Recurrence meeting types. `1` - Daily. `2` - Weekly. `3` - Monthly.

    • end_date_time

      string, format: date-time — Select the final date when the meeting will recur before it is canceled. Should be in UTC time, such as 2017-11-25T12:00:00Z. Cannot be used with `end_times`.

    • end_times

      integer, default: 1 — Select how many times the meeting should recur before it is canceled. If `end_times` is set to 0, it means there is no end time. The maximum number of recurring is 60. Cannot be used with `end_date_time`.

    • monthly_day

      integer, default: 1 — Use this field only if you're scheduling a recurring meeting of type `3` to state the day in a month when the meeting should recur. The value range is from 1 to 31. For instance, if you would like the meeting to recur on 23rd of each month, provide `23` as this field's value and `1` as the `repeat_interval` field's value. Instead, to have the meeting recur every three months on 23rd of the month, change the value of the `repeat_interval` field to `3`.

    • monthly_week

      integer, possible values: -1, 1, 2, 3, 4 — Use this field **only if you're scheduling a recurring meeting of type** `3` to state the week of the month when the meeting should recur. If you use this field, you must also use the `monthly_week_day` field to state the day of the week when the meeting should recur. `-1` - Last week of the month. `1` - First week of the month. `2` - Second week of the month. `3` - Third week of the month. `4` - Fourth week of the month.

    • monthly_week_day

      integer, possible values: 1, 2, 3, 4, 5, 6, 7 — Use this field **only if you're scheduling a recurring meeting of type** `3` to state a specific day in a week when the monthly meeting should recur. To use this field, you must also use the `monthly_week` field. `1` - Sunday. `2` - Monday. `3` - Tuesday. `4` - Wednesday. `5` - Thursday. `6` - Friday. `7` - Saturday.

    • repeat_interval

      integer — Define the interval for the meeting to recur. For instance, to schedule a meeting that recurs every two months, set this field's value to `2` and the value of the `type` parameter as `3`. For a daily meeting, the maximum interval you can set is `99` days. For a weekly meeting the maximum interval that you can set is of `50` weeks. For a monthly meeting, there is a maximum of `10` months.

    • weekly_days

      string, possible values: "1", "2", "3", "4", "5", "6", "7", default: "1" — This field is required **if you're scheduling a recurring meeting of type** `2` to state the days of the week when the meeting should repeat. This field's value could be a number between `1` to `7` in string format. For instance, if the meeting should recur on Sunday, provide `1` as this field's value. **Note:** If you would like the meeting to occur on multiple days of a week, provide comma separated values for this field. For instance, if the meeting should recur on Sundays and Tuesdays, provide `1,3` as this field's value. `1` - Sunday. `2` - Monday. `3` - Tuesday. `4` - Wednesday. `5` - Thursday. `6` - Friday. `7` - Saturday.

  • registration_url

    string — The URL that registrants can use to register for a meeting. This field is only returned for meetings that have enabled registration.

  • settings

    object — Meeting settings.

    • additional_data_center_regions

      array — Add additional meeting [data center regions](https://support.zoom.us/hc/en-us/articles/360042411451-Selecting-data-center-regions-for-hosted-meetings-and-webinars). Provide this value as an array of [country codes](/docs/api/references/abbreviations/#countries) for the countries available as data center regions in the [**Account Profile**](https://zoom.us/account/setting) interface but have been opted out of in the [user settings](https://zoom.us/profile). For example, the data center regions selected in your [**Account Profile**](https://zoom.us/account) are `Europe`, `Hong Kong SAR`, `Australia`, `India`, `Japan`, `China`, `United States`, and `Canada`. However, in the [**My Profile**](https://zoom.us/profile) settings, you did **not** select `India` and `Japan` for meeting and webinar traffic routing. To include `India` and `Japan` as additional data centers, use the `[IN, TY]` value for this field.

      Items:

      string

    • allow_host_control_participant_mute_state

      boolean — Whether to allow the host and co-hosts to fully control the mute state of participants. If not provided, the default value will be based on the user's setting. This option cannot be used together with `request_permission_to_unmute_participants`, only one of the two can be enabled at a time.

    • allow_multiple_devices

      boolean — Allow attendees to join the meeting from multiple devices. This setting only works for meetings that require [registration](https://support.zoom.us/hc/en-us/articles/211579443-Setting-up-registration-for-a-meeting).

    • alternative_host_manage_cloud_recording

      boolean — Whether to allow an alternative host to manage meeting cloud recordings.

    • alternative_host_manage_meeting_summary

      boolean — Whether to allow an alternative host to manage meeting summaries.

    • alternative_host_update_polls

      boolean — Whether the **Allow alternative hosts to add or edit polls** feature is enabled. This requires Zoom version 5.8.0 or higher.

    • alternative_hosts

      string — A semicolon-separated list of the meeting's alternative hosts' email addresses or IDs.

    • alternative_hosts_email_notification

      boolean, default: true — Flag to determine whether to send email notifications to alternative hosts, default value is true.

    • approval_type

      integer, possible values: 0, 1, 2, default: 2 — Enable registration and set approval for the registration. Note that this feature requires the host to be of **Licensed** user type. **Registration cannot be enabled for a basic user.** `0` - Automatically approve. `1` - Manually approve. `2` - No registration required.

    • approved_or_denied_countries_or_regions

      object — Approve or block users from specific regions or countries from joining this meeting.

      • approved_list

        array — List of countries or regions from where participants can join this meeting.

        Items:

        string

      • denied_list

        array — List of countries or regions from where participants can not join this meeting.

        Items:

        string

      • enable

        boolean — `true` - Setting enabled to either allow users or block users from specific regions to join your meetings. `false` - Setting disabled.

      • method

        string, possible values: "approve", "deny" — Specify whether to allow users from specific regions to join this meeting; or block users from specific regions from joining this meeting. `approve`: Allow users from specific regions/countries to join this meeting. If this setting is selected, the approved regions/countries must be included in the `approved_list`. `deny`: Block users from specific regions/countries from joining this meeting. If this setting is selected, the approved regions/countries must be included in the `denied_list`

    • audio

      string, possible values: "both", "telephony", "voip", "thirdParty", default: "both" — Determine how participants can join the audio portion of the meeting. `both` - Both Telephony and VoIP. `telephony` - Telephony only. `voip` - VoIP only. `thirdParty` - Third party audio conference.

    • audio_conference_info

      string — Third party audio conference info.

    • authentication_domains

      string — If user has configured [Sign Into Zoom with Specified Domains](https://support.zoom.us/hc/en-us/articles/360037117472-Authentication-Profiles-for-Meetings-and-Webinars#h_5c0df2e1-cfd2-469f-bb4a-c77d7c0cca6f) option, this will list the domains that are authenticated.

    • authentication_exception

      array — The participants added here will receive unique meeting invite links and bypass authentication.

      Items:

      • email

        string, format: email — The participant's email address.

      • join_url

        string — URL for participants to join the meeting.

      • name

        string — The participant's name.

    • authentication_name

      string — Authentication name set in the [authentication profile](https://support.zoom.us/hc/en-us/articles/360037117472-Authentication-Profiles-for-Meetings-and-Webinars#h_5c0df2e1-cfd2-469f-bb4a-c77d7c0cca6f).

    • authentication_option

      string — Meeting authentication option ID.

    • auto_add_recording_to_video_management

      object — Automatically add meeting recordings to a video channel in Video Management. To enable this feature for your account, please [contact Zoom Support](https://support.zoom.us/hc/en-us).

      • enable (required)

        boolean, default: false — Whether to automatically add the meeting recording to video management.

      • channels

        array — List of video management channels where the meeting recording will be added.

        Items:

        • channel_id (required)

          string — The unique ID of a video management channel.

        • name

          string — The name of the video management channel.

    • auto_recording

      string, possible values: "local", "cloud", "none", default: "none" — Automatic recording. `local` - Record on local. `cloud` - Record on cloud. `none` - Disabled.

    • auto_start_ai_companion_questions

      boolean — Whether to automatically start AI Companion questions. If not provided, the default value will be based on the user's setting.

    • auto_start_meeting_summary

      boolean — Whether to automatically start a meeting summary. If not provided, the default value will be based on the user's setting.

    • breakout_room

      object — Setting to [pre-assign breakout rooms](https://support.zoom.us/hc/en-us/articles/360032752671-Pre-assigning-participants-to-breakout-rooms#h_36f71353-4190-48a2-b999-ca129861c1f4).

    • calendar_type

      integer, possible values: 1, 2 — The type of calendar integration used to schedule the meeting. * `1` - [Zoom Outlook add-in](https://support.zoom.us/hc/en-us/articles/360031592971-Getting-started-with-Outlook-plugin-and-add-in) * `2` - [Zoom for Google Workspace add-on](https://support.zoom.us/hc/en-us/articles/360020187492-Using-the-Zoom-for-Google-Workspace-add-on) Works with the `private_meeting` field to determine whether to share details of meetings or not.

    • close_registration

      boolean, default: false — Close registration after event date.

    • cn_meeting

      boolean, default: false — Host meeting in China.

    • contact_email

      string — Contact email for registration

    • contact_name

      string — Contact name for registration

    • continuous_meeting_chat

      object — Information about the **Enable continuous meeting chat** feature. This setting only applies to scheduled and recurring meetings (type `2`, `3`, and `8`). It is **not supported** for type `1` instant meetings or type `10` screen share only meetings.

      • auto_add_invited_external_users

        boolean — Whether to enable the **Automatically add invited external users** setting.

      • auto_add_meeting_participants

        boolean — Whether to enable the **Automatically add meeting participants** setting.

      • channel_id

        string — The channel's ID.

      • enable

        boolean — Whether to enable the **Enable continuous meeting chat** setting. The default value is based on user settings. When the **Enable continuous meeting chat** setting is enabled, the default value is true. When the setting is disabled, the default value is false.

    • custom_keys

      array — Custom keys and values assigned to the meeting.

      Items:

      • key

        string — Custom key associated with the user.

      • value

        string — Value of the custom key associated with the user.

    • device_testing

      boolean, default: false — Enable the device testing.

    • disable_participant_video

      boolean, default: false — Whether to disable the participant video during meeting. To enable this feature for your account, please [contact Zoom Support](https://support.zoom.us/hc/en-us).

    • email_in_attendee_report

      boolean — Whether to include authenticated guest's email addresses in meetings' attendee reports.

    • email_notification

      boolean, default: true — Whether to send email notifications to [alternative hosts](https://support.zoom.us/hc/en-us/articles/208220166) and [users with scheduling privileges](https://support.zoom.us/hc/en-us/articles/201362803-Scheduling-privilege). This value defaults to `true`.

    • encryption_type

      string, possible values: "enhanced_encryption", "e2ee" — Choose between enhanced encryption and [end-to-end encryption](https://support.zoom.us/hc/en-us/articles/360048660871) when starting or a meeting. When using end-to-end encryption, several features (e.g. cloud recording, phone/SIP/H.323 dial-in) will be **automatically disabled**. `enhanced_encryption` - Enhanced encryption. Encryption is stored in the cloud if you enable this option. `e2ee` - [End-to-end encryption](https://support.zoom.us/hc/en-us/articles/360048660871). The encryption key is stored in your local device and can not be obtained by anyone else. Enabling this setting also **disables** the join before host, cloud recording, streaming, live transcription, breakout rooms, polling, 1:1 private chat, and meeting reactions features.

    • enforce_login

      boolean — Only signed in users can join this meeting. **This field is deprecated and will not be supported in the future.** As an alternative, use the `meeting_authentication`, `authentication_option`, and `authentication_domains` fields to understand the [authentication configurations](https://support.zoom.us/hc/en-us/articles/360037117472-Authentication-Profiles-for-Meetings-and-Webinars) set for the meeting.

    • enforce_login_domains

      string — Only signed in users with specified domains can join meetings. **This field is deprecated and will not be supported in the future.** As an alternative, use the `meeting_authentication`, `authentication_option`, and `authentication_domains` fields to understand the [authentication configurations](https://support.zoom.us/hc/en-us/articles/360037117472-Authentication-Profiles-for-Meetings-and-Webinars) set for the meeting.

    • focus_mode

      boolean — Whether the [**Focus Mode** feature](https://support.zoom.us/hc/en-us/articles/360061113751-Using-focus-mode) is enabled when the meeting starts.

    • global_dial_in_countries

      array — List of global dial-in countries.

      Items:

      string

    • global_dial_in_numbers

      array — Global dial-in countries or regions.

      Items:

      • city

        string — City of the number, such as Chicago.

      • country

        string — The country code, such as BR.

      • country_name

        string — Full name of country, such as Brazil.

      • number

        string — A phone number, such as +1 2332357613.

      • type

        string, possible values: "toll", "tollfree" — Type of number.

    • host_save_video_order

      boolean — Whether the **Allow host to save video order** feature is enabled.

    • host_video

      boolean — Start video when the host joins the meeting.

    • in_meeting

      boolean, default: false — Host meeting in India.

    • internal_meeting

      boolean, default: false — Whether to set the meeting as an internal meeting.

    • jbh_time

      integer, possible values: 0, 5, 10, 15 — If the value of `join_before_host` field is set to `true`, use this field to indicate time limits when a participant may join a meeting before a host. * `0` - Allow participant to join anytime. * `5`- Allow participant to join 5 minutes before meeting start time. * `10` - Allow participant to join 10 minutes before meeting start time. * `15` - Allow the participant to join 15 minutes before the meeting's start time.

    • join_before_host

      boolean, default: false — Allow participants to join the meeting before the host starts the meeting. Only used for scheduled or recurring meetings.

    • language_interpretation

      object — The meeting's [language interpretation settings](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0064768). Make sure to add the language in the web portal in order to use it in the API. See link for details. **Note:** This feature is only available for certain Meeting add-on, Education, and Business and higher plans. If this feature is not enabled on the host's account, this setting will **not** be applied to the meeting.

      • enable

        boolean — Whether to enable [language interpretation](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0064768) for the meeting. If not provided, the default value will be based on the user's setting.

      • interpreters

        array — Information about the meeting's language interpreters.

        Items:

        • email

          string, format: email — The interpreter's email address.

        • interpreter_languages

          string — A comma-separated list of the interpreter's languages. The string must contain exactly two languages. To get this value, use the `language_interpretation` object's `languages` and `custom_languages` values in the [**Get user settings**](/docs/api/users/#tag/users/GET/users/{userId}/settings) API response. **languages**: System-supported languages include `English`, `Chinese`, `Japanese`, `German`, `French`, `Russian`, `Portuguese`, `Spanish`, and `Korean`. **custom_languages**: User-defined languages added by the user. For example, an interpreter translating between English and French should use `English,French`.

        • languages

          string — A comma-separated list of the interpreter's languages. The string must contain exactly two country IDs. Only system-supported languages are allowed: `US` (English), `CN` (Chinese), `JP` (Japanese), `DE` (German), `FR` (French), `RU` (Russian), `PT` (Portuguese), `ES` (Spanish), and `KR` (Korean). For example, to set an interpreter translating from English to Chinese, use `US,CN`.

    • meeting_authentication

      boolean — `true` - Only authenticated users can join meetings.

    • meeting_invitees

      array — A list of the meeting's invitees.

      Items:

      • email

        string, format: email — The invitee's email address.

    • mute_upon_entry

      boolean, default: false — Mute participants upon entry.

    • participant_focused_meeting

      boolean, default: false — Whether to set the meeting as a participant focused meeting.

    • participant_video

      boolean — Start video when participants join the meeting.

    • private_meeting

      boolean — Whether the meeting is set as private.

    • push_change_to_calendar

      boolean, default: false — Whether to push meeting changes to the calendar. To enable this feature, configure the **Configure Calendar and Contacts Service** in the user's profile page of the Zoom web portal and enable the **Automatically sync Zoom calendar events information bi-directionally between Zoom and integrated calendars.** setting in the **Settings** page of the Zoom web portal. * `true` - Push meeting changes to the calendar. * `false` - Do not push meeting changes to the calendar.

    • question_and_answer

      object — [Q&amp;A](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0065237) for meeting.

      • allow_anonymous_questions

        boolean — * `true` - Allow participants to send questions without providing their name to the host, co-host, and panelists.. * `false` - Do not allow anonymous questions.(Not supported for simulive meeting.)

      • allow_submit_questions

        boolean — * `true`: Allow participants to submit questions. * `false`: Do not allow submit questions.

      • attendees_can_comment

        boolean — * `true` - Attendees can answer questions or leave a comment in the question thread. * `false` - Attendees can not answer questions or leave a comment in the question thread

      • attendees_can_upvote

        boolean — * `true` - Attendees can click the thumbs up button to bring popular questions to the top of the Q&amp;A window. * `false` - Attendees can not click the thumbs up button on questions.

      • enable

        boolean — * `true` - Enable [Q&amp;A](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0065237) for meeting. * `false` - Disable Q&amp;A for meeting. If not provided, the default value will be based on the user's setting.

      • question_visibility

        string, possible values: "answered", "all" — Indicate whether you want attendees to be able to view answered questions only or view all questions. * `answered` - Attendees are able to view answered questions only. * `all` - Attendees are able to view all questions submitted in the Q&amp;A.

    • registrants_confirmation_email

      boolean — Whether to send registrants an email confirmation. * `true` - Send a confirmation email. * `false` - Do not send a confirmation email.

    • registrants_email_notification

      boolean — Whether to send registrants email notifications about their registration approval, cancellation, or rejection. * `true` - Send an email notification. * `false` - Do not send an email notification. Set this value to `true` to also use the `registrants_confirmation_email` parameter.

    • registration_type

      integer, possible values: 1, 2, 3, default: 1 — Registration type. Used for recurring meeting with fixed time only. `1` - Attendees register once and can attend any of the occurrences. `2` - Attendees need to register for each occurrence to attend. `3` - Attendees register once and can choose one or more occurrences to attend.

    • request_permission_to_unmute_participants

      boolean, default: false — Whether to enable the [**Request permission to unmute participants**](https://support.zoom.us/hc/en-us/articles/203435537-Muting-and-unmuting-participants-in-a-meeting) setting. This option cannot be used together with `allow_host_control_participant_mute_state`, only one of the two can be enabled at a time.

    • resources

      array — The meeting's resources.

      Items:

      • permission_level

        string, possible values: "editor", "commenter", "viewer", default: "editor" — The permission levels for users to access the whiteboard. * `editor` - Users with link access can edit the board. * `commenter` - Users with link access can comment on the board. * `viewer` - Users with link access can view the board.

      • resource_id

        string — The resource ID.

      • resource_type

        string, possible values: "whiteboard" — The resource type.

    • show_join_info

      boolean — Whether to show the meeting's join information on the registration confirmation page. This setting is only applied to meetings with registration enabled.

    • show_share_button

      boolean — Show social share buttons on the meeting registration page. This setting only works for meetings that require [registration](https://support.zoom.us/hc/en-us/articles/211579443-Setting-up-registration-for-a-meeting).

    • sign_language_interpretation

      object — The meeting's [sign language interpretation settings](https://support.zoom.us/hc/en-us/articles/9644962487309-Using-sign-language-interpretation-in-a-meeting-or-webinar). Make sure to add the language in the web portal in order to use it in the API. See link for details. **Note:** If this feature is not enabled on the host's account, this setting will **not** be applied to the meeting.

      • enable

        boolean — Whether to enable [sign language interpretation](https://support.zoom.us/hc/en-us/articles/9644962487309-Using-sign-language-interpretation-in-a-meeting-or-webinar) for the meeting. If not provided, the default value will be based on the user's setting.

      • interpreters

        array — Information about the meeting's sign language interpreters.

        Items:

        • email

          string, format: email — The interpreter's email address.

        • sign_language

          string — The interpreter's sign language. To get this value, use the `sign_language_interpretation` object's `languages` and `custom_languages` values in the [**Get user settings**](/api-reference/zoom-api/methods#operation/userSettings) API response.

    • summary_template_id

      string — The summary template ID used to generate a meeting summary based on a predefined template. To get available summary templates, use the **Get user summary templates** API. If not provided, the default value will be based on the user's setting. To enable this feature for your account, please [contact Zoom Support](https://support.zoom.com/hc/en).

    • use_pmi

      boolean — Whether to use a [Personal Meeting ID (PMI)](/docs/api/using-zoom-apis/#understanding-personal-meeting-id-pmi) for the meeting. This field is only used for scheduled meetings(`2`) and recurring meetings with no fixed time(`3`). If not provided, the default value will be based on the user's setting.

    • waiting_room

      boolean, default: false — Enable the waiting room.

    • waiting_room_options

      object — Configuration settings for the meeting's waiting room.

      • mode (required)

        string, possible values: "follow_setting", "custom" — The waiting room behavior for this meeting. * `follow_setting` - Use the Zoom web portal setting. * `custom` - Specify which participants should go into the waiting room.

      • who_goes_to_waiting_room

        string, possible values: "everyone", "users_not_in_account", "users_not_in_account_or_whitelisted_domains", "users_not_on_invite", "users_not_in_org" — Which participants should be placed into the waiting room. Required if `mode` is set to `custom`. * `everyone` - Everyone. * `users_not_in_account` - Users not in your account. * `users_not_in_account_or_whitelisted_domains` - Users who are not in your account and not part of your whitelisted domains. * `users_not_on_invite` - Users not on the meeting invite. * `users_not_in_org` - Users not in your organization.

    • watermark

      boolean — Whether to add a watermark when viewing a shared screen. If not provided, the default value will be based on the user's setting.

    • who_can_ask_questions

      integer, possible values: 1, 2, 3, 4, 5 — Defines who can ask questions about this meeting's transcript. This field is applicable only when `auto_start_ai_companion_questions` is set to `true`. * `1` - All participants and invitees. * `2` - All participants only from when they join. * `3` - Only meeting host. * `4` - Participants and invitees in our organization. * `5` - Participants in our organization only from when they join. If not provided, the default value will be based on the user's setting.

    • who_will_receive_summary

      integer, possible values: 1, 2, 3, 4 — Defines who will receive a summary after this meeting. This field is applicable only when `auto_start_meeting_summary` is set to `true`. * `1` - Only meeting host. * `2` - Only meeting host, co-hosts, and alternative hosts. * `3` - Only meeting host and meeting invitees in our organization. * `4` - All meeting invitees including those outside of our organization. If not provided, the default value will be based on the user's setting.

  • start_time

    string, format: date-time — Meeting start date-time in UTC/GMT, such as `2020-03-31T12:02:00Z`.

  • start_url

    string — URL to start the meeting. This URL should only be used by the host of the meeting and **should not be shared with anyone other than the host** of the meeting, since anyone with this URL will be able to log in to the Zoom Client as the host of the meeting.

  • status

    string, possible values: "waiting", "started" — The meeting status. * `waiting` - The meeting has not started. * `started` - The meeting is currently in progress.

  • template_id

    string — The account admin meeting template ID used to schedule a meeting using a [meeting template](https://support.zoom.us/hc/en-us/articles/360036559151-Meeting-templates). For a list of account admin-provided meeting templates, use the [**List meeting templates**](/docs/api-reference/zoom-api/methods#operation/listMeetingTemplates) API. * At this time, this field **only** accepts account admin meeting template IDs. * To enable the account admin meeting templates feature, [contact Zoom support](https://support.zoom.us/hc/en-us).

  • timezone

    string — Timezone to format `start_time`.

  • topic

    string — Meeting topic.

  • tracking_fields

    array — Tracking fields.

    Items:

    • field

      string — The tracking field's label.

    • value

      string — The tracking field's value.

    • visible

      boolean — Indicates whether the [tracking field](https://support.zoom.us/hc/en-us/articles/115000293426-Scheduling-Tracking-Fields) is visible in the meeting scheduling options in the Zoom Web Portal or not. `true`: Tracking field is visible. `false`: Tracking field is not visible to the users in the meeting options in the Zoom Web Portal but the field was used while scheduling this meeting via API. An invisible tracking field can be used by users while scheduling meetings via API only.

  • type

    integer, possible values: 1, 2, 3, 8, 10, default: 2 — The meeting type. * `1` - An instant meeting. * `2` - A scheduled meeting. * `3` - A recurring meeting with no fixed time. * `8` - A recurring meeting with fixed time. * `10` - A screen share only meeting.

  • uuid

    string — Unique meeting ID. Each meeting instance generates its own meeting UUID - after a meeting ends, a new UUID is generated for the next instance of the meeting. Retrieve a list of UUIDs from past meeting instances using the [**List past meeting instances**](/docs/api/rest/reference/zoom-api/methods#operation/pastMeetings) API. [Double encode](/docs/api/rest/using-zoom-apis/#meeting-id-and-uuid) your UUID when using it for API calls if the UUID begins with a `/` or contains `//` in it.

Example:

{
  "assistant_id": "kFFvsJc-Q1OSxaJQLvaa_A",
  "host_email": "jchill@example.com",
  "host_id": "30R7kT7bTIKSNUFEuH_Qlg",
  "id": 92674392836,
  "uuid": "aDYlohsHRtCd4ii1uC2+hA==",
  "registration_url": "https://example.com/meeting/register/7ksAkRCoEpt1Jm0wa-E6lICLur9e7Lde5oW6",
  "agenda": "My Meeting",
  "created_at": "2022-03-25T07:29:29Z",
  "duration": 60,
  "encrypted_password": "8pEkRweVXPV3Ob2KJYgFTRlDtl1gSn.1",
  "pstn_password": "123456",
  "h323_password": "123456",
  "join_url": "https://example.com/j/11111",
  "chat_join_url": "https://example.com/launch/jc/11111",
  "occurrences": [
    {
      "duration": 60,
      "occurrence_id": "1648194360000",
      "start_time": "2022-03-25T07:46:00Z",
      "status": "available"
    }
  ],
  "password": "123456",
  "pmi": "97891943927",
  "pre_schedule": false,
  "recurrence": {
    "end_date_time": "2022-04-02T15:59:00Z",
    "end_times": 7,
    "monthly_day": 1,
    "monthly_week": 1,
    "monthly_week_day": 1,
    "repeat_interval": 1,
    "type": 1,
    "weekly_days": "1"
  },
  "settings": {
    "additional_data_center_regions": [
      "TY"
    ],
    "allow_multiple_devices": true,
    "alternative_hosts": "jchill@example.com;thill@example.com",
    "alternative_hosts_email_notification": true,
    "alternative_host_update_polls": true,
    "alternative_host_manage_meeting_summary": true,
    "alternative_host_manage_cloud_recording": false,
    "approval_type": 0,
    "approved_or_denied_countries_or_regions": {
      "approved_list": [
        "CX"
      ],
      "denied_list": [
        "CA"
      ],
      "enable": true,
      "method": "approve"
    },
    "audio": "telephony",
    "audio_conference_info": "test",
    "authentication_domains": "example.com",
    "authentication_exception": [
      {
        "email": "jchill@example.com",
        "name": "Jill Chill",
        "join_url": "https://example.com/s/11111"
      }
    ],
    "authentication_name": "Sign in to Zoom",
    "authentication_option": "signIn_D8cJuqWVQ623CI4Q8yQK0Q",
    "auto_recording": "cloud",
    "auto_add_recording_to_video_management": {
      "enable": true,
      "channels": [
        {
          "channel_id": "Uyh5qeykTDiA66YQEYmFPg",
          "name": "Team Weekly Meetings"
        }
      ]
    },
    "breakout_room": {
      "enable": true,
      "rooms": [
        {
          "name": "room1",
          "participants": [
            "jchill@example.com"
          ]
        }
      ]
    },
    "calendar_type": 1,
    "close_registration": false,
    "contact_email": "jchill@example.com",
    "contact_name": "Jill Chill",
    "custom_keys": [
      {
        "key": "key1",
        "value": "value1"
      }
    ],
    "email_notification": true,
    "encryption_type": "enhanced_encryption",
    "focus_mode": true,
    "global_dial_in_countries": [
      "US"
    ],
    "global_dial_in_numbers": [
      {
        "city": "New York",
        "country": "US",
        "country_name": "US",
        "number": "+1 1000200200",
        "type": "toll"
      }
    ],
    "host_video": true,
    "jbh_time": 0,
    "join_before_host": true,
    "question_and_answer": {
      "enable": true,
      "allow_submit_questions": true,
      "allow_anonymous_questions": true,
      "question_visibility": "all",
      "attendees_can_comment": true,
      "attendees_can_upvote": true
    },
    "language_interpretation": {
      "enable": true,
      "interpreters": [
        {
          "email": "interpreter@example.com",
          "interpreter_languages": "English,French"
        }
      ]
    },
    "sign_language_interpretation": {
      "enable": true,
      "interpreters": [
        {
          "email": "interpreter@example.com",
          "sign_language": "American"
        }
      ]
    },
    "meeting_authentication": true,
    "mute_upon_entry": false,
    "participant_video": false,
    "private_meeting": false,
    "registrants_confirmation_email": true,
    "registrants_email_notification": true,
    "registration_type": 1,
    "show_share_button": true,
    "show_join_info": true,
    "use_pmi": false,
    "waiting_room": false,
    "waiting_room_options": {
      "mode": "follow_setting",
      "who_goes_to_waiting_room": "everyone"
    },
    "watermark": false,
    "host_save_video_order": true,
    "internal_meeting": false,
    "meeting_invitees": [
      {
        "email": "jchill@example.com"
      }
    ],
    "continuous_meeting_chat": {
      "enable": true,
      "channel_id": "cabc1234567defghijkl01234"
    },
    "participant_focused_meeting": false,
    "push_change_to_calendar": false,
    "resources": [
      {
        "resource_type": "whiteboard",
        "resource_id": "X4Hy02w3QUOdskKofgb9Jg",
        "permission_level": "editor"
      }
    ],
    "auto_start_meeting_summary": false,
    "who_will_receive_summary": 1,
    "auto_start_ai_companion_questions": false,
    "who_can_ask_questions": 1,
    "summary_template_id": "1e1356ad",
    "device_testing": false,
    "request_permission_to_unmute_participants": true,
    "allow_host_control_participant_mute_state": false,
    "disable_participant_video": false,
    "email_in_attendee_report": true
  },
  "start_time": "2022-03-25T07:29:29Z",
  "start_url": "https://example.com/s/11111",
  "status": "waiting",
  "template_id": "Dv4YdINdTk+Z5RToadh5ug==",
  "timezone": "America/Los_Angeles",
  "topic": "My Meeting",
  "tracking_fields": [
    {
      "field": "field1",
      "value": "value1",
      "visible": true
    }
  ],
  "type": 2,
  "dynamic_host_key": "123456",
  "creation_source": "open_api"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `3161` <br> Your user account is not allowed meeting hosting and scheduling capabilities. <br> **Error Code:** `3000` <br> Instant meetings do not support the `schedule_for` parameter, and you can't schedule an instant meeting for another user. <br> **Error Code:** `3000` <br> Users in '{userId}' have been blocked from joining meetings and webinars. To unblock them, go to the **Settings** page in the Zoom web portal and update **Block users in specific domains from joining meetings and webinars**. <br> **Error Code:** `3000` <br> You cannot schedule a meeting for {userId} <br> **Error Code:** `300` <br> The value that you entered in the `schedule_for` field is invalid. Enter a valid value and try again. <br> **Error Code:** `300` <br> Invalid `enforce_login_domains`. Separate multiple domains with semicolons. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User does not exist: {userId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rate-limits/).

List a user's PAC accounts

  • Method: GET
  • Path: /accounts/{accountId}/users/{userId}/pac
  • Tags: PAC

Retrieve a list of a user's personal audio conference (PAC) accounts. For user-level apps, pass the me value instead of the userId parameter.

PAC allows Pro or higher account holders to host meetings through PSTN (phone dial-in) only.

Prerequisites

Scopes: pac:master

Granular Scopes: pac:read:list_pac_accounts:master

Rate Limit Label: LIGHT

Responses

Status: 200 **HTTP Status Code:** `200` PAC account list returned.
Content-Type: application/json
  • pac_accounts

    array — Information about the PAC accounts.

    Items:

    • conference_id

      integer, format: int64 — The conference ID.

    • dedicated_dial_in_number

      array — Information about the account's dedicated dial-in numbers.

      Items:

      • country

        string — The dial-in country code.

      • number

        string — The dial-in number.

    • global_dial_in_numbers

      array — Information about the account's global dial-in numbers.

      Items:

      • country

        string — The global dial-in country code.

      • number

        string — The global dial-in number.

    • listen_only_password

      string — The listen-only password, up to six characters in length.

    • participant_password

      string — The participant password, up to six characters in length.

Example:

{
  "pac_accounts": [
    {
      "conference_id": 111111,
      "dedicated_dial_in_number": [
        {
          "country": "USA",
          "number": "5550110"
        }
      ],
      "global_dial_in_numbers": [
        {
          "country": "USA",
          "number": "5550100"
        }
      ],
      "listen_only_password": "3c2b1a",
      "participant_password": "a1b2c3"
    }
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `2024` <br> User does not have PAC enabled. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User does not exist: $userId <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Perform batch poll creation

  • Method: POST
  • Path: /accounts/{accountId}/meetings/{meetingId}/batch_polls
  • Tags: Polls

Polls allow the meeting host to survey attendees. Create batch polls for a meeting.

Prerequisites:

  • Host user type must be Pro or higher plan.
  • Polling feature must be enabled in the host's account.
  • Meeting must be a scheduled meeting. Instant meetings do not have polling features enabled.

Scopes: meeting:master

Granular Scopes: meeting:write:batch_polls:master

Rate Limit Label: LIGHT

Request Body

Content-Type: application/json
  • polls

    array — The information about the meeting's polls.

    Items:

    • anonymous

      boolean, default: false — Whether to allow meeting participants to answer poll questions anonymously: * `true` &mdash; Anonymous polls enabled. * `false` &mdash; Participants cannot answer poll questions anonymously. This value defaults to `false`.

    • poll_type

      integer, possible values: 1, 2, 3, default: 1 — The type of poll: * `1` &mdash; Poll. * `2` &mdash; Advanced Poll. This feature must be enabled in your Zoom account. * `3` &mdash; Quiz. This feature must be enabled in your Zoom account. This value defaults to `1`.

    • questions

      array — The information about the poll's questions.

      Items:

      • answer_max_character

        integer — The allowed maximum number of characters. This field only applies to `short_answer` and `long_answer` polls: * For `short_answer` polls, a maximum of 500 characters. * For `long_answer` polls, a maximum of 2,000 characters.

      • answer_min_character

        integer — The allowed minimum number of characters. This field only applies to `short_answer` and `long_answer` polls. You must provide at least a **one** character minimum value.

      • answer_required

        boolean, default: false — Whether participants must answer the question: * `true` &mdash; The participant must answer the question. * `false` &mdash; The participant does not need to answer the question. **Note:** * When the poll's `type` value is `1` (Poll), this value defaults to `true`. * When the poll's `type` value is the `2` (Advanced Poll) or `3` (Quiz) values, this value defaults to `false`.

      • answers

        array — The poll question's available answers. This field requires a **minimum** of two answers. * For `single` and `multiple` polls, you can only provide a maximum of 10 answers. * For `matching` polls, you can only provide a maximum of 16 answers. * For `rank_order` polls, you can only provide a maximum of seven answers.

        Items:

        string

      • case_sensitive

        boolean, default: false — Whether the correct answer is case sensitive. This field only applies to `fill_in_the_blank` polls: * `true` &mdash; The answer is case-sensitive. * `false` &mdash; The answer is not case-sensitive. This value defaults to `false`.

      • name

        string — The poll question's title, up to 1024 characters. For `fill_in_the_blank` polls, this field is the poll's question. For each value that the user must fill in, ensure that there are the same number of `right_answers` values.

      • prompts

        array — The information about the prompt questions. This field only applies to `matching` and `rank_order` polls. You **must** provide a minimum of two prompts, up to a maximum of 10 prompts.

        Items:

        • prompt_question

          string — The question prompt's title.

        • prompt_right_answers

          array — The question prompt's correct answers: * For `matching` polls, you must provide a minimum of two correct answers, up to a maximum of 10 correct answers. * For `rank_order` polls, you can only provide one correct answer.

          Items:

          string

      • rating_max_label

        string — The high score label for the `rating_max_value` field. This field only applies to the `rating_scale` poll.

      • rating_max_value

        integer — The rating scale's maximum value, up to a maximum value of 10. This field only applies to the `rating_scale` poll.

      • rating_min_label

        string — The low score label for the `rating_min_value` field. This field only applies to the `rating_scale` poll.

      • rating_min_value

        integer — The rating scale's minimum value. This value cannot be less than zero. This field only applies to the `rating_scale` poll.

      • right_answers

        array — The poll question's correct answer(s). This field is **required** if the poll's `type` value is `3` (Quiz). For `single` and `matching` polls, this field only accepts one answer.

        Items:

        string

      • show_as_dropdown

        boolean, default: false — Whether to display the radio selection as a drop-down box: * `true` &mdash; Show as a drop-down box. * `false` &mdash; Do not show as a drop-down box. This value defaults to `false`.

      • type

        string, possible values: "single", "multiple", "matching", "rank_order", "short_answer", "long_answer", "fill_in_the_blank", "rating_scale" — The poll's question and answer type: * `single` &mdash; Single choice. * `multiple` &mdash; Multiple choice. * `matching` &mdash; Matching. * `rank_order` &mdash; Rank order. * `short_answer` &mdash; Short answer. * `long_answer` &mdash; Long answer. * `fill_in_the_blank` &mdash; Fill in the blank. * `rating_scale` &mdash; Rating scale.

    • title

      string — The poll's title, up to 64 characters.

Example:

{
  "polls": [
    {
      "anonymous": false,
      "poll_type": 2,
      "questions": [
        {
          "answer_max_character": 200,
          "answer_min_character": 1,
          "answer_required": false,
          "answers": [
            "Extremely useful"
          ],
          "case_sensitive": false,
          "name": "How useful was this meeting?",
          "prompts": [
            {
              "prompt_question": "How are you?",
              "prompt_right_answers": [
                "Good"
              ]
            }
          ],
          "rating_max_label": "Extremely Likely",
          "rating_max_value": 4,
          "rating_min_label": "Not likely",
          "rating_min_value": 1,
          "right_answers": [
            "Good"
          ],
          "show_as_dropdown": false,
          "type": "single"
        }
      ],
      "title": "Learn something new"
    }
  ]
}

Responses

Status: 201 **HTTP Status Code:** `201` Meeting Poll Created
Content-Type: application/json
  • polls

    array

    Items:

    • anonymous

      boolean — Whether to allow meeting participants to answer poll questions anonymously: * `true` &mdash; Anonymous polls enabled. * `false` &mdash; Participants cannot answer poll questions anonymously.

    • id

      string — Meeting Poll ID

    • poll_type

      integer, possible values: 1, 2, 3 — The type of poll: * `1` &mdash; Poll. * `2` &mdash; Advanced Poll. This feature must be enabled in your Zoom account. * `3` &mdash; Quiz. This feature must be enabled in your Zoom account.

    • questions

      array — The information about the poll's questions.

      Items:

      • answer_max_character

        integer — The allowed maximum number of characters. This field only returns for `short_answer` and `long_answer` polls.

      • answer_min_character

        integer — The allowed minimum number of characters. This field only returns for `short_answer` and `long_answer` polls.

      • answer_required

        boolean — Whether participants must answer the question: * `true` &mdash; The participant must answer the question. * `false` &mdash; The participant does not need to answer the question.

      • answers

        array — The poll question's available answers.

        Items:

        string

      • case_sensitive

        boolean, default: false — Whether the correct answer is case sensitive. This field only returns for `fill_in_the_blank` polls: * `true` &mdash; The answer is case-sensitive. * `false` &mdash; The answer is not case-sensitive.

      • name

        string — The poll question's title. For `fill_in_the_blank` polls, this field is the poll's question.

      • prompts

        array — The information about the prompt questions. This object only returns for `matching` and `rank_order` polls.

        Items:

        • prompt_question

          string — The question prompt's title.

        • prompt_right_answers

          array — The question prompt's correct answers.

          Items:

          string

      • rating_max_label

        string — The high score label for the `rating_max_value` field. This field only returns for `rating_scale` polls.

      • rating_max_value

        integer — The rating scale's maximum value. This field only returns for `rating_scale` polls.

      • rating_min_label

        string — The low score label for the `rating_min_value` field. This field only returns for `rating_scale` polls.

      • rating_min_value

        integer — The rating scale's minimum value. This field only returns for `rating_scale` polls.

      • right_answers

        array — The poll question's correct answer(s).

        Items:

        string

      • show_as_dropdown

        boolean — Whether to display the radio selection as a drop-down box: * `true` &mdash; Show as a drop-down box. * `false` &mdash; Do not show as a drop-down box.

      • type

        string, possible values: "single", "multiple", "matching", "rank_order", "short_answer", "long_answer", "fill_in_the_blank", "rating_scale" — The poll's question and answer type: * `single` &mdash; Single choice. * `multiple` &mdash; Multiple choice. * `matching` &mdash; Matching. * `rank_order` &mdash; Rank order. * `short_answer` &mdash; Short answer. * `long_answer` &mdash; Long answer. * `fill_in_the_blank` &mdash; Fill in the blank. * `rating_scale` &mdash; Rating scale.

    • status

      string, possible values: "notstart", "started", "ended", "sharing" — The status of the meeting poll: `notstart` - Poll not started `started` - Poll started `ended` - Poll ended `sharing` - Sharing poll results

    • title

      string — The title for the poll.

Example:

{
  "polls": [
    {
      "anonymous": true,
      "id": "QalIoKWLTJehBJ8e1xRrbQ",
      "poll_type": 2,
      "questions": [
        {
          "answer_max_character": 200,
          "answer_min_character": 1,
          "answer_required": false,
          "answers": [
            "Extremely useful"
          ],
          "case_sensitive": false,
          "name": "How useful was this meeting?",
          "prompts": [
            {
              "prompt_question": "How are you?",
              "prompt_right_answers": [
                "Good"
              ]
            }
          ],
          "rating_max_label": "Extremely Likely",
          "rating_max_value": 4,
          "rating_min_label": "Not likely",
          "rating_min_value": 0,
          "right_answers": [
            "Good"
          ],
          "show_as_dropdown": false,
          "type": "single"
        }
      ],
      "status": "notstart",
      "title": "Learn something new"
    }
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Invalid Meeting ID. <br> **Error Code:** `3000` <br> Cannot access meeting information. <br> **Error Code:** `4400` <br> You can only add a maximum of 50 polls. <br> **Error Code:** `3161` <br> Meeting hosting and scheduling capabilities are not allowed for your user account. <br> **Error Code:** `4400` <br> Meeting polls disabled. To enable this feature, enable the "Meeting Polls/Quizzes" setting in the Zoom web portal's "Settings" interface. <br> **Error Code:** `4400` <br> Advanced meeting polls disabled. To enable this feature, enable the "Allow host to create advanced polls and quizzes" setting in the Zoom web portal's "Settings" interface. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Meeting does not exist: {meetingId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

List meeting polls

  • Method: GET
  • Path: /accounts/{accountId}/meetings/{meetingId}/polls
  • Tags: Polls

Polls allow the meeting host to survey attendees. List all polls of a meeting.

Prerequisites:

  • Host user type must be Pro or higher plan.
  • Meeting must be a scheduled meeting. Instant meetings do not have polling features enabled.

Scopes: meeting:master

Granular Scopes: meeting:read:list_polls:master

Rate Limit Label: LIGHT

Responses

Status: 200 **HTTP Status Code:** List polls of a Meeting returned
Content-Type: application/json

All of:

  • polls

    array — An array of polls.

    Items:

    All of:

    • id

      string — The poll ID.

    • status

      string, possible values: "notstart", "started", "ended", "sharing", "deactivated" — The meeting poll's status. `notstart` - Poll not started `started` - Poll started `ended` - Poll ended `sharing` - Sharing poll results `deactivated` - Poll deactivated

    • anonymous

      boolean, default: false — Whether meeting participants can answer poll questions anonymously. This value defaults to `false`.

    • poll_type

      integer, possible values: 1, 2, 3 — The type of poll. * `1` - Poll. * `2` - Advanced Poll. This feature must be enabled in your Zoom account. * `3` - Quiz. This feature must be enabled in your Zoom account. This value defaults to `1`.

    • questions

      array — Information about the poll's questions.

      Items:

      • answer_max_character

        integer — The allowed maximum number of characters. This field only applies to `short_answer` and `long_answer` polls: * For `short_answer` polls, a maximum of 500 characters. * For `long_answer` polls, a maximum of 2,000 characters.

      • answer_min_character

        integer — The allowed minimum number of characters. This field only applies to `short_answer` and `long_answer` polls. You must provide at least a **one** character minimum value.

      • answer_required

        boolean, default: false — Whether participants must answer the question: * `true` &mdash; The participant must answer the question. * `false` &mdash; The participant does not need to answer the question. **Note:** * When the poll's `type` value is `1` (Poll), this value defaults to `true`. * When the poll's `type` value is the `2` (Advanced Poll) or `3` (Quiz) values, this value defaults to `false`.

      • answers

        array — The poll question's available answers. This field requires a **minimum** of two answers. * For `single` and `multiple` polls, you can only provide a maximum of 10 answers. * For `matching` polls, you can only provide a maximum of 16 answers. * For `rank_order` polls, you can only provide a maximum of seven answers.

        Items:

        string

      • case_sensitive

        boolean, default: false — Whether the correct answer is case sensitive. This field only applies to `fill_in_the_blank` polls: * `true` &mdash; The answer is case-sensitive. * `false` &mdash; The answer is not case-sensitive. This value defaults to `false`.

      • name

        string — The poll question, up to 1024 characters. For `fill_in_the_blank` polls, this field is the poll's question. For each value that the user must fill in, ensure that there are the same number of `right_answers` values.

      • prompts

        array — Information about the prompt questions. This field only applies to `matching` and `rank_order` polls. You **must** provide a minimum of two prompts, up to a maximum of 10 prompts.

        Items:

        • prompt_question

          string — The question prompt's title.

        • prompt_right_answers

          array — The question prompt's correct answers: * For `matching` polls, you must provide a minimum of two correct answers, up to a maximum of 10 correct answers. * For `rank_order` polls, you can only provide one correct answer.

          Items:

          string

      • rating_max_label

        string — The high score label for the `rating_max_value` field. This field only applies to the `rating_scale` poll.

      • rating_max_value

        integer — The rating scale's maximum value, up to a maximum value of 10. This field only applies to the `rating_scale` poll.

      • rating_min_label

        string — The low score label for the `rating_min_value` field. This field only applies to the `rating_scale` poll.

      • rating_min_value

        integer — The rating scale's minimum value. This value cannot be less than zero. This field only applies to the `rating_scale` poll.

      • right_answers

        array — The poll question's correct answer(s). This field is **required** if the poll's `type` value is `3` (Quiz). For `single` and `matching` polls, this field only accepts one answer.

        Items:

        string

      • show_as_dropdown

        boolean, default: false — Whether to display the radio selection as a drop-down box: * `true` &mdash; Show as a drop-down box. * `false` &mdash; Do not show as a drop-down box. This value defaults to `false`.

      • type

        string, possible values: "single", "multiple", "matching", "rank_order", "short_answer", "long_answer", "fill_in_the_blank", "rating_scale" — The poll's question and answer type: * `single` &mdash; Single choice. * `multiple` &mdash; Multiple choice. * `matching` &mdash; Matching. * `rank_order` &mdash; Rank order. * `short_answer` &mdash; Short answer. * `long_answer` &mdash; Long answer. * `fill_in_the_blank` &mdash; Fill in the blank. * `rating_scale` &mdash; Rating scale.

    • title

      string — The poll's title, up to 64 characters.

  • total_records

    integer — The number of all records available across pages

Example:

{
  "polls": [
    {
      "id": "QalIoKWLTJehBJ8e1xRrbQ",
      "status": "notstart",
      "anonymous": true,
      "poll_type": 2,
      "questions": [
        {
          "answer_max_character": 200,
          "answer_min_character": 1,
          "answer_required": false,
          "answers": [
            "Extremely useful"
          ],
          "case_sensitive": false,
          "name": "How useful was this meeting?",
          "prompts": [
            {
              "prompt_question": "How are you?",
              "prompt_right_answers": [
                "Good"
              ]
            }
          ],
          "rating_max_label": "Extremely Likely",
          "rating_max_value": 4,
          "rating_min_label": "Not likely",
          "rating_min_value": 0,
          "right_answers": [
            "Good"
          ],
          "show_as_dropdown": false,
          "type": "single"
        }
      ],
      "title": "Learn something new"
    }
  ],
  "total_records": 1
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `4400` <br> Meeting polls disabled. To enable this feature, enable the "Meeting Polls/Quizzes" setting in the Zoom web portal's "Settings" interface. <br> **Error Code:** `3161` <br> Meeting hosting and scheduling capabilities are not allowed for your user account. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `404` <br> Meeting Poll not found <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rest/rate-limits/).

Create a meeting poll

  • Method: POST
  • Path: /accounts/{accountId}/meetings/{meetingId}/polls
  • Tags: Polls

Polls allow the meeting host to survey attendees. Create a poll for a meeting.

Prerequisites:

  • Host user type must be Pro or higher plan.
  • Polling feature must be enabled in the host's account.
  • Meeting must be a scheduled meeting. Instant meetings do not have polling features enabled.

Scopes: meeting:master

Granular Scopes: meeting:write:poll:master

Rate Limit Label: LIGHT

Request Body

Content-Type: application/json

All of:

  • anonymous

    boolean, default: false — Whether meeting participants answer poll questions anonymously. This value defaults to `false`.

  • poll_type

    integer, possible values: 1, 2, 3 — The type of poll: * `1` &mdash; Poll. * `2` &mdash; Advanced Poll. This feature must be enabled in your Zoom account. * `3` &mdash; Quiz. This feature must be enabled in your Zoom account. This value defaults to `1`.

  • questions

    array — The information about the poll's questions.

    Items:

    • answer_max_character

      integer — The allowed maximum number of characters. This field only applies to `short_answer` and `long_answer` polls: * For `short_answer` polls, a maximum of 500 characters. * For `long_answer` polls, a maximum of 2,000 characters.

    • answer_min_character

      integer — The allowed minimum number of characters. This field only applies to `short_answer` and `long_answer` polls. You must provide at least a **one** character minimum value.

    • answer_required

      boolean, default: false — Whether participants must answer the question: * `true` &mdash; The participant must answer the question. * `false` &mdash; The participant does not need to answer the question. **Note:** * When the poll's `type` value is `1` (Poll), this value defaults to `true`. * When the poll's `type` value is the `2` (Advanced Poll) or `3` (Quiz) values, this value defaults to `false`.

    • answers

      array — The poll question's available answers. This field requires a **minimum** of two answers. * For `single` and `multiple` polls, you can only provide a maximum of 10 answers. * For `matching` polls, you can only provide a maximum of 16 answers. * For `rank_order` polls, you can only provide a maximum of seven answers.

      Items:

      string

    • case_sensitive

      boolean, default: false — Whether the correct answer is case sensitive. This field only applies to `fill_in_the_blank` polls: * `true` &mdash; The answer is case-sensitive. * `false` &mdash; The answer is not case-sensitive. This value defaults to `false`.

    • name

      string — The poll question, up to 1024 characters. For `fill_in_the_blank` polls, this field is the poll's question. For each value that the user must fill in, ensure that there are the same number of `right_answers` values.

    • prompts

      array — The information about the prompt questions. This field only applies to `matching` and `rank_order` polls. You **must** provide a minimum of two prompts, up to a maximum of 10 prompts.

      Items:

      • prompt_question

        string — The question prompt's title.

      • prompt_right_answers

        array — The question prompt's correct answers: * For `matching` polls, you must provide a minimum of two correct answers, up to a maximum of 10 correct answers. * For `rank_order` polls, you can only provide one correct answer.

        Items:

        string

    • rating_max_label

      string — The high score label for the `rating_max_value` field. This field only applies to the `rating_scale` poll.

    • rating_max_value

      integer — The rating scale's maximum value, up to a maximum value of 10. This field only applies to the `rating_scale` poll.

    • rating_min_label

      string — The low score label for the `rating_min_value` field. This field only applies to the `rating_scale` poll.

    • rating_min_value

      integer — The rating scale's minimum value. This value cannot be less than zero. This field only applies to the `rating_scale` poll.

    • right_answers

      array — The poll question's correct answer(s). This field is **required** if the poll's `type` value is `3` (Quiz). For `single` and `matching` polls, this field only accepts one answer.

      Items:

      string

    • show_as_dropdown

      boolean, default: false — Whether to display the radio selection as a drop-down box: * `true` &mdash; Show as a drop-down box. * `false` &mdash; Do not show as a drop-down box. This value defaults to `false`.

    • type

      string, possible values: "single", "multiple", "matching", "rank_order", "short_answer", "long_answer", "fill_in_the_blank", "rating_scale" — The poll's question and answer type: * `single` &mdash; Single choice. * `multiple` &mdash; Multiple choice. * `matching` &mdash; Matching. * `rank_order` &mdash; Rank order. * `short_answer` &mdash; Short answer. * `long_answer` &mdash; Long answer. * `fill_in_the_blank` &mdash; Fill in the blank. * `rating_scale` &mdash; Rating scale.

  • title

    string — The poll's title, up to 64 characters.

Example:

{
  "anonymous": true,
  "poll_type": 2,
  "questions": [
    {
      "answer_max_character": 200,
      "answer_min_character": 1,
      "answer_required": false,
      "answers": [
        "Extremely useful"
      ],
      "case_sensitive": false,
      "name": "How useful was this meeting?",
      "prompts": [
        {
          "prompt_question": "How are you?",
          "prompt_right_answers": [
            "Good"
          ]
        }
      ],
      "rating_max_label": "Extremely Likely",
      "rating_max_value": 4,
      "rating_min_label": "Not likely",
      "rating_min_value": 0,
      "right_answers": [
        "Good"
      ],
      "show_as_dropdown": false,
      "type": "single"
    }
  ],
  "title": "Learn something new"
}

Responses

Status: 201 **HTTP Status Code:** `201` Meeting Poll Created
Content-Type: application/json

All of:

  • id

    string — The meeting poll ID

  • status

    string, possible values: "notstart", "started", "ended", "sharing" — The status of the meeting poll: `notstart` - Poll not started `started` - Poll started `ended` - Poll ended `sharing` - Sharing poll results

  • anonymous

    boolean, default: false — Whether meeting participants answer poll questions anonymously. This value defaults to `false`.

  • poll_type

    integer, possible values: 1, 2, 3 — The type of poll: * `1` &mdash; Poll. * `2` &mdash; Advanced Poll. This feature must be enabled in your Zoom account. * `3` &mdash; Quiz. This feature must be enabled in your Zoom account. This value defaults to `1`.

  • questions

    array — The information about the poll's questions.

    Items:

    • answer_max_character

      integer — The allowed maximum number of characters. This field only applies to `short_answer` and `long_answer` polls: * For `short_answer` polls, a maximum of 500 characters. * For `long_answer` polls, a maximum of 2,000 characters.

    • answer_min_character

      integer — The allowed minimum number of characters. This field only applies to `short_answer` and `long_answer` polls. You must provide at least a **one** character minimum value.

    • answer_required

      boolean, default: false — Whether participants must answer the question: * `true` &mdash; The participant must answer the question. * `false` &mdash; The participant does not need to answer the question. **Note:** * When the poll's `type` value is `1` (Poll), this value defaults to `true`. * When the poll's `type` value is the `2` (Advanced Poll) or `3` (Quiz) values, this value defaults to `false`.

    • answers

      array — The poll question's available answers. This field requires a **minimum** of two answers. * For `single` and `multiple` polls, you can only provide a maximum of 10 answers. * For `matching` polls, you can only provide a maximum of 16 answers. * For `rank_order` polls, you can only provide a maximum of seven answers.

      Items:

      string

    • case_sensitive

      boolean, default: false — Whether the correct answer is case sensitive. This field only applies to `fill_in_the_blank` polls: * `true` &mdash; The answer is case-sensitive. * `false` &mdash; The answer is not case-sensitive. This value defaults to `false`.

    • name

      string — The poll question, up to 1024 characters. For `fill_in_the_blank` polls, this field is the poll's question. For each value that the user must fill in, ensure that there are the same number of `right_answers` values.

    • prompts

      array — The information about the prompt questions. This field only applies to `matching` and `rank_order` polls. You **must** provide a minimum of two prompts, up to a maximum of 10 prompts.

      Items:

      • prompt_question

        string — The question prompt's title.

      • prompt_right_answers

        array — The question prompt's correct answers: * For `matching` polls, you must provide a minimum of two correct answers, up to a maximum of 10 correct answers. * For `rank_order` polls, you can only provide one correct answer.

        Items:

        string

    • rating_max_label

      string — The high score label for the `rating_max_value` field. This field only applies to the `rating_scale` poll.

    • rating_max_value

      integer — The rating scale's maximum value, up to a maximum value of 10. This field only applies to the `rating_scale` poll.

    • rating_min_label

      string — The low score label for the `rating_min_value` field. This field only applies to the `rating_scale` poll.

    • rating_min_value

      integer — The rating scale's minimum value. This value cannot be less than zero. This field only applies to the `rating_scale` poll.

    • right_answers

      array — The poll question's correct answer(s). This field is **required** if the poll's `type` value is `3` (Quiz). For `single` and `matching` polls, this field only accepts one answer.

      Items:

      string

    • show_as_dropdown

      boolean, default: false — Whether to display the radio selection as a drop-down box: * `true` &mdash; Show as a drop-down box. * `false` &mdash; Do not show as a drop-down box. This value defaults to `false`.

    • type

      string, possible values: "single", "multiple", "matching", "rank_order", "short_answer", "long_answer", "fill_in_the_blank", "rating_scale" — The poll's question and answer type: * `single` &mdash; Single choice. * `multiple` &mdash; Multiple choice. * `matching` &mdash; Matching. * `rank_order` &mdash; Rank order. * `short_answer` &mdash; Short answer. * `long_answer` &mdash; Long answer. * `fill_in_the_blank` &mdash; Fill in the blank. * `rating_scale` &mdash; Rating scale.

  • title

    string — The poll's title, up to 64 characters.

Example:

{
  "id": "QalIoKWLTJehBJ8e1xRrbQ",
  "status": "notstart",
  "anonymous": true,
  "poll_type": 2,
  "questions": [
    {
      "answer_max_character": 200,
      "answer_min_character": 1,
      "answer_required": false,
      "answers": [
        "Extremely useful"
      ],
      "case_sensitive": false,
      "name": "How useful was this meeting?",
      "prompts": [
        {
          "prompt_question": "How are you?",
          "prompt_right_answers": [
            "Good"
          ]
        }
      ],
      "rating_max_label": "Extremely Likely",
      "rating_max_value": 4,
      "rating_min_label": "Not likely",
      "rating_min_value": 0,
      "right_answers": [
        "Good"
      ],
      "show_as_dropdown": false,
      "type": "single"
    }
  ],
  "title": "Learn something new"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `4400` <br> * Meeting polls disabled. To enable this feature, enable the "Meeting Polls/Quizzes" setting in the Zoom web portal's "Settings" interface. * Advanced meeting polls disabled. To enable this feature, enable the "Allow host to create advanced polls and quizzes" setting in the Zoom web portal's "Settings" interface. <br> **Error Code:** `3161` <br> Meeting hosting and scheduling capabilities are not allowed for your user account. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `404` <br> Meeting not found <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Get a meeting poll

  • Method: GET
  • Path: /accounts/{accountId}/meetings/{meetingId}/polls/{pollId}
  • Tags: Polls

Retrieves information about a specific meeting poll.

Prerequisites:

  • Host must have Pro or higher plan.
  • Enable the Meeting Polls/Quizzes setting in the Zoom web portal.

Scopes: meeting:master

Granular Scopes: meeting:read:poll:master

Rate Limit Label: LIGHT

Responses

Status: 200 **HTTP Status Code:** `200` Meeting Poll object returned
Content-Type: application/json

All of:

  • id

    string — The meeting poll ID.

  • status

    string, possible values: "notstart", "started", "ended", "sharing", "deactivated" — The meeting poll's status. `notstart` - Poll not started `started` - Poll started `ended` - Poll ended `sharing` - Sharing poll results `deactivated` - Poll deactivated

  • anonymous

    boolean, default: false — Whether meeting participants answer poll questions anonymously. This value defaults to `false`.

  • poll_type

    integer, possible values: 1, 2, 3 — The poll's type. * `1` - Poll. * `2` - Advanced poll. This feature must be enabled in your Zoom account. * `3` - Quiz. This feature must be enabled in your Zoom account. This value defaults to `1`.

  • questions

    array — Information about the poll's questions.

    Items:

    • answer_max_character

      integer — The allowed maximum number of characters. This field only applies to `short_answer` and `long_answer` polls. * For `short_answer` polls, a maximum of 500 characters. * For `long_answer` polls, a maximum of 2,000 characters.

    • answer_min_character

      integer — The allowed minimum number of characters. This field only applies to `short_answer` and `long_answer` polls. You must provide at least a one-character minimum value.

    • answer_required

      boolean, default: false — Whether participants must answer the question. * `true` - The participant must answer the question. * `false` - The participant does not need to answer the question. **Note:** * When the poll's `type` value is `1` (Poll), this value defaults to `true`. * When the poll's `type` value is the `2` (Advanced Poll) or `3` (Quiz) values, this value defaults to `false`.

    • answers

      array — The poll question's available answers. This field requires a **minimum** of two answers. * For `single` and `multiple` polls, you can only provide a maximum of 10 answers. * For `matching` polls, you can only provide a maximum of 16 answers. * For `rank_order` polls, you can only provide a maximum of seven answers.

      Items:

      string

    • case_sensitive

      boolean, default: false — Whether the correct answer is case sensitive. This field only applies to `fill_in_the_blank` polls: * `true` &mdash; The answer is case-sensitive. * `false` &mdash; The answer is not case-sensitive. This value defaults to `false`.

    • name

      string — The poll question, up to 1024 characters. For `fill_in_the_blank` polls, this field is the poll's question. For each value that the user must fill in, ensure that there are the same number of `right_answers` values.

    • prompts

      array — The information about the prompt questions. This field only applies to `matching` and `rank_order` polls. You **must** provide a minimum of two prompts, up to a maximum of 10 prompts.

      Items:

      • prompt_question

        string — The question prompt's title.

      • prompt_right_answers

        array — The question prompt's correct answers: * For `matching` polls, you must provide a minimum of two correct answers, up to a maximum of 10 correct answers. * For `rank_order` polls, you can only provide one correct answer.

        Items:

        string

    • rating_max_label

      string — The high score label for the `rating_max_value` field. This field only applies to the `rating_scale` poll.

    • rating_max_value

      integer — The rating scale's maximum value, up to a maximum value of 10. This field only applies to the `rating_scale` poll.

    • rating_min_label

      string — The low score label for the `rating_min_value` field. This field only applies to the `rating_scale` poll.

    • rating_min_value

      integer — The rating scale's minimum value. This value cannot be less than zero. This field only applies to the `rating_scale` poll.

    • right_answers

      array — The poll question's correct answer(s). This field is required if the poll's `type` value is `3` (Quiz). For `single` and `matching` polls, this field only accepts one answer.

      Items:

      string

    • show_as_dropdown

      boolean, default: false — Whether to display the radio selection as a drop-down box. * `true` - Show as a drop-down box. * `false` - Do not show as a drop-down box. This value defaults to `false`.

    • type

      string, possible values: "single", "multiple", "matching", "rank_order", "short_answer", "long_answer", "fill_in_the_blank", "rating_scale" — The poll's question and answer type. * `single` - Single choice. * `multiple` - Multiple choice. * `matching` - Matching. * `rank_order` - Rank order. * `short_answer` - Short answer. * `long_answer` - Long answer. * `fill_in_the_blank` - Fill in the blank. * `rating_scale` - Rating scale.

  • title

    string — The poll's title, up to 64 characters.

Example:

{
  "id": "QalIoKWLTJehBJ8e1xRrbQ",
  "status": "notstart",
  "anonymous": true,
  "poll_type": 2,
  "questions": [
    {
      "answer_max_character": 200,
      "answer_min_character": 1,
      "answer_required": false,
      "answers": [
        "Extremely useful"
      ],
      "case_sensitive": false,
      "name": "How useful was this meeting?",
      "prompts": [
        {
          "prompt_question": "How are you?",
          "prompt_right_answers": [
            "Good"
          ]
        }
      ],
      "rating_max_label": "Extremely Likely",
      "rating_max_value": 4,
      "rating_min_label": "Not likely",
      "rating_min_value": 0,
      "right_answers": [
        "Good"
      ],
      "show_as_dropdown": false,
      "type": "single"
    }
  ],
  "title": "Learn something new"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `4400` <br> Meeting polls disabled. To enable this feature, enable the "Meeting Polls/Quizzes" setting in the Zoom web portal's "Settings" interface. <br> **Error Code:** `3161` <br> Meeting hosting and scheduling capabilities are not allowed for your user account. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `404` <br> Meeting Poll not found. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rest/rate-limits/).

Update a meeting poll

  • Method: PUT
  • Path: /accounts/{accountId}/meetings/{meetingId}/polls/{pollId}
  • Tags: Polls

Polls allow the meeting host to survey attendees. Update information of a specific meeting poll.

Prerequisites:

  • Host user type must be Pro or higher plan.
  • The Meeting Polls/Quizzes setting enabled in the Zoom web portal.
  • Meeting must be a scheduled meeting. Instant meetings do not have polling features enabled.

Scopes: meeting:master

Granular Scopes: meeting:update:poll:master

Rate Limit Label: LIGHT

Request Body

Content-Type: application/json

All of:

  • anonymous

    boolean, default: false — Whether meeting participants answer poll questions anonymously. This value defaults to `false`.

  • poll_type

    integer, possible values: 1, 2, 3 — The type of poll. * `1` - Poll. * `2` - Advanced Poll. This feature must be enabled in your Zoom account. * `3` - Quiz. This feature must be enabled in your Zoom account. This value defaults to `1`.

  • questions

    array — The information about the poll's questions.

    Items:

    • answer_max_character

      integer — The allowed maximum number of characters. This field only applies to `short_answer` and `long_answer` polls. * For `short_answer` polls, a maximum of 500 characters. * For `long_answer` polls, a maximum of 2,000 characters.

    • answer_min_character

      integer — The allowed minimum number of characters. This field only applies to `short_answer` and `long_answer` polls. You must provide at least a one character minimum value.

    • answer_required

      boolean, default: false — Whether participants must answer the question. * `true` - The participant must answer the question. * `false` - The participant does not need to answer the question. **Note:** * When the poll's `type` value is `1` (Poll), this value defaults to `true`. * When the poll's `type` value is the `2` (Advanced Poll) or `3` (Quiz) values, this value defaults to `false`.

    • answers

      array — The poll question's available answers. This field requires a **minimum** of two answers. * For `single` and `multiple` polls, you can only provide a maximum of 10 answers. * For `matching` polls, you can only provide a maximum of 16 answers. * For `rank_order` polls, you can only provide a maximum of seven answers.

      Items:

      string

    • case_sensitive

      boolean, default: false — Whether the correct answer is case sensitive. This field only applies to `fill_in_the_blank` polls: * `true` - The answer is case-sensitive. * `false` - The answer is not case-sensitive. This value defaults to `false`.

    • name

      string — The poll question, up to 1024 characters. For `fill_in_the_blank` polls, this field is the poll's question. For each value that the user must fill in, ensure that there are the same number of `right_answers` values.

    • prompts

      array — The information about the prompt questions. This field only applies to `matching` and `rank_order` polls. You must provide a minimum of two prompts, up to a maximum of 10 prompts.

      Items:

      • prompt_question

        string — The question prompt's title.

      • prompt_right_answers

        array — The question prompt's correct answers: * For `matching` polls, you must provide a minimum of two correct answers, up to a maximum of 10 correct answers. * For `rank_order` polls, you can only provide one correct answer.

        Items:

        string

    • rating_max_label

      string — The high score label for the `rating_max_value` field. This field only applies to the `rating_scale` poll.

    • rating_max_value

      integer — The rating scale's maximum value, up to a maximum value of 10. This field only applies to the `rating_scale` poll.

    • rating_min_label

      string — The low score label for the `rating_min_value` field. This field only applies to the `rating_scale` poll.

    • rating_min_value

      integer — The rating scale's minimum value. This value cannot be less than zero. This field only applies to the `rating_scale` poll.

    • right_answers

      array — The poll question's correct answer(s). This field is **required** if the poll's `type` value is `3` (Quiz). For `single` and `matching` polls, this field only accepts one answer.

      Items:

      string

    • show_as_dropdown

      boolean, default: false — Whether to display the radio selection as a drop-down box. * `true` - Show as a drop-down box. * `false` - Do not show as a drop-down box. This value defaults to `false`.

    • type

      string, possible values: "single", "multiple", "matching", "rank_order", "short_answer", "long_answer", "fill_in_the_blank", "rating_scale" — The poll's question and answer type. * `single` - Single choice. * `multiple` - Multiple choice. * `matching` - Matching. * `rank_order` - Rank order. * `short_answer` - Short answer. * `long_answer` - Long answer. * `fill_in_the_blank` - Fill in the blank. * `rating_scale` - Rating scale.

  • title

    string — The poll's title, up to 64 characters.

Example:

{
  "anonymous": true,
  "poll_type": 2,
  "questions": [
    {
      "answer_max_character": 200,
      "answer_min_character": 1,
      "answer_required": false,
      "answers": [
        "Extremely useful"
      ],
      "case_sensitive": false,
      "name": "How useful was this meeting?",
      "prompts": [
        {
          "prompt_question": "How are you?",
          "prompt_right_answers": [
            "Good"
          ]
        }
      ],
      "rating_max_label": "Extremely Likely",
      "rating_max_value": 4,
      "rating_min_label": "Not likely",
      "rating_min_value": 0,
      "right_answers": [
        "Good"
      ],
      "show_as_dropdown": false,
      "type": "single"
    }
  ],
  "title": "Learn something new"
}

Responses

Status: 204 **HTTP Status Code:** `204` Meeting Poll Updated
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `4400` <br> Meeting polls disabled. To enable this feature, enable the "Meeting Polls/Quizzes" setting in the Zoom web portal's "Settings" interface. <br> **Error Code:** `3161` <br> Meeting hosting and scheduling capabilities are not allowed for your user account. <br> **Error Code:** `4400` <br> Advanced meeting polls disabled. To enable this feature, enable the **Allow host to create advanced polls and quizzes** setting in the Zoom web portal's **Settings** interface. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `404` <br> Meeting Poll not found <br> **Error Code:** `3001` <br> Meeting does not exist: {meetingId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rest/rate-limits/).

Delete a meeting poll

  • Method: DELETE
  • Path: /accounts/{accountId}/meetings/{meetingId}/polls/{pollId}
  • Tags: Polls

Polls allow the meeting host to survey attendees. Delete a meeting poll.

Prerequisites:

  • Host user type must be Pro.
  • Polling feature should be enabled in the host's account.
  • Meeting must be a scheduled meeting. Instant meetings do not have polling features enabled.

Scopes: meeting:master

Granular Scopes: meeting:delete:poll:master

Rate Limit Label: LIGHT

Responses

Status: 204 **HTTP Status Code:** `204` Meeting Poll deleted
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `4400` <br> Meeting polls disabled. To enable this feature, enable the **Meeting Polls/Quizzes** setting in the Zoom web portal's **Settings** interface. <br> **Error Code:** `3161` <br> Meeting hosting and scheduling capabilities are not allowed for your user account. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `404` <br> Meeting poll not found. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rest/rate-limits/).

Get sign In / sign out activity report

  • Method: GET
  • Path: /accounts/{accountId}/report/activities
  • Tags: Reports

Retrieve a list of sign in / sign out activity logs report of users under a Zoom account.

Prerequisites

  • Pro or higher plan.

Scopes: report:master,report:read:master

Granular Scopes: report:read:user_activities:master

Rate Limit Label: Heavy

Responses

Status: 200 **HTTP Status Code:** `200` Success
Content-Type: application/json
  • activity_logs

    array — Array of activity logs.

    Items:

    • client_type

      string — The client interface type using which the activity was performed.

    • email

      string, format: email — Email address of the user used for the activity.

    • ip_address

      string — The IP address of the user's device.

    • time

      string, format: date-time — Time during which the activity occurred.

    • type

      string, possible values: "Sign in", "Sign out" — The type of activity. * `Sign in` &mdash; Sign in activity by user. * `Sign out` &mdash; Sign out activity by user.

    • version

      string — Zoom client version of the user.

  • from

    string — Start date from which you want the activity logs report to be generated.

  • next_page_token

    string — The next page token is used to paginate through large result sets. A next page token will be returned whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes.

  • page_size

    integer — The number of records returned with a single API call.

  • to

    string — End date until which you want the activity logs report to be generated

Example:

{
  "activity_logs": [
    {
      "client_type": "Browser",
      "email": "jchill@example.com",
      "ip_address": "192.0.2.1",
      "time": "2019-09-15T19:13:41Z",
      "type": "Sign out",
      "version": "5.9.1.2581"
    }
  ],
  "from": "2019-09-01T00:00:00Z",
  "next_page_token": "b43YBRLJFg3V4vsSpxvGdKIGtNbxn9h9If2",
  "page_size": 30,
  "to": "2019-09-20T00:00:00Z"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> No permission.<br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Get billing reports

  • Method: GET
  • Path: /accounts/{accountId}/report/billing
  • Tags: Reports

Get department billing reports of a Zoom account.

Prerequisites:

  • Pro or a higher account with Department Billing option enabled. Contact Zoom Support team for details.

Scopes: report:master,report:read:master

Granular Scopes: report:read:billing:master

Rate Limit Label: Heavy

Responses

Status: 200 **HTTP Status Code:** `200` **OK** Billing report returned.
Content-Type: application/json
  • billing_reports

    array

    Items:

    • end_date

      string, format: date — End date of the billing period.

    • id

      string — Unique Identifier of the report. Use this ID to retrieve billing invoice via the &quot;Get Billing Invoices API&quot;. You can also use this ID to export a CSV file of the billing report from this URL: `https://zoom.us/account/report/billing/export?id={id}`.

    • start_date

      string, format: date — Start date of the billing period.

    • tax_amount

      string — Total tax amount for this billing period.

    • total_amount

      string — Total billing amount for this billing period.

    • type

      integer, possible values: 0, 1 — Type of the billing report. The value should be either of the following: `0` - Detailed Billing Reports `1` - Custom Billing Reports

  • currency

    string — Currency of the billed amount.

Example:

{
  "billing_reports": [
    {
      "end_date": "2022-03-25",
      "id": "indfhgfhfho",
      "start_date": "2022-03-25",
      "tax_amount": "456",
      "total_amount": "456",
      "type": 1
    }
  ],
  "currency": "USD"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> No permission.
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Get billing invoice reports

  • Method: GET
  • Path: /accounts/{accountId}/report/billing/invoices
  • Tags: Reports

Get department billing invoices reports for a specific billing period. Provide the billing_id of the billing period for which you would like to retrieve the invoices. Retrieve this ID from the Get Billing Reports API.

Prerequisites:

  • Pro or a higher account with Department Billing option enabled. Contact the Zoom Support team to enable this feature.

Scopes: report:master

Granular Scopes: report:read:billing_invoice:master

Rate Limit Label: HEAVY

Responses

Status: 200 **HTTP Status Code:** `200` **OK** Billing Invoice reports returned.
Content-Type: application/json
  • currency

    string — Currency of the billed amount in the invoice.

  • invoices

    array

    Items:

    • end_date

      string, format: date — End date of the invoice period.

    • invoice_charge_name

      string — Name of the invoice.

    • invoice_number

      string — Invoice number

    • quantity

      integer — Number of licenses bought.

    • start_date

      string, format: date — Start date of the invoice period.

    • tax_amount

      string — Tax amount in the invoice.

    • total_amount

      string — Total billed amount in the invoice.

Example:

{
  "currency": "USD",
  "invoices": [
    {
      "end_date": "2022-03-25",
      "invoice_charge_name": "Audio Conferencing Options",
      "invoice_number": "3",
      "quantity": 45,
      "start_date": "2022-03-25",
      "tax_amount": "34",
      "total_amount": "45"
    }
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Invalid parameter "billing_id" <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `5010` <br> Report does not exist. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rest/rate-limits/).

Get cloud recording usage report

  • Method: GET
  • Path: /accounts/{accountId}/report/cloud_recording
  • Tags: Reports

Retrieve cloud recording usage report for a specified period. You can only get cloud recording reports that is one day earlier than the current date and for the most recent period of 6 months. The date gap between from and to dates should be smaller or equal to 30 days.

Prerequisites

  • Pro or higher plan.

Scopes: report:master

Rate Limit Label: Heavy

Responses

Status: 200 **HTTP Status Code:** `200` Cloud Recording Report Returned
Content-Type: application/json

All of:

  • from

    string, format: date — Start date for this report

  • to

    string, format: date — End date for this report

  • cloud_recording_storage

    array — Array of cloud usage objects

    Items:

    • date

      string, format: date — Date of the usage

    • free_usage

      string — Free storage

    • plan_usage

      string — Paid storage

    • usage

      string — Storage used on the date

Example:

{
  "from": "2021-12-01",
  "to": "2021-12-30",
  "cloud_recording_storage": [
    {
      "date": "2021-12-05",
      "free_usage": "Unlimited",
      "plan_usage": "3 TB",
      "usage": "3 MB"
    }
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> No permission.<br> ’
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Get daily usage report

  • Method: GET
  • Path: /accounts/{accountId}/report/daily
  • Tags: Reports

Retrieve daily report to access the account-wide usage of Zoom services for each day in a given month. It lists the number of new users, meetings, participants, and meeting minutes.

Prerequisites

  • Pro or higher plan.

Scopes: report:master

Rate Limit Label: HEAVY

Responses

Status: 200 **HTTP Status Code:** `200` Daily report retrieved. This is only available for paid accounts:{accountId}.
Content-Type: application/json
  • dates

    array — Array of date objects.

    Items:

    • date

      string, format: date — Date for this object.

    • meeting_minutes

      integer — Number of meeting minutes on this date.

    • meetings

      integer — Number of meetings on this date.

    • new_users

      integer — Number of new users on this date.

    • participants

      integer — Number of participants on this date.

  • month

    integer — Month for this report.

  • year

    integer — Year for this report.

Example:

{
  "dates": [
    {
      "date": "2022-03-01",
      "meeting_minutes": 34,
      "meetings": 2,
      "new_users": 3,
      "participants": 4
    }
  ],
  "month": 3,
  "year": 2022
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Daily report can only be provided for a month that falls within the recent 6 months. <br> **Error Code:** `200` <br> No permission. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rate-limits/).

Get disclaimer report

  • Method: GET
  • Path: /accounts/{accountId}/report/disclaimer
  • Tags: Reports

Retrieve a list of disclaimer records.

Scopes: report:master

Granular Scopes: report:read:disclaimer:master

Rate Limit Label: HEAVY

Responses

Status: 200 Disclaimer records list.
Content-Type: application/json
  • disclaimer_records

    array — Array of disclaimer records.

    Items:

    • client_type

      string — User login client types. When the user is a guest, the client type is empty.

    • disclaimer_status

      string, possible values: "Agree", "Cancel", "Passive Agree", "Decline Attend" — The disclaimer status.

    • disclaimer_type

      string — The disclaimer type.

    • display_name

      string — The disclaimer's user name.

    • group_ids

      array — The user's group IDs.

      Items:

      string — The group ID.

    • is_guest

      boolean — Whether the user is a guest.

    • is_zoom_event

      boolean — Whether the meeting is a Zoom Event.

    • meeting_id

      string — The disclaimer's meeting ID.

    • meeting_number

      integer, format: int64 — The disclaimer's meeting number.

    • time

      string — The disclaimer's generated time.

    • user_email

      string — The disclaimer's user email. There are several special cases where user email display will be handled specially. - The client type is *gw.pstn*. The user email will be empty. - The user is guest. That is the `is_guest` is *true*. The user email will be empty. - The meeting is Zoom Event. That is the `is_zoom_event` is *true*. The user email will be masked.

  • next_page_token

    string — Use the next page token to paginate through large result sets. A next page token is returned whenever the set of available results exceeds the current page size. This token's expiration period is 15 minutes.

  • page_size

    integer — The number of records returned in a single API call.

Example:

{
  "disclaimer_records": [
    {
      "disclaimer_status": "Agree",
      "time": "2026-01-15T10:17:35Z",
      "disclaimer_type": "AI Companion",
      "user_email": "jchill@example.com",
      "meeting_number": 93201235621,
      "meeting_id": "gm8s9L+PTEC+FG3sFbd1Cw==",
      "client_type": "iphone",
      "is_zoom_event": false,
      "is_guest": true,
      "group_ids": [
        "TaVA8QKik_1233"
      ],
      "display_name": "Jill Chill"
    }
  ],
  "next_page_token": "b43YBRLJFg3V4vsSpxvGdKIGtNbxn9h9If2",
  "page_size": 30
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> The next page token is invalid or expired. <br> **Error Code:** `300` <br> Invalid parameter: {0}. <br>
Status: 401 **HTTP Status Code:** `401` <br> Unauthorized
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `12703` <br> No permission for the group: {0}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rate-limits/).

Get history meeting and webinar list

  • Method: GET
  • Path: /accounts/{accountId}/report/history_meetings
  • Tags: Reports

Retrieve a list of history meetings and webinars.

Scopes: report:master

Granular Scopes: report:read:list_history_meetings:master

Rate Limit Label: HEAVY

Responses

Status: 200 HTTP Status Code: 200 Success.
Content-Type: application/json
  • history_meetings

    array — Array of history meetings.

    Items:

    • create_time

      string — The meeting's create date and time.

    • custom_fields

      array — The custom attributes that the host is assigned

      Items:

      • key

        string — The custom attribute's name.

      • value

        string — The custom attribute's value.

    • department

      string — The host's department.

    • duration

      integer — The meeting's duration, in minutes.

    • end_time

      string — The meeting's end date and time.

    • feature_used

      object — Features used in the meeting.

      • annotation

        boolean — Whether annotation was used in the meeting.

      • avatar

        boolean — Whether anyone used an avatar in the meeting.

      • breakout_room

        boolean — Whether breakout room was enabled in the meeting.

      • closed_caption

        boolean — Whether closed caption was enabled in the meeting.

      • color_themes

        boolean — Whether anyone used color themes in the meeting.

      • document_collaboration

        boolean — Whether anyone shared the document in the meeting.

      • file_sharing

        boolean — Whether anyone sent files in the meeting chat.

      • gen_ai_virtual_background

        boolean — Whether anyone used the GenAI virtual background in the meeting.

      • immersive_scene

        boolean — Whether immersive scene was enabled in then meeting.

      • in_meeting_chat

        boolean — Whether anyone in the meeting has sent a message in the meeting chat.

      • join_by_room

        boolean — Whether anyone has joined the meeting by Zoom Room.

      • language_interpretation

        boolean — Whether language translation was used in the meeting.

      • live_transcription

        boolean — Whether live transcription was turned on.

      • live_translation

        boolean — Whether live translation was used in the meeting.

      • meeting_questions

        boolean — Whether the meeting questions was enabled.

      • meeting_summary

        boolean — Whether the meeting summary was enabled.

      • meeting_wallpaper

        boolean — Whether host set wallpaper in the meeting.

      • multi_share

        boolean — Whether multi-share was used in the meeting

      • multi_speaker

        boolean — Whether anyone used the multi-speaker view in the meeting.

      • personalized_audio_isolation

        boolean — Whether anyone used personalized audio isolation in the meeting.

      • poll

        boolean — Whether the meeting has poll data.

      • portrait_lighting

        boolean — Whether anyone used portrait lighting in the meeting.

      • raise_hand

        boolean — Whether anyone has raised hand in the meeting.

      • reaction

        boolean — Whether anyone sent an emoticon.

      • record_to_cloud

        boolean — Whether to record the meeting to the cloud.

      • record_to_computer

        boolean — Whether to record the meeting to the local computer.

      • registration

        boolean — Whether registration was enabled for the meeting.

      • remote_control

        boolean — Whether to use remote control in the meeting.

      • screen_sharing

        boolean — Whether the screen was shared in the meeting.

      • smart_recording

        boolean — Whether smart recording was enabled for the meeting.

      • switch_to_mobile

        boolean — Whether anyone switched the meeting to their mobile phone.

      • telephone_usage

        boolean — Whether anyone has joined the meeting by telephone.

      • video_on

        boolean — Whether the video was on in the meeting.

      • virtual_background

        boolean — Whether anyone used a virtual background in the meeting.

      • waiting_room

        boolean — Whether to open the waiting room for the meeting.

      • whiteboard

        boolean — Whether a whiteboard was used in the meeting.

      • zoom_apps

        boolean — Whether the Zoom app was used in the meeting.

    • group

      array — The host's groups

      Items:

      string — The host's group name

    • host_display_name

      string — The host's display name.

    • host_email

      string — The host's email address.

    • max_concurrent_views

      integer — The maximum number of online viewers at the same time during the webinar, excluding panelists.

    • meeting_id

      integer, format: int64 — The [meeting ID](https://support.zoom.us/hc/en-us/articles/201362373-What-is-a-Meeting-ID-): Unique identifier of the meeting in &quot;**long**&quot; format(represented as int64 data type in JSON), also known as the meeting number.

    • meeting_uuid

      string — The meeting unique universal identifier (UUID). Double encode your UUID when using it for API calls if the UUID begins with a '/'or contains '//' in it.

    • participants

      integer — The number of meeting participants.

    • source

      string — Whether the meeting was created directly through Zoom or via an API request: * If the meeting was created via an OAuth app, this field returns the OAuth app's name. * If the meeting was created via JWT or the Zoom Web Portal, this returns the `Zoom` value.

    • start_time

      string — The meeting's start date and time.

    • topic

      string — The meeting's topic.

    • total_participant_minutes

      integer — The total duration of all participants, in minutes.

    • tracking_fields

      array — The tracking fields and values assigned to the meeting.

      Items:

      • field

        string — The label of the tracking field.

      • value

        string — The value of the tracking field.

    • type

      string, possible values: "Meeting", "Webinar" — The meeting type, either Meeting or Webinar.

    • unique_viewers

      integer — This value shows how many people viewed the webinar on their computer. It does not include panelists or attendees who only listened by phone. Viewers who joined the meeting multiple times or from multiple devices are counted only once.

  • next_page_token

    string — Use the next page token to paginate through large result sets. A next page token is returned whenever the set of available results exceeds the current page size. This token's expiration period is 15 minutes.

  • page_size

    integer — The number of records returned with a single API call.

Example:

{
  "next_page_token": "b43YBRLJFg3V4vsSpxvGdKIGtNbxn9h9If2",
  "page_size": 30,
  "history_meetings": [
    {
      "meeting_uuid": "gm8s9L+PTEC+FG3sFbd1Cw==",
      "meeting_id": 93201235621,
      "type": "Meeting",
      "host_display_name": "Jill Chill",
      "host_email": "jchill@example.com",
      "start_time": "2024-12-23T07:09:03Z",
      "end_time": "2024-12-23T08:09:03Z",
      "topic": "My Meeting",
      "participants": 5,
      "duration": 60,
      "total_participant_minutes": 83,
      "department": "Developers",
      "group": "group_01",
      "source": "Zoom",
      "unique_viewers": 4,
      "max_concurrent_views": 3,
      "create_time": "2024-12-23T06:09:03Z",
      "custom_fields": [
        {
          "key": "attribute 1",
          "value": "test"
        }
      ],
      "tracking_fields": [
        {
          "field": "Meeting purpose.",
          "value": "Support"
        }
      ],
      "feature_used": {
        "screen_sharing": true,
        "video_on": true,
        "remote_control": true,
        "closed_caption": false,
        "breakout_room": false,
        "language_interpretation": false,
        "telephone_usage": true,
        "in_meeting_chat": false,
        "poll": true,
        "join_by_room": false,
        "waiting_room": false,
        "live_transcription": false,
        "reaction": true,
        "zoom_apps": false,
        "annotation": false,
        "raise_hand": true,
        "virtual_background": true,
        "whiteboard": true,
        "immersive_scene": false,
        "avatar": true,
        "switch_to_mobile": false,
        "file_sharing": true,
        "meeting_summary": false,
        "meeting_questions": false,
        "record_to_computer": true,
        "record_to_cloud": true,
        "live_translation": false,
        "registration": false,
        "smart_recording": true,
        "multi_speaker": false,
        "meeting_wallpaper": true,
        "gen_ai_virtual_background": true,
        "multi_share": true,
        "document_collaboration": false,
        "portrait_lighting": false,
        "personalized_audio_isolation": true,
        "color_themes": false
      }
    }
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> The next page token is invalid or expired. <br> **Error Code:** `300` <br> Invalid parameter: {0}. <br>
Status: 401 **HTTP Status Code:** `401` <br> Unauthorized
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `12703` <br> No permission for the group: {0}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rest/rate-limits/).

Get a meeting activities report

  • Method: GET
  • Path: /accounts/{accountId}/report/meeting_activities
  • Tags: Reports

Retrieve a list of a meeting activity logs. Contact Zoom Support to enable the meeting audit trail log feature on your account.

Scopes: report:master

Granular Scopes: report:read:meeting_activity_log:master

Rate Limit Label: HEAVY

Responses

Status: 200 **HTTP Status Code:** `200` Success. Only available for Paid or ZMP account {accountId}.
Content-Type: application/json
  • meeting_activity_logs

    array — Array of meeting activity logs.

    Items:

    • activity_category (required)

      string — The operator's activity category. -1 - All Activities. 0 - Meeting created. 1 - Meeting started. 2 - User joined. 3 - User left. 4 - Remote control. 5 - In-meeting chat. 9 - Meeting ended.

    • activity_detail (required)

      string — The operator's activity detail.

    • activity_time (required)

      string — The operator's activity time.

    • meeting_number (required)

      string — The meeting number.

    • operator (required)

      string — The operator's display name.

    • operator_email (required)

      string — The operator's email.

  • next_page_token

    string — Use the next page token to paginate through large result sets. A next page token is returned whenever the set of available results exceeds the current page size. This token's expiration period is 15 minutes.

  • page_size

    number, default: 30 — The number of records returned with a single API call.

Example:

{
  "meeting_activity_logs": [
    {
      "meeting_number": "982 610 0285",
      "activity_time": "2024-03-21 07:09:03:216",
      "operator": "Jill Chill",
      "operator_email": "jillchill@example.com",
      "activity_category": "Meeting Started",
      "activity_detail": "Meeting Started"
    }
  ],
  "next_page_token": "z5qFlq5cvH7C46k7PT7BQmpnW6izoOUWWt3",
  "page_size": 30
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request
Status: 403 **HTTP Status Code:** `403` <br> Forbidden No permission.
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1010` <br> User does not belong to this account {accountId}.<br> <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Get meeting detail reports

  • Method: GET
  • Path: /accounts/{accountId}/report/meetings/{meetingId}
  • Tags: Reports

Get a detailed report for a past meeting.

Prerequisites

  • Pro or a higher plan.

Scopes: report:master

Granular Scopes: report:read:meeting:master

Rate Limit Label: HEAVY

Responses

Status: 200 **HTTP Status Code:** `200` Meeting details returned. This is only available for paid account.
Content-Type: application/json
  • custom_keys

    array — Custom keys and values assigned to the meeting.

    Items:

    • key

      string — Custom key associated with the user.

    • value

      string — Value of the custom key associated with the user.

  • dept

    string — Department of the host.

  • duration

    integer — Meeting duration.

  • end_time

    string, format: date-time — Meeting end time.

  • id

    integer, format: int64 — [Meeting ID](https://support.zoom.us/hc/en-us/articles/201362373-What-is-a-Meeting-ID-): Unique identifier of the meeting in &quot;**long**&quot; format(represented as int64 data type in JSON), also known as the meeting number.

  • participants_count

    integer — Number of meeting participants.

  • start_time

    string, format: date-time — Meeting start time.

  • topic

    string — Meeting topic.

  • total_minutes

    integer — Number of meeting minutes. This represents the total amount of meeting minutes attended by each participant including the host, for meetings hosted by the user. For instance if there were one host(named A) and one participant(named B) in a meeting, the value of total_minutes would be calculated as below: **total_minutes** = Total Meeting Attendance Minutes of A + Total Meeting Attendance Minutes of B

  • tracking_fields

    array — Tracking fields.

    Items:

    • field

      string — Tracking fields type.

    • value

      string — Tracking fields value.

  • type

    integer — Meeting type.

  • user_email

    string — User email.

  • user_name

    string — User display name.

  • uuid

    string — Meeting UUID. Each meeting instance will generate its own UUID(i.e., after a meeting ends, a new UUID will be generated for the next instance of the meeting). [Double encode](https://marketplace.zoom.us/docs/api-reference/using-zoom-apis/#meeting-id-and-uuid) your UUID when using it for API calls if the UUID begins with a '/' or contains '//' in it.

Example:

{
  "custom_keys": [
    {
      "key": "Host Nation",
      "value": "US"
    }
  ],
  "dept": "HR",
  "duration": 2,
  "end_time": "2022-03-15T07:42:22Z",
  "id": 3927350525,
  "participants_count": 2,
  "start_time": "2022-03-15T07:40:46Z",
  "topic": "My Meeting",
  "total_minutes": 3,
  "tracking_fields": [
    {
      "field": "Host Nation",
      "value": "US"
    }
  ],
  "type": 2,
  "user_email": "jchill@example.com",
  "user_name": "Jill Chill",
  "uuid": "iOTQZPmhTUq5a232ETb9eg=="
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `12702` <br> Can not access meeting a year ago.<br> <br> **Error Code:** `200` <br> No permission.<br> <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Meeting {meetingId} not found or has expired.<br> <br> **Error Code:** `1001` <br> User does not exist. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Get meeting participant reports

  • Method: GET
  • Path: /accounts/{accountId}/report/meetings/{meetingId}/participants
  • Tags: Reports

Return a report of a past meeting with two or more participants, including the host. To return a report for past meeting with only one participant, use the List meeting participants API.

Note:

This API may return empty values for participants' user_name, ip_address, location, and email responses when the account calling this API:

Prerequisites:

  • A Pro or a higher plan.

Scopes: report:master

Granular Scopes: report:read:list_meeting_participants:master

Rate Limit Label: HEAVY

Responses

Status: 200 **HTTP Status Code:** `200` Meeting participants report returned. Only available for Paid or ZMP account: {accountId}.
Content-Type: application/json

All of:

  • next_page_token

    string — The next page token is used to paginate through large result sets. A next page token will be returned whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes.

  • page_count

    integer — The number of pages returned for the request made.

  • page_size

    integer, default: 30 — The number of records returned within a single API call.

  • total_records

    integer — The number of all records available across pages.

  • participants

    array — Array of meeting participant objects.

    Items:

    • bo_mtg_id

      string — The [breakout room](https://support.zoom.us/hc/en-us/articles/206476313-Managing-breakout-rooms) ID. Each breakout room is assigned a unique ID.

    • customer_key

      string — The participant's SDK identifier. This value can be alphanumeric, up to a maximum length of 35 characters.

    • duration

      integer — Participant duration, in seconds, calculated by subtracting the `leave_time` from the `join_time` for the `user_id`. If the participant leaves and rejoins the same meeting, they are assigned a different `user_id` and Zoom displays their new duration in a separate object. Because of this, the duration may not reflect the total time the user was in the meeting.

    • failover

      boolean — Indicates if failover happened during the meeting.

    • id

      string — The participant's universally unique ID (UUID). * If the participant joins the meeting by logging into Zoom, this value is the `id` value in the [**Get a user**](/docs/api-reference/zoom-api/methods#operation/user) API response. * If the participant joins the meeting **without** logging into Zoom, this returns an empty string value. **Note:** Use the `participant_user_id` value instead of this value. We will remove this response in a future release.

    • join_time

      string, format: date-time — Participant join time.

    • leave_time

      string, format: date-time — Participant leave time.

    • name

      string — Participant display name. This returns an empty string value if the account calling the API is a BAA account.

    • participant_user_id

      string — The participant's universally unique ID (UUID). * If the participant joins the meeting by logging into Zoom, this value is the `id` value in the [**Get a user**](/docs/api-reference/zoom-api/methods#operation/user) API response. * If the participant joins the meeting **without** logging into Zoom, this returns an empty string value.

    • registrant_id

      string — Unique identifier of the registrant. This field is only returned if you entered &quot;registrant_id&quot; as the value of `include_fields` query parameter.

    • status

      string, possible values: "in_meeting", "in_waiting_room" — The participant's status. * `in_meeting` - In a meeting. * `in_waiting_room` - In a waiting room.

    • user_email

      string — Participant email. If the participant is **not** part of the host's account, this returns an empty string value, with some exceptions. See [Email address display rules](/docs/api-reference/using-zoom-apis#email-address) for details. This returns an empty string value if the account calling the API is a BAA account.

    • user_id

      string — Participant ID. This is a unique ID assigned to the participant joining a meeting and is valid for that meeting only.

Example:

{
  "next_page_token": "Tva2CuIdTgsv8wAnhyAdU3m06Y2HuLQtlh3",
  "page_count": 1,
  "page_size": 30,
  "total_records": 1,
  "participants": [
    {
      "customer_key": "349589LkJyeW",
      "duration": 259,
      "failover": false,
      "id": "30R7kT7bTIKSNUFEuH_Qlg",
      "join_time": "2022-03-23T06:58:09Z",
      "leave_time": "2022-03-23T07:02:28Z",
      "name": "example",
      "registrant_id": "abcdefghij0-klmnopq23456",
      "status": "in_meeting",
      "user_email": "jchill@example.com",
      "user_id": "27423744",
      "bo_mtg_id": "27423744",
      "participant_user_id": "DYHrdpjrS3uaOf7dPkkg8w"
    }
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `1010` <br> User does not belong to this account:{accountId}.<br> <br> **Error Code:** `12702` <br> Can not access meeting a year ago.<br> <br> **Error Code:** `200` <br> No permission.<br> <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Meeting {MeetingId} not found or has expired.<br> <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rate-limits/).

Get meeting poll reports

  • Method: GET
  • Path: /accounts/{accountId}/report/meetings/{meetingId}/polls
  • Tags: Reports

Use this API to get a report of poll results for a past meeting.

Prerequisites:

  • A Pro or a higher plan.

Scopes: report:master,report:read:master

Granular Scopes: report:read:list_meeting_polls:master

Rate Limit Label: Heavy

Responses

Status: 200 **HTTP Status Code:** `200` * Meeting polls report returned. * This is only available for paid account: {accountId}
Content-Type: application/json
  • id

    integer, format: int64 — The [meeting ID](https://support.zoom.us/hc/en-us/articles/201362373-What-is-a-Meeting-ID).

  • questions

    array — Information about the meeting questions.

    Items:

    • email

      string, format: email — The participant's email address.

    • first_name

      string — The participant's first name. If the **Allow participants to answer questions anonymously** setting is enabled for a [poll](https://support.zoom.us/hc/en-us/articles/213756303-Polling-for-Meet), the participant's polling information is kept anonymous and the `first_name` field will return the &quot;Anonymous Attendee&quot; value.

    • last_name

      string — The participant's last name. If the **Allow participants to answer questions anonymously** setting is enabled for a [poll](https://support.zoom.us/hc/en-us/articles/213756303-Polling-for-Meet), the participant's polling information is kept anonymous and the `last_name` field will return the &quot;Anonymous Attendee&quot; value.

    • name

      string — The participant's display name. If the **Allow participants to answer questions anonymously** setting is enabled for a [poll](https://support.zoom.us/hc/en-us/articles/213756303-Polling-for-Meet), the participant's polling information is kept anonymous and the `name` field will return the &quot;Anonymous Attendee&quot; value.

    • question_details

      array — Information about the user's questions and answers.

      Items:

      • answer

        string — The user's given answer.

      • date_time

        string — The date and time at which the user answered the poll question.

      • polling_id

        string — The poll's ID.

      • question

        string — The poll question.

  • start_time

    string, format: date-time — The meeting's start time.

  • uuid

    string — The meeting's universally unique identifier (UUID). Each meeting instance generates a meeting UUID.

Example:

{
  "id": 123456,
  "uuid": "4444AAAiAAAAAiAiAiiAii==",
  "start_time": "2022-02-01T12:34:12.66Z",
  "questions": [
    {
      "email": "jchill@example.com",
      "name": "Jill Chill",
      "first_name": "Jill",
      "last_name": "Chill",
      "question_details": [
        {
          "answer": "I am wonderful.",
          "date_time": "2022-02-01T12:37:12.660Z",
          "polling_id": "798fGJEWrA",
          "question": "How are you?"
        }
      ]
    }
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `12702` <br> Can not access meeting a year ago. **Error Code:** `200` <br> No permission.<br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Meeting "{meetingId}" not found or has expired.
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Get meeting Q&A report

  • Method: GET
  • Path: /accounts/{accountId}/report/meetings/{meetingId}/qa
  • Tags: Reports

Retrieve a report on questions asked and answered by participants from past meetings.

Prerequisites:

  • Pro plan or higher.

Scopes: report:master

Granular Scopes: report:read:meeting_qna:master

Rate Limit Label: HEAVY

Responses

Status: 200 **HTTP Status Code:** `200` Meeting Q&amp;A report returned. Only available for Paid or ZMP account: {accountId}.
Content-Type: application/json
  • id

    integer, format: int64 — The meeting ID in `long` format, represented as int64 data type in JSON. Also known as the meeting number.

  • questions

    array — Array of meeting question objects.

    Items:

    • email

      string — Participant's email. If the participant is **not** part of the host's account, this returns an empty string value, with some exceptions. See [Email address display rules](https://developers.zoom.us/docs/api/rest/using-zoom-apis/#email-address-display-rules) for details.

    • name

      string — Participant's display name. If the anonymous [Q&amp;A](https://support.zoom.us/hc/en-us/articles/203686015-Getting-Started-with-Question-Answer) option is enabled and if a participant submits the Q&amp;A without providing their name, the value of the `name` field is &quot;Anonymous Attendee&quot;.

    • question_details

      array — Array of questions from user.

      Items:

      • answer

        string — The given answer. If this is a live answer, the value is 'live answered'. **Note:** All answers will be returned together and separated by semicolons. For more detailed answer information, please see the "answer_details" field.

      • answer_details

        array — Array of answers from the user.

        Items:

        • content

          string — The answer from host or the comment from participant.

        • create_time

          string — Content submit time.

        • email

          string — Participant's email. If the participant is **not** part of the host's account, this returns an empty string value, with some exceptions. See [Email address display rules](https://developers.zoom.us/docs/api/rest/using-zoom-apis/#email-address-display-rules) for details.

        • name

          string — User display name, including the host or participant.

        • type

          string, possible values: "default", "host_answered_publicly", "host_answered_privately", "participant_commented", "host_answered", default: "default" — Type of answer.

        • user_id

          string — The user ID of the user who answered the question. This value returns blank for external users.

      • create_time

        string — Question create time.

      • question

        string — Asked question.

      • question_id

        string — Question UUID.

      • question_status

        string, possible values: "default", "open", "dismissed", "answered", "deleted" — Question status. If not supported, the value will be `default`.

    • user_id

      string — The user ID of the user who asked the question. This value returns blank for external users.

  • start_time

    string, format: date-time — Meeting start time.

  • uuid

    string — The meeting UUID. Each meeting instance will generate its own UUID - for example, after a meeting ends, a new UUID will be generated for the next instance of the meeting. Double-encode your UUID when using it for API calls if the UUID begins with a '/' or contains '//'.

Example:

{
  "id": 245603123123,
  "questions": [
    {
      "user_id": "hyROrs0TRCSvwmadI7L13w",
      "email": "jchilll@example.com",
      "name": "Jill Chill",
      "question_details": [
        {
          "question": "how are you",
          "question_id": "zxU4wOwnlxs",
          "create_time": "2022-03-15T07:48:00Z",
          "question_status": "open",
          "answer_details": [
            {
              "user_id": "Cn_5wJ9mRNGyYOmpjVufBQ",
              "name": "Paul",
              "email": "paul@example.com",
              "content": "fine",
              "create_time": "2022-03-15T07:50:00Z",
              "type": "default"
            }
          ]
        }
      ]
    }
  ],
  "start_time": "2022-03-15T07:40:46Z",
  "uuid": "4444AAAiAAAAAiAiAiiAii=="
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> No permission.<br> <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User does not exist: {userId}.<br> <br> **Error Code:** `3001` <br> Meeting {meetingId} not found or has expired.<br> <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Get meeting survey report

  • Method: GET
  • Path: /accounts/{accountId}/report/meetings/{meetingId}/survey
  • Tags: Reports

Retrieve a report on past meeting survey.

Prerequisites:

  • Pro or a higher plan.

Scopes: report:master,report:read:master

Granular Scopes: report:read:meeting_survey:master

Rate Limit Label: HEAVY

Responses

Status: 200 **HTTP Status Code:** `200` Meeting survey report returned. Only available for Paid or ZMP account: {accountId}.
Content-Type: application/json
  • meeting_id

    integer, format: int64 — The meeting ID.

  • meeting_uuid

    string — The meeting's universally unique identifier (UUID). Each meeting instance generates a meeting UUID.

  • start_time

    string, format: date-time — The meeting's start time.

  • survey_answers

    array — Information about the survey questions and answers.

    Items:

    • answer_details

      array — Information about the user's questions and answers.

      Items:

      • answer

        string — The user's given answer.

      • date_time

        string — The date and time at which the user answered the survey question.

      • question

        string — The survey question.

      • question_id

        string — The question's ID

    • email

      string, format: email — The participant's email address.

    • first_name

      string — The participant's first name. If the **Allow participants to answer questions anonymously** setting is enabled for a [survey](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0057559), the participant's survey information is kept anonymous and the `first_name` field will return the &quot;Anonymous Attendee&quot; value.

    • last_name

      string — The participant's last name. If the **Allow participants to answer questions anonymously** setting is enabled for a [survey](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0057559), the participant's survey information is kept anonymous and the `last_name` field will return the &quot;Anonymous Attendee&quot; value.

    • name

      string — The participant's display name. **Allow participants to answer questions anonymously** setting is enabled for a [survey](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0057559), the participant's survey information is kept anonymous and the `name` field will return the &quot;Anonymous Attendee&quot; value.

  • survey_id

    string — The survey's ID

  • survey_name

    string — The name of survey

Example:

{
  "meeting_id": 123456,
  "meeting_uuid": "4444AAAiAAAAAiAiAiiAii==",
  "start_time": "2022-02-01T12:34:12.66Z",
  "survey_id": "8SFHRTGHAAAiAAAAAiAiAiiAii==",
  "survey_name": "Survey of this meeting",
  "survey_answers": [
    {
      "email": "jchill@example.com",
      "name": "Jill Chill",
      "first_name": "Jill",
      "last_name": "Chill",
      "answer_details": [
        {
          "question": "How are you?",
          "question_id": "798fGJEWrA",
          "answer": "I am wonderful.",
          "date_time": "2022-02-01T12:37:12.660Z"
        }
      ]
    }
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `1010` <br> User does not belong to this account:{accountId}.<br> <br> **Error Code:** `12702` <br> Can not access a webinar a year ago.<br> <br> **Error Code:** `200` <br> No permission.<br> <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Webinar {webinarId} not found or has expired.<br> <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Get operation logs report

  • Method: GET
  • Path: /accounts/{accountId}/report/operationlogs
  • Tags: Reports

The Operations Logs report allows you to audit admin and user activity, such as adding a new user, changing account settings, and deleting recordings.

Use this API to retrieve operation logs report for a specified period of time.

Prerequisites:

  • Pro or higher plan.

Scopes: report:master

Granular Scopes: report:read:operation_logs:master

Rate Limit Label: HEAVY

Responses

Status: 200 **HTTP Status Code:** `200` Operation Logs Report Returned
Content-Type: application/json

All of:

  • next_page_token

    string — The next page token is used to paginate through large result sets. A next page token will be returned whenever the set of the available result list exceeds the page size. The expiration period is 15 minutes.

  • page_size

    integer, default: 30 — The amount of records returns within a single API call.

  • operation_logs

    array — Array of operation log objects

    Items:

    • action

      string — Action

    • category_type

      string — Category type

    • operation_detail

      string — Operation detail

    • operator

      string — The user who performed the operation.

    • time

      string, format: date-time — The time at which the operation was performed.

Example:

{
  "next_page_token": "uBTK3NzNksdkuCUAQaFVFd86kyOr59zg4U2",
  "page_size": 30,
  "operation_logs": [
    {
      "action": "delete",
      "category_type": "user",
      "operation_detail": "delete user - user2@example.com",
      "operator": "admin@example.com",
      "time": "2022-01-25T17:52:16Z"
    }
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> No permission.<br> <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rest/rate-limits/).

Get remote support report

  • Method: GET
  • Path: /accounts/{accountId}/report/remote_support
  • Tags: Reports

Retrieve a list of remote support records.

Scopes: report:master

Granular Scopes: report:read:remote_support:master

Rate Limit Label: HEAVY

Responses

Status: 200 Remote support records list.
Content-Type: application/json
  • next_page_token

    string — Use the next page token to paginate through large result sets. A next page token is returned whenever the set of available results exceeds the current page size. This token's expiration period is 15 minutes.

  • page_size

    integer — The number of records returned with a single API call.

  • remote_support_logs

    array — Array of remote support logs.

    Items:

    • duration

      string — The duration of remote support, formatted in `hh:mm:ss`.

    • end_time

      string — Remote support end time

    • meeting_host_id

      string — The meeting's host id.

    • meeting_number

      integer — The meeting number.

    • meeting_start_time

      string — The meeting's start time.

    • meeting_uuid

      string — The meeting's unique universal identifier (UUID). Double encode your UUID when using it for API calls if the UUID begins with a '/'or contains '//' in it.

    • request_time

      string — The time to request remote support.

    • start_time

      string — Remote support start time.

    • supportee_email

      string — The supportee's user email.

    • supportee_name

      string — The supportee's user name.

    • supporter_email

      string — The supporter's user email.

    • supporter_name

      string — The supporter's user name.

    • topic

      string — The meeting's topic.

    • wait_time

      string — The waiting time for remote support from request to start, formatted in `hh:mm:ss`.

Example:

{
  "remote_support_logs": [
    {
      "meeting_start_time": "2025-09-15T13:20:12Z",
      "meeting_uuid": "gm8s9L+PTEC+FG3sFbd1Cw==",
      "meeting_number": 93201235621,
      "topic": "My Meeting",
      "meeting_host_id": "FyOCGDLEShWSihPcupWHtA",
      "supporter_name": "Jill Chill",
      "supporter_email": "jchill@example.com",
      "supportee_name": "Tom",
      "supportee_email": "tom@example.com",
      "request_time": "2025-09-15T13:21:29Z",
      "wait_time": "01:28",
      "start_time": "2025-09-15T13:22:57Z",
      "end_time": "2025-09-15T13:42:34Z",
      "duration": "19:37"
    }
  ],
  "next_page_token": "b43YBRLJFg3V4vsSpxvGdKIGtNbxn9h9If2",
  "page_size": 30
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> The next page token is invalid or expired. <br>
Status: 401 **HTTP Status Code:** `401` <br> Unauthorized
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rate-limits/).

Get telephone reports

  • Method: GET
  • Path: /accounts/{accountId}/report/telephone
  • Tags: Reports

The telephone report allows you to view who dialed into meetings via phone (Audio Conferencing or SIP Connected Audio) and which number they dialed into and other details. Use this API to get telephone report for a specified period of time.

Prerequisites:

  • Pro or higher plan.

Scopes: report:master

Granular Scopes: report:read:telephone:master

Rate Limit Label: HEAVY

Responses

Status: 200 **HTTP Status Code:** `200` Telephone report returned. This is only available for paid account: {accountId}. The requested report cannot be generated for this account because this account has not subscribed to toll-free audio conference plan. Enable the **Toll Report** feature to perform this action. Contact the Zoom Support team for help.
Content-Type: application/json

All of:

  • from

    string, format: date — Start date for this report.

  • next_page_token

    string — The next page token is used to paginate through large result sets. A next page token will be returned whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes.

  • page_count

    integer — The number of pages returned for the request made. This field does **not** return if the `query_date_type` parameter is the `meeting_start_time` or `meeting_end_time` value.

  • page_size

    integer — The number of records returned with a single API call.

  • to

    string, format: date — End date for this report.

  • total_records

    integer — The total number of all the records available across pages. This field does **not** return if the `query_date_type` parameter is the `meeting_start_time` or `meeting_end_time` value.

  • telephony_usage

    array — Array of telephony objects.

    Items:

    • call_in_number

      string — Caller's call-in number.

    • country_name

      string — Country name.

    • dept

      string — User department.

    • duration

      integer — Call leg duration

    • end_time

      string, format: date-time — Call leg end time

    • host_email

      string — User email.

    • host_id

      string — The user ID of the meeting host.

    • host_name

      string — User display name.

    • meeting_id

      integer, format: int64 — [Meeting ID](https://support.zoom.us/hc/en-us/articles/201362373-What-is-a-Meeting-ID-): Unique identifier of the meeting in &quot;**long**&quot; format(represented as int64 data type in JSON), also known as the meeting number.

    • meeting_type

      string — Meeting type.

    • phone_number

      string — Toll-free telephone number.

    • rate

      number — Calling rate for the telephone call.

    • signaled_number

      string — The number that is signaled to Zoom.

    • start_time

      string, format: date-time — Call leg start time

    • total

      number — Total cost (USD) for Call Out. Calculated as plan rate by duration.

    • type

      string, possible values: "toll-free", "call-out", "call-in", "US toll-number", "global toll-number", "premium", "premium call-in", "Toll" — Call type.

    • uuid

      string — Meeting UUID.

Example:

{
  "from": "2019-06-20",
  "next_page_token": "w7587w4eiyfsudgk",
  "page_count": 1,
  "page_size": 30,
  "to": "2019-07-20",
  "total_records": 1,
  "telephony_usage": [
    {
      "call_in_number": "ZoomGW",
      "country_name": "US",
      "dept": "HR",
      "duration": 2,
      "end_time": "2022-03-15T07:42:22Z",
      "host_email": "jchill@example.com",
      "host_id": "_Rn_hal7ToG5p0AWwIIsjQ",
      "host_name": "Jill Chill",
      "meeting_id": 94908911701,
      "meeting_type": "Meeting",
      "phone_number": "+1 8243",
      "rate": 0.03,
      "signaled_number": "+1 8243",
      "start_time": "2022-03-15T07:40:46Z",
      "total": 0.03,
      "type": "call-out",
      "uuid": "4444AAAiAAAAAiAiAiiAii=="
    }
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> The next page token is invalid or expired. <br>
Status: 401 **HTTP Status Code:** `401` <br> Unauthorized
Status: 403 **HTTP Status Code:** `403` <br> Forbidden
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rest/rate-limits/).

Get upcoming events report

  • Method: GET
  • Path: /accounts/{accountId}/report/upcoming_events
  • Tags: Reports

Use this API to list upcoming meeting and/or webinar events within a specified period of time. The report's time range is limited to one month.

Prerequisites:

  • A Pro or higher plan

Scopes: report:master,report:read:master

Granular Scopes: report:read:upcoming_meetings_webinars:master

Rate Limit Label: Heavy

Responses

Status: 200 **HTTP Status Code:** `200` Upcoming events report returned.
Content-Type: application/json

All of:

  • from

    string, format: date — The report's start date. This value must be within the past six months.

  • next_page_token

    string — The next page token is used to paginate through large result sets. A next page token returns when the set of available results exceeds the current page size. The expiration period for this token is 15 minutes.

  • page_size

    integer, default: 30 — The number of records returned in a single API call.

  • to

    string, format: date — The report's end date. This value must be within the past six months and cannot exceed a month from the `from` value.

  • upcoming_events

    array — Information about the upcoming event.

    Items:

    • dept

      string — The event host's department.

    • host_id

      string — The event host's ID.

    • host_name

      string — The event host's name.

    • id

      string — The event's unique ID.

    • start_time

      string — The event's start time.

    • topic

      string — The event's topic.

Example:

{
  "from": "2022-03-01",
  "next_page_token": "b43YBRLJFg3V4vsSpxvGdKIGtNbxn9h9If2",
  "page_size": 30,
  "to": "2022-03-25",
  "upcoming_events": [
    {
      "dept": "HR",
      "host_id": "Or4-ZeV_SHCOfWRC71O1Fg",
      "host_name": "chi chi",
      "id": "vawMH9zAQLytjCnQiQXSUg==",
      "start_time": "2022-03-15T07:40:46Z",
      "topic": "My Meeting"
    }
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> This is only available for the paid account: {accountId} <br> **Error Code:** `300` <br> The next page token is invalid or expired. **Error Code:** `200` <br> No permission.<br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Get active or inactive host reports

  • Method: GET
  • Path: /accounts/{accountId}/report/users
  • Tags: Reports

Retrieve a host report for a specified period of time within the last six months.
The report time range is limited to a month.

You can specify the type of report and date range using the query parameters.

  • The Active Hosts report displays a list of meetings, participants, and meeting minutes. An active host is defined as any user who has hosted at least one meeting during the during the month specified in the from and to range.

  • The Inactive Hosts report pulls a list of users who were not active during a specific period of time.
    An inactive host is defined as any user who has not hosted any meetings during the specified period of time for the report. to be inactive.

Prerequisites:

  • Pro or higher plan.

Scopes: report:master

Granular Scopes: report:read:list_users:master

Rate Limit Label: HEAVY

Responses

Status: 200 **HTTP Status Code:** `200` Active or inactive hosts report returned. Only available for Paid or ZMP account: {accountId}.
Content-Type: application/json

All of:

  • from

    string, format: date — Start date for this report.

  • next_page_token

    string — The next page token is used to paginate through large result sets. A next page token will be returned whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes.

  • page_count

    integer — The number of pages returned for the request made.

  • page_number

    integer, default: 1 — The page number of the current results.

  • page_size

    integer, default: 30 — The number of records returned with a single API call.

  • to

    string, format: date — End date for this report.

  • total_records

    integer — The total number of all the records available across pages.

  • total_meeting_minutes

    integer — Number of meeting minutes for this range.

  • total_meetings

    integer — Number of meetings for this range.

  • total_participants

    integer — Number of participants for this range.

  • users

    array — Array of user objects.

    Items:

    • custom_attributes

      array — Custom attributes that have been assigned to the user.

      Items:

      • key

        string — Identifier for the custom attribute.

      • name

        string — Name of the custom attribute.

      • value

        string — Value of the custom attribute.

    • dept

      string — User department.

    • email

      string — User email.

    • id

      string — User ID.

    • meeting_minutes

      integer — Number of meeting minutes for user.

    • meetings

      integer — Number of meetings for user.

    • participants

      integer — Number of participants in meetings for user.

    • type

      integer — User type.

    • user_name

      string — User display name.

Example:

{
  "from": "2022-03-01",
  "next_page_token": "b43YBRLJFg3V4vsSpxvGdKIGtNbxn9h9If2",
  "page_count": 30,
  "page_number": 1,
  "page_size": 30,
  "to": "2022-03-25",
  "total_records": 850,
  "total_meeting_minutes": 345,
  "total_meetings": 34,
  "total_participants": 56,
  "users": [
    {
      "custom_attributes": [
        {
          "key": "4444AAAiAAAAAiAiAiiAii==",
          "name": "age",
          "value": "18"
        }
      ],
      "dept": "HR",
      "email": "jchill@example.com",
      "id": "2pyjK5VNQHadb2BY6Z4GbA",
      "meeting_minutes": 342,
      "meetings": 45,
      "participants": 56,
      "type": 1,
      "user_name": "Jill Chill"
    }
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> No permission. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Get meeting reports

  • Method: GET
  • Path: /accounts/{accountId}/report/users/{userId}/meetings
  • Tags: Reports

Retrieve report on past meetings and webinars for a specified time period. The time range for the report is limited to a month and the month must fall within the past six months.

Meetings and webinars are returned only if they have two or more unique participants.

Prerequisites:

  • Pro or higher plan.

Scopes: report:master

Granular Scopes: report:read:user:master

Rate Limit Label: HEAVY

Responses

Status: 200 **HTTP Status Code:** `200` Active or inactive hosts report returned.
Content-Type: application/json

All of:

  • next_page_token

    string — The next page token is used to paginate through large result sets. A next page token will be returned whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes.

  • page_count

    integer — The number of pages returned for the request made.

  • page_number

    integer, default: 1 — **Deprecated.** We will no longer support this field in a future release. Instead, use the `next_page_token` for pagination.

  • page_size

    integer, default: 30 — The number of records returned with a single API call.

  • total_records

    integer — The total number of all the records available across pages.

  • from

    string, format: date — The report's start date.

  • meetings

    array — Information about the meeting.

    Items:

    • custom_keys

      array — Information about the meeting's assigned custom keys and values. This returns a maximum of 10 items.

      Items:

      • key

        string — The custom key name.

      • value

        string — The custom key's value.

    • duration

      integer — The meeting's duration.

    • end_time

      string, format: date-time — The meeting's end date and time.

    • has_chat

      boolean — Whether or not the chat feature was used by this user in the meeting. This is meeting feature for attendee level.

    • has_recording

      boolean — Whether or not the recording feature was enabled by this user in the meeting. This is meeting feature for attendee level.

    • has_screen_share

      boolean — Whether or not the screenshare feature was used by this user in the meeting. This is meeting feature for attendee level.

    • host_name

      string — Host's name.

    • host_organization

      string — Host Account Name of Hosting Organization.

    • id

      integer — The [meeting ID](https://support.zoom.us/hc/en-us/articles/201362373-What-is-a-Meeting-ID).

    • join_time

      string — The date and time at which the attendee joined the meeting.

    • join_waiting_room_time

      string — The date and time at which the attendee joined the waiting room.

    • leave_time

      string — The date and time at which the attendee left the meeting.

    • meeting_encryption_status

      integer, possible values: 1, 2 — The meeting's encryption status. * `1` - E2E encryption. * `2` - Enhanced encryption.

    • participants_count

      integer — The number of meeting participants.

    • participants_count_my_account

      integer — The number of meeting participants from my account.

    • schedule_time

      string — The meeting's scheduled date and time.

    • session_key

      string — The Video SDK custom session ID.

    • source

      string — Whether the meeting was created directly through Zoom or via an API request: * If the meeting was created via an OAuth app, this field returns the OAuth app's name. * If the meeting was created via JWT or the Zoom Web Portal, this returns the `Zoom` value.

    • start_time

      string, format: date-time — The meeting's start date and time.

    • topic

      string — The meeting's topic.

    • total_minutes

      integer — The sum of meeting minutes from all meeting participants in the meeting.

    • type

      integer, possible values: 1, 2, 3, 4, 5, 6, 7, 8, 9 — The type of meeting or webinar. meeting: * `1` - Instant meeting. * `2` - Scheduled meeting. * `3` - A recurring meeting with no fixed time. * `4` - A meeting created via PMI (Personal Meeting ID). * `7` - A [Personal Audio Conference](https://support.zoom.us/hc/en-us/articles/204517069-Getting-Started-with-Personal-Audio-Conference) (PAC). * `8` - Recurring meeting with a fixed time. webinar: * `5` - A webinar. * `6` - A recurring webinar without a fixed time * `9` - A recurring webinar with a fixed time.

    • user_email

      string, format: email — The user's email address.

    • user_name

      string — The user's display name.

    • uuid

      string — The meeting's universally unique identifier (UUID). Each meeting instance generates a meeting UUID.

  • next_page_token

    string — The next page token is used to paginate through large result sets. A next page token will be returned whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes.

  • to

    string, format: date — The report's end date.

Example:

{
  "next_page_token": "w7587w4eiyfsudgk",
  "page_count": 1,
  "page_size": 30,
  "total_records": 20,
  "from": "2020-07-14",
  "meetings": [
    {
      "custom_keys": [
        {
          "key": "Host Nation",
          "value": "US"
        }
      ],
      "duration": 6,
      "end_time": "2020-07-15T23:30:19Z",
      "id": 12345,
      "participants_count": 2,
      "session_key": "ABC36jaBI145",
      "source": "Zoom",
      "start_time": "2019-07-15T23:24:52Z",
      "topic": "My Meeting",
      "total_minutes": 11,
      "type": 2,
      "user_email": "jchill@example.com",
      "user_name": "Jill Chill",
      "uuid": "4444AAAiAAAAAiAiAiiAii==",
      "schedule_time": "12/22/2021 16:20",
      "join_waiting_room_time": "02/11/2022 16:15",
      "join_time": "12/22/2021 16:20",
      "leave_time": "12/22/2021 17:13",
      "host_organization": "org",
      "host_name": "Jill",
      "has_screen_share": false,
      "has_recording": false,
      "has_chat": false,
      "meeting_encryption_status": 1,
      "participants_count_my_account": 2
    }
  ],
  "to": "2020-08-14"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> This is only available for paid account: {accountId}.<br> <br> **Error Code:** `300` <br> The next page token is invalid or expired. <br> **Error Code:** `200` <br> No permission. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User {userId} not exist or not belong to this account. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests For more information, see [rate limits](/docs/api/rate-limits/).

Get webinar detail reports

  • Method: GET
  • Path: /accounts/{accountId}/report/webinars/{webinarId}
  • Tags: Reports

Retrieve a report containing past webinar details.

Prerequisites:

  • Pro or higher plan with Webinar add-on.

Scopes: report:master,report:read:master

Granular Scopes: report:read:webinar:master

Rate Limit Label: Heavy

Responses

Status: 200 **HTTP Status Code:** `200` Webinar details returned. This is only available for paid account:{accountId}.
Content-Type: application/json
  • custom_keys

    array — Custom keys and values assigned to the meeting.

    Items:

    • key

      string — Custom key associated with the user.

    • value

      string — Value of the custom key associated with the user.

  • dept

    string — Department of the host.

  • duration

    integer — Meeting duration.

  • end_time

    string, format: date-time — Meeting end time.

  • id

    integer, format: int64 — [Meeting ID](https://support.zoom.us/hc/en-us/articles/201362373-What-is-a-Meeting-ID-): Unique identifier of the meeting in &quot;**long**&quot; format(represented as int64 data type in JSON), also known as the meeting number.

  • participants_count

    integer — Number of meeting participants.

  • start_time

    string, format: date-time — Meeting start time.

  • topic

    string — Meeting topic.

  • total_minutes

    integer — Number of Webinar minutes. This represents the total amount of Webinar minutes attended by each participant including the host, for a Webinar hosted by the user. For instance if there were one host(named A) and one participant(named B) in a Webinar, the value of total_minutes would be calculated as below: **total_minutes** = Total Webinar Attendance Minutes of A + Total Webinar Attendance Minutes of B

  • tracking_fields

    array — Tracking fields.

    Items:

    • field

      string — Tracking fields type.

    • value

      string — Tracking fields value.

  • type

    integer — Meeting type.

  • user_email

    string — User email.

  • user_name

    string — User display name.

  • uuid

    string — Webinar UUID. Each webinar instance will generate its own UUID(i.e., after a meeting ends, a new UUID will be generated when the next instance of the webinar starts). [double encode](https://marketplace.zoom.us/docs/api-reference/using-zoom-apis/#meeting-id-and-uuid) the UUID when using it for API calls if the UUID begins with a '/' or contains '//' in it.

Example:

{
  "custom_keys": [
    {
      "key": "Host Nation",
      "value": "US"
    }
  ],
  "dept": "HR",
  "duration": 2,
  "end_time": "2022-03-15T07:42:22Z",
  "id": 345678902224,
  "participants_count": 4,
  "start_time": "2022-03-15T07:40:46Z",
  "topic": "My Meeting",
  "total_minutes": 3,
  "tracking_fields": [
    {
      "field": "Host Nation",
      "value": "US"
    }
  ],
  "type": 4,
  "user_email": "jchill@example.com",
  "user_name": "Jill Chill",
  "uuid": "4444AAAiAAAAAiAiAiiAii=="
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `1010` <br> User does not belong to this account:{accountId}.<br> **Error Code:** `12702` <br> Can not access a webinar a year ago.<br> **Error Code:** `200` <br> No permission.<br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Meeting {meetingId} not found or has expired.<br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Get webinar participant reports

  • Method: GET
  • Path: /accounts/{accountId}/report/webinars/{webinarId}/participants
  • Tags: Reports

Get a detailed report on each webinar attendee. You can get webinar participant reports for the last 6 months.

Prerequisites:

  • A Pro or a higher plan with Webinar add-on enabled.

Scopes: report:master

Granular Scopes: report:read:list_webinar_participants:master

Rate Limit Label: HEAVY

Responses

Status: 200 **HTTP Status Code:** `200` * Meeting participants report returned. Only available for Paid or ZMP account: {accountId}.
Content-Type: application/json

All of:

  • next_page_token

    string — Use the next page token to paginate through large result sets. A next page token is returned whenever the set of available results exceeds the current page size. This token's expiration period is 15 minutes.

  • page_count

    integer — The number of pages returned for the request made.

  • page_size

    integer, default: 30 — The number of records returned within a single API call.

  • total_records

    integer — The number of all records available across pages.

  • participants

    array — Information about the webinar participant.

    Items:

    • bo_mtg_id

      string — The [breakout room](https://support.zoom.us/hc/en-us/articles/206476313-Managing-breakout-rooms) ID. Each breakout room is assigned a unique ID.

    • customer_key

      string — The participant's SDK identifier. This value can be alphanumeric, up to a maximum length of 35 characters.

    • duration

      integer — Participant duration, in seconds, calculated by subtracting the `leave_time` from the `join_time` for the `user_id`. If the participant leaves and rejoins the same meeting, they will be assigned a different `user_id` and Zoom displays their new duration in a separate object. Note that because of this, the duration may not reflect the total time the user was in the meeting.

    • failover

      boolean — Whether failover occurred during the webinar.

    • id

      string — The participant's universally unique ID (UUID). * If the participant joins the meeting by logging into Zoom, this value is the `id` value in the [**Get a user**](/docs/api-reference/zoom-api/methods#operation/user) API response. * If the participant joins the meeting **without** logging into Zoom, this returns an empty string value. **Note:** Use the `participant_user_id` value instead of this value. We will remove this response in a future release.

    • join_time

      string, format: date-time — The participant's join time.

    • leave_time

      string, format: date-time — The participant's leave time.

    • name

      string — The participant's display name. This returns an empty string value if the account calling the API is a BAA account.

    • participant_user_id

      string — The participant's universally unique ID (UUID). * If the participant joins the meeting by logging into Zoom, this value is the `id` value in the [**Get a user**](/docs/api-reference/zoom-api/methods#operation/user) API response. * If the participant joins the meeting **without** logging into Zoom, this returns an empty string value.

    • registrant_id

      string — The registrant's ID. This field only returns if you provide the `registrant_id` value for the `include_fields` query parameter.

    • status

      string, possible values: "in_meeting", "in_waiting_room" — The participant's status. * `in_meeting` - In a meeting. * `in_waiting_room` - In a waiting room.

    • user_email

      string — The participant's email address. If the participant is **not** part of the host's account, this returns an empty string value, with some exceptions. See [Email address display rules](/docs/api-reference/using-zoom-apis#email-address) for details. This returns an empty string value if the account calling the API is a BAA account.

    • user_id

      string — The participant's ID. This ID is assigned to the participant upon joining the webinar and is only valid for that webinar.

Example:

{
  "next_page_token": "Tva2CuIdTgsv8wAnhyAdU3m06Y2HuLQtlh3",
  "page_count": 1,
  "page_size": 30,
  "total_records": 1,
  "participants": [
    {
      "customer_key": "349589LkJyeW",
      "duration": 20,
      "failover": false,
      "id": "ABCDEF123456",
      "join_time": "2019-02-01T12:34:12.66Z",
      "leave_time": "2019-02-01T12:54:12.66Z",
      "name": "jchill",
      "registrant_id": "123456FEDCBA",
      "status": "in_meeting",
      "user_email": "jchill@example.com",
      "user_id": "ABCDEF123456",
      "participant_user_id": "DYHrdpjrS3uaOf7dPkkg8w",
      "bo_mtg_id": "Dkgwu8nm/ExG1vM+GhLRhA=="
    }
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `1010` <br> User does not belong to this account: {accountId} <br> **Error Code:** `12702` <br> Can not access a webinar a year ago.<br> <br> **Error Code:** `200` <br> No permission.<br> <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Webinar "{webinarId}" not found or has expired <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Get webinar poll reports

  • Method: GET
  • Path: /accounts/{accountId}/report/webinars/{webinarId}/polls
  • Tags: Reports

Retrieve a report on past webinar polls.

Prerequisites:

  • Pro or a higher plan with Webinar add-on enabled.

Scopes: report:master,report:read:master

Granular Scopes: report:read:list_webinar_polls:master

Rate Limit Label: Heavy

Responses

Status: 200 **HTTP Status Code:** `200` Webinar polls report returned. Missing webinar subscription plan. Only available for Paid or ZMP account: {accountId}.
Content-Type: application/json
  • id

    integer, format: int64 — The webinar ID.

  • questions

    array — Information about the webinar questions.

    Items:

    • email

      string, format: email — The participant's email address.

    • first_name

      string — The participant's first name. If the **Allow participants to answer questions anonymously** setting is enabled for a [poll](https://support.zoom.us/hc/en-us/articles/213756303-Polling-for-Meet), the participant's polling information is kept anonymous and the `first_name` field will return the &quot;Anonymous Attendee&quot; value.

    • last_name

      string — The participant's last name. If the **Allow participants to answer questions anonymously** setting is enabled for a [poll](https://support.zoom.us/hc/en-us/articles/213756303-Polling-for-Meet), the participant's polling information is kept anonymous and the `last_name` field will return the &quot;Anonymous Attendee&quot; value.

    • name

      string — The participant's display name. **Allow participants to answer questions anonymously** setting is enabled for a [poll](https://support.zoom.us/hc/en-us/articles/213756303-Polling-for-Meet), the participant's polling information is kept anonymous and the `name` field will return the &quot;Anonymous Attendee&quot; value.

    • question_details

      array — Information about the user's questions and answers.

      Items:

      • answer

        string — The user's given answer.

      • date_time

        string — The date and time at which the user answered the poll question.

      • polling_id

        string — The poll's ID.

      • question

        string — The poll question.

  • start_time

    string, format: date-time — The webinar's start time.

  • uuid

    string — The webinar's universally unique identifier (UUID). Each webinar instance generates a webinar UUID.

Example:

{
  "id": 123456,
  "questions": [
    {
      "email": "jchill@example.com",
      "name": "Jill Chill",
      "first_name": "Jill",
      "last_name": "Chill",
      "question_details": [
        {
          "answer": "I am wonderful.",
          "date_time": "2022-02-01T12:37:12.660Z",
          "polling_id": "798fGJEWrA",
          "question": "How are you?"
        }
      ]
    }
  ],
  "start_time": "2022-02-01T12:34:12.66Z",
  "uuid": "4444AAAiAAAAAiAiAiiAii=="
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `1010` <br> User does not belong to this account:{accountId}.<br> **Error Code:** `12702` <br> Can not access a webinar a year ago.<br> **Error Code:** `200` <br> No permission.<br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Webinar {webinarId} not found or has expired.<br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Get webinar Q&A report

  • Method: GET
  • Path: /accounts/{accountId}/report/webinars/{webinarId}/qa
  • Tags: Reports

Retrieve a report on questions asked by participants and answered by panelists, co-hosts and hosts from past webinars.

Prerequisites:

  • Pro or a higher plan with the Webinar add-on enabled.

Scopes: report:master

Granular Scopes: report:read:webinar_qna:master

Rate Limit Label: HEAVY

Responses

Status: 200 **HTTP Status Code:** `200` Webinar Q&A report returned. Only available for Paid or ZMP account: {accountId}. A report can't be generated for this account because this account is not subscribed to a webinar plan.
Content-Type: application/json
  • id

    integer, format: int64 — Webinar ID in `long` format, represented as int64 data type in JSON. Also known as the webinar number.

  • questions

    array — Array of webinar question objects.

    Items:

    • email

      string — Participant's email. If the participant is **not** part of the host's account, this returns an empty string value, with some exceptions. See [Email address display rules](https://developers.zoom.us/docs/api/rest/using-zoom-apis/#email-address-display-rules) for details.

    • name

      string — Participant's display name. If anonymous [Q&amp;A](https://support.zoom.us/hc/en-us/articles/203686015-Getting-Started-with-Question-Answer) option is enabled and if a participant submits the Q&amp;A without providing their name, the value of the `name` field will be &quot;Anonymous Attendee&quot;.

    • question_details

      array — Array of questions from the user.

      Items:

      • answer

        string — The given answer. If this is a live answer, the value is 'live answered'. **Note:** All answers will be returned together and separated by semicolons. For more detailed answer information, please see the "answer_details" field.

      • answer_details

        array — Array of answers from user.

        Items:

        • content

          string — The answer from the host or the comment from a participant.

        • create_time

          string — Content submission time.

        • email

          string — Participant's email. If the participant is **not** part of the host's account, this returns an empty string value, with some exceptions. See [Email address display rules](https://developers.zoom.us/docs/api/rest/using-zoom-apis/#email-address-display-rules) for details.

        • name

          string — User display name, including the host or participant.

        • type

          string, possible values: "default", "host_answered_publicly", "host_answered_privately", "participant_commented", "host_answered", default: "default" — Type of answer.

        • user_id

          string — The user ID of the user who answered the question. This value returns blank for external users.

      • create_time

        string — Question creation time.

      • question

        string — Asked question.

      • question_id

        string — Question UUID.

      • question_status

        string, possible values: "default", "open", "dismissed", "answered", "deleted" — Question status. If not supported, the value will be `default`.

    • user_id

      string — The user ID of the user who asked the question. This value returns blank for external users.

  • start_time

    string, format: date-time — Webinar start time.

  • uuid

    string — Webinar UUID. Each webinar instance will generate its own UUID - after a webinar ends, a new UUID will be generated for the next instance of the webinar. Double-encode your UUID when using it for API calls if the UUID begins with a '/' or contains '//' in it.

Example:

{
  "id": 245603123123,
  "questions": [
    {
      "user_id": "hyROrs0TRCSvwmadI7L13w",
      "email": "jchilll@example.com",
      "name": "Jill Chill",
      "question_details": [
        {
          "question": "how are you",
          "question_id": "zxU4wOwnlxs",
          "create_time": "2022-03-15T07:48:00Z",
          "question_status": "open",
          "answer_details": [
            {
              "user_id": "Cn_5wJ9mRNGyYOmpjVufBQ",
              "name": "Paul",
              "email": "paul@example.com",
              "content": "fine",
              "create_time": "2022-03-15T07:50:00Z",
              "type": "default"
            }
          ]
        }
      ]
    }
  ],
  "start_time": "2022-03-15T07:40:46Z",
  "uuid": "4444AAAiAAAAAiAiAiiAii=="
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> No permission.<br> <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User does not exist: {userId}.<br> <br> **Error Code:** `3001` <br> Webinar {webinarId} not found or has expired.<br> <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Get webinar survey report

  • Method: GET
  • Path: /accounts/{accountId}/report/webinars/{webinarId}/survey
  • Tags: Reports

Retrieve a report on past webinar survey.

Prerequisites:

  • Pro or a higher plan with Webinar add-on enabled.

Scopes: report:read:admin

Granular Scopes: report:read:webinar_survey:master

Rate Limit Label: HEAVY

Responses

Status: 200 **HTTP Status Code:** `200` Webinar survey report returned. Missing webinar subscription plan. Only available for Paid or ZMP account: {accountId}.
Content-Type: application/json
  • start_time

    string, format: date-time — The webinar's start time.

  • survey_answers

    array — Information about the survey questions and answers.

    Items:

    • answer_details

      array — Information about the user's questions and answers.

      Items:

      • answer

        string — The user's given answer.

      • date_time

        string — The date and time at which the user answered the survey question.

      • question

        string — The survey question.

      • question_id

        string — The question's ID

    • email

      string, format: email — The participant's email address.

    • first_name

      string — The participant's first name. If the **Allow participants to answer questions anonymously** setting is enabled for a [survey](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0057559), the participant's survey information is kept anonymous and the `first_name` field will return the &quot;Anonymous Attendee&quot; value.

    • last_name

      string — The participant's last name. If the **Allow participants to answer questions anonymously** setting is enabled for a [survey](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0057559), the participant's survey information is kept anonymous and the `last_name` field will return the &quot;Anonymous Attendee&quot; value.

    • name

      string — The participant's display name. **Allow participants to answer questions anonymously** setting is enabled for a [survey](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0057559), the participant's survey information is kept anonymous and the `name` field will return the &quot;Anonymous Attendee&quot; value.

  • survey_id

    string — The survey's ID

  • survey_name

    string — The name of survey

  • webinar_id

    integer, format: int64 — The webinar ID.

  • webinar_uuid

    string — The webinar's universally unique identifier (UUID). Each webinar instance generates a webinar UUID.

Example:

{
  "webinar_id": 123456,
  "webinar_uuid": "4444AAAiAAAAAiAiAiiAii==",
  "start_time": "2022-02-01T12:34:12.66Z",
  "survey_id": "8SFHRTGHAAAiAAAAAiAiAiiAii==",
  "survey_name": "Survey of this meeting",
  "survey_answers": [
    {
      "email": "jchill@example.com",
      "name": "Jill Chill",
      "first_name": "Jill",
      "last_name": "Chill",
      "answer_details": [
        {
          "question": "How are you?",
          "question_id": "798fGJEWrA",
          "answer": "I am wonderful.",
          "date_time": "2022-02-01T12:37:12.660Z"
        }
      ]
    }
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `1010` <br> User does not belong to this account:{accountId}.<br> <br> **Error Code:** `12702` <br> Can not access a webinar a year ago.<br> <br> **Error Code:** `200` <br> No permission.<br> <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Webinar {webinarId} not found or has expired.<br> <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

List internal call-out countries

  • Method: GET
  • Path: /accounts/{accountId}/sip_trunk/callout_countries
  • Tags: SIP Connected Audio

Retrieve the list of internal call-out countries of a master account or a sub account. To list call-out enabled countries of a subaccount, provide the account ID of the subaccount in the accountId path parameter. To list call-out enabled countries of a master account, provide me as the value of the accountId path parameter.

Prerequisites:

  • The account making this API request must be a master account with the SIP Connected Audio Plan.

Scopes: sip_trunk:master

Granular Scopes: sip_connected_audio:read:callout_countries:master,sip_connected_audio:read:callout_countries:admin

Responses

Status: 200 **HTTP Status Code:** `200` **OK** List of internal call-out countries returned.
Content-Type: application/json
  • callout_countries

    array

    Items:

    • code

      string — Country code.

    • id

      string — Two letter country ID.

    • name

      string — The country's name.

  • total_records

    integer — The total number of records returned.

Example:

{
  "callout_countries": [
    {
      "code": "1",
      "id": "US",
      "name": "United States"
    }
  ],
  "total_records": 20
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> This account is not a master account. To get access to this API, enroll your account in the API Partner Plan and get it made into a master account. <br> **Error Code:** `300` <br> Your account does not have the permission to make updates on this account. Only a master account can perform this action on a subaccount. <br> **Error Code:** `300` <br> Request failed because this account is not enrolled in SIP Connected Audio plan. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `2001` <br> Account does not exist: {accountId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rest/rate-limits/).

Add internal call-out countries

  • Method: POST
  • Path: /accounts/{accountId}/sip_trunk/callout_countries
  • Tags: SIP Connected Audio

Specify the list of call-out countries for a master account or a subaccount. To add call-out enabled countries to a subaccount, provide the account ID of the subaccount in the accountId path parameter. To add call-out enabled countries to a master account, provide me as the value of the accountId path parameter.

Prerequisites

  • The account making this API request must be a master account with a SIP Connected Audio Plan.

Scopes: sip_trunk:master

Granular Scopes: sip_connected_audio:write:callout_countries:admin,sip_connected_audio:write:callout_countries:master

Request Body

Content-Type: application/json

Example:

{
  "callout_countries": [
    {
      "id": "1"
    }
  ]
}

Responses

Status: 201 **HTTP Status Code:** `201` **Created** Call-out countries created.
Content-Type: application/json
  • callout_countries

    array — List of Call-out countries.

    Items:

    • code

      string — Country code for Phone number.

    • id

      string — Country ID.

    • name

      string — Name of the country.

Example:

{
  "callout_countries": [
    {
      "code": "1",
      "id": "US",
      "name": "United States"
    }
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> This account is not a master account. To get access to this API, your account must be enrolled in the API Partner Plan and must be a master account. <br> **Error Code:** `300` <br> Either one or more parameters provided in the `callout_countries` object are invalid. <br> **Error Code:** `300` <br> Your account does not have the permission to make updates on this account. Only a master account can perform this action on a subaccount. <br> **Error Code:** `300` <br> Request failed because this account is not enrolled in SIP Connected Audio plan. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `2001` <br> Account does not exist: {accountId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rest/rate-limits/).

Delete internal call-out country

  • Method: DELETE
  • Path: /accounts/{accountId}/sip_trunk/callout_countries/{countryId}
  • Tags: SIP Connected Audio

Delete a previously assigned call-out country from a master account or a subaccount. To remove call-out country from a subaccount, provide the account ID of the subaccount in the accountId path parameter. To remove call-out country from a master account, provide me as the value of the accountId path parameter.

Prerequisites

  • The account making this API request must be a master account with a SIP Connected Audio Plan.

Scopes: sip_trunk:master

Granular Scopes: sip_connected_audio:delete:callout_countries:master,sip_connected_audio:delete:callout_countries:admin

Responses

Status: 204 **HTTP Status Code:** `204` **No Content** Country deleted.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Your account does not have the permission to make updates on this account. Only a master account can perform this action on a subaccount. <br> **Error Code:** `300` <br> Request failed because this account is not enrolled in SIP Connected Audio plan. <br> **Error Code:** `300` <br> This account is not a master account. To get access to this API, your account must be enrolled in the API Partner Plan and must be a master account. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `2001` <br> Account does not exist: {accountId}. <br> **Error Code:** `2302` <br> Callout Country does not exist: {countryId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rest/rate-limits/).

List internal numbers

  • Method: GET
  • Path: /accounts/{accountId}/sip_trunk/internal_numbers
  • Tags: SIP Connected Audio

Let a master account with the SIP Connected Audio plan list internal phone numbers - numbers that are not provided by Zoom but are owned by the organization consuming the API - that are assigned to a master account or a subaccount.

To list a subaccount's internal numbers, provide the subaccount's account ID in the accountId path parameter. To list a master account's internal numbers, provide me as the value of the accountId path parameter.

Prerequisites

  • The account making this API request must be a master account with the SIP Connected Audio Plan.

Scopes: sip_trunk:master

Granular Scopes: sip_connected_audio:read:internal_numbers:master,sip_connected_audio:read:internal_numbers:admin

Responses

Status: 200 **HTTP Status Code:** `200` **OK** List of internal numbers returned.
Content-Type: application/json
  • internal_numbers

    array

    Items:

    • country (required)

      string — The country's two letter [ISO country code](https://developers.zoom.us/docs/api/rest/other-references/abbreviation-lists/#countries).

    • display_number (required)

      string — Phone number with display format. If the number field's value is `+1888888000`, the value of this field could be `+1 888 888 000`.

    • labels (required)

      string — The phone number's short description.

    • languages (required)

      string, possible values: "en-GB", "en-US", "ar", "da-DK", "de-DE", "es-ES", "es-MX", "fr-CA", "fr-FR", "it-IT", "ja", "ko-KR", "nl-NL", "pt-BR", "pt-PT", "ru", "zh-CN", "zh-HK" — The phone number's display language. * `en-GB` - English (UK) * `en-US` - English (USA) * `ar` - Arabic * `da-DK` - Danish (Denmark) * `de-DE` - German * `es-ES` - Spanish * `es-MX` - Spanish (Mexico) * `fr-CA` - French (Canada) * `fr-FR` - French * `it-IT` - Italian * `ja` - Japanese * `ko-KR` - Korean * `nl-NL` - Dutch (Netherlands) * `pt-BR` - Portuguese (Brazil) * `pt-PT` - Portuguese * `ru` - Russian * `zh-CN` - Chinese (PRC) * `zh-HK` - Chinese (Hong Kong)

    • number (required)

      string — Phone number in E164 format.

    • type (required)

      integer, possible values: 0, 1 — The phone number's type. * `0` - toll * `1` - tollfree

    • allow_for_external_meetings

      boolean — Control whether the number can be used to attend 3rd-party meetings.

    • allow_join

      boolean — Specify if this number can be used by users to join a meeting. * `true` - This number can be used to join a meeting. * `false` - This number **can't** be used to join a meeting. If the value of `visible` field is set to `true`, this field's value will always be `true`.

    • assigned_accounts

      array — The current internal number is assigned to this account list.

      Items:

      • id

        string — The account ID.

      • name

        string — The account name.

      • type

        integer — The account type. * `1` - Master account * `2` - Sub account

    • id

      string — The internal number's unique identifier.

    • visible

      boolean — Specify whether you want this number to be visible to account users in Zoom client and Zoom Portal. * `true` - Make the number visible. * `false` - Hide the number.

  • next_page_token

    string — Use the next page token to paginate through large result sets. A next page token is returned whenever the set of available results exceeds the current page size. This token's expiration period is 15 minutes.

  • page_size

    integer, default: 30 — The number of records that you specified to get in the response per page.

  • total_records

    integer — The total number of records returned.

Example:

{
  "internal_numbers": [
    {
      "id": "1bj75491Sqa1gmyN6L47ew",
      "allow_for_external_meetings": true,
      "allow_join": true,
      "country": "US",
      "display_number": "+1 646 666 1110",
      "labels": "SIP-Internal",
      "languages": "en-US",
      "number": "+1 646666111",
      "type": 0,
      "visible": true,
      "assigned_accounts": [
        {
          "id": "Mt6sv4u0TAyPkwgsL2lxiA",
          "name": "jchill",
          "type": 1
        }
      ]
    }
  ],
  "next_page_token": "Tva2CuIdTgsv8wAnhyAdU3m06Y2HuLQtlh3",
  "page_size": 30,
  "total_records": 20
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> This account is not a master account. To get access to this API, enroll your account in the API Partner Plan and get it made into a master account. <br> **Error Code:** `300` <br> Your account does not have the permission to make updates on this account. Only a master account can perform this action on a subaccount. <br> **Error Code:** `300` <br> Request failed because this account is not enrolled in SIP Connected Audio plan. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `2001` <br> Account does not exist: {accountId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Add internal numbers

  • Method: POST
  • Path: /accounts/{accountId}/sip_trunk/internal_numbers
  • Tags: SIP Connected Audio

Let a master account with a SIP Connected Audio plan to assign internal phone numbers - numbers that are not provided by Zoom but are owned by the organization consuming the API - to a master account or a subaccount.

To add internal numbers to a subaccount, provide the sub account's account ID in the accountId path parameter. To add internal numbers to a master account, provide me as the value of the accountId path parameter.

Prerequisites

  • The account making this API request must be a master account with a SIP Connected Audio Plan.

Scopes: sip_trunk:master

Granular Scopes: sip_connected_audio:write:internal_numbers:admin,sip_connected_audio:write:internal_numbers:master

Request Body

Content-Type: application/json
  • internal_numbers

    array

    Items:

    • country (required)

      string — The country's two letter [ISO country code](https://developers.zoom.us/docs/api/rest/other-references/abbreviation-lists/#countries).

    • display_number (required)

      string — Phone number with display format. If the value in the number field is `+1888888000`, this field's value could be `+1 888 888 000`.

    • labels (required)

      string — The phone number's short description.

    • languages (required)

      string, possible values: "en-GB", "en-US", "ar", "da-DK", "de-DE", "es-ES", "es-MX", "fr-CA", "fr-FR", "it-IT", "ja", "ko-KR", "nl-NL", "pt-BR", "pt-PT", "ru", "zh-CN", "zh-HK" — The language used to display the phone number. * `en-GB` - English (UK) * `en-US` - English (USA) * `ar` - Arabic * `da-DK` - Danish (Denmark) * `de-DE` - German * `es-ES` - Spanish * `es-MX` - Spanish (Mexico) * `fr-CA` - French (Canada) * `fr-FR` - French * `it-IT` - Italian * `ja` - Japanese * `ko-KR` - Korean * `nl-NL` - Dutch (Netherlands) * `pt-BR` - Portuguese (Brazil) * `pt-PT` - Portuguese * `ru`- Russian * `zh-CN` - Chinese (PRC) * `zh-HK` - Chinese (Hong Kong)

    • number (required)

      string — Phone number in E164 format.

    • type (required)

      integer, possible values: 0, 1 — The phone number's type. * `0` - toll. * `1` - tollfree.

    • allow_for_external_meetings

      boolean — Control whether the number can be used to attend 3rd party meetings.

    • allow_join

      boolean — Specify whether this number can be used by users to join a meeting or not. * `true` - Use this number to join a meeting. * `false` - This number can't be used to join a meeting. If the value of `visible` field is set to `true`, this field's value will always be `true`.

    • visible

      boolean — Specify whether you want this number to be visible - in Zoom Client and Zoom Portal - to the account users or not. * `true` - Make the number visible. * `false` - Hide the number.

Example:

{
  "internal_numbers": [
    {
      "allow_for_external_meetings": true,
      "allow_join": true,
      "country": "US",
      "display_number": "+1 646 666 1110",
      "labels": "SIP-Internal",
      "languages": "en-US",
      "number": "+1 646666111",
      "type": 0,
      "visible": true
    }
  ]
}

Responses

Status: 201 **HTTP Status Code:** `201` **Created** Internal numbers added successfully.
Content-Type: application/json
  • internal_numbers

    array

    Items:

    • country (required)

      string — Two letter country code of the country.

    • display_number (required)

      string — Phone number with display format. For instance, if the value in the number field is `+1888888000`, the value of this field could be `+1 888 888 000`.

    • labels (required)

      string — A short description for the phone number.

    • languages (required)

      string, possible values: "en-GB", "en-US", "ar", "da-DK", "de-DE", "es-ES", "es-MX", "fr-CA", "fr-FR", "it-IT", "ja", "ko-KR", "nl-NL", "pt-BR", "pt-PT", "ru", "zh-CN", "zh-HK" — The phone number's display language. * `en-GB` - English (UK) * `en-US` - English (USA) * `ar` - Arabic * `da-DK` - Danish (Denmark) * `de-DE` - German * `es-ES` - Spanish * `es-MX` - Spanish (Mexico) * `fr-CA` - French (Canada) * `fr-FR` - French * `it-IT` - Italian * `ja` - Japanese * `ko-KR` - Korean * `nl-NL` - Dutch (Netherlands) * `pt-BR` - Portuguese (Brazil) * `pt-PT` - Portuguese * `ru` - Russian * `zh-CN` - Chinese (PRC) * `zh-HK` - Chinese (Hong Kong)

    • number (required)

      string — Phone number in E164 format.

    • type (required)

      integer, possible values: 0, 1 — Type of phone number. The value can be one of the following: * `0` : toll * `1` : tollfree

    • allow_for_external_meetings

      boolean — Control whether the number can be used to attend 3rd party meetings.

    • allow_join

      boolean — Specify whether this number can be used by users to join a meeting or not. * `true` : This number can be used to join a meeting. * `false`: This number can not be used to join a meeting. Note that if the value of `visible` field is set to `true`, the value of this field will always be `true`.

    • id

      string — Unique identifier of the internal number.

    • visible

      boolean — Specify whether you want this number to be visible (in Zoom Client and Zoom Portal) to the account users or not. The value could be one of the following: * `true`: Make the number visible. * `false`: Hide the number.

Example:

{
  "internal_numbers": [
    {
      "allow_for_external_meetings": true,
      "allow_join": true,
      "country": "US",
      "display_number": "+1 646 666 1110",
      "id": "1bj75491Sqa1gmyN6L47ew",
      "labels": "SIP-Internal",
      "languages": "en-US",
      "number": "+1 646666111",
      "type": 0,
      "visible": true
    }
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Your account does not have the permission to make updates on this account. Only a master account can perform this action on a subaccount. <br> **Error Code:** `300` <br> This account is not a master account. To get access to this API, enroll your account in the API Partner Plan and get it changed into a master account. <br> **Error Code:** `300` <br> Request failed because this account is not enrolled in SIP Connected Audio plan. <br> **Error Code:** `300` <br> You can only assign a maximum of {0} phone numbers to this account. <br> **Error Code:** `300` <br> The value you provided for the `number` field has already been used. Please provide a unique value for this field. <br> **Error Code:** `300` <br> One or more parameters provided in the `internal_numbers` object are invalid. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `2001` <br> Account does not exist: {accountId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rest/rate-limits/).

Delete an internal number

  • Method: DELETE
  • Path: /accounts/{accountId}/sip_trunk/internal_numbers/{numberId}
  • Tags: SIP Connected Audio

Let a master account with SIP Connected Audio plan delete a previously assigned internal phone number from a master account or a subaccount.

To delete an internal number from a subaccount, provide the account ID of the subaccount in the accountId path parameter. To delete an internal number from a master account, provide me as the value of the accountId path parameter.

Prerequisites

  • The account making this API request must be a master account with a SIP Connected Audio plan.

Scopes: sip_trunk:master

Granular Scopes: sip_connected_audio:delete:internal_numbers:admin,sip_connected_audio:delete:internal_numbers:master

Responses

Status: 204 **HTTP Status Code:** `204` **No Content** Number deleted.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> This account is not a master account. To get access to this API, your account must be enrolled in the API Partner Plan and must be a master account. <br> **Error Code:** `300` <br> Your account does not have the permission to make updates on this account. Only a master account can perform this action on a subaccount. <br> **Error Code:** `300` <br> Request failed because this account is not enrolled in SIP Connected Audio plan. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `2001` <br> Account does not exist: {accountId}. <br> **Error Code:** `2303` <br> Internal Number does not exist: {numberId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rest/rate-limits/).

Update an internal number

  • Method: PATCH
  • Path: /accounts/{accountId}/sip_trunk/internal_numbers/{numberId}
  • Tags: SIP Connected Audio

Use this API to update a previously-assigned internal phone number.

  • To update a sub account's internal number, use the sub account's account ID for the accountId path parameter.
  • To update a Master Account's internal number, use the me value for the accountId path parameter.

Prerequisites:

  • The account making the API request must be a Master Account.
  • The account must have a SIP Connected Audio Plan.

Scopes: sip_trunk:master

Granular Scopes: sip_connected_audio:update:internal_numbers:master,sip_connected_audio:update:internal_numbers:admin

Request Body

Content-Type: application/json
  • affect_all

    boolean — Whether editing the internal number will also affect its shared accounts.

  • allow_for_external_meetings

    boolean — Whether to allow the phone number to be used to attend 3rd party meetings.

  • allow_join

    boolean — Whether users can use the phone number to join meetings. **Note:** If the `visible` field value is `true`, the value of this field will always be `true`.

  • country

    string — The phone number's [two-letter country code](https://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#countries).

  • display_number

    string — The phone number's display format.

  • labels

    string — A short description for the phone number.

  • languages

    string, possible values: "en-GB", "en-US", "ar", "da-DK", "de-DE", "es-ES", "es-MX", "fr-CA", "fr-FR", "it-IT", "ja", "ko-KR", "nl-NL", "pt-BR", "pt-PT", "ru", "zh-CN", "zh-HK" — The language to use to display the phone number. * `en-GB` - English (UK) * `en-US` - English (USA) * `ar` - Arabic * `da-DK` - Danish (Denmark) * `de-DE` - German * `es-ES` - Spanish * `es-MX` - Spanish (Mexico) * `fr-CA` - French (Canada) * `fr-FR` - French * `it-IT` - Italian * `ja` - Japanese * `ko-KR` - Korean * `nl-NL` - Dutch (Netherlands) * `pt-BR` - Portuguese (Brazil) * `pt-PT` - Portuguese * `ru` - Russian * `zh-CN` - Chinese (PRC) * `zh-HK` - Chinese (Hong Kong)

  • number

    string — The phone number, in [E.164 format](https://en.wikipedia.org/wiki/E.164).

  • type

    integer, possible values: 0, 1 — The type of phone number. * `0` - Toll. * `1` - Tollfree.

  • visible

    boolean — Whether to display the phone number to account users in the Zoom client and Zoom web portal.

Example:

{
  "affect_all": false,
  "allow_for_external_meetings": false,
  "allow_join": true,
  "country": "US",
  "display_number": "+1 646 666 1110",
  "labels": "SIP-Internal",
  "languages": "en-US",
  "number": "+1 646666111",
  "type": 0,
  "visible": true
}

Responses

Status: 204 **HTTP Status Code:** `204` * No Content * Number updated.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> * Your account does not have the permission to make updates on this account. Only a Master Account can perform this action on a sub account. * Request failed because this account is not enrolled in a SIP Connected Audio plan. * This account is not a Master Account. To access this API, your account must be a Master Account enrolled in the API Partner Plan. <br> **Error Code:** `2` <br> Your request to update the internal number has failed. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `2001` <br> Account does not exist: {0} <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

List SIP trunk numbers

  • Method: GET
  • Path: /sip_trunk/numbers
  • Tags: SIP Connected Audio

List all the numbers that are configured for SIP Connected Audio in a Zoom Account.

Prerequisites:

  • Pro or a higher account with SIP Connected Audio plan enabled.
  • The account must be a master account.

Scopes: sip_trunk:master

Granular Scopes: sip_connected_audio:read:numbers:master

Rate Limit Label: LIGHT

Responses

Status: 200 * **HTTP Status Code:** `200` **OK** List of numbers returned.
Content-Type: application/json
  • phone_numbers

    array

    Items:

    • country

      string — Country ID, such as `US`.)

    • number

      string — Phone number.

  • total_records

    integer — Total number of records returned.

Example:

{
  "phone_numbers": [
    {
      "country": "US",
      "number": "+1 646666111"
    }
  ],
  "total_records": 20
}
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `2001` <br> This account does not exist or does not belong to this master account: {accountId}. <br> **Error Code:** `2001` <br> This account does not exist or does not belong to you: {accountId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rest/rate-limits/).

Assign numbers

  • Method: POST
  • Path: /accounts/{accountId}/sip_trunk/numbers
  • Tags: SIP Connected Audio

Assign internal numbers to a subaccount.

Prerequisites:

  • Pro or a higher account with SIP Connected Audio plan enabled.
  • The account must be a master account

Scopes: sip_trunk:master

Granular Scopes: sip_connected_audio:write:numbers:master

Rate Limit Label: LIGHT

Request Body

Content-Type: application/json
  • phone_numbers

    array — Phone number or numbers to be assigned to the subaccount.

    Items:

    string

Example:

{
  "phone_numbers": [
    "+1 646666111"
  ]
}

Responses

Status: 201 **HTTP Status Code:** `201` **Created** Numbers assigned successfully.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `2100` <br> This subaccount has no SIP trunk plan. <br> **Error Code:** `400` <br> This number does not belong to master account: {phone_number}. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `2001` <br> This account does not exist or does not belong to this master account: {accountId}. <br> **Error Code:** `2001` <br> This account does not exist or does not belong to you: {accountId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rest/rate-limits/).

Delete all numbers

  • Method: DELETE
  • Path: /accounts/{accountId}/sip_trunk/numbers
  • Tags: SIP Connected Audio

Delete all internal numbers assigned to a subaccount. Prerequisites:

  • Pro or a higher account with SIP Connected Audio plan enabled.
  • The account must be a master account.

Scopes: sip_trunk:master

Granular Scopes: sip_connected_audio:delete:numbers:master

Rate Limit Label: LIGHT

Responses

Status: 204 **HTTP Status Code:** `204` **No Content** Numbers deleted successfully.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `2100` <br> This subaccount has no SIP trunk plan. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `2001` <br> This account does not exist or does not belong to this master account: {accountId}. <br> **Error Code:** `2001` <br> This account does not exist or does not belong to you: {accountId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rest/rate-limits/).

Get SIP trunk configuration

  • Method: GET
  • Path: /accounts/{accountId}/sip_trunk/settings
  • Tags: SIP Connected Audio

Get a SIP (Session Initiation Protocol) trunk configuration.

Prerequisites:

  • The account making this API request must be a master account with the SIP Connected Audio plan.
  • A Pro or a higher paid account with the master account option enabled.

Scopes: sip_trunk:master

Granular Scopes: sip_connected_audio:read:settings:master,sip_connected_audio:read:settings:admin

Rate Limit Label: LIGHT

Responses

Status: 200 **HTTP Status Code:** `200` SIP trunk configuration returned.
Content-Type: application/json
  • show_callout_internal_number

    boolean — If true, the call-out country numbers provided by Zoom carrier partners are displayed in the account's list of available call-out numbers in the Zoom Web Portal and Zoom client.

  • show_zoom_provided_callout_countries

    integer, possible values: 0, 1, 2 — The account's call-out countries display setting. * `0` - [Display](https://support.zoom.us/hc/en-us/articles/200942859-Using-telephone-call-out) the Zoom-provided list of call-out countries in the account's list of available call-out countries. * `1` - Do **not** display the Zoom-provided list of call-out countries in the user's account. * `2` - Delete all Zoom-provided call-out countries and **only** display internal countries provided by carrier partners.

  • show_zoom_provided_numbers

    integer, possible values: 0, 1, 2 — The account's Zoom-provided numbers display setting. * `0` - Display the Zoom-provided numbers in the account's list of available call-out and call-in numbers in the Zoom Web Portal and Zoom client. * `1` - Display the Zoom-provided numbers in the Zoom Web Portal but the user must specify whether to use the numbers. * `2` - Delete all Zoom-provided numbers and **only** use internal numbers provided by carrier partners.

Example:

{
  "show_callout_internal_number": true,
  "show_zoom_provided_callout_countries": 0,
  "show_zoom_provided_numbers": 0
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> This account is not a master account. To get access to this API, enroll your account in the API Partner Plan and get it changed into a master account. <br> **Error Code:** `300` <br> Your account does not have the permission to make updates on this account. Only a master account can perform this action on a subaccount. <br> **Error Code:** `300` <br> Request failed because this account is not enrolled in SIP Connected Audio plan. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `2001` <br> Account does not exist: {accountId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rest/rate-limits/).

Assign SIP trunk configuration

  • Method: PATCH
  • Path: /accounts/{accountId}/sip_trunk/settings
  • Tags: SIP Connected Audio

Use this API to copy the Session Initiation Protocol (SIP) Connected Audio configurations applied on the master account and enable or disable those configurations on a subaccount.

With SIP-connected audio, Zoom establishes a SIP trunk (a network connection specifically designed to make and deliver phone calls) over a direct and private connection between the customer's network and the Zoom cloud. Meeting participants that dial into a meeting or have the meeting call them, and are On-Net from the perspective of the customers' IP telephony network, will be connected over this trunk rather than over the PSTN.

Prerequisites:

  • Pro or a higher account with SIP Connected Audio plan enabled.
  • A master account owner

Scopes: sip_trunk:master

Granular Scopes: sip_connected_audio:update:settings:master,sip_connected_audio:update:settings:admin

Rate Limit Label: LIGHT

Request Body

Content-Type: application/json
  • enable

    boolean — Assign or delete the SIP configuration: * `true` - Assign the master account's SIP configuration information to the subaccount. * `false` - Delete the subaccount's assigned SIP configuration. If you do **not** query this parameter, the API will **not** modify the subaccount's configuration.

  • enable_all_settings_from_master_account

    boolean — Whether to copy the master sccount's SIP trunk configuration to the subaccount. * `true` - Copy and **overwrite** the subaccount's current configuration with the master account's configuration. * `false` - If the subaccount's SIP trunk configuration exists, do **not** overwrite it. If you do not pass this parameter, the API will not clone the master account's SIP trunk configuration.

  • show_callout_internal_number

    boolean — If the value of this option is set to `true`, the call-out numbers provided by the Zoom carrier partners will be displayed in the account's list of available call-out numbers in the Zoom Web Portal and Zoom Client.

  • show_zoom_provided_callout_countries

    integer — If the value of this option is set to `0`, the call-out countries list provided by Zoom will be [displayed](https://support.zoom.us/hc/en-us/articles/200942859-Using-telephone-call-out) in the account's list of available call-out countries. If the value of this option is set to `1`, the Zoom provided call-out countries will be hidden from the user's account. If the value of this option is set to `2`, all Zoom provided countries will be deleted and only internal countries (provided by carrier partners) will be used.

  • show_zoom_provided_numbers

    integer, possible values: 0, 1, 2 — If the value of this option is set to `0`, the numbers provided by Zoom will be displayed in the account's list of available call-out and call-in numbers in the Zoom Web Portal and Zoom Client. If the value of this option is set to `1`, the Zoom provided numbers will be shown in the Zoom Web Portal but will not be used unless specified by the user. If the value of this option is set to `2`, all Zoom provided numbers will be deleted and only internal numbers (provided by carrier partners) will be used.

Example:

{
  "enable": true,
  "enable_all_settings_from_master_account": true,
  "show_callout_internal_number": false,
  "show_zoom_provided_callout_countries": 0,
  "show_zoom_provided_numbers": 0
}

Responses

Status: 204 **HTTP Status Code:** `204` **No Content** Configuration assigned successfully.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `2` <br> Your request to clone the SIP trunk settings has failed. <br> **Error Code:** `300` <br> Your account does not have the permission to make updates on this account. Only a master account can perform this action on a subaccount. <br> **Error Code:** `300` <br> Request failed because this account is not enrolled in SIP Connected Audio plan. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `2001` <br> Account does not exist: {accountId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rest/rate-limits/).

List SIP trunks

  • Method: GET
  • Path: /accounts/{accountId}/sip_trunk/trunks
  • Tags: SIP Connected Audio

List all the SIP trunks assigned to a master account or a sub account of the master account. To retrieve SIP trunks assigned to a sub account, provide the account ID of the sub account in the accountId path parameter. To retrieve SIP trunks of a master account, provide me as the value of the accountId path parameter.

Scopes: sip_trunk:master

Granular Scopes: sip_connected_audio:read:trunks:master,sip_connected_audio:read:trunks:admin

Responses

Status: 200 **HTTP Status Code:** `200` **OK** List of SIP Trunks returned.
Content-Type: application/json
  • sip_trunks

    array

    Items:

    • dnis

      string — DNIS of the SIP trunk.

    • id

      string — Unique identifier of the sip trunk.

    • name

      string — Name assigned to the SIP trunk.

    • number_prefix

      string — Prefix of the SIP Connected Audio phone number.

    • outbound_caller_id

      string — Outbound caller Id assigned to the trunk.

    • sip_server_address

      string — IP address or domain of the SIP trunk.

  • total_records

    integer — Total number of records returned.

Example:

{
  "sip_trunks": [
    {
      "dnis": "90001258",
      "id": "1",
      "name": "trunk1",
      "number_prefix": "0",
      "outbound_caller_id": "1",
      "sip_server_address": "192.168.0.10"
    }
  ],
  "total_records": 20
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Request failed because this account is not enrolled in SIP Connected Audio plan. <br> **Error Code:** `300` <br> Your account does not have the permission to make updates on this account. Only a master account can perform this action on a subaccount. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `2001` <br> Account does not exist: {accountId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rest/rate-limits/).

Assign SIP trunks

  • Method: POST
  • Path: /accounts/{accountId}/sip_trunk/trunks
  • Tags: SIP Connected Audio

Assign SIP trunks that are available on a master account to a subaccount.
<b>Prerequisites:</b>

  • The account making this API request must be a master account with API Partner Plan and SIP Connected Audio Plan.

Scopes: sip_trunk:master

Granular Scopes: sip_connected_audio:write:trunks:master

Request Body

Content-Type: application/json
  • sip_trunks

    array — Array of one or more SIP trunk objects.

    Items:

    • dnis

      string — The subaccount's DNIS. The prefix of the DNIS - the first five digits of the DNIS value - must match the DNIS prefix of the master account. To retrieve the DNIS prefix of a master account's SIP trunk, use the List SIP Trunks API and refer to the first five digits in the `dnis` value. For example, if the DNIS of the master account is 1888812345, the subaccount's DNIS must comprise of `18888` + `random_number`. The maximum allowed length of the DNIS is 8.

    • id

      string — Unique identifier of the SIP trunk that will be assigned to the subaccount. The value of this field can be retrieved by listing the SIP trunks of a master account using List SIP trunks API.

    • outbound_caller_id

      string — Assign an outbound caller ID to the trunk.

Example:

{
  "sip_trunks": [
    {
      "dnis": "90001258",
      "id": "1",
      "outbound_caller_id": "1"
    }
  ]
}

Responses

Status: 201 **HTTP Status Code:** `204` **No Content** SIP trunk assigned successfully.
Content-Type: application/json
  • sip_trunks

    array

    Items:

    • dnis

      string — DNIS - identifier for the SIP trunk enabled account.

    • id

      string — Unique identifier of the SIP trunk.

    • name

      string — Name of the SIP trunk.

    • number_prefix

      string — If the value of this field is `0`, it means that all the calls will be routed through this special line. All other values indicate the prefix of the phone number.

    • sip_server_address

      string — IP Address or domain of the SIP trunk.

Example:

{
  "sip_trunks": [
    {
      "dnis": "90001258",
      "id": "1",
      "name": "trunk1",
      "number_prefix": "0",
      "sip_server_address": "192.168.0.10"
    }
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Your account does not have the permission to make updates on this account. Only a master account can perform this action on a subaccount. <br> **Error Code:** `300` <br> Request failed because this account is not enrolled in SIP Connected Audio plan. <br> **Error Code:** `300` <br> Request failed because this subaccount's master account is missing SIP Trunk Configurations. <br> **Error Code:** `300` <br> One or more parameters provided in the `sip_trunks` object are invalid. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `2001` <br> Account does not exist: {accountId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rest/rate-limits/).

Delete a SIP trunk

  • Method: DELETE
  • Path: /accounts/{accountId}/sip_trunk/trunks/{trunkId}
  • Tags: SIP Connected Audio

Remove a subaccount's existing SIP trunk.

Prerequisites:

  • The account making this API request must be a master account with API Partner plan and SIP Connected Audio plan.

Scopes: sip_trunk:master

Granular Scopes: sip_connected_audio:delete:trunks:master

Responses

Status: 204 **HTTP Status Code:** `204` **No Content** SIP Trunk deleted.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Request failed because this account is not enrolled in SIP Connected Audio plan. <br> **Error Code:** `300` <br> Your account does not have the permission to make updates on this account. Only a master account can perform this action on a subaccount. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `2001` <br> Account does not exist: {accountId}. <br> **Error Code:** `2301` <br> SIP Trunk does not exist: {trunkId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rest/rate-limits/).

List SIP phones

  • Method: GET
  • Path: /accounts/{accountId}/sip_phones/phones
  • Tags: SIP Phone

List SIP phones on an account.

Zoom's Phone System Integration (PSI), also referred as SIP phones, enables an organization to leverage the Zoom client to complete a Softphone registration to supported premise based PBX system. End users will have the ability to have Softphone functionality within a single client while maintaining a comparable interface to Zoom Phone.

Prerequisites:

  • Currently only supported on Cisco and Avaya PBX systems.
  • User must enable SIP Phone Integration by contacting the Sales team.

Scopes: sip_phone:master

Granular Scopes: sip_phone:read:list_sip_phones:master

Rate Limit Label: MEDIUM

Responses

Status: 200 **HTTP Status Code:** `200` SIP phones listed successfully. **Error Code:** `200` Permission missing. Enable SIP phone integration by contacting a Zoom admin first.
Content-Type: application/json
  • next_page_token

    string

  • page_size

    integer, default: 30 — The number of records returned within a single API call.

  • phones

    array — SIP phones object.

    Items:

    • authorization_name

      string — The authorization name of the user that is registered for SIP phone.

    • display_number

      string — The displayed phone number associated with the user can be either in extension format or E.164 format. You can specify the displayed number when the dialable number differs from the SIP username.

    • domain

      string — The name or IP address of your provider's SIP domain.

    • password

      string — The password generated for the user in the SIP account.

    • phone_id

      string — The SIP phone ID.

    • registration_expire_time

      integer — The number of minutes after which the SIP registration of the Zoom client user will expire, and the client will auto register to the SIP server.

    • server

      object — Defined a set of basic components of SIP network architecture, including proxy_server, register_server and transport_protocol.

      • proxy_server

        string — The IP address of the proxy server for SIP requests. Note that if you are using the UDP transport protocol, the default port is 5060. If you are using UDP with a different port number, that port number must be included with the IP address. If you are not using a proxy server, this value can be the same as the Register Server.

      • register_server

        string — The IP address of the server that accepts REGISTER requests. Note that if you are using the UDP transport protocol, the default port is 5060. If you are using UDP with a different port number, that port number must be included with the IP address.

      • transport_protocol

        string, possible values: "UDP", "TCP", "TLS", "AUTO" — Protocols supported by the SIP provider. The value must be either `UDP`, `TCP`, `TLS`, `AUTO`.

    • server_2

      object — Defined a set of basic components of SIP network architecture, including proxy_server, register_server and transport_protocol.

      • proxy_server

        string — The IP address of the proxy server for SIP requests. Note that if you are using the UDP transport protocol, the default port is 5060. If you are using UDP with a different port number, that port number must be included with the IP address. If you are not using a proxy server, this value can be the same as the Register Server.

      • register_server

        string — The IP address of the server that accepts REGISTER requests. Note that if you are using the UDP transport protocol, the default port is 5060. If you are using UDP with a different port number, that port number must be included with the IP address.

      • transport_protocol

        string, possible values: "UDP", "TCP", "TLS", "AUTO" — Protocols supported by the SIP provider. The value must be either `UDP`, `TCP`, `TLS`, `AUTO`.

    • server_3

      object — Defined a set of basic components of SIP network architecture, including proxy_server, register_server and transport_protocol.

      • proxy_server

        string — The IP address of the proxy server for SIP requests. Note that if you are using the UDP transport protocol, the default port is 5060. If you are using UDP with a different port number, that port number must be included with the IP address. If you are not using a proxy server, this value can be the same as the Register Server.

      • register_server

        string — The IP address of the server that accepts REGISTER requests. Note that if you are using the UDP transport protocol, the default port is 5060. If you are using UDP with a different port number, that port number must be included with the IP address.

      • transport_protocol

        string, possible values: "UDP", "TCP", "TLS", "AUTO" — Protocols supported by the SIP provider. The value must be either `UDP`, `TCP`, `TLS`, `AUTO`.

    • user_email

      string, format: email — The email address of the user to associate with the SIP Phone. Can add `.pc`, `.mobile`, `.pad` at the end of the email (for example, `user@example.com.pc`) to add accounts for different platforms for the same user.

    • user_name

      string — The phone number associated with the user in the SIP account.

    • voice_mail

      string — The number to dial for checking voicemail.

Example:

{
  "next_page_token": "Tva2CuIdTgsv8wAnhyAdU3m06Y2HuLQtlh3",
  "page_size": 30,
  "phones": [
    {
      "authorization_name": "testname",
      "domain": "example.com",
      "phone_id": "123456",
      "password": "apassword1",
      "registration_expire_time": 60,
      "user_email": "jchill@example.com",
      "user_name": "Jill Chill",
      "voice_mail": "4000",
      "display_number": "5551110105",
      "server": {
        "proxy_server": "192.0.2.2",
        "register_server": "192.0.2.2",
        "transport_protocol": "UDP"
      },
      "server_2": {
        "proxy_server": "192.0.2.2",
        "register_server": "192.0.2.2",
        "transport_protocol": "UDP"
      },
      "server_3": {
        "proxy_server": "192.0.2.2",
        "register_server": "192.0.2.2",
        "transport_protocol": "UDP"
      }
    }
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request
Status: 401 **HTTP Status Code:** `401` <br> Unauthorized **Error Code:** `124` <br> Invalid access token. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `3306` <br> No permission. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rate-limits/).

Enable SIP phone

  • Method: POST
  • Path: /accounts/{accountId}/sip_phones/phones
  • Tags: SIP Phone

Enable a user to use a SIP phone.

Zoom's Phone System Integration (PSI), also referred as SIP phones, enables an organization to leverage the Zoom client to complete a softphone registration to supported premise based PBX system. End users will have the ability to have softphone functionality within a single client while maintaining a comparable interface to Zoom Phone.

Prerequisites:

  • Currently only supported on Cisco and Avaya PBX systems.
  • The account owner or account admin must first enable SIP Phone Integration by contacting the Sales team.

Scopes: sip_phone:master

Granular Scopes: sip_phone:write:sip_phone:master

Rate Limit Label: LIGHT

Request Body

Content-Type: application/json
  • authorization_name (required)

    string — The authorization name of the user that is registered for SIP phone.

  • domain (required)

    string — The name or IP address of your provider's SIP domain, such as example.com.

  • password (required)

    string — The password generated for the user in the SIP account.

  • server (required)

    object — Defined a set of basic components of SIP network architecture, including proxy_server, register_server and transport_protocol.

    • proxy_server

      string — The IP address of the proxy server for SIP requests. Note that if you are using the UDP transport protocol, the default port is 5060. If you are using UDP with a different port number, that port number must be included with the IP address. If you are not using a proxy server, this value can be the same as the Register Server.

    • register_server

      string — The IP address of the server that accepts REGISTER requests. Note that if you are using the UDP transport protocol, the default port is 5060. If you are using UDP with a different port number, that port number must be included with the IP address.

    • transport_protocol

      string, possible values: "UDP", "TCP", "TLS", "AUTO" — Protocols supported by the SIP provider. The value must be either `UDP`, `TCP`, `TLS`, `AUTO`.

  • user_email (required)

    string, format: email — The email address of the user to associate with the SIP Phone. Can add `.pc`, `.mobile`, `.pad` at the end of the email, such as `user@example.com.pc`, to add accounts for different platforms for the same user.

  • user_name (required)

    string — The phone number associated with the user in the SIP account.

  • display_number

    string — The displayed phone number associated with the user can be either in extension format or E.164 format. You can specify the displayed number when the dialable number differs from the SIP username.

  • registration_expire_time

    integer, default: 60 — The number of minutes after which the SIP registration of the Zoom client user expires, and the client will auto register to the SIP server.

  • server_2

    object — Defined a set of basic components of SIP network architecture, including proxy_server, register_server and transport_protocol.

    • proxy_server

      string — The IP address of the proxy server for SIP requests. Note that if you are using the UDP transport protocol, the default port is 5060. If you are using UDP with a different port number, that port number must be included with the IP address. If you are not using a proxy server, this value can be the same as the Register Server.

    • register_server

      string — The IP address of the server that accepts REGISTER requests. Note that if you are using the UDP transport protocol, the default port is 5060. If you are using UDP with a different port number, that port number must be included with the IP address.

    • transport_protocol

      string, possible values: "UDP", "TCP", "TLS", "AUTO" — Protocols supported by the SIP provider. The value must be either `UDP`, `TCP`, `TLS`, `AUTO`.

  • server_3

    object — Defined a set of basic components of SIP network architecture, including proxy_server, register_server and transport_protocol.

    • proxy_server

      string — The IP address of the proxy server for SIP requests. Note that if you are using the UDP transport protocol, the default port is 5060. If you are using UDP with a different port number, that port number must be included with the IP address. If you are not using a proxy server, this value can be the same as the Register Server.

    • register_server

      string — The IP address of the server that accepts REGISTER requests. Note that if you are using the UDP transport protocol, the default port is 5060. If you are using UDP with a different port number, that port number must be included with the IP address.

    • transport_protocol

      string, possible values: "UDP", "TCP", "TLS", "AUTO" — Protocols supported by the SIP provider. The value must be either `UDP`, `TCP`, `TLS`, `AUTO`.

  • voice_mail

    string — The number to dial for checking voicemail.

Example:

{
  "authorization_name": "testname",
  "domain": "example.com",
  "password": "123456",
  "registration_expire_time": 60,
  "user_email": "jchill@example.com",
  "user_name": "Jill Chill",
  "voice_mail": "4000",
  "display_number": "5551110105",
  "server": {
    "proxy_server": "192.0.2.2",
    "register_server": "192.0.2.2",
    "transport_protocol": "UDP"
  },
  "server_2": {
    "proxy_server": "192.0.2.2",
    "register_server": "192.0.2.2",
    "transport_protocol": "UDP"
  },
  "server_3": {
    "proxy_server": "192.0.2.2",
    "register_server": "192.0.2.2",
    "transport_protocol": "UDP"
  }
}

Responses

Status: 201 **HTTP Status Code:** `201` SIP phone created.
Content-Type: application/json
  • authorization_name

    string — The authorization name of the user that is registered for SIP phone.

  • display_number

    string — The displayed phone number associated with the user can be either in extension format or E.164 format. You can specify the displayed number when the dialable number differs from the SIP username.

  • domain

    string — The name or IP address of your provider's SIP domain (example: CDC.WEB).

  • password

    string — The password generated for the user in the SIP account.

  • phone_id

    string — The SIP phone ID.

  • registration_expire_time

    integer, default: 60 — The number of minutes after which the SIP registration of the Zoom client user will expire, and the client will auto register to the SIP server.

  • server

    object — Defined a set of basic components of SIP network architecture, including proxy_server, register_server and transport_protocol.

    • proxy_server

      string — The IP address of the proxy server for SIP requests. Note that if you are using the UDP transport protocol, the default port is 5060. If you are using UDP with a different port number, that port number must be included with the IP address. If you are not using a proxy server, this value can be the same as the Register Server.

    • register_server

      string — The IP address of the server that accepts REGISTER requests. Note that if you are using the UDP transport protocol, the default port is 5060. If you are using UDP with a different port number, that port number must be included with the IP address.

    • transport_protocol

      string, possible values: "UDP", "TCP", "TLS", "AUTO" — Protocols supported by the SIP provider. The value must be either `UDP`, `TCP`, `TLS`, `AUTO`.

  • server_2

    object — Defined a set of basic components of SIP network architecture, including proxy_server, register_server and transport_protocol.

    • proxy_server

      string — The IP address of the proxy server for SIP requests. Note that if you are using the UDP transport protocol, the default port is 5060. If you are using UDP with a different port number, that port number must be included with the IP address. If you are not using a proxy server, this value can be the same as the Register Server.

    • register_server

      string — The IP address of the server that accepts REGISTER requests. Note that if you are using the UDP transport protocol, the default port is 5060. If you are using UDP with a different port number, that port number must be included with the IP address.

    • transport_protocol

      string, possible values: "UDP", "TCP", "TLS", "AUTO" — Protocols supported by the SIP provider. The value must be either `UDP`, `TCP`, `TLS`, `AUTO`.

  • server_3

    object — Defined a set of basic components of SIP network architecture, including proxy_server, register_server and transport_protocol.

    • proxy_server

      string — The IP address of the proxy server for SIP requests. Note that if you are using the UDP transport protocol, the default port is 5060. If you are using UDP with a different port number, that port number must be included with the IP address. If you are not using a proxy server, this value can be the same as the Register Server.

    • register_server

      string — The IP address of the server that accepts REGISTER requests. Note that if you are using the UDP transport protocol, the default port is 5060. If you are using UDP with a different port number, that port number must be included with the IP address.

    • transport_protocol

      string, possible values: "UDP", "TCP", "TLS", "AUTO" — Protocols supported by the SIP provider. The value must be either `UDP`, `TCP`, `TLS`, `AUTO`.

  • user_email

    string, format: email — The email address of the user to associate with the SIP Phone. Can add `.pc`, `.mobile`, `.pad` at the end of the email (for example, `user@example.com.mac`) to add accounts for different platforms for the same user.

  • user_name

    string — The phone number associated with the user in the SIP account.

  • voice_mail

    string — The number to dial for checking voicemail.

Example:

{
  "phone_id": "123456",
  "authorization_name": "testname",
  "domain": "example.com",
  "password": "123456",
  "registration_expire_time": 60,
  "user_email": "jchill@example.com",
  "user_name": "Jill Chill",
  "voice_mail": "4000",
  "display_number": "5551110105",
  "server": {
    "proxy_server": "192.0.2.2",
    "register_server": "192.0.2.2",
    "transport_protocol": "UDP"
  },
  "server_2": {
    "proxy_server": "192.0.2.2",
    "register_server": "192.0.2.2",
    "transport_protocol": "UDP"
  },
  "server_3": {
    "proxy_server": "192.0.2.2",
    "register_server": "192.0.2.2",
    "transport_protocol": "UDP"
  }
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> Permission missing. Enable SIP phone integration by contacting a Zoom admin first.<br> <br> **Error Code:** `300` <br> SIP phone with the same email already exists. <br>
Status: 401 **HTTP Status Code:** `401` <br> Unauthorized **Error Code:** `124` <br> Invalid access token. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `3306` <br> No permission. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User {email} not exist or not belong to this account. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rate-limits/).

Delete SIP phone

  • Method: DELETE
  • Path: /accounts/{accountId}/sip_phones/phones/{phoneId}
  • Tags: SIP Phone

Delete a Zoom account's SIP phone.

Prerequisites:

  • Currently only supported on Cisco and Avaya PBX systems.
  • The user must enable SIP Phone Integration by contacting the Zoom Sales team.

Scopes: sip_phone:master

Granular Scopes: sip_phone:delete:sip_phone:master

Rate Limit Label: LIGHT

Responses

Status: 204 **HTTP Status Code:** `204` SIP phone deleted.
Status: 401 **HTTP Status Code:** `401` <br> Unauthorized **Error Code:** `124` <br> Invalid access token. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `3336` <br> No permission. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `2305` <br> SIP phone does not exist: {phone_id}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rest/rate-limits/).

Update SIP phone

  • Method: PATCH
  • Path: /accounts/{accountId}/sip_phones/phones/{phoneId}
  • Tags: SIP Phone

Update the information of a specific SIP phone on a Zoom account.

Zoom's Phone System Integration (PSI), also referred as SIP phones, lets an organization leverage the Zoom client to complete a softphone registration to supported premise based PBX system. End users can have softphone functionality within a single client while maintaining a comparable interface to a Zoom Phone.

Prerequisites:

  • Currently only supported on Cisco and Avaya PBX systems.
  • The account owner or account admin must first enable SIP Phone Integration by contacting the Sales team.

Scopes: sip_phone:master

Granular Scopes: sip_phone:update:sip_phone:master

Rate Limit Label: LIGHT

Request Body

Content-Type: application/json
  • authorization_name

    string — The authorization name of the user that is registered for SIP phone.

  • display_number

    string — The displayed phone number associated with the user can be either in extension format or E.164 format. You can specify the displayed number when the dialable number differs from the SIP username.

  • domain

    string — The name or IP address of your provider's SIP domain, such as example.com.

  • password

    string — The password generated for the user in the SIP account.

  • registration_expire_time

    integer, default: 60 — The number of minutes after which the SIP registration of the Zoom client user will expire, and the client will auto register to the SIP server.

  • server

    object — Defined a set of basic components of SIP network architecture, including proxy_server, register_server and transport_protocol.

    • proxy_server

      string — The IP address of the proxy server for SIP requests. Note that if you are using the UDP transport protocol, the default port is 5060. If you are using UDP with a different port number, that port number must be included with the IP address. If you are not using a proxy server, this value can be the same as the Register Server.

    • register_server

      string — The IP address of the server that accepts REGISTER requests. Note that if you are using the UDP transport protocol, the default port is 5060. If you are using UDP with a different port number, that port number must be included with the IP address.

    • transport_protocol

      string, possible values: "UDP", "TCP", "TLS", "AUTO" — Protocols supported by the SIP provider. The value must be either `UDP`, `TCP`, `TLS`, `AUTO`.

  • server_2

    object — Defined a set of basic components of SIP network architecture, including proxy_server, register_server and transport_protocol.

    • proxy_server

      string — The IP address of the proxy server for SIP requests. Note that if you are using the UDP transport protocol, the default port is 5060. If you are using UDP with a different port number, that port number must be included with the IP address. If you are not using a proxy server, this value can be the same as the Register Server.

    • register_server

      string — The IP address of the server that accepts REGISTER requests. Note that if you are using the UDP transport protocol, the default port is 5060. If you are using UDP with a different port number, that port number must be included with the IP address.

    • transport_protocol

      string, possible values: "UDP", "TCP", "TLS", "AUTO" — Protocols supported by the SIP provider. The value must be either `UDP`, `TCP`, `TLS`, `AUTO`.

  • server_3

    object — Defined a set of basic components of SIP network architecture, including proxy_server, register_server and transport_protocol.

    • proxy_server

      string — The IP address of the proxy server for SIP requests. Note that if you are using the UDP transport protocol, the default port is 5060. If you are using UDP with a different port number, that port number must be included with the IP address. If you are not using a proxy server, this value can be the same as the Register Server.

    • register_server

      string — The IP address of the server that accepts REGISTER requests. Note that if you are using the UDP transport protocol, the default port is 5060. If you are using UDP with a different port number, that port number must be included with the IP address.

    • transport_protocol

      string, possible values: "UDP", "TCP", "TLS", "AUTO" — Protocols supported by the SIP provider. The value must be either `UDP`, `TCP`, `TLS`, `AUTO`.

  • user_name

    string — The phone number associated with the user in the SIP account.

  • voice_mail

    string — The number to dial for checking voicemail.

Example:

{
  "authorization_name": "testname",
  "domain": "example.com",
  "password": "123456",
  "registration_expire_time": 60,
  "user_name": "Jill Chill",
  "voice_mail": "4000",
  "display_number": "5551110105",
  "server": {
    "proxy_server": "192.0.2.2",
    "register_server": "192.0.2.2",
    "transport_protocol": "UDP"
  },
  "server_2": {
    "proxy_server": "192.0.2.2",
    "register_server": "192.0.2.2",
    "transport_protocol": "UDP"
  },
  "server_3": {
    "proxy_server": "192.0.2.2",
    "register_server": "192.0.2.2",
    "transport_protocol": "UDP"
  }
}

Responses

Status: 204 **Status Code:** `204` SIP phone updated.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request
Status: 401 **HTTP Status Code:** `401` <br> Unauthorized **Error Code:** `124` <br> Invalid access token. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `3336` <br> No permission. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `2305` <br> SIP phone does not exist: {phone_id}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rate-limits/).

List an account's meeting or webinar summaries

  • Method: GET
  • Path: /accounts/{accountId}/meetings/meeting_summaries
  • Tags: Summaries

Retrieve a list of all meeting or webinar summaries available for an account.

Prerequisites

  • The host must have a Pro, Business, or higher subscription plan.
  • For meetings - the host's Meeting Summary with AI Companion user setting must be enabled.
  • For webinars - the host's Webinar Summary with AI Companion user setting must be enabled.
  • End-to-End Encrypted (E2EE) meetings do not support summaries.

Learn more about enabling or disabling AI Companion meeting summaries.

Scopes: meeting_summary:master

Granular Scopes: meeting:read:list_summaries:master

Rate Limit Label: MEDIUM

Responses

Status: 200 **HTTP Status Code:** `200` Successfully listed meeting summaries of an account.
Content-Type: application/json
  • from

    string, format: date-time — The start date, in `yyyy-MM-dd'T'HH:mm:ss'Z'` UTC format, used to retrieve the meeting summaries' creation date range.

  • next_page_token

    string — Use the next page token to paginate through a large set of results. The next page token returns whenever the set of available results exceeds the current page size. This token's expiration period is 15 minutes.

  • page_size

    integer, default: 30 — The number of records returned with a single API call.

  • summaries

    array — List of meeting summary objects.

    Items:

    • meeting_end_time

      string, format: date-time — The meeting's end date and time.

    • meeting_host_email

      string, format: email — The meeting host's email address.

    • meeting_host_id

      string — The ID of the user who is set as the meeting host.

    • meeting_id

      integer, format: int64 — [Meeting ID](https://support.zoom.us/hc/en-us/articles/201362373-What-is-a-Meeting-ID-) - the meeting's unique identifier in **long** format, represented as int64 data type in JSON, also known as the meeting number.

    • meeting_start_time

      string, format: date-time — The meeting's start date and time.

    • meeting_topic

      string — Meeting topic.

    • meeting_uuid

      string — Unique meeting ID. Each meeting instance generates its own meeting UUID. After a meeting ends, a new UUID is generated for the next instance of the meeting. Retrieve a list of UUIDs from past meeting instances using the [**List past meeting instances**](/docs/api-reference/zoom-api/methods#operation/pastMeetings) API. [Double encode](/docs/api/using-zoom-apis/#meeting-id-and-uuid) your UUID when using it for API calls if the UUID begins with a `/` or contains `//` in it.

    • summary_created_time

      string, format: date-time — The date and time when the meeting summary was created.

    • summary_end_time

      string, format: date-time — The summary's end date and time.

    • summary_last_modified_time

      string, format: date-time — The date and time when the meeting summary was last modified.

    • summary_start_time

      string, format: date-time — The summary's start date and time.

  • to

    string, format: date-time — The end date, in `yyyy-MM-dd'T'HH:mm:ss'Z'` UTC format, used to retrieve the meeting summaries' creation date range.

Example:

{
  "page_size": 30,
  "next_page_token": "Tva2CuIdTgsv8wAnhyAdU3m06Y2HuLQtlh3",
  "from": "2023-10-19T07:00:00Z",
  "to": "2023-10-20T07:00:00Z",
  "summaries": [
    {
      "meeting_host_id": "30R7kT7bTIKSNUFEuH_Qlg",
      "meeting_host_email": "jchill@example.com",
      "meeting_uuid": "aDYlohsHRtCd4ii1uC2+hA==",
      "meeting_id": 97763643886,
      "meeting_topic": "My Meeting",
      "meeting_start_time": "2019-07-15T23:24:52Z",
      "meeting_end_time": "2020-07-15T23:30:19Z",
      "summary_start_time": "2019-07-15T23:24:52Z",
      "summary_end_time": "2020-07-15T23:30:19Z",
      "summary_created_time": "2019-07-15T23:24:52Z",
      "summary_last_modified_time": "2020-07-15T23:30:19Z"
    }
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `3161` <br> Meeting hosting and scheduling capabilities are not allowed for your user account. <br> **Error Code:** `3000` <br> Meeting summary disabled. To enable this feature, enable the **Meeting Summary with AI Companion** setting in the Zoom web portal's **Settings** interface. <br> **Error Code:** `200` <br> Only available for Paid account. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `2305` <br> Access to meeting summaries is restricted by account settings. To use this feature, disable the **Only share meeting summaries by email** setting in the **Account Settings** page of the Zoom web portal. <br> **Error Code:** `2305` <br> Access to meeting summaries is restricted to specific IP address ranges. To allow access, go to the **Settings** page in the Zoom web portal and update the **IP address access control** setting. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rest/rate-limits/).

Get a meeting or webinar summary

  • Method: GET
  • Path: /accounts/{accountId}/meetings/{meetingId}/meeting_summary
  • Tags: Summaries

Retrieve the summary of a meeting or webinar.

Prerequisites

  • The host must have a Pro, Business, or higher subscription plan.
  • For meetings - the host's Meeting Summary with AI Companion user setting must be enabled.
  • For webinars - the host's Webinar Summary with AI Companion user setting must be enabled.
  • End-to-End Encrypted (E2EE) meetings do not support summaries.

Learn more about enabling or disabling AI Companion meeting summaries.

Scopes: meeting_summary:master

Granular Scopes: meeting:read:summary:master

Rate Limit Label: LIGHT

Responses

Status: 200 **HTTP Status Code:** `200` Meeting summary object returned.
Content-Type: application/json
  • edited_summary

    object — The edited summary content.

    • next_steps

      array — The user edited next steps.

      Items:

      string — The user edited next step.

    • summary_details

      string — The user edited summary details.

    • summary_overview

      string — The user edited summary overview.

  • meeting_end_time

    string, format: date-time — The meeting's end date and time.

  • meeting_host_email

    string, format: email — The meeting host's email address.

  • meeting_host_id

    string — The ID of the user who is set as the meeting host.

  • meeting_id

    integer, format: int64 — [The meeting ID](https://support.zoom.us/hc/en-us/articles/201362373-What-is-a-Meeting-ID-) The meeting's unique identifier in **long** format, represented as int64 data type in JSON. Also known as the meeting number.

  • meeting_start_time

    string, format: date-time — The meeting's start date and time.

  • meeting_topic

    string — The meeting topic.

  • meeting_uuid

    string — The unique meeting ID. Each meeting instance generates its own meeting UUID. After a meeting ends, a new UUID is generated for the next instance of the meeting. Use the [**List past meeting instances**](/docs/api-reference/zoom-api/methods#operation/pastMeetings) API to retrieve a list of UUIDs from past meeting instances. [Double encode](/docs/api/rest/using-zoom-apis/#meeting-id-and-uuid) your UUID when using it for API calls if the UUID begins with a `/` or contains `//` in it.

  • next_steps

    array — The next steps.

    Items:

    string — The next step.

  • summary_content

    string — The complete meeting summary in Markdown format. This unified field is used for all summaries. For compatibility, the legacy fields `summary_overview`, `summary_details`, `next_steps`, and `edited_summary` are still returned, but are deprecated and will not be supported in the future.

  • summary_created_time

    string, format: date-time — The date and time when the meeting summary was created.

  • summary_details

    array — The summary content details.

    Items:

    • label

      string — The summary label.

    • summary

      string — The summary content.

  • summary_doc_url

    string, format: uri — The URL to view the full summary document in Zoom Docs.

  • summary_end_time

    string, format: date-time — The summary's end date and time.

  • summary_last_modified_time

    string, format: date-time — The date and time when the meeting summary was last modified.

  • summary_last_modified_user_email

    string — The user email of the user who last modified the meeting summary.

  • summary_last_modified_user_id

    string — The user ID of the user who last modified the meeting summary.

  • summary_overview

    string — The summary overview.

  • summary_start_time

    string, format: date-time — The summary's start date and time.

  • summary_title

    string — The summary title.

Example:

{
  "meeting_host_id": "30R7kT7bTIKSNUFEuH_Qlg",
  "meeting_host_email": "jchill@example.com",
  "meeting_uuid": "aDYlohsHRtCd4ii1uC2+hA==",
  "meeting_id": 97763643886,
  "meeting_topic": "My Meeting",
  "meeting_start_time": "2019-07-15T23:24:52Z",
  "meeting_end_time": "2020-07-15T23:30:19Z",
  "summary_start_time": "2019-07-15T23:24:52Z",
  "summary_end_time": "2020-07-15T23:30:19Z",
  "summary_created_time": "2019-07-15T23:24:52Z",
  "summary_last_modified_time": "2020-07-15T23:30:19Z",
  "summary_last_modified_user_id": "Lfi0BlBQTM-bbktE9BRUvA",
  "summary_last_modified_user_email": "user@example.com",
  "summary_title": "Meeting summary for my meeting",
  "summary_content": "## Key takeaways\n- Mobile app performance issues are affecting user retention.\n- New onboarding flow received positive feedback from beta testers.\n- Need to prioritize accessibility improvements.\n- Customer support response time has improved by 25%.\n\n## Discussed topics\n### Mobile App Performance\nDiscussion of recent performance metrics and user complaints\n- **Details**\n    - Sarah (Product): Reports of app crashes increased 15% this month\n    - Mike (Engineering): Memory optimization needed in latest release\n    - Tom (QA): Identified memory leak in photo upload feature\n- **Conclusion**\n    - Implement performance monitoring tools\n    - Prioritize memory optimization in next sprint\n\n### Onboarding Flow\nReview of beta testing results for new user onboarding\n- **Details**\n    - Rachel (UX): 90% completion rate in beta testing\n    - David (Product): Positive feedback on simplified registration\n- **Conclusion**\n    - Ready for full rollout next month\n    - Need to monitor analytics post-launch\n\n### Accessibility Compliance\nDiscussion of current accessibility status and needed improvements\n- **Details**\n    - Lisa (Design): Screen reader compatibility issues identified\n    - John (Engineering): WCAG compliance at 80%\n- **Conclusion**\n    - Create accessibility improvement roadmap\n    - Schedule external audit\n\n## Challenges\n* Resource constraints for performance optimization\n* Integration testing environment stability issues\n* Lack of accessibility expertise in the team\n\n## Action items\n- **Sarah**\n  - Prepare performance monitoring implementation plan\n  - Schedule follow-up meeting with engineering team\n- **Mike**\n  - Investigate memory leak fix\n  - Document performance optimization guidelines\n- **Lisa**\n  - Create accessibility improvement proposal\n  - Research accessibility testing tools\n- **Rachel**\n  - Prepare onboarding analytics dashboard\n  - Document beta testing findings",
  "summary_doc_url": "https://docs.zoom.us/doc/1aBcDeFgHiJkLmNoPqRsTu"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> Only available for Paid account. <br> **Error Code:** `300` <br> Invalid meeting ID. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `2305` <br> Access to meeting summaries is restricted by account settings. To use this feature, disable the **Only share meeting summaries by email** setting in the **Account Settings** page of the Zoom web portal. <br> **Error Code:** `2305` <br> Access to meeting summaries is restricted to specific IP address ranges. To allow access, go to the **Settings** page in the Zoom web portal and update the **IP address access control** setting. <br> **Error Code:** `2305` <br> The meeting summary has been moved to Trash and cannot be accessed. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Meeting does not exist: {meetingId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rate-limits/).

Delete a meeting or webinar summary

  • Method: DELETE
  • Path: /accounts/{accountId}/meetings/{meetingId}/meeting_summary
  • Tags: Summaries

Delete the summary of a meeting or webinar.

Prerequisites

  • The host must have a Pro, Business, or higher subscription plan.
  • For meetings - the host's Meeting Summary with AI Companion user setting must be enabled.
  • For webinars - the host's Webinar Summary with AI Companion user setting must be enabled.
  • End-to-End Encrypted (E2EE) meetings do not support summaries.

Scopes: meeting_summary:master

Granular Scopes: meeting:delete:summary:master

Rate Limit Label: LIGHT

Responses

Status: 204 **HTTP Status Code:** `204` Meeting summary deleted.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> Only available for Paid account. <br> **Error Code:** `300` <br> Invalid meeting ID. <br> **Error Code:** `2313` <br> Failed to delete meeting summary. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `2305` <br> Access to meeting summaries is restricted by account settings. To use this feature, disable the **Only share meeting summaries by email** setting in the **Account Settings** page of the Zoom web portal. <br> **Error Code:** `2305` <br> Access to meeting summaries is restricted to specific IP address ranges. To allow access, go to the **Settings** page in the Zoom web portal and update the **IP address access control** setting. <br> **Error Code:** `2305` <br> The meeting summary has been moved to Trash and cannot be accessed. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Meeting does not exist: {meetingId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rate-limits/).

Get a meeting survey

  • Method: GET
  • Path: /accounts/{accountId}/meetings/{meetingId}/survey
  • Tags: Surveys

Display information about a meeting survey. Prerequisites: * The host has a Pro license. * The Meeting Survey feature is enabled on the host's account. * The meeting must be a scheduled meeting. Instant meetings do not have survey features enabled.

Scopes: meeting:master

Granular Scopes: meeting:read:survey:master

Rate Limit Label: LIGHT

Responses

Status: 200 **HTTP Status Code:** `200` Meeting survey object returned.
Content-Type: application/json
  • custom_survey

    object — Information about the customized meeting survey.

    • anonymous

      boolean, default: false — Allow participants to anonymously answer survey questions. This value defaults to `true`.

    • feedback

      string — The survey's feedback, up to 320 characters. This value defaults to `Thank you so much for taking the time to complete the survey. Your feedback really makes a difference.`.

    • numbered_questions

      boolean, default: false — Whether to display the number in the question name. This value defaults to `true`.

    • questions

      array — Information about the meeting survey's questions.

      Items:

      • answer_max_character

        integer — The allowed maximum number of characters. This field only applies to `short_answer` and `long_answer` questions. * For `short_answer` question, a maximum of 500 characters. * For `long_answer` question, a maximum of 2,000 characters.

      • answer_min_character

        integer — The allowed minimum number of characters. This field only applies to `short_answer` and `long_answer` questions. You must provide at least a **one** character minimum value.

      • answer_required

        boolean, default: false — Whether participants must answer the question. * `true` - The participant must answer the question. * `false` - The participant does not need to answer the question. This value defaults to `false`.

      • answers

        array — The survey question's available answers. This field requires a **minimum** of two answers. * For `single` and `multiple` questions, you can only provide a maximum of 50 answers. * For `matching` polls, you can only provide a maximum of 16 answers. * For `rank_order` polls, you can only provide a maximum of seven answers.

        Items:

        string

      • name

        string — The survey question, up to 420 characters.

      • prompts

        array — Information about the prompt questions. This field only applies to `matching` and `rank_order` questions. You **must** provide a minimum of two prompts, up to a maximum of 10 prompts.

        Items:

        • prompt_question

          string — The question prompt's title.

      • rating_max_label

        string — The high score label used for the `rating_max_value` field, up to 50 characters. This field only applies to the `rating_scale` survey.

      • rating_max_value

        integer — The rating scale's maximum value, up to a maximum value of 10. This field only applies to the `rating_scale` survey.

      • rating_min_label

        string — The low score label used for the `rating_min_value` field, up to 50 characters. This field only applies to the `rating_scale` survey.

      • rating_min_value

        integer — The rating scale's minimum value. This value cannot be less than zero. This field only applies to the `rating_scale` survey.

      • show_as_dropdown

        boolean, default: false — Whether to display the radio selection as a drop-down box. * `true` - Show as a drop-down box. * `false` - Do not show as a drop-down box. This value defaults to `false`.

      • type

        string, possible values: "single", "multiple", "matching", "rank_order", "short_answer", "long_answer", "fill_in_the_blank", "rating_scale" — The survey's question and answer type. * `single` - Single choice. * `multiple` - Multiple choice. * `matching` - Matching. * `rank_order` - Rank order * `short_answer` - Short answer * `long_answer` - Long answer. * `fill_in_the_blank` - Fill in the blank * `rating_scale` - Rating scale.

    • show_question_type

      boolean, default: false — Whether to display the question type in the question name. This value defaults to `false`.

    • title

      string — The survey's title, up to 64 characters.

  • show_in_the_browser

    boolean, default: true — Whether the **Show in the browser when the meeting ends** option is enabled. * `true` - Enabled. * `false` - Disabled. This value defaults to `true`.

  • third_party_survey

    string — The link to the third party meeting survey.

Example:

{
  "custom_survey": {
    "title": "Learn something new",
    "anonymous": false,
    "numbered_questions": false,
    "show_question_type": false,
    "feedback": "Thank you so much for taking the time to complete the survey. Your feedback really makes a difference.",
    "questions": [
      {
        "name": "How useful was this meeting?",
        "type": "single",
        "answer_required": false,
        "show_as_dropdown": false,
        "answers": [
          "Extremely useful"
        ],
        "prompts": [
          {
            "prompt_question": "How are you?"
          }
        ],
        "answer_min_character": 1,
        "answer_max_character": 200,
        "rating_min_value": 1,
        "rating_max_value": 4,
        "rating_min_label": "Not likely",
        "rating_max_label": "Extremely Likely"
      }
    ]
  },
  "show_in_the_browser": true,
  "third_party_survey": "https://example.com"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Invalid meeting ID. <br> **Error Code:** `3000` <br> Cannot access webinar information. <br> **Error Code:** `3000` <br> Meeting survey disabled. To enable this feature, enable the "Meeting Survey" setting in the Zoom web portal's "Settings" interface. <br> **Error Code:** `3161` <br> Meeting hosting and scheduling capabilities are not allowed for your user account. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `300` <br> Meeting ID does not exist. <br> **Error Code:** `3001` <br> Meeting does not exist: {meetingId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rest/rate-limits/).

Delete a meeting survey

  • Method: DELETE
  • Path: /accounts/{accountId}/meetings/{meetingId}/survey
  • Tags: Surveys

Delete a meeting survey.

Prerequisites:

  • The host must be a Pro user type.
  • The Meeting Survey feature enabled in the host's account.
  • The meeting must be a scheduled meeting. Instant meetings do not have survey features enabled.

Scopes: meeting:master

Granular Scopes: meeting:delete:survey:master

Rate Limit Label: LIGHT

Responses

Status: 204 **HTTP Status Code:** `204` Meeting survey deleted.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Invalid meeting ID. <br> **Error Code:** `3000` <br> * Cannot access webinar information. <br> * Meeting survey disabled. To enable this feature, enable the **Meeting Survey** setting in the Zoom web portal's **Settings** interface. <br> **Error Code:** `3161` <br> Meeting hosting and scheduling capabilities are not allowed for your user account. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `300` <br> Meeting ID does not exist. <br> **Error Code:** `3001` <br> Meeting does not exist: {meetingId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rest/rate-limits/).

Update a meeting survey

  • Method: PATCH
  • Path: /accounts/{accountId}/meetings/{meetingId}/survey
  • Tags: Surveys

Update a meeting survey. Prerequisites: * The host must be a Pro user type. * The Meeting Survey feature is enabled in the host's account. * The meeting must be a scheduled meeting. Instant meetings do not have survey features enabled.

Scopes: meeting:master

Granular Scopes: meeting:update:survey:master

Rate Limit Label: LIGHT

Request Body

Content-Type: application/json
  • custom_survey

    object — Information about the customized meeting survey.

    • anonymous

      boolean, default: false — Allow participants to anonymously answer survey questions. This value defaults to `true`.

    • feedback

      string — The survey's feedback, up to 320 characters. This value defaults to `Thank you so much for taking the time to complete the survey. Your feedback really makes a difference.`.

    • numbered_questions

      boolean, default: false — Whether to display the number in the question name. This value defaults to `true`.

    • questions

      array — Information about the meeting survey's questions.

      Items:

      • answer_max_character

        integer — The allowed maximum number of characters. This field only applies to `short_answer` and `long_answer` questions. * For `short_answer` question, a maximum of 500 characters. * For `long_answer` question, a maximum of 2,000 characters.

      • answer_min_character

        integer — The allowed minimum number of characters. This field only applies to `short_answer` and `long_answer` questions. You must provide at least a **one** character minimum value.

      • answer_required

        boolean, default: false — Whether participants must answer the question. * `true` - The participant must answer the question. * `false` - The participant does not need to answer the question. This value defaults to `false`.

      • answers

        array — The survey question's available answers. This field requires a **minimum** of two answers. * For `single` and `multiple` questions, you can only provide a maximum of 50 answers. * For `matching` polls, you can only provide a maximum of 16 answers. * For `rank_order` polls, you can only provide a maximum of seven answers.

        Items:

        string

      • name

        string — The survey question, up to 420 characters.

      • prompts

        array — Information about the prompt questions. This field only applies to `matching` and `rank_order` questions. You **must** provide a minimum of two prompts, up to a maximum of 10 prompts.

        Items:

        • prompt_question

          string — The question prompt's title.

      • rating_max_label

        string — The high score label used for the `rating_max_value` field, up to 50 characters. This field only applies to the `rating_scale` survey.

      • rating_max_value

        integer — The rating scale's maximum value, up to a maximum value of 10. This field only applies to the `rating_scale` survey.

      • rating_min_label

        string — The low score label used for the `rating_min_value` field, up to 50 characters. This field only applies to the `rating_scale` survey.

      • rating_min_value

        integer — The rating scale's minimum value. This value cannot be less than zero. This field only applies to the `rating_scale` survey.

      • show_as_dropdown

        boolean, default: false — Whether to display the radio selection as a drop-down box. * `true` - Show as a drop-down box. * `false` - Do not show as a drop-down box. This value defaults to `false`.

      • type

        string, possible values: "single", "multiple", "matching", "rank_order", "short_answer", "long_answer", "fill_in_the_blank", "rating_scale" — The survey's question and answer type. * `single` - Single choice. * `multiple` - Multiple choice. * `matching` - Matching. * `rank_order` - Rank order * `short_answer` - Short answer * `long_answer` - Long answer. * `fill_in_the_blank` - Fill in the blank * `rating_scale` - Rating scale.

    • show_question_type

      boolean, default: false — Whether to display the question type in the question name. This value defaults to `false`.

    • title

      string — The survey's title, up to 64 characters.

  • show_in_the_browser

    boolean, default: true — Whether the **Show in the browser when the meeting ends** option is enabled. * `true` - Enabled. * `false` - Disabled. This value defaults to `true`.

  • third_party_survey

    string — The link to the third party meeting survey.

Example:

{
  "custom_survey": {
    "title": "Learn something new",
    "anonymous": false,
    "numbered_questions": false,
    "show_question_type": false,
    "feedback": "Thank you so much for taking the time to complete the survey. Your feedback really makes a difference.",
    "questions": [
      {
        "name": "How useful was this meeting?",
        "type": "single",
        "answer_required": false,
        "show_as_dropdown": false,
        "answers": [
          "Extremely useful"
        ],
        "prompts": [
          {
            "prompt_question": "How are you?"
          }
        ],
        "answer_min_character": 1,
        "answer_max_character": 200,
        "rating_min_value": 1,
        "rating_max_value": 4,
        "rating_min_label": "Not likely",
        "rating_max_label": "Extremely Likely"
      }
    ]
  },
  "show_in_the_browser": true,
  "third_party_survey": "https://example.com"
}

Responses

Status: 204 **HTTP Status Code:** `204` Meeting survey updated.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Invalid meeting ID. <br> **Error Code:** `300` <br> Invalid third party survey: {third_party_survey}. <br> **Error Code:** `3161` <br> Meeting hosting and scheduling capabilities are not allowed for your user account. <br> **Error Code:** `3000` <br> Cannot access Webinar information. <br> **Error Code:** `3000` <br> Meeting survey disabled. To enable this feature, enable the **Meeting Survey** setting in the Zoom web portal's **Settings** interface. <br> **Error Code:** `3000` <br> Not allowed host to use a 3rd-party survey link. To use this feature, enable the "Allow host to use a 3rd-party survey link" setting in the "Account Settings" page of the Zoom web portal. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `300` <br> Meeting ID does not exist. <br> **Error Code:** `3001` <br> Meeting does not exist: {meetingId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rest/rate-limits/).

Get account's TSP information

  • Method: GET
  • Path: /accounts/{accountId}/tsp
  • Tags: TSP

Get information on Telephony Service Provider (TSP) on an account level.

Prerequisites

  • TSP audio must be enabled on the Zoom account before using this API.
  • The Zoom account must have a Pro or higher subscription plan to enable TSP.

Scopes: tsp:master

Granular Scopes: tsp:read:tsp:master

Rate Limit Label: LIGHT

Responses

Status: 200 **HTTP Status Code:** `200` TSP account detail returned successfully.
Content-Type: application/json
  • dial_in_number_unrestricted

    boolean — Control restriction on account users adding a TSP number outside of account's dial in numbers.

  • dial_in_numbers

    array — List of dial in numbers.

    Items:

    • code

      string — Country code.

    • number

      string — Dial-in number. Length is less than 16.

    • type

      string — Dial-in number type.

  • enable

    boolean — Enable Telephony Service Provider for account users.

  • master_account_setting_extended

    boolean — For master account, extend its TSP setting to all sub accounts. For sub account, extend TSP setting from master account.

  • modify_credential_forbidden

    boolean — Control restriction on account users being able to modify their TSP credentials.

  • tsp_bridge

    string, possible values: "US_TSP_TB", "EU_TSP_TB" — Telephony bridge zone

  • tsp_enabled

    boolean — Enable TSP feature for account. This has to be enabled to use any other tsp settings/features.

  • tsp_provider

    string — Telephony service provider.

Example:

{
  "dial_in_number_unrestricted": false,
  "dial_in_numbers": [
    {
      "code": "1",
      "number": "+1 1000200200",
      "type": "toll"
    }
  ],
  "enable": true,
  "master_account_setting_extended": true,
  "modify_credential_forbidden": true,
  "tsp_bridge": "US_TSP_TB",
  "tsp_enabled": true,
  "tsp_provider": "someprovidername"
}
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rate-limits/).

Update an account's TSP information

  • Method: PATCH
  • Path: /accounts/{accountId}/tsp
  • Tags: TSP

Update information of the Telephony Service Provider (TSP) set up on an account.

Prerequisites

  • Enable TSP on the Zoom account before using this API.
  • A Pro or higher subscription plan to enable TSP.

Scopes: tsp:master

Granular Scopes: tsp:update:tsp:master

Rate Limit Label: LIGHT

Request Body

Content-Type: application/json
  • dial_in_number_unrestricted

    boolean — Control restriction on account users adding a TSP number outside of account's dial in numbers.

  • enable

    boolean — Enable 3rd party audio conferencing for account users

  • master_account_setting_extended

    boolean — For master account, extend its TSP setting to all sub accounts. For sub account, extend TSP setting from master account.

  • modify_credential_forbidden

    boolean — Control restriction on account users being able to modify their TSP credentials.

  • tsp_bridge

    string, possible values: "US_TSP_TB", "EU_TSP_TB" — Telephony bridge

  • tsp_enabled

    boolean — Enable TSP feature for account. This has to be enabled to use any other tsp settings/features.

  • tsp_provider

    string — 3rd party audio conferencing provider

Example:

{
  "dial_in_number_unrestricted": true,
  "enable": true,
  "master_account_setting_extended": true,
  "modify_credential_forbidden": true,
  "tsp_bridge": "US_TSP_TB",
  "tsp_enabled": true,
  "tsp_provider": "someprovidername"
}

Responses

Status: 204 **HTTP Status Code:** `204` **No Content** TSP Account updated.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Invalid parameter: `tsp_bridge`. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rate-limits/).

List user's TSP accounts

  • Method: GET
  • Path: /accounts/{accountId}/users/{userId}/tsp
  • Tags: TSP

List all of a user's TSP accounts. A user can have a maximum of two TSP accounts.

Prerequisites

  • TSP (Telephony Service Provider) audio must be enabled on the Zoom account before using this API.
  • The Zoom account must have a Pro or higher subscription plan to enable TSP.

Scopes: tsp:master

Granular Scopes: tsp:read:list_tsp_accounts:master

Rate Limit Label: MEDIUM

Responses

Status: 200 **HTTP Status Code:** `200` **OK** TSP account list returned successfully.
Content-Type: application/json
  • tsp_accounts

    array — List of the user's TSP accounts.

    Items:

    • conference_code (required)

      string — Conference code: numeric value, length is less than 16.

    • leader_pin (required)

      string — Leader PIN. Mumeric value, length is less than 16.

    • dial_in_numbers

      array — List of dial in numbers.

      Items:

      • code

        string — Country code.

      • country_label

        string — Country label, if passed, will display in place of code.

      • number

        string — Dial-in number. Length is less than 16.

      • type

        string, possible values: "toll", "tollfree", "media_link" — Dial-in number types. `toll` - Toll number. `tollfree` - Toll free number. `media_link` - Media link.

    • id

      string, possible values: "1", "2" — The TSP account's ID.

    • tsp_bridge

      string, possible values: "US_TSP_TB", "EU_TSP_TB" — Telephony bridge

Example:

{
  "tsp_accounts": [
    {
      "conference_code": "0125",
      "dial_in_numbers": [
        {
          "code": "1",
          "country_label": "America",
          "number": "+1 1000200200",
          "type": "toll"
        }
      ],
      "id": "1",
      "leader_pin": "11189898",
      "tsp_bridge": "US_TSP_TB"
    }
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `2024` <br> Account has not enabled TSP. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User does not exist: $userId.<br> <br> **Error Code:** `1120` <br> No valid invitation to join the Zoom account was found for this user.<br> This error is thrown if you added a user in your account but the user did not accept the invitation on time and the invitation expired, making the `userId` invalid. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Add a user's TSP account

  • Method: POST
  • Path: /accounts/{accountId}/users/{userId}/tsp
  • Tags: TSP

Add a user's TSP account.

Prerequisites

  • TSP (Telephony Service Provider) audio must be enabled on the Zoom account before using this API.
  • The Zoom account must have a Pro or higher subscription plan to enable TSP.

Scopes: tsp:master

Granular Scopes: tsp:write:tsp_account:master

Rate Limit Label: LIGHT

Request Body

Content-Type: application/json
  • conference_code (required)

    string — Conference code. A numeric value, with a length less than 16.

  • leader_pin (required)

    string — Leader PIN: numeric value, length is less than 16.

  • dial_in_numbers

    array — List of dial in numbers.

    Items:

    • code

      string — Country code.

    • country_label

      string — Country Label, if passed, will display in place of code.

    • number

      string — Dial-in number: length is less than 16.

    • type

      string, possible values: "toll", "tollfree", "media_link" — Dial-in number types: `toll` - Toll number. `tollfree` -Toll free number. `media_link` - Media link.

  • tsp_bridge

    string, possible values: "US_TSP_TB", "EU_TSP_TB" — Telephony bridge

Example:

{
  "conference_code": "0125",
  "dial_in_numbers": [
    {
      "code": "1",
      "country_label": "America",
      "number": "+1 1000200200",
      "type": "toll"
    }
  ],
  "leader_pin": "US_TSP_TB",
  "tsp_bridge": "US_TSP_TB"
}

Responses

Status: 201 **HTTP Status Code:** `201` TSP account added.
Content-Type: application/json

All of:

  • id

    string — The ID of the TSP account.

  • conference_code (required)

    string — Conference code: numeric value, length is less than 16.

  • leader_pin (required)

    string — Leader PIN: numeric value, length is less than 16.

  • dial_in_numbers

    array — List of dial in numbers.

    Items:

    • code

      string — Country code.

    • country_label

      string — Country Label, if passed, will display in place of code.

    • number

      string — Dial-in number: length is less than 16.

    • type

      string, possible values: "toll", "tollfree", "media_link" — Dial-in number types: `toll` - Toll number. `tollfree` -Toll free number. `media_link` - Media link.

  • tsp_bridge

    string, possible values: "US_TSP_TB", "EU_TSP_TB" — Telephony bridge

Example:

{
  "id": "1",
  "conference_code": "0125",
  "dial_in_numbers": [
    {
      "code": "1",
      "country_label": "America",
      "number": "+1 1000200200",
      "type": "toll"
    }
  ],
  "leader_pin": "US_TSP_TB",
  "tsp_bridge": "US_TSP_TB"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `2024` <br> This account has not enabled TSP.<br> <br> **Error Code:** `300` <br> Media link is required for AT&T TSP accounts.<br> <br> **Error Code:** `300` <br> You can add a maximum of two TSP configs. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User does not exist: $userId.<br> <br> **Error Code:** `1120` <br> No valid invitation to join the Zoom account was found for this user.<br> This error is thrown if you added a user in your account but the user did not accept the invitation on time and the invitation expired, making the `userId` invalid. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Set global dial-in URL for a TSP user

  • Method: PATCH
  • Path: /accounts/{accountId}/users/{userId}/tsp/settings
  • Tags: TSP

Set the URL for a global dial-in page of a user whose Zoom account has TSP and special TSP with third-party audio conferencing options enabled. A global dial-in page can provide a list of global access numbers to use to conduct audio conferencing.

Prerequisites

  • TSP (Telephony Service Provider) audio must be enabled on the Zoom account before using this API.
  • The Zoom account must have a Pro or higher subscription plan to enable TSP.

Scopes: tsp:master

Granular Scopes: tsp:update:tsp_settings:master

Rate Limit Label: LIGHT

Request Body

Content-Type: application/json
  • audio_url

    string — The global dial-in URL for a TSP enabled account. The URL must be valid, with a maximum length of 512 characters.

Example:

{
  "audio_url": "https://example.com"
}

Responses

Status: 204 **Status Code:** `204` **No Content** URL set successfully.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `2000` <br> Not TSP special account.<br> Ths error means that the account does not have special TSP privileges. Contact Zoom Developer Support for details.<br> <br> **Error Code:** `2024` <br> Account has not enabled TSP. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User {userId} does not exist, or doesn't belong to this account. <br> **Error Code:** `1120` <br> Invite does not exist. This error is thrown if you added a user in your account but the user did not accept the invitation on time and the invitation expired, making the `userId` invalid. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rate-limits/).

Get a user's TSP account

  • Method: GET
  • Path: /accounts/{accountId}/users/{userId}/tsp/{tspId}
  • Tags: TSP

Retrieve details of a specific TSP account enabled for a specific user. Each user can have a maximum of two TSP accounts.

Prerequisites

  • TSP (Telephony Service Provider) audio must be enabled on the Zoom account before using this API.
  • The Zoom account must have a Pro or higher subscription plan to enable TSP.

Scopes: tsp:master

Granular Scopes: tsp:read:tsp_account:master

Rate Limit Label: LIGHT

Responses

Status: 200 **HTTP Status Code:** `200` TSP account retrieved successfully.
Content-Type: application/json
  • conference_code (required)

    string — Conference code: numeric value, length is less than 16.

  • leader_pin (required)

    string — Leader PIN. A numeric value, with a length of less than 16.

  • dial_in_numbers

    array — List of dial in numbers.

    Items:

    • code

      string — Country code.

    • country_label

      string — Country Label, if passed, will display in place of code.

    • number

      string — Dial-in number: length is less than 16.

    • type

      string, possible values: "toll", "tollfree", "media_link" — Dial-in number types: `toll` - Toll number. `tollfree` -Toll free number. `media_link` - Media link phone number. This is used for PSTN integration instead of a paid bridge number.

  • id

    string — The TSP account's ID.

  • tsp_bridge

    string, possible values: "US_TSP_TB", "EU_TSP_TB" — Telephony bridge

Example:

{
  "conference_code": "0125",
  "dial_in_numbers": [
    {
      "code": "1",
      "country_label": "America",
      "number": "+1 1000200200",
      "type": "toll"
    }
  ],
  "id": "1",
  "leader_pin": "11189898",
  "tsp_bridge": "US_TSP_TB"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> The TSP ID provided does not exist.<br> <br> **Error Code:** `300` <br> TSP config does not exist.<br> <br> **Error Code:** `2024` <br> Account has not enabled TSP. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User does not exist: $userId.<br> <br> **Error Code:** `1120` <br> No valid invitation to join the Zoom account was found for this user.<br> This error is thrown if you added a user in your account but the user did not accept the invitation on time and the invitation expired, making the `userId` invalid. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Delete a user's TSP account

  • Method: DELETE
  • Path: /accounts/{accountId}/users/{userId}/tsp/{tspId}
  • Tags: TSP

Delete a user's TSP account.

Prerequisites

  • TSP (Telephony Service Provider) audio must be enabled on the Zoom account before using this API.
  • The Zoom account must have a Pro or higher subscription plan to enable TSP.

Scopes: tsp:master

Granular Scopes: tsp:delete:tsp_account:master

Rate Limit Label: LIGHT

Responses

Status: 204 **Status Code:** `204` **No Content** TSP account deleted.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `2024` <br> This account has not enabled TSP.<br> <br> **Error Code:** `300` <br> The provided TSP ID does not exist.<br> <br> **Error Code:** `300` <br> TSP config does not exist.<br> <br> **Error Code:** `300` <br> At least one TSP config must be available. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User does not exist: $userId.<br> <br> **Error Code:** `1120` <br> No valid invitation to join the Zoom account was found for this user.<br> This error is thrown if you added a user in your account but the user did not accept the invitation on time and the invitation expired, making the `userId` invalid. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Update a TSP account

  • Method: PATCH
  • Path: /accounts/{accountId}/users/{userId}/tsp/{tspId}
  • Tags: TSP

Update a user's Telephony Service Provider (TSP) account.

Prerequisites

  • TSP audio enabled on the Zoom account before using this API.
  • A Pro or higher subscription plan to enable TSP.

Scopes: tsp:master

Granular Scopes: tsp:update:tsp_account:master

Rate Limit Label: LIGHT

Request Body

Content-Type: application/json
  • conference_code (required)

    string — Conference code. Numeric value. Length is less than 16.

  • leader_pin (required)

    string — Leader PIN. Numeric value. Length is less than 16.

  • dial_in_numbers

    array — List of dial in numbers.

    Items:

    • code

      string — Country code.

    • country_label

      string — Country label, if passed, will display in place of code.

    • number

      string — Dial-in number. Length is less than 16.

    • type

      string, possible values: "toll", "tollfree", "media_link" — Dial-in number types. `toll` - Toll number. `tollfree` -Toll free number. `media_link` - Media Link Phone Number. It is used for PSTN integration instead of paid bridge number.

  • tsp_bridge

    string, possible values: "US_TSP_TB", "EU_TSP_TB" — Telephony bridge.

Example:

{
  "conference_code": "0125",
  "dial_in_numbers": [
    {
      "code": "1",
      "country_label": "America",
      "number": "+1 1000200200",
      "type": "toll"
    }
  ],
  "leader_pin": "11189898",
  "tsp_bridge": "US_TSP_TB"
}

Responses

Status: 204 **HTTP Status Code:**`204` **No Content** TSP account updated.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `2024` <br> Account has not enabled TSP. <br> **Error Code:** `300` <br> The TSP ID provided does not exist. <br> **Error Code:** `300` <br> TSP config does not exist. <br> **Error Code:** `300` <br> At least one TSP config must be available. <br> **Error Code:** `300` <br> Media link is required for AT&T TSP accounts. <br> **Error Code:** `300` <br> Invalid parameter: `tsp_bridge`. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User does not exist: $userId. <br> **Error Code:** `1120` <br> A valid invitation to join the Zoom account was not found for this user.<br> This error is thrown if you added a user in your account but the user did not accept the invitation on time and the invitation expired - making the `userId` invalid. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api//rate-limits/).

List meeting templates

  • Method: GET
  • Path: /accounts/{accountId}/users/{userId}/meeting_templates
  • Tags: Templates

List available meeting templates for a user. For user-level apps, pass the me value instead of the userId parameter.

Prerequisites:

  • Host user must have a Zoom Meetings Basic license or higher.

Learn more about creating and managing meeting templates.

Scopes: meeting:master

Granular Scopes: meeting:read:list_templates:master

Rate Limit Label: MEDIUM

Responses

Status: 200 **HTTP Status Code:** `200` **OK**
Content-Type: application/json
  • templates

    array

    Items:

    • id

      string — The template ID.

    • name

      string — The template name.

    • type

      integer — The template type: `1`: Meeting template `2`: Admin meeting template

  • total_records

    integer — Total records found for this request.

Example:

{
  "templates": [
    {
      "id": "AdxbhxCzKgSiWAw",
      "name": "My meeting template",
      "type": 1
    }
  ],
  "total_records": 1
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `3161` <br> Meeting hosting and scheduling capabilities are not allowed for your user account. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User does not exist: {userId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rest/rate-limits/).

Create a meeting template from an existing meeting

  • Method: POST
  • Path: /accounts/{accountId}/users/{userId}/meeting_templates
  • Tags: Templates

Create a meeting template from an existing meeting.

Prerequisites

  • Host user must have a Zoom Meetings Basic license or higher.
  • You can only create up to 40 meeting templates.

Learn more about creating and managing meeting templates.

Scopes: meeting:master

Granular Scopes: meeting:write:template:master

Rate Limit Label: MEDIUM

Request Body

Content-Type: application/json

All of:

  • meeting_id

    integer, format: int64 — The meeting ID - the meeting number in long (int64) format.

  • name

    string — The template name.

  • overwrite

    boolean, default: false — Overwrite an existing meeting template if the template is created from same existing meeting.

  • save_recurrence

    boolean, default: false — If the field is set to `true`, the recurrence meeting template will be saved as the scheduled meeting.

Example:

{
  "meeting_id": 96172769962,
  "name": "My Meeting Template",
  "save_recurrence": false,
  "overwrite": false
}

Responses

Status: 201 **HTTP Status Code:** `201` Meeting template created.
Content-Type: application/json

All of:

  • id

    string — The template ID.

  • name

    string — The template name.

Example:

{
  "id": "AdxbhxCzKgSiWAw",
  "name": "My Meeting Template"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> You can only create up to 40 meeting templates. <br> **Error Code:** `3001` <br> Meeting does not exist: {meetingId} <br> **Error Code:** `3161` <br> Meeting hosting and scheduling capabilities are not allowed for your user account. <br> **Error Code:** `3000` <br> Cannot access webinar information. <br> **Error Code:** `3000` <br> Meeting template name already exists: {templateName}. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User does not exist. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rest/rate-limits/).

List tracking fields

  • Method: GET
  • Path: /accounts/{accountId}/tracking_fields
  • Tags: Tracking Field

List all the tracking fields on your Zoom account. Tracking fields let you analyze usage by various fields within an organization.

Prerequisites:

  • A Business, Education, API or higher plan.

Scopes: tracking_fields:master

Granular Scopes: tracking_field:read:list_tracking_fields:master

Rate Limit Label: MEDIUM

Responses

Status: 200 **HTTP Status Code:** `200` List of Tracking Fields returned.
Content-Type: application/json

All of:

  • total_records

    integer — The number of all records available across pages.

  • tracking_fields

    array — Array of tracking fields.

    Items:

    • field

      string — Label or name for the tracking field.

    • id

      string — Tracking field's ID.

    • recommended_values

      array — Array of recommended values

      Items:

      string

    • required

      boolean — Tracking field required.

    • visible

      boolean — Tracking field visible.

Example:

{
  "total_records": 1,
  "tracking_fields": [
    {
      "id": "a32CJji-weJ92",
      "field": "field1",
      "recommended_values": [
        "value1"
      ],
      "required": false,
      "visible": true
    }
  ]
}
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rest/rate-limits/).

Create a tracking field

  • Method: POST
  • Path: /accounts/{accountId}/tracking_fields
  • Tags: Tracking Field

Use this API to create a new tracking field. Tracking fields let you analyze usage by various fields within an organization. When scheduling a meeting, tracking fields will be included in the meeting options.

Prerequisites:

  • A Business, Education, API or higher plan.

Scopes: tracking_fields:master

Granular Scopes: tracking_field:write:tracking_field:master

Rate Limit Label: LIGHT

Request Body

Content-Type: application/json
  • field

    string — Label/ Name for the tracking field.

  • recommended_values

    array — Array of recommended values

    Items:

    string

  • required

    boolean — Tracking Field Required

  • visible

    boolean — Tracking Field Visible

Example:

{
  "field": "field1",
  "recommended_values": [
    "value1"
  ],
  "required": false,
  "visible": true
}

Responses

Status: 201 **HTTP Status Code:** `201` Tracking Field created
Content-Type: application/json

All of:

  • id

    string — Tracking Field ID

  • field

    string — Label/ Name for the tracking field.

  • recommended_values

    array — Array of recommended values

    Items:

    string

  • required

    boolean — Tracking Field Required

  • visible

    boolean — Tracking Field Visible

Example:

{
  "id": "a32CJji-weJ92",
  "field": "field1",
  "recommended_values": [
    "value1"
  ],
  "required": false,
  "visible": true
}
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Get a tracking field

  • Method: GET
  • Path: /accounts/{accountId}/tracking_fields/{fieldId}
  • Tags: Tracking Field

Use this API to return information about a tracking field.

Prerequisites:

  • A Business, Education, API or higher plan.

Scopes: tracking_fields:master

Granular Scopes: tracking_field:read:tracking_field:master

Rate Limit Label: LIGHT

Responses

Status: 200 **HTTP Status Code:** `200` Tracking field object returned.
Content-Type: application/json
  • field

    string — Label or name for the tracking field.

  • id

    string — Tracking field ID.

  • recommended_values

    array — Array of recommended values.

    Items:

    string

  • required

    boolean — Tracking field required.

  • visible

    boolean — Tracking field visible.

Example:

{
  "id": "a32CJji-weJ92",
  "field": "field1",
  "recommended_values": [
    "value1"
  ],
  "required": false,
  "visible": true
}
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `5110` <br> Tracking field does not exist: {fieldId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rest/rate-limits/).

Delete a tracking field

  • Method: DELETE
  • Path: /accounts/{accountId}/tracking_fields/{fieldId}
  • Tags: Tracking Field

Delete a tracking field.

Prerequisites:

  • A Business, Education, API or higher plan.

Scopes: tracking_fields:master

Granular Scopes: tracking_field:delete:tracking_field:master

Rate Limit Label: LIGHT

Responses

Status: 204 **HTTP Status Code:** `204` Tracking Field deleted.
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `5110` <br> Tracking field does not exist: {fieldId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rest/rate-limits/).

Update a tracking field

  • Method: PATCH
  • Path: /accounts/{accountId}/tracking_fields/{fieldId}
  • Tags: Tracking Field

Update a tracking field.

Prerequisites:

  • A Business, Education, API or higher plan.

Scopes: tracking_fields:master

Granular Scopes: tracking_field:update:tracking_field:master

Rate Limit Label: LIGHT

Request Body

Content-Type: application/json
  • field

    string — Label or name for the tracking field.

  • recommended_values

    array — Array of recommended values.

    Items:

    string

  • required

    boolean — Tracking field required.

  • visible

    boolean — Tracking field visible.

Example:

{
  "field": "field1",
  "recommended_values": [
    "value1"
  ],
  "required": false,
  "visible": true
}

Responses

Status: 204 **HTTP Status Code:** `204` Tracking field updated.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> Tracking field {field} already exists. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `5110` <br> Tracking field does not exist: {fieldId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rest/rate-limits/).

Get webinar absentees

  • Method: GET
  • Path: /accounts/{accountId}/past_webinars/{webinarId}/absentees
  • Tags: Webinars

List absentees of a webinar.

Prerequisites

Scopes: webinar:master

Granular Scopes: webinar:read:list_absentees:master

Rate Limit Label: HEAVY

Responses

Status: 200 **HTTP Status Code:** `200` Success. **Error Code:** `200` Webinar plan subscription is missing. Enable webinar for this user once the subscription is added:{userId}.
Content-Type: application/json

All of:

  • next_page_token

    string — Use the next page token to paginate through large result sets. A next page token is returned whenever the set of available results exceeds the current page size. This token's expiration period is 15 minutes.

  • page_count

    integer — The number of pages returned for the request made.

  • page_number

    integer, default: 1 — **Deprecated.** This field is deprecated. We will no longer support this field in a future release. Instead, use the `next_page_token` for pagination.

  • page_size

    integer, default: 30 — The number of records returned with a single API call.

  • total_records

    integer — The total number of all the records available across pages.

  • registrants

    array — List of registrant objects.

    Items:

    All of:

    • id

      string — Registrant ID.

    All of:

    • email (required)

      string, format: email — The registrant's email address. See [Email address display rules](https://developers.zoom.us/docs/api/rest/using-zoom-apis/#email-address-display-rules) for return value details.

    • first_name (required)

      string — The registrant's first name.

    • address

      string — The registrant's address.

    • city

      string — The registrant's city.

    • comments

      string — The registrant's questions and comments.

    • country

      string — The registrant's two-letter ISO [country code](https://developers.zoom.us/docs/api/rest/other-references/abbreviation-lists/#countries).

    • custom_questions

      array — Information about custom questions.

      Items:

      • title

        string — The title of the custom question.

      • value

        string — The custom question's response value. This has a limit of 128 characters.

    • industry

      string — The registrant's industry.

    • job_title

      string — The registrant's job title.

    • last_name

      string — The registrant's last name.

    • no_of_employees

      string, possible values: "", "1-20", "21-50", "51-100", "101-250", "251-500", "501-1,000", "1,001-5,000", "5,001-10,000", "More than 10,000" — The registrant's number of employees. * `1-20` * `21-50` * `51-100` * `101-250` * `251-500` * `501-1,000` * `1,001-5,000` * `5,001-10,000` * `More than 10,000`

    • org

      string — The registrant's organization.

    • phone

      string — The registrant's phone number.

    • purchasing_time_frame

      string, possible values: "", "Within a month", "1-3 months", "4-6 months", "More than 6 months", "No timeframe" — The registrant's purchasing time frame. * `Within a month` * `1-3 months` * `4-6 months` * `More than 6 months` * `No timeframe`

    • role_in_purchase_process

      string, possible values: "", "Decision Maker", "Evaluator/Recommender", "Influencer", "Not involved" — The registrant's role in the purchase process. * `Decision Maker` * `Evaluator/Recommender` * `Influencer` * `Not involved`

    • state

      string — The registrant's state or province.

    • status

      string, possible values: "approved", "denied", "pending" — The registrant's status. * `approved` - Registrant is approved. * `denied` - Registrant is denied. * `pending` - Registrant is waiting for approval.

    • zip

      string — The registrant's ZIP or postal code.

    • create_time

      string, format: date-time — The time when the registrant registered.

    • join_url

      string, format: string — The URL that an approved registrant can use to join the meeting or webinar.

    • status

      string — The status of the registrant's registration. `approved` - User has been successfully approved for the webinar. `pending` - The registration is still pending. `denied` - User has been denied from joining the webinar.

Example:

{
  "next_page_token": "w7587w4eiyfsudgf",
  "page_count": 1,
  "page_size": 30,
  "total_records": 20,
  "registrants": [
    {
      "id": "9tboDiHUQAeOnbmudzWa5g",
      "address": "1800 Amphibious Blvd.",
      "city": "Mountain View",
      "comments": "Looking forward to the discussion.",
      "country": "US",
      "custom_questions": [
        {
          "title": "What do you hope to learn from this?",
          "value": "Look forward to learning how you come up with new recipes and what other services you offer."
        }
      ],
      "email": "jchill@example.com",
      "first_name": "Jill",
      "industry": "Food",
      "job_title": "Chef",
      "last_name": "Chill",
      "no_of_employees": "1-20",
      "org": "Cooking Org",
      "phone": "5550100",
      "purchasing_time_frame": "1-3 months",
      "role_in_purchase_process": "Influencer",
      "state": "CA",
      "status": "approved",
      "zip": "94045",
      "create_time": "2022-03-22T05:59:09Z",
      "join_url": "https://example.com/j/11111"
    }
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> The request could not be completed because you have provided an invalid occurrence ID: {occurrenceId}.<br> <br> **Error Code:** `1010` <br> User does not belong to this account: {accountId}.<br> <br> **Error Code:** `3000` <br> This webinar doesn't have registration required: {webinarUUID}. <br> **Error Code:** `200` <br> No permission. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Webinar {webinarUUID} not found or expired. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rate-limits/).

List past webinar instances

  • Method: GET
  • Path: /accounts/{accountId}/past_webinars/{webinarId}/instances
  • Tags: Webinars

List past webinar instances.

Prerequisites

Scopes: webinar:master

Granular Scopes: webinar:read:list_past_instances:master

Rate Limit Label: LIGHT

Responses

Status: 200 **HTTP Status Code:** `200` List of past webinar instances returned.
Content-Type: application/json

All of:

  • webinars

    array — List of ended webinar instances.

    Items:

    All of:

    • start_time

      string, format: date-time — Start time.

    • uuid

      string — Webinar UUID.

Example:

{
  "webinars": [
    {
      "start_time": "2022-03-26T06:44:14Z",
      "uuid": "Bznyg8KZTdCVbQxvS/oZ7w=="
    }
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Invalid webinar ID. <br> **Error Code:** `200` <br> No permission. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

List webinar templates

  • Method: GET
  • Path: /accounts/{accountId}/users/{userId}/webinar_templates
  • Tags: Webinars

Display a list of a user's webinar templates. For user-level apps, pass the me value instead of the userId parameter. When you schedule a webinar, save the settings for that webinar as a template for scheduling future webinars. To use a template when scheduling a webinar, use the id value in this API response in the template_id field of the Create a webinar API. Prerequisites: * A Pro or a higher account with the Zoom Webinar plan.

Scopes: webinar:master

Granular Scopes: webinar:read:list_templates:master

Responses

Status: 200 **HTTP Status Code:** `200` **OK** List of existing templates returned.
Content-Type: application/json
  • templates

    array — Information about the webinar templates.

    Items:

    • id

      string — The webinar template's ID.

    • name

      string — The webinar template's name.

    • type

      integer — The webinar template type. `1`: Webinar template `2`: Admin webinar template

  • total_records

    integer — The total number of records returned.

Example:

{
  "templates": [
    {
      "id": "ull6574eur",
      "name": "Weekly Meeting Template",
      "type": 1
    }
  ],
  "total_records": 1
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> Webinar plan is missing. You must subscribe to the webinar plan and enable webinars for this user in order to perform this action. <br> **Error Code:** `200` <br> No permission. <br> **Error Code:** `300` <br> You can only create up to 40 webinar templates. <br> **Error Code:** `3000` <br> Webinar template name already exists {name}. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User does not exist: {userId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Create a webinar template

  • Method: POST
  • Path: /accounts/{accountId}/users/{userId}/webinar_templates
  • Tags: Webinars

Create a webinar template from an existing webinar.

Prerequisites

Scopes: webinar:master

Granular Scopes: webinar:write:template:master

Rate Limit Label: MEDIUM

Request Body

Content-Type: application/json

All of:

  • name

    string — The webinar template's name.

  • overwrite

    boolean, default: false — Overwrite an existing webinar template if the template is created from same existing webinar.

  • save_recurrence

    boolean, default: false — If the field is set to true, the recurrence webinar template will be saved as the scheduled webinar.

  • webinar_id

    integer, format: int64 — The webinar ID in long (int64) format.

Example:

{
  "webinar_id": 96172769962,
  "name": "Weekly Meeting Template",
  "save_recurrence": false,
  "overwrite": false
}

Responses

Status: 201 **HTTP Status Code:** `201` Webinar template created.
Content-Type: application/json

All of:

  • id

    string — The webinar template's ID.

  • name

    string — The webinar template's name.

Example:

{
  "id": "ull6574eur",
  "name": "Weekly Meeting Template"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> Webinar plan is missing. You must subscribe to the webinar plan and enable webinars for this user in order to perform this action. <br> **Error Code:** `300` <br> You can only create up to 40 webinar templates. <br> **Error Code:** `3000` <br> Cannot access meeting info. <br> **Error Code:** `3000` <br> Webinar template name already exists: {templateName}. <br> **Error Code:** `200` <br> No permission. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User does not exist: {userId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

List webinars

  • Method: GET
  • Path: /accounts/{accountId}/users/{userId}/webinars
  • Tags: Webinars

List all the webinars scheduled by or on behalf a webinar host. For user-level apps, pass the me value instead of the userId parameter.

Zoom users with a webinar plan have access to creating and managing webinars. Webinars let a host broadcast a Zoom meeting to up to 10,000 attendees.

Note This API only returns a user's unexpired webinars.

Prerequisites

  • A Pro or higher plan with the webinar add-on.

Scopes: webinar:master

Granular Scopes: webinar:read:list_webinars:master

Rate Limit Label: MEDIUM

Responses

Status: 200 **HTTP Status Code:** `200` List of webinar objects returned.
Content-Type: application/json

All of:

  • next_page_token

    string — Use the next page token to paginate through large result sets. A next page token is returned whenever the set of available results exceeds the current page size. This token's expiration period is 15 minutes.

  • page_count

    integer — The number of pages returned for the request made.

  • page_number

    integer, default: 1 — **Deprecated** We will no longer support this field in a future release. Instead, use the `next_page_token` for pagination.

  • page_size

    integer, default: 30 — The number of records returned with a single API call.

  • total_records

    integer — The total number of all the records available across pages.

  • webinars

    array — List of webinar objects.

    Items:

    All of:

    • agenda

      string — Webinar description. The agenda length gets truncated to 250 characters when you list all webinars for a user. To view the complete agenda, retrieve details for a single webinar, use the [**Get a webinar**](/docs/api-reference/zoom-api/methods#operation/webinar) API.

    • created_at

      string, format: date-time — The webinar's creation time.

    • duration

      integer — The webinar's duration, in minutes.

    • host_id

      string — The host's ID.

    • id

      integer, format: int64 — The webinar ID.

    • is_events_webinar

      boolean — The webinar is created from zoom events

    • is_simulive

      boolean — Whether the webinar is `simulive`.

    • join_url

      string — The URL to join the webinar.

    • start_time

      string, format: date-time — The webinar's start time.

    • timezone

      string — The webinar's [timezone](https://developers.zoom.us/docs/api/rest/other-references/abbreviation-lists/#timezones).

    • topic

      string — The webinar's topic.

    • type

      integer, possible values: 5, 6, 9, default: 5 — The webinar type. * `5` - A webinar. * `6` - A recurring webinar without a fixed time. * `9` - A recurring webinar with a fixed time.

    • uuid

      string — The webinar's universally unique identifier (UUID). Each webinar instance generates a webinar UUID.

Example:

{
  "next_page_token": "w7587w4eiyfsudgf",
  "page_count": 1,
  "page_size": 30,
  "total_records": 20,
  "webinars": [
    {
      "agenda": "Learn more about Zoom APIs",
      "created_at": "2021-07-01T22:00:00Z",
      "duration": 60,
      "host_id": "x1yCzABCDEfg23HiJKl4mN",
      "id": 1234567890,
      "join_url": "https://example.com/j/11111",
      "start_time": "2021-07-13T21:00:00Z",
      "timezone": "America/Los_Angeles",
      "topic": "My Webinar",
      "type": 9,
      "uuid": "4444AAAiAAAAAiAiAiiAii==",
      "is_simulive": true,
      "is_events_webinar": true
    }
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> No permission. <br> **Error Code:** `200` <br> Webinar plan is missing. You must subscribe to the webinar plan and enable webinars for this user in order to perform this action. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User does not exist: {userId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Create a webinar

  • Method: POST
  • Path: /accounts/{accountId}/users/{userId}/webinars
  • Tags: Webinars

Schedule a webinar for a user who is a webinar host. For user-level apps, pass the me value instead of the userId parameter.

Webinars allow a host to broadcast a Zoom meeting to up to 10,000 attendees.

Rate limit Up to a maximum of 100 requests per day. The rate limit is applied to the userId of the webinar host used to make the request.

Prerequisites

Scopes: webinar:master

Granular Scopes: webinar:write:webinar:master

Rate Limit Label: LIGHT

Request Body

Content-Type: application/json
  • agenda

    string — Webinar description.

  • default_passcode

    boolean, default: true — Determines whether to automatically generate a passcode for the webinar when no passcode is provided and the user's **Passcode** setting is enabled. Defaults to `true`. When set to `false`, webinars will only have a passcode if one is explicitly provided.

  • duration

    integer — Webinar duration, in minutes. Used for scheduled webinars only.

  • is_simulive

    boolean — Whether to set the webinar to simulive.

  • password

    string — The webinar passcode. By default, it can be up to 10 characters in length and may contain alphanumeric characters as well as special characters like !, @, #, and others. **Note** - If the account owner or administrator has configured [Passcode Requirement](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0063160#h_a427384b-e383-4f80-864d-794bf0a37604), the passcode **must** meet those requirements. You can retrieve the requirements using the [**Get user settings**](/docs/api/users/#tag/users/GET/users/{userId}/settings) API or the [**Get account settings**](/docs/api/accounts/#tag/accounts/GET/accounts/{accountId}/settings) API. - If the **Passcode** user setting is enabled and `default_passcode` is not explicitly set to `false`, a passcode will be automatically generated when one is not provided. - If the **Passcode** setting is enabled and [locked](https://support.zoom.us/hc/en-us/articles/115005269866-Using-Tiered-Settings#locked) for the user, a passcode will be automatically generated when one is not provided.

  • record_file_id

    string — The previously recorded file's ID for `simulive`.

  • recurrence

    object — Recurrence object. Use this object only for a webinar of type `9`, a recurring webinar with fixed time.

    • type (required)

      integer, possible values: 1, 2, 3 — Recurrence webinar types. `1` - Daily. `2` - Weekly. `3` - Monthly.

    • end_date_time

      string, format: date-time — Select a date when the webinar will recur before it is canceled. Should be in UTC time, such as `2017-11-25T12:00:00Z`. Cannot be used with `end_times`.

    • end_times

      integer, default: 1 — Select how many times the webinar will recur before it is canceled. The maximum number of recurring is 60. Cannot be used with `end_date_time`.

    • monthly_day

      integer — Use this field **only if you're scheduling a recurring webinar of type `3`** to state which day in a month the webinar should recur. The value range is from 1 to 31. For instance, if you would like the webinar to recur on 23rd of each month, provide `23` as the value of this field and `1` as the value of the `repeat_interval` field. Instead, if you would like the webinar to recur once every three months, on 23rd of the month, change the value of the `repeat_interval` field to `3`.

    • monthly_week

      integer, possible values: -1, 1, 2, 3, 4 — Use this field **only if you're scheduling a recurring webinar of type `3`** to state the week of the month when the webinar should recur. If you use this field, **you must also use the `monthly_week_day` field to state the day of the week when the webinar should recur.** `-1` - Last week of the month. `1` - First week of the month. `2` - Second week of the month. `3` - Third week of the month. `4` - Fourth week of the month.

    • monthly_week_day

      integer, possible values: 1, 2, 3, 4, 5, 6, 7 — Use this field **only if you're scheduling a recurring webinar of type `3`** to state a specific day in a week when the monthly webinar should recur. To use this field, you must also use the `monthly_week` field. `1` - Sunday. `2` - Monday. `3` - Tuesday. `4` - Wednesday. `5` - Thursday. `6` - Friday. `7` - Saturday.

    • repeat_interval

      integer — Define the interval when the webinar should recur. For instance, to schedule a webinar that recurs every two months, you must set the value of this field as `2` and the value of the `type` parameter as `3`. For a daily webinar, the maximum interval you can set is `90` days. For a weekly webinar, the maximum interval that you can set is `12` weeks. For a monthly webinar, the maximum interval that you can set is `3` months.

    • weekly_days

      string — Use this field **only if you're scheduling a recurring webinar of type** `2` to state which day(s) of the week the webinar should repeat. The value for this field could be a number between `1` to `7` in string format. For instance, if the webinar should recur on Sunday, provide `1` as the value of this field. **Note:** If you would like the webinar to occur on multiple days of a week, you should provide comma separated values for this field. For instance, if the webinar should recur on Sundays and Tuesdays, provide `1,3` as the value of this field. `1` - Sunday. `2` - Monday. `3` - Tuesday. `4` - Wednesday. `5` - Thursday. `6` - Friday. `7` - Saturday.

  • schedule_for

    string — The email address or user ID of the user to schedule a webinar for.

  • settings

    object — Create webinar settings.

    • add_audio_watermark

      boolean — Add audio watermark that identifies the participants. Not supported for simulive webinar. If not provided, the default value will be based on the user's setting.

    • add_watermark

      boolean — Add watermark that identifies the viewing participant. Not supported for simulive webinar. If not provided, the default value will be based on the user's setting.

    • additional_data_center_regions

      array — Add additional webinar [data center regions](https://support.zoom.us/hc/en-us/articles/360042411451-Selecting-data-center-regions-for-hosted-meetings-and-webinars). Provide this value as an array of [country codes](/docs/api/references/abbreviations/#countries) for the countries available as data center regions in the [**Account Profile**](https://zoom.us/account/setting) interface but have been opted out of in the [user settings](https://zoom.us/profile). For example, the data center regions selected in your [**Account Profile**](https://zoom.us/account) are `Europe`, `Hong Kong SAR`, `Australia`, `India`, `Japan`, `China`, `United States`, and `Canada`. However, in the [**My Profile**](https://zoom.us/profile) settings, you did **not** select `India` and `Japan` for meeting and webinar traffic routing. To include `India` and `Japan` as additional data centers, use the `[IN, TY]` value for this field.

      Items:

      string

    • allow_host_control_participant_mute_state

      boolean — Whether to allow the host and cohosts to fully control the mute state of participants. Not supported for simulive webinar. If not provided, the default value will be based on the user's setting. This option cannot be used together with `request_permission_to_unmute_participants`, only one of the two can be enabled at a time.

    • allow_multiple_devices

      boolean — Allow attendees to join from multiple devices.

    • alternative_host_update_polls

      boolean — Whether the **Allow alternative hosts to add or edit polls** feature is enabled. This requires Zoom version 5.8.0 or higher.

    • alternative_hosts

      string — Alternative host emails or IDs. Multiple values separated by comma.

    • approval_type

      integer, possible values: 0, 1, 2, default: 2 — The default value is `2`. To enable registration required, set the approval type to `0` or `1`. Values include: `0` - Automatically approve. `1` - Manually approve. `2` - No registration required.

    • attendees_and_panelists_reminder_email_notification

      object — Send reminder email to attendees and panelists.

      • enable

        boolean — * `true` - Send reminder email to attendees and panelists. * `false` - Do not send reminder email to attendees and panelists.

      • type

        integer, possible values: 0, 1, 2, 3, 4, 5, 6, 7 — `0` - No plan. `1` - Send 1 hour before webinar. `2` - Send 1 day before webinar. `3` - Send 1 hour and 1 day before webinar. `4` - Send 1 week before webinar. `5` - Send 1 hour and 1 week before webinar. `6` - Send 1 day and 1 week before webinar. `7` - Send 1 hour, 1 day and 1 week before webinar.

    • audio

      string, possible values: "both", "telephony", "voip", "thirdParty", default: "both" — Determine how participants can join the audio portion of the meeting.(Not supported for simulive webinar.)

    • audio_conference_info

      string — Third party audio conference information.

    • authentication_domains

      string — Meeting authentication domains. This option allows you to specify the rule so that Zoom users whose email address contains a certain domain can join the webinar. You can either provide multiple comma-separated domains, use a wildcard for listing domains, or use both methods.

    • authentication_option

      string — Specify the authentication type for users to join a webinar with `meeting_authentication` setting set to `true`. The value of this field can be retrieved from the `id` field within `authentication_options` array in the response of [**Get user settings**](/docs/api/rest/reference/zoom-api/methods#operation/userSettings) API.

    • auto_recording

      string, possible values: "local", "cloud", "none", default: "none" — Automatic recording. Not supported for simulive webinar. `local` - Record on local. `cloud` - Record on cloud. `none` - Disabled.

    • close_registration

      boolean — Close registration after event date.

    • contact_email

      string — Contact email for registration

    • contact_name

      string — Contact name for registration

    • email_in_attendee_report

      boolean — Whether to include guest's email addresses in webinars' attendee reports.

    • email_language

      string — Set the email language. `en-US`,`de-DE`,`es-ES`,`fr-FR`,`id-ID`,`jp-JP`,`nl-NL`,`pl-PL`,`pt-PT`,`ru-RU`,`tr-TR`,`zh-CN`, `zh-TW`, `ko-KO`, `it-IT`, `vi-VN`.

    • enable_session_branding

      boolean — Whether the **Webinar Session Branding** setting is enabled. This setting lets hosts visually customize a webinar by setting a session background. This also lets hosts set Virtual Background and apply name tags to hosts, alternative hosts, panelists, interpreters, and speakers.

    • enforce_login

      boolean — Only signed-in users can join this meeting. **This field is deprecated and will not be supported in future.** Instead of this field, use the `meeting_authentication`, `authentication_option`, or `authentication_domains` fields to establish the authentication mechanism for this Webinar.

    • enforce_login_domains

      string — Only signed-in users with specified domains can join meetings. **This field is deprecated and will not be supported in future.** Instead of this field, use the `authentication_domains` field for this webinar.

    • follow_up_absentees_email_notification

      object — Send follow-up email to absentees.

      • enable

        boolean — * `true` - Send follow-up email to absentees. * `false` - Do not send follow-up email to absentees.

      • type

        integer, possible values: 0, 1, 2, 3, 4, 5, 6, 7 — `0` - No plan. `1` - Send 1 days after the scheduled end date. `2` - Send 2 days after the scheduled end date. `3` - Send 3 days after the scheduled end date. `4` - Send 4 days after the scheduled end date. `5` - Send 5 days after the scheduled end date. `6` - Send 6 days after the scheduled end date. `7` - Send 7 days after the scheduled end date.

    • follow_up_attendees_email_notification

      object — Send follow-up email to attendees.

      • enable

        boolean — * `true`: Send follow-up email to attendees. * `false`: Do not send follow-up email to attendees.

      • type

        integer, possible values: 0, 1, 2, 3, 4, 5, 6, 7 — `0` - No plan. `1` - Send 1 day after the scheduled end date. `2` - Send 2 days after the scheduled end date. `3` - Send 3 days after the scheduled end date. `4` - Send 4 days after the scheduled end date. `5` - Send 5 days after the scheduled end date. `6` - Send 6 days after the scheduled end date. `7` - Send 7 days after the scheduled end date.

    • global_dial_in_countries

      array — List of global dial-in countries

      Items:

      string

    • hd_video

      boolean, default: false — Default to HD video. Not supported for simulive webinar.

    • hd_video_for_attendees

      boolean, default: false — Whether HD video for attendees is enabled. This value defaults to `false`. Not supported for simulive webinar.

    • host_video

      boolean — Start video when host joins webinar. Not supported for simulive webinar.

    • language_interpretation

      object — The webinar's [language interpretation settings](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0064768). Make sure to add the language in the web portal in order to use it in the API. See link for details. **Note:** This feature is only available for certain Webinar add-on, Education, and Business and higher plans. If this feature is not enabled on the host's account, this setting will **not** be applied to the webinar. This is not supported for simulive webinars.

      • enable

        boolean — Whether to enable [language interpretation](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0064768) for the webinar. If not provided, the default value will be based on the user's setting.

      • interpreters

        array — Information about the webinar's language interpreters.

        Items:

        • email

          string, format: email — The interpreter's email address.

        • interpreter_languages

          string — A comma-separated list of the interpreter's languages. The string must contain exactly two languages. To get this value, use the `language_interpretation` object's `languages` and `custom_languages` values in the [**Get user settings**](/docs/api/users/#tag/users/GET/users/{userId}/settings) API response. **languages**: System-supported languages include `English`, `Chinese`, `Japanese`, `German`, `French`, `Russian`, `Portuguese`, `Spanish`, and `Korean`. **custom_languages**: User-defined languages added by the user. For example, an interpreter translating between English and French should use `English,French`.

        • languages

          string — A comma-separated list of the interpreter's languages. The string must contain exactly two country IDs. Only system-supported languages are allowed: `US` (English), `CN` (Chinese), `JP` (Japanese), `DE` (German), `FR` (French), `RU` (Russian), `PT` (Portuguese), `ES` (Spanish), and `KR` (Korean). For example, to set an interpreter translating from English to Chinese, use `US,CN`.

    • meeting_authentication

      boolean — Only [authenticated](https://support.zoom.us/hc/en-us/articles/360037117472-Authentication-Profiles-for-Meetings-and-Webinars) users can join meeting if the value of this field is set to `true`.

    • on_demand

      boolean, default: false — Make the webinar on-demand. Not supported for simulive webinar.

    • panelist_authentication

      boolean — Require panelists to authenticate to join. If not provided, the default value will be based on the user's setting.

    • panelists_invitation_email_notification

      boolean — Send invitation email to panelists. If `false`, do not send invitation email to panelists.

    • panelists_video

      boolean — Start video when panelists join webinar. Not supported for simulive webinar.

    • post_webinar_survey

      boolean — Zoom will open a survey page in attendees' browsers after leaving the webinar

    • practice_session

      boolean, default: false — Enable practice session.

    • question_and_answer

      object — [Q&amp;A](https://support.zoom.us/hc/en-us/articles/203686015-Using-Q-A-as-the-webinar-host#:~:text=Overview,and%20upvote%20each%20other's%20questions.) for webinar.

      • allow_anonymous_questions

        boolean — * `true` - Allow participants to send questions without providing their name to the host, co-host, and panelists.. * `false` - Do not allow anonymous questions.(Not supported for simulive webinar.)

      • allow_auto_reply

        boolean — If simulive webinar, * `true` - allow auto-reply to attendees. * `false` - don't allow auto-reply to the attendees.

      • allow_submit_questions

        boolean — * `true` - Allow participants to submit questions. * `false` - Do not allow submit questions.

      • answer_questions

        string, possible values: "only", "all" — Indicate whether you want attendees to be able to view answered questions only or view all questions. * `only` - Attendees are able to view answered questions only. * `all` - Attendees are able to view all questions submitted in the Q&amp;A.

      • attendees_can_comment

        boolean — * `true` - Attendees can answer questions or leave a comment in the question thread. * `false` - Attendees can not answer questions or leave a comment in the question thread

      • attendees_can_upvote

        boolean — * `true` - Attendees can click the thumbs up button to bring popular questions to the top of the Q&amp;A window. * `false` - Attendees can not click the thumbs up button on questions.

      • auto_reply_text

        string — If `allow_auto_reply` = true, the text to be included in the automatic response.

      • enable

        boolean — * `true` - Enable [Q&amp;A](https://support.zoom.us/hc/en-us/articles/203686015-Using-Q-A-as-the-webinar-host#:~:text=Overview,and%20upvote%20each%20other's%20questions.) for webinar. * `false` - Disable Q&amp;A for webinar. If not provided, the default value will be based on the user's setting.

    • registrants_confirmation_email

      boolean — Send confirmation email to registrants.

    • registrants_email_notification

      boolean — Send email notifications to registrants about approval, cancellation, denial of the registration. The value of this field must be set to true in order to use the `registrants_confirmation_email` field.

    • registrants_restrict_number

      integer, default: 0 — Restrict number of registrants for a webinar. By default, it is set to `0`. A `0` value means that the restriction option is disabled. Provide a number higher than 0 to restrict the webinar registrants by the that number.

    • registration_type

      integer, possible values: 1, 2, 3, default: 1 — Registration types. Only used for recurring webinars with a fixed time. `1` - Attendees register once and can attend any of the webinar sessions. `2` - Attendees need to register for each session in order to attend. `3` - Attendees register once and can choose one or more sessions to attend.

    • request_permission_to_unmute_participants

      boolean, default: false — Whether to enable the [**Request permission to unmute participants**](https://support.zoom.us/hc/en-us/articles/203435537-Muting-and-unmuting-participants-in-a-meeting) setting. Not supported for simulive webinar. This option cannot be used together with `allow_host_control_participant_mute_state`, only one of the two can be enabled at a time.

    • send_1080p_video_to_attendees

      boolean, default: false — Whether to always send 1080p video to attendees. This value defaults to `false`.(Not supported for simulive webinar.)

    • show_join_info

      boolean — Whether to show the webinar's join information on the registration confirmation page. This setting is only applied to webinars with registration enabled.

    • show_share_button

      boolean — Show social share buttons on the registration page.

    • sign_language_interpretation

      object — The webinar's [sign language interpretation settings](https://support.zoom.us/hc/en-us/articles/9644962487309-Using-sign-language-interpretation-in-a-meeting-or-webinar). Make sure to add the language in the web portal in order to use it in the API. See link for details. **Note:** If this feature is not enabled on the host's account, this setting will **not** be applied to the webinar.

      • enable

        boolean — Whether to enable [sign language interpretation](https://support.zoom.us/hc/en-us/articles/9644962487309-Using-sign-language-interpretation-in-a-meeting-or-webinar) for the webinar. If not provided, the default value will be based on the user's setting.

      • interpreters

        array — Information about the webinar's sign language interpreters.

        Items:

        • email

          string, format: email — The interpreter's email address.

        • sign_language

          string — The interpreter's sign language. To get this value, use the `sign_language_interpretation` object's `languages` and `custom_languages` values in the [**Get user settings**](/docs/api/rest/reference/zoom-api/methods#operation/userSettings) API response.

    • survey_url

      string — Survey URL for post webinar survey.

  • simulive_delay_start

    object — {"enable":false,"time":0,"timeunit":"second"}

    • enable

      boolean — Whether simulive need delay playback.

    • time

      integer — The time for delayed playback If the time unit is seconds, then the maximum value is 60 and the minimum value is 1. If the time unit is minutes, then the maximum value is 10 and the minimum value is 1.

    • timeunit

      string, possible values: "second", "minute", default: "second" — The time unit for delayed playback `second` - The time unit for delayed playback is seconds. `minute` - The time unit for delayed playback is minutes.

  • start_time

    string, format: date-time — Webinar start time. We support two formats for `start_time` - local time and GMT. To set time as GMT the format should be `yyyy-MM-dd`T`HH:mm:ssZ`. To set time using a specific timezone, use `yyyy-MM-dd`T`HH:mm:ss` format and specify the timezone [ID](/docs/api/references/abbreviations/#timezones) in the `timezone` field OR leave it blank and the timezone set on your Zoom account will be used. You can also set the time as UTC as the timezone field. The `start_time` should only be used for scheduled and / or recurring webinars with fixed time.

  • template_id

    string — The webinar template ID to schedule a webinar using a [webinar template](https://support.zoom.us/hc/en-us/articles/115001079746-Webinar-Templates) or a [admin webinar template](https://support.zoom.us/hc/en-us/articles/8137753618957-Configuring-admin-webinar-templates). For a list of webinar templates, use the [**List webinar templates**](/docs/api/rest/reference/zoom-api/methods#operation/listWebinarTemplates) API.

  • timezone

    string — The timezone to assign to the `start_time` value. This field is only used for scheduled or recurring webinars with a fixed time. For a list of supported timezones and their formats, see our [timezone list](/docs/api/references/abbreviations/#timezones).

  • topic

    string — The webinar's topic.

  • tracking_fields

    array — Tracking fields.

    Items:

    • field (required)

      string — Tracking fields type.

    • value

      string — Tracking fields value.

  • transition_to_live

    boolean — Whether to transition a simulive webinar to live. The host must be present at the time of transition.

  • type

    integer, possible values: 5, 6, 9, default: 5 — Webinar types. `5` - Webinar. `6` - Recurring webinar with no fixed time. `9` - Recurring webinar with a fixed time.

Example:

{
  "agenda": "My Webinar",
  "duration": 60,
  "password": "123456",
  "default_passcode": true,
  "recurrence": {
    "end_date_time": "2022-04-02T15:59:00Z",
    "end_times": 7,
    "monthly_day": 1,
    "monthly_week": 1,
    "monthly_week_day": 1,
    "repeat_interval": 1,
    "type": 1,
    "weekly_days": "1"
  },
  "schedule_for": "jchill@example.com",
  "settings": {
    "additional_data_center_regions": [
      "TY"
    ],
    "allow_multiple_devices": true,
    "alternative_hosts": "jchill@example.com;thill@example.com",
    "alternative_host_update_polls": true,
    "approval_type": 0,
    "attendees_and_panelists_reminder_email_notification": {
      "enable": true,
      "type": 0
    },
    "audio": "telephony",
    "audio_conference_info": "test",
    "authentication_domains": "example.com",
    "authentication_option": "signIn_D8cJuqWVQ623CI4Q8yQK0Q",
    "auto_recording": "cloud",
    "contact_email": "jchill@example.com",
    "contact_name": "Jill Chill",
    "email_language": "en-US",
    "follow_up_absentees_email_notification": {
      "enable": true,
      "type": 0
    },
    "follow_up_attendees_email_notification": {
      "enable": true,
      "type": 0
    },
    "global_dial_in_countries": [
      "US"
    ],
    "hd_video": false,
    "hd_video_for_attendees": false,
    "host_video": true,
    "language_interpretation": {
      "enable": true,
      "interpreters": [
        {
          "email": "interpreter@example.com",
          "interpreter_languages": "English,French"
        }
      ]
    },
    "sign_language_interpretation": {
      "enable": true,
      "interpreters": [
        {
          "email": "interpreter@example.com",
          "sign_language": "American"
        }
      ]
    },
    "panelist_authentication": true,
    "meeting_authentication": true,
    "add_watermark": true,
    "add_audio_watermark": true,
    "on_demand": false,
    "panelists_invitation_email_notification": true,
    "panelists_video": true,
    "post_webinar_survey": true,
    "practice_session": false,
    "question_and_answer": {
      "allow_submit_questions": true,
      "allow_anonymous_questions": true,
      "answer_questions": "all",
      "attendees_can_comment": true,
      "attendees_can_upvote": true,
      "allow_auto_reply": true,
      "auto_reply_text": "Thank you for your question. We will get back to you shortly.",
      "enable": true
    },
    "registrants_confirmation_email": true,
    "registrants_email_notification": true,
    "registrants_restrict_number": 100,
    "registration_type": 1,
    "send_1080p_video_to_attendees": false,
    "show_share_button": true,
    "show_join_info": true,
    "survey_url": "https://example.com",
    "enable_session_branding": true,
    "request_permission_to_unmute_participants": true,
    "allow_host_control_participant_mute_state": false,
    "email_in_attendee_report": true
  },
  "start_time": "2022-03-26T06:44:14Z",
  "template_id": "5Cj3ceXoStO6TGOVvIOVPA==",
  "timezone": "America/Los_Angeles",
  "topic": "My Webinar",
  "tracking_fields": [
    {
      "field": "field1",
      "value": "value1"
    }
  ],
  "type": 5,
  "is_simulive": true,
  "record_file_id": "f09340e1-cdc3-4eae-9a74-98f9777ed908",
  "transition_to_live": false,
  "simulive_delay_start": {
    "enable": true,
    "time": 10,
    "timeunit": "second"
  }
}

Responses

Status: 201 **HTTP Status Code:** `201` Webinar created.
Content-Type: application/json
  • agenda

    string — The webinar's agenda.

  • created_at

    string, format: date-time — Creation time.

  • creation_source

    string, possible values: "other", "open_api", "web_portal" — The platform through which the meeting was created. * `other` - Created through another platform. * `open_api` - Created through Open API. * `web_portal` - Created through the web portal.

  • duration

    integer — The webinar's duration.

  • encrypted_passcode

    string — Encrypted passcode for third party endpoints (H323/SIP).

  • h323_passcode

    string — H.323/SIP room system passcode.

  • host_email

    string, format: email — Email address of the meeting host.

  • host_id

    string — ID of the user set as host of the webinar.

  • id

    integer, format: int64 — Webinar ID in **long** format, represented as int64 data type in JSON. Also known as the webinar number.

  • is_simulive

    boolean — Whether the webinar is `simulive`.

  • join_url

    string — URL to join the webinar. Only share this URL with the users who should be invited to the webinar.

  • occurrences

    array — Array of occurrence objects.

    Items:

    • duration

      integer — Duration.

    • occurrence_id

      string — Occurrence ID: a unique identifier that identifies an occurrence of a recurring webinar. [Recurring webinars](https://support.zoom.us/hc/en-us/articles/216354763-How-to-Schedule-A-Recurring-Webinar) can have a maximum of 50 occurrences.

    • start_time

      string, format: date-time — Start time.

    • status

      string, possible values: "available", "deleted" — Occurrence status. `available` - Available occurrence. `deleted` - Deleted occurrence.

  • password

    string — The webinar passcode. By default, it can be up to 10 characters in length and may contain alphanumeric characters as well as special characters such as !, @, #, etc.

  • record_file_id

    string — The previously recorded file's ID for `simulive`.

  • recurrence

    object — Recurrence object. Use this object only for a webinar of type `9` i.e., a recurring webinar with fixed time.

    • type (required)

      integer, possible values: 1, 2, 3 — Recurrence webinar types. `1` - Daily. `2` - Weekly. `3` - Monthly.

    • end_date_time

      string, format: date-time — A date when the webinar will recur before it is canceled. Should be in UTC time, such as 2017-11-25T12:00:00Z. Can't be used with `end_times`.

    • end_times

      integer, default: 1 — How many times the webinar will recur before it is canceled. The maximum number of recurring is 60. Can't be used with `end_date_time`.

    • monthly_day

      integer — Use this field **only if you're scheduling a recurring webinar of type** `3` to state which day in a month the webinar should recur. The value range is from 1 to 31. For instance, if you would like the webinar to recur on 23rd of each month, provide `23` as the value of this field and `1` as the value of the `repeat_interval` field. Instead, if you would like the webinar to recur once every three months, on 23rd of the month, change the value of the `repeat_interval` field to `3`.

    • monthly_week

      integer, possible values: -1, 1, 2, 3, 4 — Use this field **only if you're scheduling a recurring webinar of type** `3` to state the week of the month when the webinar should recur. If you use this field, **you must also use the `monthly_week_day` field to state the day of the week when the webinar should recur.** `-1` - Last week of the month. `1` - First week of the month. `2` - Second week of the month. `3` - Third week of the month. `4` - Fourth week of the month.

    • monthly_week_day

      integer, possible values: 1, 2, 3, 4, 5, 6, 7 — Use this field **only if you're scheduling a recurring webinar of type** `3` to state a specific day in a week when the monthly webinar should recur. To use this field, you must also use the `monthly_week` field. `1` - Sunday. `2` - Monday. `3` - Tuesday. `4` - Wednesday. `5` - Thursday. `6` - Friday. `7` - Saturday.

    • repeat_interval

      integer — Define the interval when the webinar should recur. For instance, if you would like to schedule a Webinar that recurs every two months, you must set the value of this field as `2` and the value of the `type` parameter as `3`. For a daily webinar, the maximum interval you can set is `90` days. For a weekly webinar, the maximum interval that you can set is `12` weeks. For a monthly webinar, the maximum interval that you can set is `3` months.

    • weekly_days

      string — Use this field **only if you're scheduling a recurring webinar of type** `2` to state which day(s) of the week the webinar should repeat. The value for this field could be a number between `1` to `7` in string format. For instance, if the Webinar should recur on Sunday, provide `1` as the value of this field. **Note:** If you would like the webinar to occur on multiple days of a week, you should provide comma separated values for this field. For instance, if the webinar should recur on Sundays and Tuesdays, provide `1,3` as the value of this field. `1` - Sunday. `2` - Monday. `3` - Tuesday. `4` - Wednesday. `5` - Thursday. `6` - Friday. `7` - Saturday.

  • registration_url

    string — The URL that registrants can use to register for a webinar. This field is only returned for webinars that have enabled registration.

  • settings

    object — Webinar settings.

    • add_audio_watermark

      boolean — Add audio watermark that identifies the participants. If not provided, the default value will be based on the user's setting.

    • add_watermark

      boolean — Add watermark that identifies the viewing participant. If not provided, the default value will be based on the user's setting.

    • additional_data_center_regions

      array — Add additional webinar [data center regions](https://support.zoom.us/hc/en-us/articles/360042411451-Selecting-data-center-regions-for-hosted-meetings-and-webinars). Provide this value as an array of [country codes](/docs/api/references/abbreviations/#countries) for the countries available as data center regions in the [**Account Profile**](https://zoom.us/account/setting) interface but have been opted out of in the [user settings](https://zoom.us/profile). For example, the data center regions selected in your [**Account Profile**](https://zoom.us/account) are `Europe`, `Hong Kong SAR`, `Australia`, `India`, `Japan`, `China`, `United States`, and `Canada`. However, in the [**My Profile**](https://zoom.us/profile) settings, you did **not** select `India` and `Japan` for meeting and webinar traffic routing. To include `India` and `Japan` as additional data centers, use the `[IN, TY]` value for this field.

      Items:

      string

    • allow_host_control_participant_mute_state

      boolean — Whether to allow the host and cohosts to fully control the mute state of participants. Not supported for simulive webinar. If not provided, the default value will be based on the user's setting. This option cannot be used together with `request_permission_to_unmute_participants`, only one of the two can be enabled at a time.

    • allow_multiple_devices

      boolean — Allow attendees to join from multiple devices.

    • alternative_host_update_polls

      boolean — Whether the **Allow alternative hosts to add or edit polls** feature is enabled. This requires Zoom version 5.8.0 or higher.

    • alternative_hosts

      string — Alternative host emails or IDs. Multiple values separated by comma.

    • approval_type

      integer, possible values: 0, 1, 2, default: 2 — `0` - Automatically approve. `1` - Manually approve. `2` - No registration required.

    • attendees_and_panelists_reminder_email_notification

      object — Send reminder email to attendees and panelists.

      • enable

        boolean — * `true` - Send reminder email to attendees and panelists. * `false` - Do not send reminder email to attendees and panelists.

      • type

        integer, possible values: 0, 1, 2, 3, 4, 5, 6, 7 — `0` - No plan. `1` - Send 1 hour before webinar. `2` - Send 1 day before webinar. `3` - Send 1 hour and 1 day before webinar. `4` - Send 1 week before webinar. `5` - Send 1 hour and 1 week before webinar. `6` - Send 1 day and 1 week before webinar. `7` - Send 1 hour, 1 day and 1 week before webinar.

    • audio

      string, possible values: "both", "telephony", "voip", "thirdParty", default: "both" — Determine how participants can join the audio portion of the webinar.

    • audio_conference_info

      string — Third party audio conference info.

    • authentication_domains

      string — If user has configured [**Sign Into Zoom with Specified Domains**](https://support.zoom.us/hc/en-us/articles/360037117472-Authentication-Profiles-for-Meetings-and-Webinars#h_5c0df2e1-cfd2-469f-bb4a-c77d7c0cca6f) option, this will list the domains that are authenticated.

    • authentication_name

      string — Authentication name set in the [authentication profile](https://support.zoom.us/hc/en-us/articles/360037117472-Authentication-Profiles-for-Meetings-and-Webinars#h_5c0df2e1-cfd2-469f-bb4a-c77d7c0cca6f).

    • authentication_option

      string — Webinar authentication option ID.

    • auto_recording

      string, possible values: "local", "cloud", "none", default: "none" — Automatic recording. `local` - Record on local. `cloud` - Record on cloud. `none` - Disabled.

    • close_registration

      boolean — Close registration after event date.

    • contact_email

      string — Contact email for registration

    • contact_name

      string — Contact name for registration

    • email_in_attendee_report

      boolean — Whether to include guest's email addresses in attendee reports for webinars.

    • email_language

      string — Set the email language. `en-US`,`de-DE`,`es-ES`,`fr-FR`,`jp-JP`,`pt-PT`,`ru-RU`,`zh-CN`, `zh-TW`, `ko-KO`, `it-IT`, `vi-VN`.

    • enable_session_branding

      boolean — Whether the **Webinar Session Branding** setting is enabled. This setting lets hosts visually customize a webinar by setting a session background. This also lets hosts use [Webinar Session Branding](https://support.zoom.us/hc/en-us/articles/4836268732045-Using-Webinar-Session-Branding) to set the Virtual Background for and apply name tags to hosts, alternative hosts, panelists, interpreters, and speakers.

    • enforce_login

      boolean — Only signed in users can join this meeting. **This field is deprecated and will not be supported in the future.** As an alternative, use the `meeting_authentication`, `authentication_option` and `authentication_domains` fields to understand the [authentication configurations](https://support.zoom.us/hc/en-us/articles/360037117472-Authentication-Profiles-for-Meetings-and-Webinars) set for the webinar.

    • enforce_login_domains

      string — Only signed in users with specified domains can join meetings. **This field is deprecated and will not be supported in the future.** As an alternative, use the `meeting_authentication`, `authentication_option` and `authentication_domains` fields to understand the [authentication configurations](https://support.zoom.us/hc/en-us/articles/360037117472-Authentication-Profiles-for-Meetings-and-Webinars) set for the webinar.

    • follow_up_absentees_email_notification

      object — Send follow-up email to absentees.

      • enable

        boolean — * `true` - Send follow-up email to absentees. * `false` - Do not send follow-up email to absentees.

      • type

        integer, possible values: 0, 1, 2, 3, 4, 5, 6, 7 — `0` - No plan. `1` - Send 1 days after the scheduled end date. `2` - Send 2 days after the scheduled end date. `3` - Send 3 days after the scheduled end date. `4` - Send 4 days after the scheduled end date. `5` - Send 5 days after the scheduled end date. `6` - Send 6 days after the scheduled end date. `7` - Send 7 days after the scheduled end date.

    • follow_up_attendees_email_notification

      object — Send follow-up email to attendees.

      • enable

        boolean — * `true` - Send follow-up email to attendees. * `false` - Do not send follow-up email to attendees.

      • type

        integer, possible values: 0, 1, 2, 3, 4, 5, 6, 7 — `0` - No plan. `1` - Send 1 day after the scheduled end date. `2` - Send 2 days after the scheduled end date. `3` - Send 3 days after the scheduled end date. `4` - Send 4 days after the scheduled end date. `5` - Send 5 days after the scheduled end date. `6` - Send 6 days after the scheduled end date. `7` - Send 7 days after the scheduled end date.

    • global_dial_in_countries

      array — List of global dial-in countries

      Items:

      string

    • global_dial_in_numbers

      array — A list of available dial-in numbers for different countries or regions.

      Items:

      • city

        string — City of the number.

      • country

        string — The country code.

      • country_name

        string — Full name of country.

      • number

        string — Dial-in phone number.

      • type

        string, possible values: "toll", "tollfree", "premium" — Dial-in number type.

    • hd_video

      boolean, default: false — Default to HD video.

    • hd_video_for_attendees

      boolean, default: false — Whether HD video for attendees is enabled.

    • host_video

      boolean — Start video when host joins webinar.

    • language_interpretation

      object — The webinar's [language interpretation settings](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0064768). Make sure to add the language in the web portal in order to use it in the API. See link for details. **Note:** This feature is only available for certain Webinar add-on, Education, and Business and higher plans. If this feature is not enabled on the host's account, this setting will **not** be applied to the webinar. This is not supported for simulive webinars.

      • enable

        boolean — Whether to enable [language interpretation](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0064768) for the webinar. If not provided, the default value will be based on the user's setting.

      • interpreters

        array — Information about the webinar's language interpreters.

        Items:

        • email

          string, format: email — The interpreter's email address.

        • interpreter_languages

          string — A comma-separated list of the interpreter's languages. The string must contain exactly two languages. To get this value, use the `language_interpretation` object's `languages` and `custom_languages` values in the [**Get user settings**](/docs/api/users/#tag/users/GET/users/{userId}/settings) API response. **languages**: System-supported languages include `English`, `Chinese`, `Japanese`, `German`, `French`, `Russian`, `Portuguese`, `Spanish`, and `Korean`. **custom_languages**: User-defined languages added by the user. For example, an interpreter translating between English and French should use `English,French`.

        • languages

          string — A comma-separated list of the interpreter's languages. The string must contain exactly two country IDs. Only system-supported languages are allowed: `US` (English), `CN` (Chinese), `JP` (Japanese), `DE` (German), `FR` (French), `RU` (Russian), `PT` (Portuguese), `ES` (Spanish), and `KR` (Korean). For example, to set an interpreter translating from English to Chinese, use `US,CN`.

    • meeting_authentication

      boolean — Only authenticated users can join Webinar.

    • on_demand

      boolean, default: false — Make the webinar on demand.

    • panelist_authentication

      boolean — Require panelists to authenticate to join. If not provided, the default value will be based on the user's setting.

    • panelists_invitation_email_notification

      boolean — Send invitation email to panelists. If `false`, do not send invitation email to panelists.

    • panelists_video

      boolean — Start video when panelists join the webinar.

    • post_webinar_survey

      boolean — Zoom will open a survey page in attendees' browsers after leaving the webinar.

    • practice_session

      boolean, default: false — Enable practice session.

    • question_and_answer

      object — [Q&amp;A](https://support.zoom.us/hc/en-us/articles/203686015-Using-Q-A-as-the-webinar-host#:~:text=Overview,and%20upvote%20each%20other's%20questions.) for webinar.

      • allow_anonymous_questions

        boolean — * `true` - Allow participants to send questions without providing their name to the host, co-host, and panelists. * `false` - Do not allow anonymous questions.

      • allow_auto_reply

        boolean — If simulive webinar, * `true` - allow auto-reply to attendees. * `false` - don't allow auto-reply to the attendees.

      • allow_submit_questions

        boolean — * `true` - Allow participants to submit questions. * `false` - Do not allow submit questions.

      • answer_questions

        string, possible values: "only", "all" — Indicate whether you want attendees to be able to view only answered questions, or view all questions. * `only` - Attendees are able to view answered questions only. * `all` - Attendees are able to view all questions submitted in the Q&amp;A.

      • attendees_can_comment

        boolean — * `true` - Attendees can answer questions or leave a comment in the question thread. * `false` - Attendees can not answer questions or leave a comment in the question thread

      • attendees_can_upvote

        boolean — * `true` - Attendees can click the thumbs up button to bring popular questions to the top of the Q&amp;A window. * `false` - Attendees can not click the thumbs up button on questions.

      • auto_reply_text

        string — If `allow_auto_reply` = true, the text to be included in the automatic response.

      • enable

        boolean — * `true`: Enable [Q&amp;A](https://support.zoom.us/hc/en-us/articles/203686015-Using-Q-A-as-the-webinar-host#:~:text=Overview,and%20upvote%20each%20other's%20questions.) for webinar. * `false`: Disable Q&amp;A for webinar. If not provided, the default value will be based on the user's setting.

    • registrants_confirmation_email

      boolean — Send confirmation email to registrants.

    • registrants_email_notification

      boolean — Send email notifications to registrants about approval, cancellation, denial of the registration. The value of this field must be set to true in order to use the `registrants_confirmation_email` field.

    • registrants_restrict_number

      integer, default: 0 — Restrict number of registrants for a webinar. By default, it is set to `0`. A `0` value means that the restriction option is disabled. Provide a number higher than 0 to restrict the webinar registrants by the that number.

    • registration_type

      integer, possible values: 1, 2, 3, default: 1 — Registration types. Only used for recurring webinars with a fixed time. `1` - Attendees register once and can attend any of the webinar sessions. `2` - Attendees need to register for each session in order to attend. `3` - Attendees register once and can choose one or more sessions to attend.

    • request_permission_to_unmute_participants

      boolean, default: false — Whether to enable the [**Request permission to unmute participants**](https://support.zoom.us/hc/en-us/articles/203435537-Muting-and-unmuting-participants-in-a-meeting) setting. Not supported for simulive webinar. This option cannot be used together with `allow_host_control_participant_mute_state`, only one of the two can be enabled at a time.

    • send_1080p_video_to_attendees

      boolean, default: false — Always send 1080p video to attendees.

    • show_join_info

      boolean — Whether to show the webinar's join information on the registration confirmation page. This setting is only applied to webinars with registration enabled.

    • show_share_button

      boolean — Show social share buttons on the registration page.

    • sign_language_interpretation

      object — The webinar's [sign language interpretation settings](https://support.zoom.us/hc/en-us/articles/9644962487309-Using-sign-language-interpretation-in-a-meeting-or-webinar). Make sure to add the language in the web portal in order to use it in the API. See link for details. **Note:** If this feature is not enabled on the host's account, this setting will **not** be applied to the webinar.

      • enable

        boolean — Whether to enable [sign language interpretation](https://support.zoom.us/hc/en-us/articles/9644962487309-Using-sign-language-interpretation-in-a-meeting-or-webinar) for the webinar. If not provided, the default value will be based on the user's setting.

      • interpreters

        array — Information about the webinar's sign language interpreters.

        Items:

        • email

          string, format: email — The interpreter's email address.

        • sign_language

          string — The interpreter's sign language. To get this value, use the `sign_language_interpretation` object's `languages` and `custom_languages` values in the [**Get user settings**](/docs/api/rest/reference/zoom-api/methods#operation/userSettings) API response.

    • survey_url

      string — Survey url for post webinar survey.

  • simulive_delay_start

    object — {"enable":false,"time":0,"timeunit":"second"}

    • enable

      boolean — Whether simulive need delay playback.

    • time

      integer — The time for delayed playback.

    • timeunit

      string — The time unit for delayed playback.

  • start_time

    string, format: date-time — Webinar start time in GMT/UTC.

  • start_url

    string — The `start_url` of a webinar is a URL using which a host or an alternative host can start the webinar. This URL should only be used by the host of the meeting and should not be shared with anyone other than the host of the webinar. The expiration time for the `start_url` field listed in the response of the [**Create a webinar**](/docs/api/rest/reference/zoom-api/methods#operation/webinarCreate) API is two hours for all regular users. For users created using the `custCreate` option via the [**Create users**](/docs/api/rest/reference/zoom-api/methods#operation/userCreate) API, the expiration time of the `start_url` field is 90 days. For security reasons, to retrieve the latest value for the `start_url` field programmatically after expiry, call the [**Get a webinar**](/docs/api/rest/reference/zoom-api/methods#operation/webinar) API and refer to the value of the `start_url` field in the response.

  • template_id

    string — The webinar template's unique identifier. Use this field only if you would like to [schedule the webinar using an existing template](https://support.zoom.us/hc/en-us/articles/115001079746-Webinar-Templates#schedule). The value of this field can be retrieved from [**List webinar templates**](/docs/api/rest/reference/zoom-api/methods#operation/listWebinarTemplates) API. You must provide the user ID of the host instead of the email address in the `userId` path parameter in order to use a template for scheduling a Webinar.

  • timezone

    string — Time zone to format `start_time`.

  • topic

    string — The webinar's topic.

  • tracking_fields

    array — Tracking fields.

    Items:

    • field

      string — Tracking fields type.

    • value

      string — Tracking fields value.

    • visible

      boolean — Whether the [tracking field](https://support.zoom.us/hc/en-us/articles/115000293426-Scheduling-Tracking-Fields) is visible in the webinar scheduling options in the Zoom Web Portal or not. * `true` - Tracking field is visible. * `false` - Tracking field is not visible to the users in the webinar options in the Zoom Web Portal but the field was used while scheduling this webinar via API. An invisible tracking field can be used by users while scheduling webinars via API only.

  • transition_to_live

    boolean — Whether to transition a simulive webinar to live. The host must be present at the time of transition.

  • type

    integer, possible values: 5, 6, 9, default: 5 — Webinar types. `5` - Webinar. `6` - Recurring webinar with no fixed time. `9` - Recurring webinar with a fixed time.

  • uuid

    string — A webinar's unique identifier. Each webinar instance will generate its own UUID. Ror example, after a webinar ends, a new UUID is generated for the next instance of the webinar. Once a webinar ends, the value of the UUID for the same webinar will be different from when it was scheduled.

Example:

{
  "host_email": "jchill@example.com",
  "host_id": "30R7kT7bTIKSNUFEuH_Qlg",
  "id": 95204914252,
  "template_id": "ull6574eur",
  "uuid": "Bznyg8KZTdCVbQxvS/oZ7w==",
  "agenda": "My Webinar",
  "created_at": "2022-03-26T07:18:32Z",
  "duration": 60,
  "registration_url": "https://example.com/webinar/register/7ksAkRCoEpt1Jm0wa-E6lICLur9e7Lde5oW6",
  "join_url": "https://example.com/j/11111",
  "occurrences": [
    {
      "duration": 60,
      "occurrence_id": "1648194360000",
      "start_time": "2022-03-25T07:46:00Z",
      "status": "available"
    }
  ],
  "password": "123456",
  "encrypted_passcode": "8pEkRweVXPV3Ob2KJYgFTRlDtl1gSn.1",
  "h323_passcode": "123456",
  "recurrence": {
    "end_date_time": "2022-04-02T15:59:00Z",
    "end_times": 7,
    "monthly_day": 1,
    "monthly_week": 1,
    "monthly_week_day": 1,
    "repeat_interval": 1,
    "type": 1,
    "weekly_days": "1"
  },
  "settings": {
    "additional_data_center_regions": [
      "TY"
    ],
    "allow_multiple_devices": true,
    "alternative_hosts": "jchill@example.com",
    "alternative_host_update_polls": true,
    "approval_type": 0,
    "attendees_and_panelists_reminder_email_notification": {
      "enable": true,
      "type": 0
    },
    "audio": "telephony",
    "audio_conference_info": "test",
    "authentication_domains": "example.com",
    "authentication_name": "Sign in to Zoom",
    "authentication_option": "signIn_D8cJuqWVQ623CI4Q8yQK0Q",
    "auto_recording": "cloud",
    "contact_email": "jchill@example.com",
    "contact_name": "Jill Chill",
    "email_language": "en-US",
    "follow_up_absentees_email_notification": {
      "enable": true,
      "type": 0
    },
    "follow_up_attendees_email_notification": {
      "enable": true,
      "type": 0
    },
    "global_dial_in_countries": [
      "US"
    ],
    "global_dial_in_numbers": [
      {
        "city": "New York",
        "country": "US",
        "country_name": "US",
        "number": "+1 1000200200",
        "type": "toll"
      }
    ],
    "hd_video": false,
    "hd_video_for_attendees": false,
    "host_video": true,
    "language_interpretation": {
      "enable": true,
      "interpreters": [
        {
          "email": "interpreter@example.com",
          "interpreter_languages": "English,French"
        }
      ]
    },
    "sign_language_interpretation": {
      "enable": true,
      "interpreters": [
        {
          "email": "interpreter@example.com",
          "sign_language": "American"
        }
      ]
    },
    "panelist_authentication": true,
    "meeting_authentication": true,
    "add_watermark": true,
    "add_audio_watermark": true,
    "on_demand": false,
    "panelists_invitation_email_notification": true,
    "panelists_video": true,
    "post_webinar_survey": true,
    "practice_session": false,
    "question_and_answer": {
      "allow_submit_questions": true,
      "allow_anonymous_questions": true,
      "answer_questions": "all",
      "attendees_can_comment": true,
      "attendees_can_upvote": true,
      "allow_auto_reply": true,
      "auto_reply_text": "Thank you for your question. We will get back to you shortly.",
      "enable": true
    },
    "registrants_confirmation_email": true,
    "registrants_email_notification": true,
    "registrants_restrict_number": 100,
    "registration_type": 1,
    "send_1080p_video_to_attendees": false,
    "show_share_button": true,
    "show_join_info": true,
    "survey_url": "https://example.com",
    "enable_session_branding": true,
    "request_permission_to_unmute_participants": true,
    "allow_host_control_participant_mute_state": false,
    "email_in_attendee_report": true
  },
  "start_time": "2022-03-26T07:18:32Z",
  "start_url": "https://example.com/s/11111",
  "timezone": "America/Los_Angeles",
  "topic": "My Webinar",
  "tracking_fields": [
    {
      "field": "field1",
      "value": "value1",
      "visible": true
    }
  ],
  "type": 5,
  "is_simulive": true,
  "record_file_id": "f09340e1-cdc3-4eae-9a74-98f9777ed908",
  "transition_to_live": false,
  "simulive_delay_start": {
    "enable": true,
    "time": 10,
    "timeunit": "second or minute"
  },
  "creation_source": "open_api"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> Webinar plan is missing. You must subscribe to the webinar plan and enable webinars for user {userID} in order to perform this action. <br> **Error Code:** `300` <br> The value that you entered for the `schedule_for` field is invalid. Enter a valid value and try again. <br> **Error Code:** `300` <br> Can not schedule simulive webinar for others. <br> **Error Code:** `300` <br> Account hasn't enabled simulive webinar. <br> **Error Code:** `300` <br> Record file does not exist. <br> **Error Code:** `3000` <br> You cannot schedule a meeting for {userId}. <br> **Error Code:** `200` <br> No permission. <br> **Error Code:** `4505` <br> Simulive can't select `No Fixed Time`. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User {userId} does not exist. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rate-limits/).

Get a webinar

  • Method: GET
  • Path: /accounts/{accountId}/webinars/{webinarId}
  • Tags: Webinars

Get details for a scheduled Zoom webinar.

Prerequisites

  • Pro or higher plan with a Webinar add-on.

Scopes: webinar:master

Granular Scopes: webinar:read:webinar:master

Rate Limit Label: LIGHT

Responses

Status: 200 **HTTP Status Code:** `200` Success
Content-Type: application/json
  • agenda

    string — Webinar agenda.

  • created_at

    string, format: date-time — Create time.

  • creation_source

    string, possible values: "other", "open_api", "web_portal" — The platform used when creating the meeting. * `other` - Created through another platform. * `open_api` - Created through Open API. * `web_portal` - Created through the web portal.

  • duration

    integer — Webinar duration.

  • encrypted_passcode

    string — Encrypted passcode for third party endpoints (H323/SIP).

  • h323_passcode

    string — H.323/SIP room system passcode.

  • host_email

    string, format: email — The meeting host's email address.

  • host_id

    string — ID of the user set as host of webinar.

  • id

    integer, format: int64 — The webinar ID in **long** format, represented as int64 data type in JSON, also known as the webinar number.

  • is_simulive

    boolean — Whether the webinar is `simulive`.

  • join_url

    string — URL to join the webinar. Only share this URL with the users who should be invited to the webinar.

  • occurrences

    array — Array of occurrence objects.

    Items:

    • duration

      integer — Duration.

    • occurrence_id

      string — The occurrence ID, a unique identifier that identifies an occurrence of a recurring webinar. [Recurring webinars](https://support.zoom.us/hc/en-us/articles/216354763-How-to-Schedule-A-Recurring-Webinar) can have a maximum of 50 occurrences.

    • start_time

      string, format: date-time — Start time.

    • status

      string, possible values: "available", "deleted" — Occurrence status. `available` - Available occurrence. `deleted` - Deleted occurrence.

  • password

    string — Webinar passcode. Passcode may only contain the characters [a-z A-Z 0-9 @ - _ * !]. Maximum of 10 characters. If **Webinar Passcode** setting has been **enabled** **and** [locked](https://support.zoom.us/hc/en-us/articles/115005269866-Using-Tiered-Settings#locked) for the user, the passcode field will be autogenerated for the Webinar in the response even if it is not provided in the API request. **Note:** If the account owner or the admin has configured [minimum passcode requirement settings](https://support.zoom.us/hc/en-us/articles/360033559832-Meeting-and-webinar-passwords#h_a427384b-e383-4f80-864d-794bf0a37604), the passcode value provided here must meet those requirements. If the requirements are enabled, you can view those requirements by calling the [**Get account settings**](/docs/api/rest/reference/account/methods/#operation/accountSettings) API.

  • record_file_id

    string — The previously recorded file's ID for `simulive`.

  • recurrence

    object — Recurrence object. Use this object only for a webinar of type `9` - a recurring webinar with fixed time.

    • type (required)

      integer, possible values: 1, 2, 3 — Recurrence webinar types. `1` - Daily. `2` - Weekly. `3` - Monthly.

    • end_date_time

      string, format: date-time — Select a date when the webinar will recur before it is canceled. Should be in UTC time, such as 2017-11-25T12:00:00Z. Cannot be used with `end_times`.

    • end_times

      integer, default: 1 — How many times the webinar will recur before it is canceled. The maximum number of recurring is 60. Cannot be used with `end_date_time`.

    • monthly_day

      integer — Use this field **only if you're scheduling a recurring webinar of type** `3` to state which day in a month, the webinar should recur. The value range is from 1 to 31. For instance, if you would like the webinar to recur on 23rd of each month, provide `23` as the value of this field and `1` as the value of the `repeat_interval` field. Instead, if you would like the webinar to recur once every three months, on 23rd of the month, change the value of the `repeat_interval` field to `3`.

    • monthly_week

      integer, possible values: -1, 1, 2, 3, 4 — Use this field **only if you're scheduling a recurring webinar of type** `3` to state the week of the month when the webinar should recur. If you use this field, **you must also use the `monthly_week_day` field to state the day of the week when the webinar should recur.** `-1` - Last week of the month. `1` - First week of the month. `2` - Second week of the month. `3` - Third week of the month. `4` - Fourth week of the month.

    • monthly_week_day

      integer, possible values: 1, 2, 3, 4, 5, 6, 7 — Use this field **only if you're scheduling a recurring webinar of type** `3` to state a specific day in a week when the monthly webinar should recur. To use this field, you must also use the `monthly_week` field. `1` - Sunday. `2` - Monday. `3` - Tuesday. `4` - Wednesday. `5` - Thursday. `6` - Friday. `7` - Saturday.

    • repeat_interval

      integer — Define the interval when the webinar should recur. For instance, to schedule a webinar that recurs every two months, you must set the value of this field as `2` and the value of the `type` parameter as `3`. For a daily webinar, the maximum interval you can set is `90` days. For a weekly webinar, the maximum interval that you can set is `12` weeks. For a monthly webinar, the maximum interval that you can set is `3` months.

    • weekly_days

      string — Use this field **only if you're scheduling a recurring webinar of type** `2` to state which days of the week the webinar should repeat. The value for this field could be a number between `1` to `7` in string format. For instance, if the Webinar should recur on Sunday, provide `1` as the value of this field. **Note:** If you would like the webinar to occur on multiple days of a week, you should provide comma separated values for this field. For instance, if the Webinar should recur on Sundays and Tuesdays provide `1,3` as the value of this field. `1` - Sunday. `2` - Monday. `3` - Tuesday. `4` - Wednesday. `5` - Thursday. `6` - Friday. `7` - Saturday.

  • registration_url

    string — The URL that registrants can use to register for a webinar. This field is only returned for webinars that have enabled registration.

  • settings

    object — Webinar settings.

    • add_audio_watermark

      boolean — Add audio watermark that identifies the participants.

    • add_watermark

      boolean — Add watermark that identifies the viewing participant.

    • additional_data_center_regions

      array — Add more webinar [data center regions](https://support.zoom.us/hc/en-us/articles/360042411451-Selecting-data-center-regions-for-hosted-meetings-and-webinars). Provide this value as an array of [country codes](/docs/api/references/abbreviations/#countries) for the countries available as data center regions in the [**Account Profile**](https://zoom.us/account/setting) interface but have been opted out of in the [user settings](https://zoom.us/profile). For example, the data center regions selected in your [**Account Profile**](https://zoom.us/account) are `Europe`, `Hong Kong SAR`, `Australia`, `India`, `Japan`, `China`, `United States`, and `Canada`. However, in the [**My Profile**](https://zoom.us/profile) settings, you did **not** select `India` and `Japan` for meeting and webinar traffic routing. To include `India` and `Japan` as additional data centers, use the `[IN, TY]` value for this field.

      Items:

      string

    • allow_host_control_participant_mute_state

      boolean — Whether to allow the host and co-hosts to fully control the mute state of participants. Not supported for simulive webinar. This option cannot be used together with `request_permission_to_unmute_participants`, only one of the two can be enabled at a time.

    • allow_multiple_devices

      boolean — Allow attendees to join from multiple devices.

    • alternative_host_update_polls

      boolean — Whether the **Allow alternative hosts to add or edit polls** feature is enabled. This requires Zoom version 5.8.0 or higher.

    • alternative_hosts

      string — Alternative host emails or IDs. Multiple values separated by comma.

    • approval_type

      integer, possible values: 0, 1, 2, default: 2 — `0` - Automatically approve. `1` - Manually approve. `2` - No registration required.

    • attendees_and_panelists_reminder_email_notification

      object — Send reminder email to attendees and panelists.

      • enable

        boolean — * `true` - Send reminder email to attendees and panelists. * `false` - Do not send reminder email to attendees and panelists.

      • type

        integer, possible values: 0, 1, 2, 3, 4, 5, 6, 7 — `0` - No plan. `1` - Send 1 hour before webinar. `2` - Send 1 day before webinar. `3` - Send 1 hour and 1 day before webinar. `4` - Send 1 week before webinar. `5` - Send 1 hour and 1 week before webinar. `6` - Send 1 day and 1 week before webinar. `7` - Send 1 hour, 1 day and 1 week before webinar.

    • audio

      string, possible values: "both", "telephony", "voip", "thirdParty", default: "both" — Determine how participants can join the audio portion of the webinar.

    • audio_conference_info

      string — Third party audio conference info.

    • authentication_domains

      string — If user has configured [**Sign Into Zoom with Specified Domains**](https://support.zoom.us/hc/en-us/articles/360037117472-Authentication-Profiles-for-Meetings-and-Webinars#h_5c0df2e1-cfd2-469f-bb4a-c77d7c0cca6f) option, this will list the domains that are authenticated.

    • authentication_name

      string — Authentication name set in the [authentication profile](https://support.zoom.us/hc/en-us/articles/360037117472-Authentication-Profiles-for-Meetings-and-Webinars#h_5c0df2e1-cfd2-469f-bb4a-c77d7c0cca6f).

    • authentication_option

      string — Webinar authentication option ID.

    • auto_recording

      string, possible values: "local", "cloud", "none", default: "none" — Automatic recording. `local` - Record on local. `cloud` - Record on cloud. `none` - Disabled.

    • close_registration

      boolean — Close registration after event date.

    • contact_email

      string — Contact email for registration.

    • contact_name

      string — Contact name for registration.

    • email_in_attendee_report

      boolean — Whether to include guest's email addresses in webinars' attendee reports.

    • email_language

      string — Set the email language. `en-US`, `de-DE`, `es-ES`, `fr-FR`, `jp-JP`, `pt-PT`, `ru-RU`,`zh-CN`, `zh-TW`, `ko-KO`, `it-IT`, or `vi-VN`.

    • enable_session_branding

      boolean — Whether the **Webinar Session Branding** setting is enabled. This setting lets hosts visually customize a webinar by setting a session background. This also lets hosts use [webinar session branding](https://support.zoom.us/hc/en-us/articles/4836268732045-Using-Webinar-Session-Branding) to set the Virtual Background for and apply name tags to hosts, alternative hosts, panelists, interpreters, and speakers.

    • enforce_login

      boolean — Only signed in users can join this meeting. **This field is deprecated and will not be supported in the future.** As an alternative, use the `meeting_authentication`, `authentication_option` and `authentication_domains` fields to understand the [authentication configurations](https://support.zoom.us/hc/en-us/articles/360037117472-Authentication-Profiles-for-Meetings-and-Webinars) set for the webinar.

    • enforce_login_domains

      string — Only signed in users with specified domains can join meetings. **This field is deprecated and will not be supported in the future.** As an alternative, use the `meeting_authentication`, `authentication_option`, and `authentication_domains` fields to understand the [authentication configurations](https://support.zoom.us/hc/en-us/articles/360037117472-Authentication-Profiles-for-Meetings-and-Webinars) set for the webinar.

    • follow_up_absentees_email_notification

      object — Send follow-up email to absentees.

      • enable

        boolean — * `true` - Send follow-up email to absentees. * `false` - Do not send follow-up email to absentees.

      • type

        integer, possible values: 0, 1, 2, 3, 4, 5, 6, 7 — `0` - No plan. `1` - Send 1 days after the scheduled end date. `2` - Send 2 days after the scheduled end date. `3` - Send 3 days after the scheduled end date. `4` - Send 4 days after the scheduled end date. `5` - Send 5 days after the scheduled end date. `6` - Send 6 days after the scheduled end date. `7` - Send 7 days after the scheduled end date.

    • follow_up_attendees_email_notification

      object — Send follow-up email to attendees.

      • enable

        boolean — * `true` - Send follow-up email to attendees. * `false` - Do not send follow-up email to attendees.

      • type

        integer, possible values: 0, 1, 2, 3, 4, 5, 6, 7 — `0` - No plan. `1` - Send 1 day after the scheduled end date. `2` - Send 2 days after the scheduled end date. `3` - Send 3 days after the scheduled end date. `4` - Send 4 days after the scheduled end date. `5` - Send 5 days after the scheduled end date. `6` - Send 6 days after the scheduled end date. `7` - Send 7 days after the scheduled end date.

    • global_dial_in_countries

      array — List of global dial-in countries.

      Items:

      string

    • global_dial_in_numbers

      array — A list of available dial-in numbers for different countries or regions.

      Items:

      • city

        string — The number's city.

      • country

        string — The country code.

      • country_name

        string — Full name of country.

      • number

        string — Dial-in phone number.

      • type

        string, possible values: "toll", "tollfree", "premium" — Dial-in number type.

    • hd_video

      boolean, default: false — Default to HD video.

    • hd_video_for_attendees

      boolean, default: false — Whether HD video for attendees is enabled.

    • host_video

      boolean — Start video when the host joins the webinar.

    • language_interpretation

      object — The webinar's [language interpretation settings](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0064768). Make sure to add the language in the web portal in order to use it in the API. See link for details. **Note:** This feature is only available for certain Webinar add-on, Education, and Business and higher plans. If this feature is not enabled on the host's account, this setting will **not** be applied to the webinar. This is not supported for simulive webinars.

      • enable

        boolean — Whether to enable [language interpretation](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0064768) for the webinar.

      • interpreters

        array — Information about the webinar's language interpreters.

        Items:

        • email

          string, format: email — The interpreter's email address.

        • interpreter_languages

          string — A comma-separated list of the interpreter's languages. The string must contain exactly two languages. To get this value, use the `language_interpretation` object's `languages` and `custom_languages` values in the [**Get user settings**](/docs/api/users/#tag/users/GET/users/{userId}/settings) API response. **languages**: System-supported languages include `English`, `Chinese`, `Japanese`, `German`, `French`, `Russian`, `Portuguese`, `Spanish`, and `Korean`. **custom_languages**: User-defined languages added by the user. For example, an interpreter translating between English and French should use `English,French`.

        • languages

          string — A comma-separated list of the interpreter's languages. The string must contain exactly two country IDs. Only system-supported languages are allowed: `US` (English), `CN` (Chinese), `JP` (Japanese), `DE` (German), `FR` (French), `RU` (Russian), `PT` (Portuguese), `ES` (Spanish), and `KR` (Korean). For example, to set an interpreter translating from English to Chinese, use `US,CN`.

    • meeting_authentication

      boolean — Only authenticated users can join the webinar.

    • on_demand

      boolean, default: false — Make the webinar on-demand.

    • panelist_authentication

      boolean — Require panelists to authenticate to join.

    • panelists_invitation_email_notification

      boolean — Send invitation email to panelists. If `false`, do not send invitation email to panelists.

    • panelists_video

      boolean — Start video when panelists join webinar.

    • post_webinar_survey

      boolean — Zoom will open a survey page in attendees' browsers after leaving the webinar.

    • practice_session

      boolean, default: false — Enable practice session.

    • question_and_answer

      object — [Q&amp;A](https://support.zoom.us/hc/en-us/articles/203686015-Using-Q-A-as-the-webinar-host#:~:text=Overview,and%20upvote%20each%20other's%20questions.) for webinar.

      • allow_anonymous_questions

        boolean — * `true` - Allow participants to send questions without providing their name to the host, co-host, and panelists. * `false` - Do not allow anonymous questions.

      • allow_auto_reply

        boolean — If simulive webinar, * `true` - allow auto-reply to attendees. * `false` - don't allow auto-reply to the attendees.

      • allow_submit_questions

        boolean — * `true` - Allow participants to submit questions. * `false` - Do not allow submit questions.

      • answer_questions

        string, possible values: "only", "all" — Indicate whether you want attendees to be able to view answered questions only or view all questions. * `only` - Attendees are able to view answered questions only. * `all` - Attendees are able to view all questions submitted in the Q&amp;A.

      • attendees_can_comment

        boolean — * `true` - Attendees can answer questions or leave a comment in the question thread. * `false` - Attendees can not answer questions or leave a comment in the question thread

      • attendees_can_upvote

        boolean — * `true` - Attendees can click the thumbs up button to bring popular questions to the top of the Q&amp;A window. * `false` - Attendees can not click the thumbs up button on questions.

      • auto_reply_text

        string — If `allow_auto_reply` = true, the text to be included in the automatic response.

      • enable

        boolean — * `true` - Enable [Q&amp;A](https://support.zoom.us/hc/en-us/articles/203686015-Using-Q-A-as-the-webinar-host#:~:text=Overview,and%20upvote%20each%20other's%20questions.) for webinar. * `false` - Disable Q&amp;A for webinar.

    • registrants_confirmation_email

      boolean — Send confirmation email to registrants

    • registrants_email_notification

      boolean — Send email notifications to registrants about approval, cancellation, denial of the registration. The value of this field must be set to true in order to use the `registrants_confirmation_email` field.

    • registrants_restrict_number

      integer, default: 0 — Restrict number of registrants for a webinar. By default, it is set to `0`. A `0` value means that the restriction option is disabled. Provide a number higher than 0 to restrict the webinar registrants by the that number.

    • registration_type

      integer, possible values: 1, 2, 3, default: 1 — Registration types. Only used for recurring webinars with a fixed time. `1` - Attendees register once and can attend any of the webinar sessions. `2` - Attendees need to register for each session in order to attend. `3` - Attendees register once and can choose one or more sessions to attend.

    • request_permission_to_unmute_participants

      boolean — Whether to enable the [**Request permission to unmute participants**](https://support.zoom.us/hc/en-us/articles/203435537-Muting-and-unmuting-participants-in-a-meeting) setting. Not supported for simulive webinar. This option cannot be used together with `allow_host_control_participant_mute_state`, only one of the two can be enabled at a time.

    • send_1080p_video_to_attendees

      boolean, default: false — Always send 1080p video to attendees.

    • show_join_info

      boolean — Whether to show the webinar's join information on the registration confirmation page. This setting is only applied to webinars with registration enabled.

    • show_share_button

      boolean — Show social share buttons on the registration page.

    • sign_language_interpretation

      object — The webinar's [sign language interpretation settings](https://support.zoom.us/hc/en-us/articles/9644962487309-Using-sign-language-interpretation-in-a-meeting-or-webinar). Make sure to add the language in the web portal in order to use it in the API. See link for details. **Note:** If this feature is not enabled on the host's account, this setting will **not** be applied to the webinar.

      • enable

        boolean — Whether to enable [sign language interpretation](https://support.zoom.us/hc/en-us/articles/9644962487309-Using-sign-language-interpretation-in-a-meeting-or-webinar) for the webinar.

      • interpreters

        array — Information about the webinar's sign language interpreters.

        Items:

        • email

          string, format: email — The interpreter's email address.

        • sign_language

          string — The interpreter's sign language. To get this value, use the `sign_language_interpretation` object's `languages` and `custom_languages` values in the [**Get user settings**](/api-reference/zoom-api/methods#operation/userSettings) API response.

    • survey_url

      string — Survey URL for post webinar survey.

  • simulive_delay_start

    object — {"enable":false,"time":0,"timeunit":"second"}

    • enable

      boolean — Whether simulive needs to delay playback.

    • time

      integer — The time for delayed playback. If the time unit is seconds, then the maximum value is 60 and the minimum value is 1. If the time unit is minutes, then the maximum value is 10 and the minimum value is 1.

    • timeunit

      string, possible values: "second", "minute", default: "second" — The time unit for delayed playback. `second` - The time unit for delayed playback is seconds. `minute` - The time unit for delayed playback is minutes.

  • start_time

    string, format: date-time — Webinar start time in GMT/UTC.

  • start_url

    string — The `start_url` of a webinar is a URL using which a host or an alternative host can start the webinar. This URL should only be used by the host of the meeting and should not be shared with anyone other than the host of the webinar. The expiration time for the `start_url` field listed in the response of the [**Create a webinar**](/docs/api-reference/zoom-api/methods#operation/webinarCreate) API is two hours for all regular users. For users created using the `custCreate` option via the [**Create users**](/docs/api-reference/zoom-api/methods#operation/userCreate) API, the expiration time of the `start_url` field is 90 days. For security reasons, to retrieve the latest value for the `start_url` field programmatically (after expiry), you must call the [**Get a webinar**](/docs/api-reference/zoom-api/methods#operation/webinar) API and refer to the value of the `start_url` field in the response.

  • template_id

    string — The webinar template's unique identifier. Use this field only if you would like to [schedule the webinar using an existing template](https://support.zoom.us/hc/en-us/articles/115001079746-Webinar-Templates#schedule). The value of this field can be retrieved from [**List webinar templates**](/docs/api/rest/reference/zoom-api/methods#operation/listWebinarTemplates) API. You must provide the user ID of the host instead of the email address in the `userId` path parameter in order to use a template for scheduling a webinar.

  • timezone

    string — Time zone to format `start_time`.

  • topic

    string — Webinar topic.

  • tracking_fields

    array — Tracking fields.

    Items:

    • field

      string — Tracking fields type.

    • value

      string — Tracking fields value.

    • visible

      boolean — Whether the [tracking field](https://support.zoom.us/hc/en-us/articles/115000293426-Scheduling-Tracking-Fields) is visible in the webinar scheduling options in the Zoom Web Portal or not. * `true` - Tracking field is visible. * `false` - Tracking field is not visible to the users in the webinar options in the Zoom Web Portal but the field was used while scheduling this webinar via API. An invisible tracking field can be used by users while scheduling webinars via API only.

  • transition_to_live

    boolean — Whether to transition a simulive webinar to live. The host must be present at the time of transition.

  • type

    integer, possible values: 5, 6, 9, default: 5 — Webinar types. `5` - Webinar. `6` - Recurring webinar with no fixed time. `9` - Recurring webinar with a fixed time.

  • uuid

    string — Unique webinar ID. Each webinar instance generates its own webinar UUID. After a webinar ends, a new UUID is generated for the next instance of the webinar. Retrieve a list of UUIDs from past webinar instances using the [**List past webinar instances**](/docs/api-reference/zoom-api/methods#operation/pastWebinars) API. [Double encode](/docs/api/using-zoom-apis/#meeting-id-and-uuid) your UUID when using it for API calls if the UUID begins with a `/` or contains `//` in it.

Example:

{
  "host_email": "jchill@example.com",
  "host_id": "30R7kT7bTIKSNUFEuH_Qlg",
  "id": 97871060099,
  "template_id": "ull6574eur",
  "uuid": "m3WqMkvuRXyYqH+eKWhk9w==",
  "agenda": "My webinar",
  "created_at": "2022-03-26T07:18:32Z",
  "duration": 60,
  "registration_url": "https://example.com/webinar/register/7ksAkRCoEpt1Jm0wa-E6lICLur9e7Lde5oW6",
  "join_url": "https://example.com/j/11111",
  "occurrences": [
    {
      "duration": 60,
      "occurrence_id": "1648194360000",
      "start_time": "2022-03-25T07:46:00Z",
      "status": "available"
    }
  ],
  "password": "123456",
  "encrypted_passcode": "8pEkRweVXPV3Ob2KJYgFTRlDtl1gSn.1",
  "h323_passcode": "123456",
  "recurrence": {
    "end_date_time": "2022-04-02T15:59:00Z",
    "end_times": 7,
    "monthly_day": 1,
    "monthly_week": 1,
    "monthly_week_day": 1,
    "repeat_interval": 1,
    "type": 1,
    "weekly_days": "1"
  },
  "settings": {
    "additional_data_center_regions": [
      "TY"
    ],
    "allow_multiple_devices": true,
    "alternative_hosts": "jchill@example.com",
    "alternative_host_update_polls": true,
    "approval_type": 0,
    "attendees_and_panelists_reminder_email_notification": {
      "enable": true,
      "type": 0
    },
    "audio": "telephony",
    "audio_conference_info": "test",
    "authentication_domains": "example.com",
    "authentication_name": "Sign in to Zoom",
    "authentication_option": "signIn_D8cJuqWVQ623CI4Q8yQK0Q",
    "auto_recording": "cloud",
    "contact_email": "jchill@example.com",
    "contact_name": "Jill Chill",
    "email_language": "en-US",
    "follow_up_absentees_email_notification": {
      "enable": true,
      "type": 0
    },
    "follow_up_attendees_email_notification": {
      "enable": true,
      "type": 0
    },
    "global_dial_in_countries": [
      "US"
    ],
    "global_dial_in_numbers": [
      {
        "city": "New York",
        "country": "US",
        "country_name": "US",
        "number": "+1 1000200200",
        "type": "toll"
      }
    ],
    "hd_video": false,
    "hd_video_for_attendees": false,
    "host_video": true,
    "language_interpretation": {
      "enable": true,
      "interpreters": [
        {
          "email": "interpreter@example.com",
          "interpreter_languages": "English,French"
        }
      ]
    },
    "sign_language_interpretation": {
      "enable": true,
      "interpreters": [
        {
          "email": "interpreter@example.com",
          "sign_language": "American"
        }
      ]
    },
    "panelist_authentication": true,
    "meeting_authentication": true,
    "add_watermark": true,
    "add_audio_watermark": true,
    "on_demand": false,
    "panelists_invitation_email_notification": true,
    "panelists_video": true,
    "post_webinar_survey": true,
    "practice_session": false,
    "question_and_answer": {
      "allow_submit_questions": true,
      "allow_anonymous_questions": true,
      "answer_questions": "all",
      "attendees_can_comment": true,
      "attendees_can_upvote": true,
      "allow_auto_reply": true,
      "auto_reply_text": "Thank you for your question. We will get back to you shortly.",
      "enable": true
    },
    "registrants_confirmation_email": true,
    "registrants_email_notification": true,
    "registrants_restrict_number": 100,
    "registration_type": 1,
    "send_1080p_video_to_attendees": false,
    "show_share_button": true,
    "show_join_info": true,
    "survey_url": "https://example.com",
    "enable_session_branding": true,
    "request_permission_to_unmute_participants": true,
    "allow_host_control_participant_mute_state": false,
    "email_in_attendee_report": true
  },
  "start_time": "2022-03-26T07:18:32Z",
  "start_url": "https://example.com/s/11111",
  "timezone": "America/Los_Angeles",
  "topic": "My Webinar",
  "tracking_fields": [
    {
      "field": "field1",
      "value": "value1",
      "visible": true
    }
  ],
  "type": 5,
  "is_simulive": true,
  "record_file_id": "f09340e1-cdc3-4eae-9a74-98f9777ed908",
  "transition_to_live": false,
  "simulive_delay_start": {
    "enable": true,
    "time": 10,
    "timeunit": "second"
  },
  "creation_source": "open_api"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Invalid webinar ID. <br> **Error Code:** `200` <br> Webinar plan is missing. You must subscribe to the webinar plan and enable webinars for user {userId} to perform this action. <br> **Error Code:** `200` <br> No permission. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Webinar does not exist: {webinarId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rate-limits/).

Delete a webinar

  • Method: DELETE
  • Path: /accounts/{accountId}/webinars/{webinarId}
  • Tags: Webinars

Delete a webinar.

Prerequisites:

  • Pro or higher plan with the webinar add-on.

Scopes: webinar:master

Granular Scopes: webinar:delete:webinar:master

Rate Limit Label: LIGHT

Responses

Status: 204 **HTTP Status Code:** `204` <br> Webinar deleted.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `3000` <br> Your request could not be processed because webinars created via event directory can not be updated or deleted using this method. <br> **Error Code:** `3000` <br> You cannot update or delete simulive webinars that have started using this method. <br> **Error Code:** `200` <br> Webinar plan is missing. You must subscribe to the webinar plan and enable webinars for this user in order to perform this action. <br> **Error Code:** `200` <br> No permission. <br> **Error Code:** `3000` <br> Webinar occurrence does not exist. <br> **Error Code:** `300` <br> Invalid webinar ID. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Webinar does not exist: {webinarId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Update a webinar

  • Method: PATCH
  • Path: /accounts/{accountId}/webinars/{webinarId}
  • Tags: Webinars

Make updates to a scheduled webinar.

100 requests per day. The rate limit is applied to the userId of the webinar host used to make the request.

Prerequisites

  • A Pro or higher plan with a webinar add-on.

Scopes: webinar:master

Granular Scopes: webinar:update:webinar:master

Rate Limit Label: LIGHT

Request Body

Content-Type: application/json
  • agenda

    string — Webinar description.

  • duration

    integer — Webinar duration, in minutes. Used for scheduled webinar only.

  • is_simulive

    boolean — Whether to set the webinar to simulive.

  • password

    string — Webinar passcode. Passcode may only contain the characters [a-z A-Z 0-9 @ - _ * !]. Maximum of 10 characters. If **Webinar Passcode** setting has been **enabled** **and** [locked](https://support.zoom.us/hc/en-us/articles/115005269866-Using-Tiered-Settings#locked) for the user, the passcode field will be autogenerated for the Webinar in the response even if it is not provided in the API request. **Note:** If the account owner or the admin has configured [minimum passcode requirement settings](https://support.zoom.us/hc/en-us/articles/360033559832-Meeting-and-webinar-passwords#h_a427384b-e383-4f80-864d-794bf0a37604), the passcode value provided here must meet those requirements. If the requirements are enabled, you can view those requirements by calling the [**Get account settings**](/docs/api/rest/reference/account/methods/#operation/accountSettings) API.

  • record_file_id

    string — The previously recorded file's ID for `simulive`.

  • recurrence

    object — Recurrence object. Use this object only for a meeting with type `8`, a recurring meeting with fixed time.

    • type (required)

      integer, possible values: 1, 2, 3 — Recurrence meeting types. `1` - Daily. `2` - Weekly. `3` - Monthly.

    • end_date_time

      string, format: date-time — Select the final date when the meeting will recur before it is canceled. Should be in UTC time, such as 2017-11-25T12:00:00Z. Cannot be used with `end_times`.

    • end_times

      integer, default: 1 — Select how many times the webinar will recur before it is canceled. The maximum number of recurring is 60. Cannot be used with `end_date_time`.

    • monthly_day

      integer, default: 1 — Use this field **only if you're scheduling a recurring meeting of type** `3` to state which day in a month, the meeting should recur. The value range is from 1 to 31. If you would like the meeting to recur on 23rd of each month, provide `23` as the value of this field and `1` as the value of the `repeat_interval` field. If you would like the meeting to recur every three months, on 23rd of the month, change the value of the `repeat_interval` field to `3`.

    • monthly_week

      integer, possible values: -1, 1, 2, 3, 4 — Use this field **only if you're scheduling a recurring meeting of type** `3` to state the week of the month when the meeting should recur. If you use this field, **you must also use the `monthly_week_day` field to state the day of the week when the meeting should recur.** `-1` - Last week of the month. `1` - First week of the month. `2` - Second week of the month. `3` - Third week of the month. `4` - Fourth week of the month.

    • monthly_week_day

      integer, possible values: 1, 2, 3, 4, 5, 6, 7 — Use this field **only if you're scheduling a recurring meeting of type** `3` to state a specific day in a week when the monthly meeting should recur. To use this field, you must also use the `monthly_week` field. `1` - Sunday. `2` - Monday. `3` - Tuesday. `4` - Wednesday. `5` - Thursday. `6` - Friday. `7` - Saturday.

    • repeat_interval

      integer — Define the interval when the meeting should recur. If you would like to schedule a meeting that recurs every two months, set the value of this field as `2` and the value of the `type` parameter as `3`. For a daily meeting, the maximum interval you can set is `90` days. For a weekly meeting the maximum interval that you can set is of `12` weeks. For a monthly meeting, there is a maximum of `3` months.

    • weekly_days

      string, possible values: "1", "2", "3", "4", "5", "6", "7", default: "1" — This field is required **if you're scheduling a recurring meeting of type** `2` to state which day(s) of the week the meeting should repeat. The value for this field could be a number between `1` to `7` in string format. For instance, if the meeting should recur on Sunday, provide `1` as the value of this field. **Note:** If you would like the meeting to occur on multiple days of a week, you should provide comma separated values for this field. For instance, if the meeting should recur on Sundays and Tuesdays provide `1,3` as the value of this field. `1` - Sunday. `2` - Monday. `3` - Tuesday. `4` - Wednesday. `5` - Thursday. `6` - Friday. `7` - Saturday.

  • schedule_for

    string — The user's email address or `userId` to schedule a webinar for.

  • settings

    object — Webinar settings.

    • add_audio_watermark

      boolean — Add audio watermark that identifies the participants.

    • add_watermark

      boolean — Add watermark that identifies the viewing participant.

    • additional_data_center_regions

      array — Add more webinar [data center regions](https://support.zoom.us/hc/en-us/articles/360042411451-Selecting-data-center-regions-for-hosted-meetings-and-webinars). Provide this value as an array of [country codes](/docs/api/references/abbreviations/#countries) for the countries available as data center regions in the [**Account Profile**](https://zoom.us/account/setting) interface but have been opted out of in the [user settings](https://zoom.us/profile). For example, the data center regions selected in your [**Account Profile**](https://zoom.us/account) are `Europe`, `Hong Kong SAR`, `Australia`, `India`, `Japan`, `China`, `United States`, and `Canada`. However, in the [**My Profile**](https://zoom.us/profile) settings, you did **not** select `India` and `Japan` for meeting and webinar traffic routing. To include `India` and `Japan` as additional data centers, use the `[IN, TY]` value for this field.

      Items:

      string

    • allow_host_control_participant_mute_state

      boolean — Whether to allow the host and co-hosts to fully control the mute state of participants. Not supported for simulive webinar. This option cannot be used together with `request_permission_to_unmute_participants`, only one of the two can be enabled at a time.

    • allow_multiple_devices

      boolean — Allow attendees to join from multiple devices.

    • alternative_host_update_polls

      boolean — Whether the **Allow alternative hosts to add or edit polls** feature is enabled. This requires Zoom version 5.8.0 or higher.

    • alternative_hosts

      string — Alternative host emails or IDs. Separate multiple values by commas.

    • approval_type

      integer, possible values: 0, 1, 2, default: 2 — `0` - Automatically approve. `1` - Manually approve. `2` - No registration required.

    • attendees_and_panelists_reminder_email_notification

      object — Send reminder email to attendees and panelists.

      • enable

        boolean — * `true` - Send reminder email to attendees and panelists. * `false` - Do not send reminder email to attendees and panelists.

      • type

        integer, possible values: 0, 1, 2, 3, 4, 5, 6, 7 — `0` - No plan. `1` - Send 1 hour before webinar. `2` - Send 1 day before webinar. `3` - Send 1 hour and 1 day before webinar. `4` - Send 1 week before webinar. `5` - Send 1 hour and 1 week before webinar. `6` - Send 1 day and 1 week before webinar. `7` - Send 1 hour, 1 day and 1 week before webinar.

    • audio

      string, possible values: "both", "telephony", "voip", "thirdParty", default: "both" — Determine how participants can join the audio portion of the webinar.

    • audio_conference_info

      string — Third party audio conference info.

    • authentication_domains

      string — If user has configured [**Sign Into Zoom with Specified Domains**](https://support.zoom.us/hc/en-us/articles/360037117472-Authentication-Profiles-for-Meetings-and-Webinars#h_5c0df2e1-cfd2-469f-bb4a-c77d7c0cca6f) option, this will list the domains that are authenticated.

    • authentication_option

      string — Webinar authentication option ID.

    • auto_recording

      string, possible values: "local", "cloud", "none", default: "none" — Automatic recording. `local` - Record on local. `cloud` - Record on cloud. `none` - Disabled.

    • close_registration

      boolean — Close registration after event date.

    • contact_email

      string — Contact email for registration

    • contact_name

      string — Contact name for registration

    • email_in_attendee_report

      boolean — Whether to include guest's email addresses in webinars' attendee reports.

    • email_language

      string — Set the email language to one of the following. `en-US`,`de-DE`,`es-ES`,`fr-FR`,`jp-JP`,`pt-PT`,`ru-RU`,`zh-CN`, `zh-TW`, `ko-KO`, `it-IT`, `vi-VN`.

    • enable_session_branding

      boolean — Whether the **Webinar Session Branding** setting is enabled. This setting lets hosts visually customize a webinar by setting a session background. This also lets hosts use [Webinar Session Branding](https://support.zoom.us/hc/en-us/articles/4836268732045-Using-Webinar-Session-Branding) to set the virtual background for and apply name tags to hosts, alternative hosts, panelists, interpreters, and speakers.

    • enforce_login

      boolean — Only signed in users can join this meeting. **This field is deprecated and will not be supported in the future.** As an alternative, use the ``meeting_authentication`, `authentication_option`, and `authentication_domains` fields to understand the [authentication configurations](https://support.zoom.us/hc/en-us/articles/360037117472-Authentication-Profiles-for-Meetings-and-Webinars) set for the webinar.

    • enforce_login_domains

      string — Only signed in users with specified domains can join meetings. **This field is deprecated and will not be supported in the future.** As an alternative, use the `meeting_authentication`, `authentication_option`, and `authentication_domains` fields to understand the [authentication configurations](https://support.zoom.us/hc/en-us/articles/360037117472-Authentication-Profiles-for-Meetings-and-Webinars) set for the webinar.

    • follow_up_absentees_email_notification

      object — Send follow-up email to absentees.

      • enable

        boolean — * `true` - Send follow-up email to absentees. * `false` - Do not send follow-up email to absentees.

      • type

        integer, possible values: 0, 1, 2, 3, 4, 5, 6, 7 — `0` - No plan. `1` - Send 1 days after the scheduled end date. `2` - Send 2 days after the scheduled end date. `3` - Send 3 days after the scheduled end date. `4` - Send 4 days after the scheduled end date. `5` - Send 5 days after the scheduled end date. `6` - Send 6 days after the scheduled end date. `7` - Send 7 days after the scheduled end date.

    • follow_up_attendees_email_notification

      object — Send follow-up email to attendees.

      • enable

        boolean — * `true` - Send follow-up email to attendees. * `false` - Do not send follow-up email to attendees.

      • type

        integer, possible values: 0, 1, 2, 3, 4, 5, 6, 7 — `0` - No plan. `1` - Send 1 day after the scheduled end date. `2` - Send 2 days after the scheduled end date. `3` - Send 3 days after the scheduled end date. `4` - Send 4 days after the scheduled end date. `5` - Send 5 days after the scheduled end date. `6` - Send 6 days after the scheduled end date. `7` - Send 7 days after the scheduled end date.

    • global_dial_in_countries

      array — List of global dial-in countries

      Items:

      string

    • hd_video

      boolean, default: false — Default to HD video.

    • hd_video_for_attendees

      boolean, default: false — Whether HD video for attendees is enabled.

    • host_video

      boolean — Start video when host joins the webinar.

    • language_interpretation

      object — The webinar's [language interpretation settings](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0064768). Make sure to add the language in the web portal in order to use it in the API. See link for details. **Note:** This feature is only available for certain Webinar add-on, Education, and Business and higher plans. If this feature is not enabled on the host's account, this setting will **not** be applied to the webinar. This is not supported for simulive webinars.

      • enable

        boolean — Whether to enable [language interpretation](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0064768) for the webinar.

      • interpreters

        array — Information about the webinar's language interpreters.

        Items:

        • email

          string, format: email — The interpreter's email address.

        • interpreter_languages

          string — A comma-separated list of the interpreter's languages. The string must contain exactly two languages. To get this value, use the `language_interpretation` object's `languages` and `custom_languages` values in the [**Get user settings**](/docs/api/users/#tag/users/GET/users/{userId}/settings) API response. **languages**: System-supported languages include `English`, `Chinese`, `Japanese`, `German`, `French`, `Russian`, `Portuguese`, `Spanish`, and `Korean`. **custom_languages**: User-defined languages added by the user. For example, an interpreter translating between English and French should use `English,French`.

        • languages

          string — A comma-separated list of the interpreter's languages. The string must contain exactly two country IDs. Only system-supported languages are allowed: `US` (English), `CN` (Chinese), `JP` (Japanese), `DE` (German), `FR` (French), `RU` (Russian), `PT` (Portuguese), `ES` (Spanish), and `KR` (Korean). For example, to set an interpreter translating from English to Chinese, use `US,CN`.

    • meeting_authentication

      boolean — Only authenticated users can join the webinar.

    • notify_registrants

      boolean — Send notification email to registrants when the host updates a webinar.

    • on_demand

      boolean, default: false — Make the webinar on-demand.

    • panelist_authentication

      boolean — Require panelists to authenticate to join.

    • panelists_invitation_email_notification

      boolean — Send invitation email to panelists. If `false`, do not send invitation email to panelists.

    • panelists_video

      boolean — Start video when panelists join the webinar.

    • post_webinar_survey

      boolean — Zoom will open a survey page in attendees' browsers after leaving the webinar.

    • practice_session

      boolean, default: false — Enable practice session.

    • question_and_answer

      object — [Q&amp;A](https://support.zoom.us/hc/en-us/articles/203686015-Using-Q-A-as-the-webinar-host#:~:text=Overview,and%20upvote%20each%20other's%20questions.) for webinar.

      • allow_anonymous_questions

        boolean — * `true` - Allow participants to send questions without providing their name to the host, co-host, and panelists.. * `false` - Do not allow anonymous questions.

      • allow_auto_reply

        boolean — If simulive webinar, * `true` - allow auto-reply to attendees. * `false` - don't allow auto-reply to the attendees.

      • allow_submit_questions

        boolean — * `true` - Allow participants to submit questions. * `false` - Do not allow submit questions.

      • answer_questions

        string, possible values: "only", "all" — Indicate whether you want attendees to be able to view answered questions only or view all questions. * `only` - Attendees are able to view answered questions only. * `all` - Attendees are able to view all questions submitted in the Q&amp;A.

      • attendees_can_comment

        boolean — * `true` - Attendees can answer questions or leave a comment in the question thread. * `false` - Attendees can't answer questions or leave a comment in the question thread.

      • attendees_can_upvote

        boolean — * `true` - Attendees can click the thumbs up button to bring popular questions to the top of the Q&amp;A window. * `false` - Attendees can't click the thumbs up button on questions.

      • auto_reply_text

        string — If `allow_auto_reply` = true, the text to be included in the automatic response.

      • enable

        boolean — * `true` - Enable [Q&amp;A](https://support.zoom.us/hc/en-us/articles/203686015-Using-Q-A-as-the-webinar-host#:~:text=Overview,and%20upvote%20each%20other's%20questions.) for webinar. * `false` - Disable Q&amp;A for webinar.

    • registrants_confirmation_email

      boolean — Send confirmation email to registrants

    • registrants_email_notification

      boolean — Send email notifications to registrants about approval, cancellation, denial of the registration. The value of this field must be set to true in order to use the `registrants_confirmation_email` field.

    • registrants_restrict_number

      integer, default: 0 — Restrict number of registrants for a webinar. By default, it is set to `0`. A `0` value means that the restriction option is disabled. Provide a number higher than 0 to restrict the webinar registrants by the that number.

    • registration_type

      integer, possible values: 1, 2, 3, default: 1 — Registration types. Only used for recurring webinars with a fixed time. `1` - Attendees register once and can attend any of the webinar sessions. `2` - Attendees need to register for each session in order to attend. `3` - Attendees register once and can choose one or more sessions to attend.

    • request_permission_to_unmute_participants

      boolean — Whether to enable the [**Request permission to unmute participants**](https://support.zoom.us/hc/en-us/articles/203435537-Muting-and-unmuting-participants-in-a-meeting) setting. Not supported for simulive webinar. This option cannot be used together with `allow_host_control_participant_mute_state`, only one of the two can be enabled at a time.

    • send_1080p_video_to_attendees

      boolean, default: false — Always send 1080p video to attendees.

    • show_join_info

      boolean — Whether to show the webinar's join information on the registration confirmation page. This setting is only applied to webinars with registration enabled.

    • show_share_button

      boolean — Show social share buttons on the registration page.

    • sign_language_interpretation

      object — The webinar's [sign language interpretation settings](https://support.zoom.us/hc/en-us/articles/9644962487309-Using-sign-language-interpretation-in-a-meeting-or-webinar). Make sure to add the language in the web portal in order to use it in the API. See link for details. **Note:** If this feature is not enabled on the host's account, this setting will **not** be applied to the webinar.

      • enable

        boolean — Whether to enable [sign language interpretation](https://support.zoom.us/hc/en-us/articles/9644962487309-Using-sign-language-interpretation-in-a-meeting-or-webinar) for the webinar.

      • interpreters

        array — Information about the webinar's sign language interpreters.

        Items:

        • email

          string, format: email — The interpreter's email address.

        • sign_language

          string — The interpreter's sign language. To get this value, use the `sign_language_interpretation` object's `languages` and `custom_languages` values in the [**Get user settings**](/api-reference/zoom-api/methods#operation/userSettings) API response.

    • survey_url

      string — Survey url for post webinar survey

  • simulive_delay_start

    object — {"enable":false,"time":0,"timeunit":"second"}

    • enable

      boolean — Whether simulive need delay playback.

    • time

      integer — The time for delayed playback. If the time unit is seconds, then the maximum value is 60 and the minimum value is 1. If the time unit is minutes, then the maximum value is 10 and the minimum value is 1.

    • timeunit

      string, possible values: "second", "minute", default: "second" — The time unit for delayed playback. `second` - The time unit for delayed playback is seconds. `minute` - The time unit for delayed playback is minutes.

  • start_time

    string, format: date-time — Webinar start time, in the format `yyyy-MM-dd'T'HH:mm:ss'Z'`. Should be in GMT time. In the format `yyyy-MM-dd'T'HH:mm:ss`. This should be in local time and the timezone should be specified. Only used for scheduled webinars and recurring webinars with a fixed time.

  • timezone

    string — The timezone to assign to the `start_time` value. This field is only used for scheduled or recurring webinars with a fixed time. For a list of supported timezones and their formats, see our [timezone list](/docs/api/references/abbreviations/#timezones).

  • topic

    string — The webinar topic.

  • tracking_fields

    array — Tracking fields.

    Items:

    • field

      string — Tracking fields type.

    • value

      string — Tracking fields value.

  • transition_to_live

    boolean — Whether to transition a simulive webinar to live. The host must be present at the time of transition.

  • type

    integer, possible values: 5, 6, 9, default: 5 — Webinar types. `5` - webinar. `6` - Recurring webinar with no fixed time. `9` - Recurring webinar with a fixed time.

Example:

{
  "agenda": "My Webinar",
  "duration": 60,
  "password": "123456",
  "schedule_for": "jchill@example.com",
  "recurrence": {
    "end_date_time": "2022-04-02T15:59:00Z",
    "end_times": 7,
    "monthly_day": 1,
    "monthly_week": 1,
    "monthly_week_day": 1,
    "repeat_interval": 1,
    "type": 1,
    "weekly_days": "1"
  },
  "settings": {
    "additional_data_center_regions": [
      "TY"
    ],
    "allow_multiple_devices": true,
    "alternative_hosts": "jchill@example.com",
    "alternative_host_update_polls": true,
    "approval_type": 0,
    "attendees_and_panelists_reminder_email_notification": {
      "enable": true,
      "type": 0
    },
    "audio": "telephony",
    "audio_conference_info": "test",
    "authentication_domains": "example.com",
    "authentication_option": "signIn_D8cJuqWVQ623CI4Q8yQK0Q",
    "auto_recording": "cloud",
    "contact_email": "jchill@example.com",
    "contact_name": "Jill Chill",
    "email_language": "en-US",
    "follow_up_absentees_email_notification": {
      "enable": true,
      "type": 0
    },
    "follow_up_attendees_email_notification": {
      "enable": true,
      "type": 0
    },
    "global_dial_in_countries": [
      "US"
    ],
    "hd_video": false,
    "hd_video_for_attendees": false,
    "host_video": true,
    "language_interpretation": {
      "enable": true,
      "interpreters": [
        {
          "email": "interpreter@example.com",
          "interpreter_languages": "English,French"
        }
      ]
    },
    "sign_language_interpretation": {
      "enable": true,
      "interpreters": [
        {
          "email": "interpreter@example.com",
          "sign_language": "American"
        }
      ]
    },
    "panelist_authentication": true,
    "meeting_authentication": true,
    "add_watermark": true,
    "add_audio_watermark": true,
    "notify_registrants": true,
    "on_demand": false,
    "panelists_invitation_email_notification": true,
    "panelists_video": true,
    "post_webinar_survey": true,
    "practice_session": false,
    "question_and_answer": {
      "allow_submit_questions": true,
      "allow_anonymous_questions": true,
      "answer_questions": "all",
      "attendees_can_comment": true,
      "attendees_can_upvote": true,
      "allow_auto_reply": true,
      "auto_reply_text": "Thank you for your question. We will get back to you shortly.",
      "enable": true
    },
    "registrants_confirmation_email": true,
    "registrants_email_notification": true,
    "registrants_restrict_number": 100,
    "registration_type": 1,
    "send_1080p_video_to_attendees": false,
    "show_share_button": true,
    "show_join_info": true,
    "survey_url": "https://example.com",
    "enable_session_branding": true,
    "request_permission_to_unmute_participants": true,
    "allow_host_control_participant_mute_state": false,
    "email_in_attendee_report": true
  },
  "start_time": "2022-03-26T07:18:32Z",
  "timezone": "America/Los_Angeles",
  "topic": "My webinar",
  "tracking_fields": [
    {
      "field": "field1",
      "value": "value1"
    }
  ],
  "type": 5,
  "is_simulive": true,
  "record_file_id": "f09340e1-cdc3-4eae-9a74-98f9777ed908",
  "transition_to_live": false,
  "simulive_delay_start": {
    "enable": true,
    "time": 10,
    "timeunit": "second"
  }
}

Responses

Status: 204 **HTTP Status Code:** `204` Webinar updated.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `3003` <br> Users in **{domains}** have been blocked from joining meetings and webinars. To unblock them, go to the **Settings** page in the Zoom web portal and update the **Block users in specific domains from joining meetings and webinars** setting. <br> **Error Code:** `3000` <br> You cannot update or delete simulive webinars that have started using this method. <br> **Error Code:** `300` <br> The value that you entered for the `schedule_for` field is invalid. Enter a valid value and try again. <br> **Error Code:** `200` <br> Webinar plan is missing. You must subscribe to the webinar plan and enable webinars for this user in order to perform this action: {userId}. <br> **Error Code:** `300` <br> Invalid webinar ID. <br> **Error Code:** `200` <br> No permission. <br> **Error Code:** `4505` <br> Simulive can't select `No Fixed Time`. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Webinar does not exist: {webinarId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rate-limits/).

Perform batch registration

  • Method: POST
  • Path: /accounts/{accountId}/webinars/{webinarId}/batch_registrants
  • Tags: Webinars

Register up to 30 registrants at once for a scheduled webinar that requires registration.

Prerequisites:

  • The webinar host must be a licensed user.
  • The webinar should be type 5, a scheduled webinar. Other types of webinars are not supported by this API.

Scopes: webinar:master

Granular Scopes: webinar:write:batch_registrants:master

Rate Limit Label: HEAVY

Request Body

Content-Type: application/json
  • auto_approve

    boolean — If a meeting was scheduled with approval_type `1` (manual approval), but you want to automatically approve registrants added via this API, set the value of this field to `true`. You **cannot** use this field to change approval setting for a meeting that was originally scheduled with approval_type `0` (automatic approval).

  • registrants

    array

    Items:

    • email (required)

      string, format: email — The registrant's email address.

    • first_name (required)

      string — The registrant's first name.

    • last_name

      string — The registrant's last name.

Example:

{
  "auto_approve": true,
  "registrants": [
    {
      "email": "jchill@example.com",
      "first_name": "Jill",
      "last_name": "Chill"
    }
  ]
}

Responses

Status: 201 **HTTP Status Code:** `200` **OK** Registrants added.
Content-Type: application/json
  • registrants

    array

    Items:

    • email

      string — The registrant's email address.

    • join_url

      string — Unique URL using which registrant can join the webinar.

    • registrant_id

      string — The registrant's unique identifier.

Example:

{
  "registrants": [
    {
      "email": "jchill@example.com",
      "join_url": "https://example.com/j/11111",
      "registrant_id": "-rOym-zdTHOdbT3A7u7u5g"
    }
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> Webinar plan is missing. You must subscribe to the webinar plan and enable webinars for this user in order to perform this action. <br> **Error Code:** `300` <br> This API can only be used for scheduled webinars (type 5). Batch registration is not supported for other webinar types. <br> **Error Code:** `3038` <br> The webinar is over. You cannot register now. If you have any questions, contact the webinar's host. <br> **Error Code:** `3000` <br> You have reached the limit for the number of attendees you can add. Contact Zoom Support for more information. <br> **Error Code:** `3000` <br> The Zoom REST API does not support paid registration. <br> **Error Code:** `3043` <br> Webinar has reached maximum attendee capacity. <br> **Error Code:** `3000` <br> Registration has not been enabled for this webinar: {webinarId}. <br> **Error Code:** `300` <br> Invalid webinar ID. <br> **Error Code:** `200` <br> No permission. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Webinar does not exist: {webinarId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Get webinar's session branding

  • Method: GET
  • Path: /accounts/{accountId}/webinars/{webinarId}/branding
  • Tags: Webinars

Get the webinar's session branding information. Session branding lets hosts visually customize a webinar by setting a webinar wallpaper that displays behind video tiles. Session branding also lets hosts set the virtual background for and apply name tags to hosts, alternative hosts, panelists, interpreters, and speakers.

Prerequisites

  • A Pro or higher plan with a Webinar plan add-on.
  • Enable the Webinar Session Branding setting.

Scopes: webinar:master

Granular Scopes: webinar:read:branding:master

Rate Limit Label: LIGHT

Responses

Status: 200 **HTTP Status Code:** `200` Webinar session branding returned.
Content-Type: application/json
  • name_tags

    array — Information about the webinar's name tag.

    Items:

    • accent_color

      string — The name tag's accent color.

    • background_color

      string — The name tag's background color.

    • id

      string — The name tag's ID.

    • is_default

      boolean — Whether the file is the default name tag or not.

    • name

      string — The name tag's name.

    • text_color

      string — The name tag's text color.

  • virtual_backgrounds

    array — Information about the webinar's [virtual background](https://support.zoom.us/hc/en-us/articles/210707503-Virtual-Background) files.

    Items:

    • id

      string — The virtual background's file ID.

    • is_default

      boolean — Whether the file is the default virtual background file.

    • name

      string — The virtual background's file name.

  • wallpaper

    object — Information about the webinar's [wallpaper] file.

    • id

      string — The wallpaper's file ID.

Example:

{
  "wallpaper": {
    "id": "zazQjwDuQkS3Q2EprNd7jQ"
  },
  "virtual_backgrounds": [
    {
      "id": "zazQjwDuQkS3Q2EprNd7jQ",
      "name": "beach.jpg",
      "is_default": true
    }
  ],
  "name_tags": [
    {
      "id": "zazQjwDuQkS3Q2EprNd7jQ",
      "name": "name",
      "text_color": "0e72ed",
      "accent_color": "0e72ed",
      "background_color": "0e72ed",
      "is_default": true
    }
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `3000` <br> You cannot enable session branding for this webinar. <br> **Error Code:** `300` <br> Invalid webinar ID. <br> **Error Code:** `200` <br> No permission. <br> **Error Code:** `200` <br> Webinar plan is missing. You must subscribe to the webinar plan and enable webinars for this user in order to perform this action. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Webinar does not exist: {webinarId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Create a webinar's branding name tag

  • Method: POST
  • Path: /accounts/{accountId}/webinars/{webinarId}/branding/name_tags
  • Tags: Webinars

Create a webinar's session branding name tag. There's a limit of 20 name tags per webinar. Prerequisites:

  • The Webinar Session Branding setting enabled.

Scopes: webinar:master

Granular Scopes: webinar:write:branding_name_tag:master

Rate Limit Label: MEDIUM

Request Body

Content-Type: application/json
  • accent_color (required)

    string, format: Hex color code — The name tag's accent color.

  • background_color (required)

    string, format: Hex color code — The name tag's background color.

  • name (required)

    string — The name tag's name. **Note:** This value cannot exceed more than 50 characters.

  • text_color (required)

    string, format: Hex color code — The name tag's text color.

  • is_default

    boolean, default: false — Whether set the name tag as the default name tag or not.

  • set_default_for_all_panelists

    boolean, default: true — Whether to set the name tag as the new default for all panelists or not. This includes panelists not currently assigned a default name tag.

Example:

{
  "name": "name",
  "text_color": "0e72ed",
  "accent_color": "0e72ed",
  "background_color": "0e72ed",
  "is_default": true,
  "set_default_for_all_panelists": true
}

Responses

Status: 201 **HTTP Status Code:** `201` Name tag created.
Content-Type: application/json
  • accent_color

    string — The name tag's accent color.

  • background_color

    string — The name tag's background_color color.

  • id

    string — The name tag's ID.

  • is_default

    boolean — Whether the name tag is the default name tag or not.

  • name

    string — The name tag's name.

  • text_color

    string — The name tag's text color.

Example:

{
  "id": "J0sFXN2PSOCGrqTqLRwgAQ",
  "name": "name",
  "text_color": "0e72ed",
  "accent_color": "0e72ed",
  "background_color": "0e72ed",
  "is_default": true
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> No permission. <br> **Error Code:** `200` <br> Webinar plan is missing. You must subscribe to the webinar plan and enable webinars for this user in order to perform this action. <br> **Error Code:** `3000` <br> This webinar does not have session branding enabled. <br> **Error Code:** `3000` <br> You have reached the limit for the number of name tags you can add for this webinar. The limit is 20. <br> **Error Code:** `300` <br> Invalid webinar ID. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Webinar does not exist: {webinarId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Delete a webinar's branding name tag

  • Method: DELETE
  • Path: /accounts/{accountId}/webinars/{webinarId}/branding/name_tags
  • Tags: Webinars

Delete a webinar's session branding name tag.

Prerequisites:

  • The Webinar Session Branding setting enabled.

Scopes: webinar:master

Granular Scopes: webinar:delete:branding_name_tag:master

Rate Limit Label: LIGHT

Responses

Status: 204 **HTTP Status Code:** `204` * No content. * Name tag(s) deleted.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Invalid parameter: `name_tag_ids`. <br> **Error Code:** `3000` <br> This webinar does not have session branding enabled. <br> **Error Code:** `300` <br> Invalid webinar ID. <br> **Error Code:** `200` <br> No permission. <br> **Error Code:** `200` <br> Webinar plan is missing. You must subscribe to the webinar plan and enable webinars for this user in order to perform this action. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Webinar does not exist: {webinarId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Update a webinar's branding name tag

  • Method: PATCH
  • Path: /accounts/{accountId}/webinars/{webinarId}/branding/name_tags/{nameTagId}
  • Tags: Webinars

Update a webinar's session branding name tag. Prerequisites:

  • The Webinar Session Branding setting enabled.

Scopes: webinar:master

Granular Scopes: webinar:update:branding_name_tag:master

Rate Limit Label: MEDIUM

Request Body

Content-Type: application/json
  • accent_color

    string, format: Hex color code — The name tag's accent color.

  • background_color

    string, format: Hex color code — The name tag's background color.

  • is_default

    boolean, default: false — Whether set the name tag as the default name tag or not.

  • name

    string — The name tag's name. **Note:** This value cannot exceed more than 50 characters.

  • set_default_for_all_panelists

    boolean, default: true — Whether to set the name tag as the new default for all panelists or not, including panelists not currently assigned a default name tag.

  • text_color

    string, format: Hex color code — The name tag's text color.

Example:

{
  "name": "name",
  "text_color": "0e72ed",
  "accent_color": "0e72ed",
  "background_color": "0e72ed",
  "is_default": true,
  "set_default_for_all_panelists": true
}

Responses

Status: 204 **HTTP Status Code:** `204` * No content. * Name tag updated.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `3000` <br> This webinar does not have session branding enabled. <br> **Error Code:** `300` <br> Invalid webinar ID. <br> **Error Code:** `200` <br> No permission. <br> **Error Code:** `200` <br> Webinar plan is missing. You must subscribe to the webinar plan and enable webinars for this user in order to perform this action. <br> **Error Code:** `300` <br> Name Tag does not exist. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Webinar does not exist: {webinarId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Upload a webinar's branding virtual background

  • Method: POST
  • Path: /accounts/{accountId}/webinars/{webinarId}/branding/virtual_backgrounds
  • Tags: Webinars

Upload a webinar's session branding virtual background. Hosts and panelists can select and use these virtual backgrounds during the webinar. Branding virtual background files have these restrictions:

  • A webinar cannot exceed more than 10 virtual background files.
  • You can only upload image files that are in JPG/JPEG, GIF or PNG format.
  • The virtual background file size cannot exceed 15 megabytes (MB).

Prerequisites:

  • The Webinar Session Branding setting enabled.

Scopes: webinar:master

Granular Scopes: webinar:write:branding_virtual_background:master

Rate Limit Label: MEDIUM

Request Body

Content-Type: multipart/form-data
  • file (required)

    string — The vvirtual background's file path, in binary format.

  • default

    boolean, default: false — Whether set the file as the default virtual background file.

  • set_default_for_all_panelists

    boolean, default: true — Whether to set the virtual background file as the new default for all panelists. This includes panelists not currently assigned a default virtual background.

Example:

{
  "file": "Vm0wd2QyUXlVWGxXYTJoV1YwZG9WVll3Wkc5alJsWjBUVlpPV0Zac2JETlhhMUpUVmpGYWMySkVUbGhoTWsweFZqQmFTMk15U2tWVWJHaG9UVmhDVVZadGVGWmxSbGw1Vkd0c2FsSnRhRzlVVjNOM1pVWmFkR05GZEZSTlZUVkpWbTEwYTFkSFNrZGpSVGxhWWxoU1RGWnNXbUZrUjA1R1pFWlNUbFpYZHpGV2EyUXdZekpHVjFOdVVsWmhlbXhoVm1wT2IyRkdjRmRYYlVaclVqRmFTVnBGV2xOVWJGcFZWbXhzVjFaNlFYaFdSRXBIVWpGT2RWVnNXbWxTTW1odlZtMXdUMkl5UmtkWGJHUllZbGhTV0ZSV2FFTlRiR3QzV2tSU1ZrMXJjRmhWTW5oelZqRmFObEZZYUZkU1JWcDZWbXBHVDJSV1ZuUmhSazVzWWxob1dGWnRNSGhPUjFGM1RVaG9hbEp0VWxsWmJHaFRWMFpTVjFkdFJteFdiVko1VmpKNFQyRkdXbk5qU0d4WFRWZG9NMVpxUmtwbGJVWklZVVpvVjJKV1NrbFdiWEJIVkRGa1YyTkZaR2hTTW5oVVZGY3hiMWRzV1hoWGJYUk9VbTE0V0ZVeGFHOWhiRXBYVjJ4U1dtSkdXbWhaTVZwelkyeHdSMVJyTlZOaWEwcElWbXBLTkZReFdsaFRhMlJxVWtWYVYxWnFUa05YUmxweFVtdHdiR0pWV2tsWlZWcHJZVWRGZUdOSE9WZFdSVXBvVmtSS1QyUkdUbkphUmxKcFZqTm9kbFpHVm05Uk1XUlhWMWhvWVZKRlNtRldha1pIVGtaWmVHRkhPVmRpVlhCSlZsZDRjMWR0U2tkWGJXaFhUVVp3ZWxreWVIZFNNVkowWlVaa2FWSXpZM2hXTW5oWFZqRlJlRmRZWkU1WFJYQllXVmR6TVZsV1VsWlhibVJYVW14d2VGVnRNVWRXTURGeVRsVm9WMUo2UmtoV1ZFWkxWakpPUmxac1pHbFNNVVYzVmxaU1IxbFdXbkpOVmxwWFlYcFdWRlZyVmtaT1VUMDk=",
  "default": true,
  "set_default_for_all_panelists": true
}

Responses

Status: 201 **HTTP Status Code:** `201` Virtual background uploaded.
Content-Type: application/json
  • id

    string — The virtual background file's ID.

  • is_default

    boolean — Whether the file is the default virtual background file.

  • name

    string — The virtual background file's name.

  • size

    integer — The virtual background file's size, in bytes.

  • type

    string, possible values: "image" — The virtual background file's file type. * `image` - An image file.

Example:

{
  "id": "J0sFXN2PSOCGrqTqLRwgAQ",
  "name": "beach.jpg",
  "is_default": true,
  "size": 524288,
  "type": "image"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `3000` <br> This webinar does not have session branding enabled. <br> **Error Code:** `120` <br> You may only upload JPG/JPEG, GIF, or PNG image files. <br> **Error Code:** `120` <br> No file uploaded. Verify that a file has been uploaded. <br> **Error Code:** `120` <br> File size cannot exceed 15M. <br> **Error Code:** `120` <br> A maximum of 10 files are allowed for a webinar. <br> **Error Code:** `300` <br> Invalid webinar ID. <br> **Error Code:** `200` <br> No permission. <br> **Error Code:** `200` <br> Webinar plan is missing. You must subscribe to the webinar plan and enable webinars for this user in order to perform this action. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Webinar does not exist: {webinarId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Delete a webinar's branding virtual backgrounds

  • Method: DELETE
  • Path: /accounts/{accountId}/webinars/{webinarId}/branding/virtual_backgrounds
  • Tags: Webinars

Delete a webinar's session branding virtual background.

Prerequisites:

  • The Webinar Session Branding setting enabled.

Scopes: webinar:master

Granular Scopes: webinar:delete:branding_virtual_background:master

Rate Limit Label: LIGHT

Responses

Status: 204 **HTTP Status Code:** `204` * No content. * Virtual background file(s) deleted.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Invalid parameter: `ids`. <br> **Error Code:** `3000` <br> This webinar does not have session branding enabled. <br> **Error Code:** `300` <br> Invalid webinar ID. <br> **Error Code:** `200` <br> No permission. <br> **Error Code:** `200` <br> Webinar plan is missing. You must subscribe to the webinar plan and enable webinars for this user in order to perform this action. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Webinar does not exist: {webinarId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Set webinar's default branding virtual background

  • Method: PATCH
  • Path: /accounts/{accountId}/webinars/{webinarId}/branding/virtual_backgrounds
  • Tags: Webinars

Set a webinar's default session branding virtual background.

Prerequisites:

  • The Webinar Session Branding setting enabled.

Scopes: webinar:master

Granular Scopes: webinar:update:branding_virtual_background:master

Rate Limit Label: LIGHT

Responses

Status: 204 **HTTP Status Code:** `204` * No content. * Virtual background updated.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Invalid parameter: {id} <br> **Error Code:** `3000` <br> This webinar does not have session branding enabled. <br> **Error Code:** `300` <br> Invalid webinar ID. <br> **Error Code:** `200` <br> No permission. <br> **Error Code:** `200` <br> Webinar plan is missing. You must subscribe to the webinar plan and enable webinars for this user in order to perform this action. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Webinar does not exist: {webinarId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Upload a webinar's branding wallpaper

  • Method: POST
  • Path: /accounts/{accountId}/webinars/{webinarId}/branding/wallpaper
  • Tags: Webinars

Upload a webinar's session branding wallpaper file. Webinar branding wallpaper files have these requirements:

  • A webinar can only have one wallpaper file.
  • You can only upload image files that are in JPG/JPEG, GIF, or PNG format.
  • Image files must be 16:9 ratio. The recommended image size is 1920 x 1080 pixels.
  • The wallpaper file size cannot exceed 15 megabytes.

Prerequisites:

  • The Webinar Session Branding setting enabled.

Scopes: webinar:master

Granular Scopes: webinar:write:branding_wallpaper:master

Rate Limit Label: MEDIUM

Request Body

Content-Type: multipart/form-data
  • file (required)

    string — The wallpaper's file path, in binary format.

Example:

{
  "file": ""
}

Responses

Status: 201 **HTTP Status Code:** `201` Webinar wallpaper uploaded.
Content-Type: application/json
  • id

    string — The wallpaper file's ID.

  • name

    string — The wallpaper file's name.

  • size

    integer — The wallpaper file's size, in bytes.

  • type

    string, possible values: "image" — The wallpaper file's file type. * `image` - An image file.

Example:

{
  "id": "zazQjwDuQkS3Q2EprNd7jQ",
  "name": "logo.jpg",
  "size": 262144,
  "type": "image"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `3000` <br> This webinar does not have session branding enabled. <br> **Error Code:** `120` <br> No file uploaded. Verify that a file has been uploaded. <br> **Error Code:** `120` <br> File size cannot exceed 15M. <br> **Error Code:** `120` <br> You can only upload JPG/JPEG, GIF, or PNG image files. <br> **Error Code:** `300` <br> Invalid webinar ID. <br> **Error Code:** `200` <br> No permission. <br> **Error Code:** `200` <br> Webinar plan is missing. You must subscribe to the webinar plan and enable webinars for this user in order to perform this action. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Webinar does not exist: {webinarId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Delete a webinar's branding wallpaper

  • Method: DELETE
  • Path: /accounts/{accountId}/webinars/{webinarId}/branding/wallpaper
  • Tags: Webinars

Delete a webinar's session branding wallpaper file.

Prerequisites:

  • The Webinar Session Branding setting enabled.

Scopes: webinar:master

Granular Scopes: webinar:delete:branding_wallpaper:master

Rate Limit Label: LIGHT

Responses

Status: 204 **HTTP Status Code:** `204` * No content. * Webinar wallpaper deleted.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Invalid webinar ID. <br> **Error Code:** `3000` <br> This webinar does not have session branding enabled. <br> **Error Code:** `200` <br> No permission. <br> **Error Code:** `200` <br> Webinar plan is missing. You must subscribe to the webinar plan and enable webinars for this user in order to perform this action. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Webinar does not exist: {webinarId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Create webinar's invite links

  • Method: POST
  • Path: /accounts/{accountId}/webinars/{webinarId}/invite_links
  • Tags: Webinars

Create a batch of invitation links for a webinar.

Prerequisites:

  • Business, Education or API Plan with the Webinar add-on.

Scopes: webinar:master

Granular Scopes: webinar:write:invite_links:master

Rate Limit Label: LIGHT

Request Body

Content-Type: application/json
  • attendees

    array — The attendees list.

    Items:

    • name (required)

      string — User display name.

    • disable_audio

      boolean, default: false — Whether to disable participant audio when joining the meeting. If not provided or set to `false`, the participant audio will follow the meeting's default settings.

    • disable_video

      boolean, default: false — Whether to disable participant video when joining the meeting. If not provided or set to `false`, the participant video will follow the meeting's default settings.

  • ttl

    integer, format: int64, default: 7200 — The invite link's expiration time, in seconds. This value defaults to `7200`.

Example:

{
  "attendees": [
    {
      "name": "Jill Chill",
      "disable_video": false,
      "disable_audio": false
    }
  ],
  "ttl": 1000
}

Responses

Status: 201 **HTTP Status Code:** `201` Webinar Invite Links Created
Content-Type: application/json
  • attendees

    array — The attendee list.

    Items:

    • join_url

      string — The URL to join the meeting.

    • name

      string — The user's display name.

Example:

{
  "attendees": [
    {
      "join_url": "https://example.com/j/11111",
      "name": "Jill Chill"
    }
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Invalid Webinar Id. <br> **Error Code:** `200` <br> No permission. <br> **Error Code:** `200` <br> Webinar plan is missing. You must subscribe to the webinar plan and enable webinars for this user in order to perform this action. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Webinar does not exist: {webinarId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](/docs/api/rest/rate-limits/).

Get live stream details

  • Method: GET
  • Path: /accounts/{accountId}/webinars/{webinarId}/livestream
  • Tags: Webinars

Get a webinar's live stream configuration details, such as Stream URL, Stream Key and Page URL.

Zoom allows users to live stream a webinar to a custom platform.

Prerequisites:

  • Pro or higher plan with the webinar add-on.

  • Live streaming details must have been configured for the webinar.

Scopes: webinar:master

Granular Scopes: webinar:read:livestream:master

Rate Limit Label: LIGHT

Responses

Status: 200 **HTTP Status Code:** `200` **OK** Live stream details returned.
Content-Type: application/json
  • page_url

    string — Live streaming page URL. This is the URL using which anyone can view the live stream of the webinar.

  • resolution

    string — The number of pixels in each dimension that the video camera can display.

  • stream_key

    string — Stream key.

  • stream_url

    string — Stream URL.

Example:

{
  "page_url": "https://example.com/livestream/123",
  "stream_key": "contact-it@example.com",
  "stream_url": "https://example.com/livestream",
  "resolution": "720p"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Invalid webinar ID. <br> **Error Code:** `200` <br> Webinar plan is missing. You must subscribe to the webinar plan and enable webinars for this user in order to perform this action. <br> **Error Code:** `200` <br> No permission. <br> **Error Code:** `200` <br> The current user has not enabled the custom live streaming feature of the webinar. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Webinar does not exist: {webinarId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Update a live stream

  • Method: PATCH
  • Path: /accounts/{accountId}/webinars/{webinarId}/livestream
  • Tags: Webinars

Update a webinar's live stream information.

Prerequisites:

  • Pro or higher plan with the webinar add-on.

  • Live streaming details must be configured for the webinar.

Scopes: webinar:master

Granular Scopes: webinar:update:livestream:master

Rate Limit Label: LIGHT

Request Body

Content-Type: application/json
  • page_url (required)

    string, format: uri — The webinar live stream page's URL.

  • stream_key (required)

    string — The webinar live stream name and key.

  • stream_url (required)

    string — The webinar live stream URL.

  • resolution

    string — The number of pixels in each dimension that the video camera can display, required when a user enables 1080p. Use a value of `720p` or `1080p`

Example:

{
  "page_url": "https://example.com/livestream/123",
  "stream_key": "contact-it@example.com",
  "stream_url": "https://example.com/livestream",
  "resolution": "720p"
}

Responses

Status: 204 **HTTP Status Code:** `204` Meeting live stream updated.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Invalid webinar ID. <br> **Error Code:** `200` <br> The current user has not enabled the custom live streaming feature of the webinar. <br> **Error Code:** `200` <br> No permission. <br> **Error Code:** `200` <br> Webinar plan is missing. You must subscribe to the webinar plan and enable webinars for this user in order to perform this action. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Webinar does not exist: {webinarId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Update live stream status

  • Method: PATCH
  • Path: /accounts/{accountId}/webinars/{webinarId}/livestream/status
  • Tags: Webinars

Lets users live stream a webinar to a custom platform. Update the status of a webinar's live stream.

Prerequisites:

  • Pro or higher plan with a Webinar Add-on.
  • Live streaming details must be configured for the webinar.

Scopes: webinar:master

Granular Scopes: webinar:update:livestream_status:master

Rate Limit Label: LIGHT

Request Body

Content-Type: application/json
  • action

    string, possible values: "start", "stop" — Update the live stream's status. * `start` - Start a webinar live stream. * `stop` - Stop an ongoing webinar live stream.

  • settings

    object — Update the live stream session's settings. **Only** settings for a stopped live stream can be updated.

    • active_speaker_name

      boolean — Display the name of the active speaker during a live stream.

    • close_caption

      string, possible values: "burnt-in", "embedded", "off", default: "burnt-in" — The livestream's closed caption type for this session. * `burnt-in` - Burnt in captions. * `embedded` - Embedded captions. * `off` - Turn off captions.

    • display_name

      string — Display the live stream's name.

Example:

{
  "action": "start",
  "settings": {
    "active_speaker_name": true,
    "display_name": "Jill Chill",
    "close_caption": "burnt-in"
  }
}

Responses

Status: 204 **HTTP Status Code:** `204` Meeting live stream updated.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Invalid webinar ID. <br> **Error Code:** `1001` <br> User does not exist: {userId}. <br> **Error Code:** `200` <br> No permission. <br> **Error Code:** `3000` <br> The current webinar is not configured with a custom streaming service. <br> **Error Code:** `200` <br> Webinar plan is missing. You must subscribe to the webinar plan and enable webinars for this user in order to perform this action. <br> **Error Code:** `200` <br> Webinar {webinarId} has not started. <br> **Error Code:** `3000` <br> The current webinar is not configured with a custom streaming service. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Webinar does not exist: {webinarId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

List panelists

  • Method: GET
  • Path: /accounts/{accountId}/webinars/{webinarId}/panelists
  • Tags: Webinars

List all of a webinar's panelists.

Webinar panelists can view and send video, screen share, annotate, and do much more compared to webinar attendees.

Prerequisites:

Scopes: webinar:master

Granular Scopes: webinar:read:list_panelists:master

Rate Limit Label: MEDIUM

Responses

Status: 200 **HTTP Status Code:** `200` Webinar plan subscription missing. Enable webinar for this user once the subscription is added.
Content-Type: application/json

All of:

  • panelists

    array — List of panelist objects.

    Items:

    All of:

    • id

      string — Panelist's ID.

    • join_url

      string — Join URL.

    • name_tag_description

      string — The description for the name tag, such as the person's title.

    • name_tag_id

      string — The name tag ID to bind.

    • name_tag_name

      string — The panelist's name to display in the name tag.

    • name_tag_pronouns

      string — The pronouns to display in the name tag.

    • virtual_background_id

      string — The virtual background's ID.

  • total_records

    integer — Total records.

Example:

{
  "panelists": [
    {
      "id": "Tg2b6GhcQKKbV7nSCbDKug",
      "email": "jchill@example.com",
      "name": "Jill Chill",
      "join_url": "https://example.com/j/11111",
      "virtual_background_id": "xHhPyb8ERMCmiC5njPjFdQ",
      "name_tag_id": "xHhPyb8ERMCmiC5njPjFdQ",
      "name_tag_name": "name",
      "name_tag_pronouns": "pronouns",
      "name_tag_description": "description"
    }
  ],
  "total_records": 1
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Invalid webinar ID. <br> **Error Code:** `200` <br> No permission. <br> **Error Code:** `200` <br> Webinar plan is missing. You must subscribe to the webinar plan and enable webinars for this user in order to perform this action. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Webinar does not exist: {webinarId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Add panelists

  • Method: POST
  • Path: /accounts/{accountId}/webinars/{webinarId}/panelists
  • Tags: Webinars

Panelists in a webinar can view and send video, screen share, annotate, and do much more compared to attendees in a webinar.
Add panelists to a scheduled webinar.

Prerequisites:

Scopes: webinar:master

Granular Scopes: webinar:write:panelist:master

Rate Limit Label: MEDIUM

Request Body

Content-Type: application/json
  • panelists

    array — List of panelist objects.

    Items:

    All of:

    • name_tag_description

      string — The description for the name tag, such the person's title.

    • name_tag_id

      string — The name tag ID to bind.

    • name_tag_name

      string — The panelist's name to display in the name tag.

    • name_tag_pronouns

      string — The pronouns to display in the name tag.

    • virtual_background_id

      string — The virtual background ID to bind.

Example:

{
  "panelists": [
    {
      "email": "jchill@example.com",
      "name": "Jill Chill",
      "virtual_background_id": "xHhPyb8ERMCmiC5njPjFdQ",
      "name_tag_id": "xHhPyb8ERMCmiC5njPjFdQ",
      "name_tag_name": "xHhPyb8ERMCmiC5njPjFdQ",
      "name_tag_pronouns": "pronouns",
      "name_tag_description": "description"
    }
  ]
}

Responses

Status: 201 **HTTP Status Code:** `201` Panelist created.
Content-Type: application/json
  • id

    string — Webinar ID.

  • updated_at

    string, format: date-time — The time when the panelist was added.

Example:

{
  "id": "95204914252",
  "updated_at": "2022-03-26T07:30:16Z"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `3000` <br> You have reached the limit for the number of panelists you can add. Contact Zoom Support for more information. <br> **Error Code:** `200` <br> No permission. <br> **Error Code:** `200` <br> Webinar plan is missing. You must subscribe to the webinar plan and enable webinars for this user in order to perform this action. <br> **Error Code:** `300` <br> Invalid webinar ID. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Webinar does not exist: {webinarId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Remove all panelists

  • Method: DELETE
  • Path: /accounts/{accountId}/webinars/{webinarId}/panelists
  • Tags: Webinars

Remove all the panelists from a webinar.

Prerequisites:

Scopes: webinar:master

Granular Scopes: webinar:delete:panelist:master

Rate Limit Label: LIGHT

Responses

Status: 204 **HTTP Status Code:** `204` Panelists removed.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Invalid webinar ID. <br> **Error Code:** `200` <br> No permission. <br> **Error Code:** `200` <br> Webinar plan is missing. You must subscribe to the webinar plan and enable webinars for this user in order to perform this action. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Webinar does not exist: {webinarId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Remove a panelist

  • Method: DELETE
  • Path: /accounts/{accountId}/webinars/{webinarId}/panelists/{panelistId}
  • Tags: Webinars

Remove a single panelist from a webinar.
Retrieve the panelistId by calling List Panelists API.

Prerequisites:

Scopes: webinar:master

Granular Scopes: webinar:delete:panelist:master

Rate Limit Label: LIGHT

Responses

Status: 204 **HTTP Status Code:** `204` Panelist removed.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Invalid webinar ID. <br> **Error Code:** `200` <br> No permission. <br> **Error Code:** `200` <br> Webinar plan is missing. You must subscribe to the webinar plan and enable webinars for this user in order to perform this action. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Webinar does not exist: {webinarId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

List a webinar's polls

  • Method: GET
  • Path: /accounts/{accountId}/webinars/{webinarId}/polls
  • Tags: Webinars

Lists all the polls of a webinar.

Prerequisites

Scopes: webinar:master

Granular Scopes: webinar:read:list_polls:master

Rate Limit Label: LIGHT

Responses

Status: 200 **HTTP Status Code:** `200` List polls of a Webinar returned
Content-Type: application/json

All of:

  • polls

    array — An array of polls.

    Items:

    All of:

    • id

      string — The poll ID.

    • status

      string, possible values: "notstart", "started", "ended", "sharing", "deactivated" — The status of the webinar poll: `notstart` - Poll not started `started` - Poll started `ended` - Poll ended `sharing` - Sharing poll results `deactivated` - Poll deactivated

    • anonymous

      boolean, default: false — Whether meeting participants answer poll questions anonymously. This value defaults to `false`.

    • poll_type

      integer, possible values: 1, 2, 3 — The type of poll: * `1` &mdash; Poll. * `2` &mdash; Advanced Poll. This feature must be enabled in your Zoom account. * `3` &mdash; Quiz. This feature must be enabled in your Zoom account. This value defaults to `1`.

    • questions

      array — The information about the poll's questions.

      Items:

      • answer_max_character

        integer — The allowed maximum number of characters. This field only applies to `short_answer` and `long_answer` polls: * For `short_answer` polls, a maximum of 500 characters. * For `long_answer` polls, a maximum of 2,000 characters.

      • answer_min_character

        integer — The allowed minimum number of characters. This field only applies to `short_answer` and `long_answer` polls. You must provide at least a **one** character minimum value.

      • answer_required

        boolean, default: false — Whether participants must answer the question: * `true` &mdash; The participant must answer the question. * `false` &mdash; The participant does not need to answer the question. **Note:** * When the poll's `type` value is `1` (Poll), this value defaults to `true`. * When the poll's `type` value is the `2` (Advanced Poll) or `3` (Quiz) values, this value defaults to `false`.

      • answers

        array — The poll question's available answers. This field requires a **minimum** of two answers. * For `single` and `multiple` polls, you can only provide a maximum of 10 answers. * For `matching` polls, you can only provide a maximum of 16 answers. * For `rank_order` polls, you can only provide a maximum of seven answers.

        Items:

        string

      • case_sensitive

        boolean, default: false — Whether the correct answer is case sensitive. This field only applies to `fill_in_the_blank` polls: * `true` &mdash; The answer is case-sensitive. * `false` &mdash; The answer is not case-sensitive. This value defaults to `false`.

      • name

        string — The poll question, up to 1024 characters. For `fill_in_the_blank` polls, this field is the poll's question. For each value that the user must fill in, ensure that there are the same number of `right_answers` values.

      • prompts

        array — The information about the prompt questions. This field only applies to `matching` and `rank_order` polls. You **must** provide a minimum of two prompts, up to a maximum of 10 prompts.

        Items:

        • prompt_question

          string — The question prompt's title.

        • prompt_right_answers

          array — The question prompt's correct answers: * For `matching` polls, you must provide a minimum of two correct answers, up to a maximum of 10 correct answers. * For `rank_order` polls, you can only provide one correct answer.

          Items:

          string

      • rating_max_label

        string — The high score label for the `rating_max_value` field. This field only applies to the `rating_scale` poll.

      • rating_max_value

        integer — The rating scale's maximum value, up to a maximum value of 10. This field only applies to the `rating_scale` poll.

      • rating_min_label

        string — The low score label for the `rating_min_value` field. This field only applies to the `rating_scale` poll.

      • rating_min_value

        integer — The rating scale's minimum value. This value cannot be less than zero. This field only applies to the `rating_scale` poll.

      • right_answers

        array — The poll question's correct answer(s). This field is **required** if the poll's `type` value is `3` (Quiz). For `single` and `matching` polls, this field only accepts one answer.

        Items:

        string

      • show_as_dropdown

        boolean, default: false — Whether to display the radio selection as a drop-down box: * `true` &mdash; Show as a drop-down box. * `false` &mdash; Do not show as a drop-down box. This value defaults to `false`.

      • type

        string, possible values: "single", "multiple", "matching", "rank_order", "short_answer", "long_answer", "fill_in_the_blank", "rating_scale" — The poll's question and answer type: * `single` &mdash; Single choice. * `multiple` &mdash; Multiple choice. * `matching` &mdash; Matching. * `rank_order` &mdash; Rank order. * `short_answer` &mdash; Short answer. * `long_answer` &mdash; Long answer. * `fill_in_the_blank` &mdash; Fill in the blank. * `rating_scale` &mdash; Rating scale.

    • title

      string — The poll's title, up to 64 characters.

  • total_records

    integer — The number of all records available across pages.

Example:

{
  "polls": [
    {
      "id": "QalIoKWLTJehBJ8e1xRrbQ",
      "status": "notstart",
      "anonymous": true,
      "poll_type": 2,
      "questions": [
        {
          "answer_max_character": 200,
          "answer_min_character": 1,
          "answer_required": false,
          "answers": [
            "Extremely useful"
          ],
          "case_sensitive": false,
          "name": "How useful was this meeting?",
          "prompts": [
            {
              "prompt_question": "How are you?",
              "prompt_right_answers": [
                "Good"
              ]
            }
          ],
          "rating_max_label": "Extremely Likely",
          "rating_max_value": 4,
          "rating_min_label": "Not likely",
          "rating_min_value": 0,
          "right_answers": [
            "Good"
          ],
          "show_as_dropdown": false,
          "type": "single"
        }
      ],
      "title": "Learn something new"
    }
  ],
  "total_records": 1
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `4400` <br> Webinar polls disabled. To enable this feature, enable the **Webinar Polls/Quizzes** setting in the Zoom web portal's **Settings** interface. <br> **Error Code:** `300` <br> Invalid webinar ID. <br> **Error Code:** `200` <br> No permission. <br> **Error Code:** `200` <br> Webinar plan is missing. You must subscribe to the webinar plan and enable webinars for this user in order to perform this action. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Webinar does not exist: {webinarId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Create a webinar's poll

  • Method: POST
  • Path: /accounts/{accountId}/webinars/{webinarId}/polls
  • Tags: Webinars

Creates a poll for a webinar.

Prerequisites

Scopes: webinar:master

Granular Scopes: webinar:write:poll:master

Rate Limit Label: LIGHT

Request Body

Content-Type: application/json

All of:

  • anonymous

    boolean, default: false — Whether meeting participants answer poll questions anonymously. This value defaults to `false`.

  • poll_type

    integer, possible values: 1, 2, 3 — The type of poll. * `1` - Poll. * `2` - Advanced Poll. This feature must be enabled in your Zoom account. * `3` - Quiz. This feature must be enabled in your Zoom account. This value defaults to `1`.

  • questions

    array — The information about the poll's questions.

    Items:

    • answer_max_character

      integer — The allowed maximum number of characters. This field only applies to `short_answer` and `long_answer` polls: * For `short_answer` polls, a maximum of 500 characters. * For `long_answer` polls, a maximum of 2,000 characters.

    • answer_min_character

      integer — The allowed minimum number of characters. This field only applies to `short_answer` and `long_answer` polls. You must provide at least a **one** character minimum value.

    • answer_required

      boolean, default: false — Whether participants must answer the question. * `true` - The participant must answer the question. * `false` - The participant does not need to answer the question. **Note:** * When the poll's `type` value is `1` (Poll), this value defaults to `true`. * When the poll's `type` value is the `2` (Advanced Poll) or `3` (Quiz) values, this value defaults to `false`.

    • answers

      array — The poll question's available answers. This field requires a **minimum** of two answers. * For `single` and `multiple` polls, you can only provide a maximum of 10 answers. * For `matching` polls, you can only provide a maximum of 16 answers. * For `rank_order` polls, you can only provide a maximum of seven answers.

      Items:

      string

    • case_sensitive

      boolean, default: false — Whether the correct answer is case sensitive. This field only applies to `fill_in_the_blank` polls. * `true` - The answer is case-sensitive. * `false` - The answer is not case-sensitive. This value defaults to `false`.

    • name

      string — The poll question, up to 1024 characters. For `fill_in_the_blank` polls, this field is the poll's question. For each value that the user must fill in, ensure that there are the same number of `right_answers` values.

    • prompts

      array — The information about the prompt questions. This field only applies to `matching` and `rank_order` polls. You **must** provide a minimum of two prompts, up to a maximum of 10 prompts.

      Items:

      • prompt_question

        string — The question prompt's title.

      • prompt_right_answers

        array — The question prompt's correct answers: * For `matching` polls, you must provide a minimum of two correct answers, up to a maximum of 10 correct answers. * For `rank_order` polls, you can only provide one correct answer.

        Items:

        string

    • rating_max_label

      string — The high score label for the `rating_max_value` field. This field only applies to the `rating_scale` poll.

    • rating_max_value

      integer — The rating scale's maximum value, up to a maximum value of 10. This field only applies to the `rating_scale` poll.

    • rating_min_label

      string — The low score label for the `rating_min_value` field. This field only applies to the `rating_scale` poll.

    • rating_min_value

      integer — The rating scale's minimum value. This value cannot be less than zero. This field only applies to the `rating_scale` poll.

    • right_answers

      array — The poll question's correct answer(s). This field is **required** if the poll's `type` value is `3` (Quiz). For `single` and `matching` polls, this field only accepts one answer.

      Items:

      string

    • show_as_dropdown

      boolean, default: false — Whether to display the radio selection as a drop-down box. * `true` - Show as a drop-down box. * `false` - Do not show as a drop-down box. This value defaults to `false`.

    • type

      string, possible values: "single", "multiple", "matching", "rank_order", "short_answer", "long_answer", "fill_in_the_blank", "rating_scale" — The poll's question and answer type. * `single` - Single choice. * `multiple` - Multiple choice. * `matching` - Matching. * `rank_order` - Rank order. * `short_answer` - Short answer. * `long_answer` - Long answer. * `fill_in_the_blank` - Fill in the blank. * `rating_scale` - Rating scale.

  • title

    string — The poll's title, up to 64 characters.

Example:

{
  "anonymous": true,
  "poll_type": 2,
  "questions": [
    {
      "answer_max_character": 200,
      "answer_min_character": 1,
      "answer_required": false,
      "answers": [
        "Extremely useful"
      ],
      "case_sensitive": false,
      "name": "How useful was this meeting?",
      "prompts": [
        {
          "prompt_question": "How are you?",
          "prompt_right_answers": [
            "Good"
          ]
        }
      ],
      "rating_max_label": "Extremely Likely",
      "rating_max_value": 4,
      "rating_min_label": "Not likely",
      "rating_min_value": 0,
      "right_answers": [
        "Good"
      ],
      "show_as_dropdown": false,
      "type": "single"
    }
  ],
  "title": "Learn something new"
}

Responses

Status: 201 **HTTP Status Code:** `201` Webinar Poll Created
Content-Type: application/json

All of:

  • id

    string — The webinar poll ID.

  • status

    string, possible values: "notstart", "started", "ended", "sharing" — The status of the webinar poll: `notstart` - Poll not started `started` - Poll started `ended` - Poll ended `sharing` - Sharing poll results

  • anonymous

    boolean, default: false — Whether meeting participants answer poll questions anonymously. This value defaults to `false`.

  • poll_type

    integer, possible values: 1, 2, 3 — The type of poll. * `1` - Poll. * `2` - Advanced Poll. This feature must be enabled in your Zoom account. * `3` - Quiz. This feature must be enabled in your Zoom account. This value defaults to `1`.

  • questions

    array — The information about the poll's questions.

    Items:

    • answer_max_character

      integer — The allowed maximum number of characters. This field only applies to `short_answer` and `long_answer` polls: * For `short_answer` polls, a maximum of 500 characters. * For `long_answer` polls, a maximum of 2,000 characters.

    • answer_min_character

      integer — The allowed minimum number of characters. This field only applies to `short_answer` and `long_answer` polls. You must provide at least a **one** character minimum value.

    • answer_required

      boolean, default: false — Whether participants must answer the question. * `true` - The participant must answer the question. * `false` - The participant does not need to answer the question. **Note:** * When the poll's `type` value is `1` (Poll), this value defaults to `true`. * When the poll's `type` value is the `2` (Advanced Poll) or `3` (Quiz) values, this value defaults to `false`.

    • answers

      array — The poll question's available answers. This field requires a **minimum** of two answers. * For `single` and `multiple` polls, you can only provide a maximum of 10 answers. * For `matching` polls, you can only provide a maximum of 16 answers. * For `rank_order` polls, you can only provide a maximum of seven answers.

      Items:

      string

    • case_sensitive

      boolean, default: false — Whether the correct answer is case sensitive. This field only applies to `fill_in_the_blank` polls. * `true` - The answer is case-sensitive. * `false` - The answer is not case-sensitive. This value defaults to `false`.

    • name

      string — The poll question, up to 1024 characters. For `fill_in_the_blank` polls, this field is the poll's question. For each value that the user must fill in, ensure that there are the same number of `right_answers` values.

    • prompts

      array — The information about the prompt questions. This field only applies to `matching` and `rank_order` polls. You **must** provide a minimum of two prompts, up to a maximum of 10 prompts.

      Items:

      • prompt_question

        string — The question prompt's title.

      • prompt_right_answers

        array — The question prompt's correct answers: * For `matching` polls, you must provide a minimum of two correct answers, up to a maximum of 10 correct answers. * For `rank_order` polls, you can only provide one correct answer.

        Items:

        string

    • rating_max_label

      string — The high score label for the `rating_max_value` field. This field only applies to the `rating_scale` poll.

    • rating_max_value

      integer — The rating scale's maximum value, up to a maximum value of 10. This field only applies to the `rating_scale` poll.

    • rating_min_label

      string — The low score label for the `rating_min_value` field. This field only applies to the `rating_scale` poll.

    • rating_min_value

      integer — The rating scale's minimum value. This value cannot be less than zero. This field only applies to the `rating_scale` poll.

    • right_answers

      array — The poll question's correct answer(s). This field is **required** if the poll's `type` value is `3` (Quiz). For `single` and `matching` polls, this field only accepts one answer.

      Items:

      string

    • show_as_dropdown

      boolean, default: false — Whether to display the radio selection as a drop-down box. * `true` - Show as a drop-down box. * `false` - Do not show as a drop-down box. This value defaults to `false`.

    • type

      string, possible values: "single", "multiple", "matching", "rank_order", "short_answer", "long_answer", "fill_in_the_blank", "rating_scale" — The poll's question and answer type. * `single` - Single choice. * `multiple` - Multiple choice. * `matching` - Matching. * `rank_order` - Rank order. * `short_answer` - Short answer. * `long_answer` - Long answer. * `fill_in_the_blank` - Fill in the blank. * `rating_scale` - Rating scale.

  • title

    string — The poll's title, up to 64 characters.

Example:

{
  "id": "QalIoKWLTJehBJ8e1xRrbQ",
  "status": "notstart",
  "anonymous": true,
  "poll_type": 2,
  "questions": [
    {
      "answer_max_character": 200,
      "answer_min_character": 1,
      "answer_required": false,
      "answers": [
        "Extremely useful"
      ],
      "case_sensitive": false,
      "name": "How useful was this meeting?",
      "prompts": [
        {
          "prompt_question": "How are you?",
          "prompt_right_answers": [
            "Good"
          ]
        }
      ],
      "rating_max_label": "Extremely Likely",
      "rating_max_value": 4,
      "rating_min_label": "Not likely",
      "rating_min_value": 0,
      "right_answers": [
        "Good"
      ],
      "show_as_dropdown": false,
      "type": "single"
    }
  ],
  "title": "Learn something new"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `4400` <br> Webinar polls disabled. To enable this feature, enable the **Webinar Polls/Quizzes** setting in the Zoom web portal's **Settings** interface. <br> **Error Code:** `300` <br> Invalid webinar ID. <br> **Error Code:** `200` <br> No permission. <br> **Error Code:** `200` <br> Webinar plan is missing. You must subscribe to the webinar plan and enable webinars for this user in order to perform this action. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Webinar does not exist: {webinarId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Get a webinar poll

  • Method: GET
  • Path: /accounts/{accountId}/webinars/{webinarId}/polls/{pollId}
  • Tags: Webinars

Returns a webinar's poll details.

Prerequisites

Scopes: webinar:master

Granular Scopes: webinar:read:poll:master

Rate Limit Label: LIGHT

Responses

Status: 200 **HTTP Status Code:** `200` Webinar Poll object returned
Content-Type: application/json

All of:

  • id

    string — The webinar poll ID.

  • status

    string, possible values: "notstart", "started", "ended", "sharing", "deactivated" — The status of the webinar poll: `notstart` - Poll not started `started` - Poll started `ended` - Poll ended `sharing` - Sharing poll results `deactivated` - Poll deactivated

  • anonymous

    boolean, default: false — Whether meeting participants answer poll questions anonymously. This value defaults to `false`.

  • poll_type

    integer, possible values: 1, 2, 3 — The type of poll: * `1` &mdash; Poll. * `2` &mdash; Advanced Poll. This feature must be enabled in your Zoom account. * `3` &mdash; Quiz. This feature must be enabled in your Zoom account. This value defaults to `1`.

  • questions

    array — The information about the poll's questions.

    Items:

    • answer_max_character

      integer — The allowed maximum number of characters. This field only applies to `short_answer` and `long_answer` polls: * For `short_answer` polls, a maximum of 500 characters. * For `long_answer` polls, a maximum of 2,000 characters.

    • answer_min_character

      integer — The allowed minimum number of characters. This field only applies to `short_answer` and `long_answer` polls. You must provide at least a **one** character minimum value.

    • answer_required

      boolean, default: false — Whether participants must answer the question: * `true` &mdash; The participant must answer the question. * `false` &mdash; The participant does not need to answer the question. **Note:** * When the poll's `type` value is `1` (Poll), this value defaults to `true`. * When the poll's `type` value is the `2` (Advanced Poll) or `3` (Quiz) values, this value defaults to `false`.

    • answers

      array — The poll question's available answers. This field requires a **minimum** of two answers. * For `single` and `multiple` polls, you can only provide a maximum of 10 answers. * For `matching` polls, you can only provide a maximum of 16 answers. * For `rank_order` polls, you can only provide a maximum of seven answers.

      Items:

      string

    • case_sensitive

      boolean, default: false — Whether the correct answer is case sensitive. This field only applies to `fill_in_the_blank` polls: * `true` &mdash; The answer is case-sensitive. * `false` &mdash; The answer is not case-sensitive. This value defaults to `false`.

    • name

      string — The poll question, up to 1024 characters. For `fill_in_the_blank` polls, this field is the poll's question. For each value that the user must fill in, ensure that there are the same number of `right_answers` values.

    • prompts

      array — The information about the prompt questions. This field only applies to `matching` and `rank_order` polls. You **must** provide a minimum of two prompts, up to a maximum of 10 prompts.

      Items:

      • prompt_question

        string — The question prompt's title.

      • prompt_right_answers

        array — The question prompt's correct answers: * For `matching` polls, you must provide a minimum of two correct answers, up to a maximum of 10 correct answers. * For `rank_order` polls, you can only provide one correct answer.

        Items:

        string

    • rating_max_label

      string — The high score label for the `rating_max_value` field. This field only applies to the `rating_scale` poll.

    • rating_max_value

      integer — The rating scale's maximum value, up to a maximum value of 10. This field only applies to the `rating_scale` poll.

    • rating_min_label

      string — The low score label for the `rating_min_value` field. This field only applies to the `rating_scale` poll.

    • rating_min_value

      integer — The rating scale's minimum value. This value cannot be less than zero. This field only applies to the `rating_scale` poll.

    • right_answers

      array — The poll question's correct answer(s). This field is **required** if the poll's `type` value is `3` (Quiz). For `single` and `matching` polls, this field only accepts one answer.

      Items:

      string

    • show_as_dropdown

      boolean, default: false — Whether to display the radio selection as a drop-down box: * `true` &mdash; Show as a drop-down box. * `false` &mdash; Do not show as a drop-down box. This value defaults to `false`.

    • type

      string, possible values: "single", "multiple", "matching", "rank_order", "short_answer", "long_answer", "fill_in_the_blank", "rating_scale" — The poll's question and answer type: * `single` &mdash; Single choice. * `multiple` &mdash; Multiple choice. * `matching` &mdash; Matching. * `rank_order` &mdash; Rank order. * `short_answer` &mdash; Short answer. * `long_answer` &mdash; Long answer. * `fill_in_the_blank` &mdash; Fill in the blank. * `rating_scale` &mdash; Rating scale.

  • title

    string — The poll's title, up to 64 characters.

Example:

{
  "id": "QalIoKWLTJehBJ8e1xRrbQ",
  "status": "notstart",
  "anonymous": true,
  "poll_type": 2,
  "questions": [
    {
      "answer_max_character": 200,
      "answer_min_character": 1,
      "answer_required": false,
      "answers": [
        "Extremely useful"
      ],
      "case_sensitive": false,
      "name": "How useful was this meeting?",
      "prompts": [
        {
          "prompt_question": "How are you?",
          "prompt_right_answers": [
            "Good"
          ]
        }
      ],
      "rating_max_label": "Extremely Likely",
      "rating_max_value": 4,
      "rating_min_label": "Not likely",
      "rating_min_value": 0,
      "right_answers": [
        "Good"
      ],
      "show_as_dropdown": false,
      "type": "single"
    }
  ],
  "title": "Learn something new"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `4400` <br> Webinar polls disabled. To enable this feature, enable the **Webinar Polls/Quizzes** setting in the Zoom web portal's **Settings** interface. <br> **Error Code:** `300` <br> Invalid webinar ID. <br> **Error Code:** `200` <br> No permission. <br> **Error Code:** `200` <br> Webinar plan is missing. You must subscribe to the webinar plan and enable webinars for this user in order to perform this action. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Webinar does not exist: {webinarId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Update a webinar poll

  • Method: PUT
  • Path: /accounts/{accountId}/webinars/{webinarId}/polls/{pollId}
  • Tags: Webinars

Updates a webinar's poll.

Prerequisites

Scopes: webinar:master

Granular Scopes: webinar:update:poll:master

Rate Limit Label: LIGHT

Request Body

Content-Type: application/json

All of:

  • anonymous

    boolean, default: false — Whether meeting participants answer poll questions anonymously. This value defaults to `false`.

  • poll_type

    integer, possible values: 1, 2, 3 — The type of poll: * `1` &mdash; Poll. * `2` &mdash; Advanced Poll. This feature must be enabled in your Zoom account. * `3` &mdash; Quiz. This feature must be enabled in your Zoom account. This value defaults to `1`.

  • questions

    array — The information about the poll's questions.

    Items:

    • answer_max_character

      integer — The allowed maximum number of characters. This field only applies to `short_answer` and `long_answer` polls: * For `short_answer` polls, a maximum of 500 characters. * For `long_answer` polls, a maximum of 2,000 characters.

    • answer_min_character

      integer — The allowed minimum number of characters. This field only applies to `short_answer` and `long_answer` polls. You must provide at least a **one** character minimum value.

    • answer_required

      boolean, default: false — Whether participants must answer the question: * `true` &mdash; The participant must answer the question. * `false` &mdash; The participant does not need to answer the question. **Note:** * When the poll's `type` value is `1` (Poll), this value defaults to `true`. * When the poll's `type` value is the `2` (Advanced Poll) or `3` (Quiz) values, this value defaults to `false`.

    • answers

      array — The poll question's available answers. This field requires a **minimum** of two answers. * For `single` and `multiple` polls, you can only provide a maximum of 10 answers. * For `matching` polls, you can only provide a maximum of 16 answers. * For `rank_order` polls, you can only provide a maximum of seven answers.

      Items:

      string

    • case_sensitive

      boolean, default: false — Whether the correct answer is case sensitive. This field only applies to `fill_in_the_blank` polls: * `true` &mdash; The answer is case-sensitive. * `false` &mdash; The answer is not case-sensitive. This value defaults to `false`.

    • name

      string — The poll question, up to 1024 characters. For `fill_in_the_blank` polls, this field is the poll's question. For each value that the user must fill in, ensure that there are the same number of `right_answers` values.

    • prompts

      array — The information about the prompt questions. This field only applies to `matching` and `rank_order` polls. You **must** provide a minimum of two prompts, up to a maximum of 10 prompts.

      Items:

      • prompt_question

        string — The question prompt's title.

      • prompt_right_answers

        array — The question prompt's correct answers: * For `matching` polls, you must provide a minimum of two correct answers, up to a maximum of 10 correct answers. * For `rank_order` polls, you can only provide one correct answer.

        Items:

        string

    • rating_max_label

      string — The high score label for the `rating_max_value` field. This field only applies to the `rating_scale` poll.

    • rating_max_value

      integer — The rating scale's maximum value, up to a maximum value of 10. This field only applies to the `rating_scale` poll.

    • rating_min_label

      string — The low score label for the `rating_min_value` field. This field only applies to the `rating_scale` poll.

    • rating_min_value

      integer — The rating scale's minimum value. This value cannot be less than zero. This field only applies to the `rating_scale` poll.

    • right_answers

      array — The poll question's correct answer(s). This field is **required** if the poll's `type` value is `3` (Quiz). For `single` and `matching` polls, this field only accepts one answer.

      Items:

      string

    • show_as_dropdown

      boolean, default: false — Whether to display the radio selection as a drop-down box: * `true` &mdash; Show as a drop-down box. * `false` &mdash; Do not show as a drop-down box. This value defaults to `false`.

    • type

      string, possible values: "single", "multiple", "matching", "rank_order", "short_answer", "long_answer", "fill_in_the_blank", "rating_scale" — The poll's question and answer type: * `single` &mdash; Single choice. * `multiple` &mdash; Multiple choice. * `matching` &mdash; Matching. * `rank_order` &mdash; Rank order. * `short_answer` &mdash; Short answer. * `long_answer` &mdash; Long answer. * `fill_in_the_blank` &mdash; Fill in the blank. * `rating_scale` &mdash; Rating scale.

  • title

    string — The poll's title, up to 64 characters.

Example:

{
  "anonymous": true,
  "poll_type": 2,
  "questions": [
    {
      "answer_max_character": 200,
      "answer_min_character": 1,
      "answer_required": false,
      "answers": [
        "Extremely useful"
      ],
      "case_sensitive": false,
      "name": "How useful was this meeting?",
      "prompts": [
        {
          "prompt_question": "How are you?",
          "prompt_right_answers": [
            "Good"
          ]
        }
      ],
      "rating_max_label": "Extremely Likely",
      "rating_max_value": 4,
      "rating_min_label": "Not likely",
      "rating_min_value": 0,
      "right_answers": [
        "Good"
      ],
      "show_as_dropdown": false,
      "type": "single"
    }
  ],
  "title": "Learn something new"
}

Responses

Status: 204 **HTTP Status Code:** `204` Webinar Poll Updated
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `4400` <br> Webinar polls disabled. To enable this feature, enable the **Webinar Polls/Quizzes** setting in the Zoom web portal's **Settings** interface. <br> **Error Code:** `300` <br> Invalid webinar ID. <br> **Error Code:** `200` <br> No permission. <br> **Error Code:** `200` <br> Webinar plan is missing. You must subscribe to the webinar plan and enable webinars for this user in order to perform this action. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Webinar does not exist: {webinarId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Delete a webinar poll

  • Method: DELETE
  • Path: /accounts/{accountId}/webinars/{webinarId}/polls/{pollId}
  • Tags: Webinars

Delete a webinar's poll.

Prerequisites

Scopes: webinar:master

Granular Scopes: webinar:delete:poll:master

Rate Limit Label: LIGHT

Responses

Status: 204 **HTTP Status Code:** `204` Webinar Poll deleted
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `4400` <br> Webinar polls disabled. To enable this feature, enable the **Webinar Polls/Quizzes** setting in the Zoom web portal's **Settings** interface. <br> **Error Code:** `200` <br> No permission. <br> **Error Code:** `200` <br> Webinar plan is missing. You must subscribe to the webinar plan and enable webinars for this user in order to perform this action. <br> **Error Code:** `4400` <br> Invalid poll IDs. <br> **Error Code:** `4400` <br> Cannot update or delete the poll within the Survey Library. <br> **Error Code:** `300` <br> Invalid webinar ID. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Webinar does not exist: {webinarId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

List webinar registrants

  • Method: GET
  • Path: /accounts/{accountId}/webinars/{webinarId}/registrants
  • Tags: Webinars

List all users that have registered for a given webinar. Zoom users with a webinar plan have access to creating and managing webinars. The webinar functionality lets a host broadcast a Zoom meeting to up to 10,000 attendees. Scheduling a webinar with registration requires your registrants to complete a brief form before receiving the link to join the webinar.

Prerequisites

  • Pro or higher plan with a Webinar add-on.

Scopes: webinar:master

Granular Scopes: webinar:read:list_registrants:master

Rate Limit Label: MEDIUM

Responses

Status: 200 **HTTP Status Code:** `200` Webinar plan subscription is missing. Enable webinar for this user once the subscription is added:{userId}.
Content-Type: application/json

All of:

  • next_page_token

    string — Use the next page token to paginate through large result sets. A next page token is returned whenever the set of available results exceeds the current page size. This token's expiration period is 15 minutes.

  • page_count

    integer — The number of pages returned for the request made.

  • page_number

    integer, default: 1 — **Deprecated** This field will be deprecated. We will no longer support this field in a future release. Instead, use `next_page_token` for pagination.

  • page_size

    integer, default: 30 — The number of records returned with a single API call.

  • total_records

    integer — The total number of all the records available across pages.

  • registrants

    array — List of registrant objects.

    Items:

    All of:

    • id

      string — Registrant ID.

    All of:

    • email (required)

      string, format: email — The registrant's email address. See [Email address display rules](https://developers.zoom.us/docs/api/rest/using-zoom-apis/#email-address-display-rules) for return value details.

    • first_name (required)

      string — The registrant's first name.

    • address

      string — The registrant's address.

    • city

      string — The registrant's city.

    • comments

      string — The registrant's questions and comments.

    • country

      string — The registrant's two-letter ISO [country code](https://developers.zoom.us/docs/api/rest/other-references/abbreviation-lists/#countries).

    • custom_questions

      array — Information about custom questions.

      Items:

      • title

        string — The title of the custom question.

      • value

        string — The custom question's response value. This has a limit of 128 characters.

    • industry

      string — The registrant's industry.

    • job_title

      string — The registrant's job title.

    • last_name

      string — The registrant's last name.

    • no_of_employees

      string, possible values: "", "1-20", "21-50", "51-100", "101-250", "251-500", "501-1,000", "1,001-5,000", "5,001-10,000", "More than 10,000" — The registrant's number of employees. * `1-20` * `21-50` * `51-100` * `101-250` * `251-500` * `501-1,000` * `1,001-5,000` * `5,001-10,000` * `More than 10,000`

    • org

      string — The registrant's organization.

    • phone

      string — The registrant's phone number.

    • purchasing_time_frame

      string, possible values: "", "Within a month", "1-3 months", "4-6 months", "More than 6 months", "No timeframe" — The registrant's purchasing time frame. * `Within a month.` * `1-3 months.` * `4-6 months.` * `More than 6 months.` * `No timeframe.`

    • role_in_purchase_process

      string, possible values: "", "Decision Maker", "Evaluator/Recommender", "Influencer", "Not involved" — The registrant's role in the purchase process. * `Decision maker` * `Evaluator/Recommender.` * `Influencer.` * `Not involved.`

    • state

      string — The registrant's state or province.

    • status

      string, possible values: "approved", "denied", "pending" — The registrant's status. * `approved` - Registrant is approved. * `denied` - Registrant is denied. * `pending` - Registrant is waiting for approval.

    • zip

      string — The registrant's ZIP or postal code.

    • create_time

      string, format: date-time — The time when the registrant registered.

    • join_url

      string, format: string — The URL that an approved registrant can use to join the meeting or webinar.

    • status

      string — The status of the registrant's registration. `approved` - User has been successfully approved for the webinar. `pending` - The registration is still pending. `denied` - User has been denied from joining the webinar.

Example:

{
  "next_page_token": "w7587w4eiyfsudgf",
  "page_count": 1,
  "page_size": 30,
  "total_records": 20,
  "registrants": [
    {
      "id": "9tboDiHUQAeOnbmudzWa5g",
      "address": "1800 Amphibious Blvd.",
      "city": "Mountain View",
      "comments": "Looking forward to the discussion.",
      "country": "US",
      "custom_questions": [
        {
          "title": "What do you hope to learn from this?",
          "value": "Look forward to learning how you come up with new recipes and what other services you offer."
        }
      ],
      "email": "jchill@example.com",
      "first_name": "Jill",
      "industry": "Food",
      "job_title": "Chef",
      "last_name": "Chill",
      "no_of_employees": "1-20",
      "org": "Cooking Org",
      "phone": "5550100",
      "purchasing_time_frame": "1-3 months",
      "role_in_purchase_process": "Influencer",
      "state": "CA",
      "status": "approved",
      "zip": "94045",
      "create_time": "2022-03-22T05:59:09Z",
      "join_url": "https://example.com/j/11111"
    }
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> No permission. <br> **Error Code:** `200` <br> Webinar plan is missing. You must subscribe to the webinar plan and enable webinars for this user in order to perform this action. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Webinar does not exist: {webinarId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Add a webinar registrant

  • Method: POST
  • Path: /accounts/{accountId}/webinars/{webinarId}/registrants
  • Tags: Webinars

Create and submit a user's registration for a webinar. Zoom users with a Webinar plan have access to creating and managing webinars. Webinars allow hosts to broadcast a Zoom meeting to up to 10,000 attendees. Scheduling a webinar with registration requires your registrants to complete a brief form before receiving the link to join the webinar.

Prerequisites:

  • A Pro or higher plan with the Webinar add-on.

Scopes: webinar:master

Granular Scopes: webinar:write:registrant:master

Rate Limit Label: LIGHT

Request Body

Content-Type: application/json
  • email (required)

    string, format: email — The registrant's email address.

  • first_name (required)

    string — The registrant's first name.

  • address

    string — The registrant's address.

  • city

    string — The registrant's city.

  • comments

    string — The registrant's questions and comments.

  • country

    string — The registrant's two-letter [country code](https://developers.zoom.us/docs/api/rest/other-references/abbreviation-lists/#countries).

  • custom_questions

    array — Information about custom questions.

    Items:

    • title

      string — The custom question's title.

    • value

      string — The custom question's response value. This has a limit of 128 characters.

  • industry

    string — The registrant's industry.

  • job_title

    string — The registrant's job title.

  • language

    string, possible values: "en-US", "de-DE", "es-ES", "fr-FR", "jp-JP", "pt-PT", "ru-RU", "zh-CN", "zh-TW", "ko-KO", "it-IT", "vi-VN", "pl-PL", "Tr-TR" — Specifies the registrant's preferred language for the confirmation email sent upon successful registration. **Note** This field is only effective if the webinar's 'Select Email Language' setting is set to 'Same as recipients' default language' in the Zoom web portal. If a fixed language is selected, this value will be ignored. **Supported values** * `en-US` - English (US) * `de-DE` - German (Germany) * `es-ES` - Spanish (Spain) * `fr-FR` - French (France) * `jp-JP` - Japanese * `pt-PT` - Portuguese (Portugal) * `ru-RU` - Russian * `zh-CN` - Chinese (PRC) * `zh-TW` - Chinese (Taiwan) * `ko-KO` - Korean * `it-IT` - Italian (Italy) * `vi-VN` - Vietnamese * `pl-PL` - Polish * `Tr-TR` - Turkish

  • last_name

    string — The registrant's last name.

  • no_of_employees

    string, possible values: "", "1-20", "21-50", "51-100", "101-500", "500-1,000", "1,001-5,000", "5,001-10,000", "More than 10,000" — The registrant's number of employees: * `1-20` * `21-50` * `51-100` * `101-500` * `500-1,000` * `1,001-5,000` * `5,001-10,000` * `More than 10,000`

  • org

    string — The registrant's organization.

  • phone

    string — The registrant's phone number.

  • purchasing_time_frame

    string, possible values: "", "Within a month", "1-3 months", "4-6 months", "More than 6 months", "No timeframe" — The registrant's purchasing time frame: * `Within a month` * `1-3 months` * `4-6 months` * `More than 6 months` * `No timeframe`

  • role_in_purchase_process

    string, possible values: "", "Decision Maker", "Evaluator/Recommender", "Influencer", "Not involved" — The registrant's role in the purchase process: * `Decision Maker` * `Evaluator/Recommender` * `Influencer` * `Not involved`

  • source_id

    string — The tracking source's unique identifier.

  • state

    string — The registrant's state or province.

  • zip

    string — The registrant's ZIP or postal code.

Example:

{
  "first_name": "Jill",
  "last_name": "Chill",
  "email": "jchill@example.com",
  "address": "1800 Amphibious Blvd.",
  "city": "Mountain View",
  "state": "CA",
  "zip": "94045",
  "country": "US",
  "phone": "5550100",
  "comments": "Looking forward to the discussion.",
  "custom_questions": [
    {
      "title": "What do you hope to learn from this?",
      "value": "Look forward to learning how you come up with new recipes and what other services you offer."
    }
  ],
  "industry": "Food",
  "job_title": "Chef",
  "no_of_employees": "1-20",
  "org": "Cooking Org",
  "purchasing_time_frame": "1-3 months",
  "role_in_purchase_process": "Influencer",
  "language": "en-US",
  "source_id": "4816766181770"
}

Responses

Status: 201 **HTTP Status Code:** `201` Webinar registration created.
Content-Type: application/json
  • id

    integer, format: int64 — The webinar's ID.

  • join_url

    string — The URL the registrant can use to join the webinar.

  • occurrences

    array — Array of occurrence objects.

    Items:

  • registrant_id

    string — The registrant's ID.

  • start_time

    string, format: date-time — The webinar's start time.

  • topic

    string — The webinar's topic.

Example:

{
  "id": 92674392836,
  "join_url": "https://example.com/j/22222",
  "registrant_id": "fdgsfh2ey82fuh",
  "start_time": "2021-07-13T21:44:51Z",
  "topic": "My Webinar",
  "occurrences": [
    {
      "duration": 60,
      "occurrence_id": "1648194360000",
      "start_time": "2022-03-25T07:46:00Z",
      "status": "available"
    }
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `3000` <br> This webinar does not have registration as required: {webinarId}. <br> **Error Code:** `3027` <br> Host cannot register. <br> **Error Code:** `3034` <br> If you have been invited, please input your work email address. <br> **Error Code:** `3038` <br> Webinar is over, you cannot register now. If you have any questions, contact the webinar host. <br> **Error Code:** `3000` <br> You have reached the limit for the number of attendees you can add. Contact Zoom Support for more information. <br> **Error Code:** `3000` <br> The Zoom REST API does not support paid registration. <br> **Error Code:** `3000` <br> You have been invited as a panelist for the webinar, please check your email to find more information about this webinar. <br> **Error Code:** `200` <br> No permission. <br> **Error Code:** `200` <br> Webinar plan is missing. You must subscribe to the webinar plan and enable webinars for this user in order to perform this action. <br> **Error Code:** `300` <br> Invalid webinar ID. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Webinar does not exist: {webinarId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

List registration questions

  • Method: GET
  • Path: /accounts/{accountId}/webinars/{webinarId}/registrants/questions
  • Tags: Webinars

List registration questions and fields that are to be answered by users while registering for a webinar.

Scheduling a webinar with registration requires your registrants to complete a brief form with fields and questions before they can receive the link to join the webinar.

Prerequisites:

  • Pro or higher plan with the webinar add-on.

Scopes: webinar:master

Granular Scopes: webinar:read:list_registration_questions:master

Rate Limit Label: LIGHT

Responses

Status: 200 **HTTP Status Code:** `200` Webinar registrant question object returned.
Content-Type: application/json

All of:

  • custom_questions

    array — Array of Registrant Custom Questions.

    Items:

    • answers

      array — An array of answer choices. Can't be used for short answer type.

      Items:

      string

    • required

      boolean — State whether or not the custom question is required to be answered by a registrant.

    • title

      string — Custom question.

    • type

      string, possible values: "short", "single_radio", "single_dropdown", "multiple" — The question-answer type.

  • questions

    array — Array of registration fields whose values should be provided by registrants during registration.

    Items:

    • field_name

      string, possible values: "last_name", "address", "city", "country", "zip", "state", "phone", "industry", "org", "job_title", "purchasing_time_frame", "role_in_purchase_process", "no_of_employees", "comments" — Field name

    • required

      boolean — State whether the selected fields are required or optional.

Example:

{
  "custom_questions": [
    {
      "answers": [
        "Good"
      ],
      "required": true,
      "title": "How are you?",
      "type": "short"
    }
  ],
  "questions": [
    {
      "field_name": "last_name",
      "required": true
    }
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Invalid webinar ID. <br> **Error Code:** `200` <br> Webinar plan is missing. You must subscribe to the webinar plan and enable webinars for this user in order to perform this action. <br> **Error Code:** `3000` <br> Registration has not been enabled for this webinar: {webinarId}. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Webinar does not exist: {webinarId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Update registration questions

  • Method: PATCH
  • Path: /accounts/{accountId}/webinars/{webinarId}/registrants/questions
  • Tags: Webinars

Update registration questions and fields of a scheduled webinar for users to answer during webinar registration. Scheduling a webinar with registration requires your registrants to complete a brief form with fields and questions before they can receive the link to join the webinar.

Prerequisites:

  • Pro or higher plan with a Webinar Add-on.
  • Registration option for Webinar should be set as required to use this API.

Scopes: webinar:master

Granular Scopes: webinar:update:registration_question:master

Rate Limit Label: LIGHT

Request Body

Content-Type: application/json

All of:

  • custom_questions

    array — Array of custom questions for registrants.

    Items:

    • answers

      array — An array of answer choices. Can't be used for short answer type.

      Items:

      string

    • required

      boolean — State whether or not a registrant is required to answer the custom question.

    • title

      string — Custom question.

    • type

      string, possible values: "short", "single_radio", "single_dropdown", "multiple" — The question-answer type.

  • questions

    array — Array of registration fields whose values should be provided by registrants.

    Items:

    • field_name

      string, possible values: "last_name", "address", "city", "country", "zip", "state", "phone", "industry", "org", "job_title", "purchasing_time_frame", "role_in_purchase_process", "no_of_employees", "comments" — Field name

    • required

      boolean — State whether the selected fields are required or optional.

Example:

{
  "custom_questions": [
    {
      "answers": [
        "Good"
      ],
      "required": true,
      "title": "How are you?",
      "type": "short"
    }
  ],
  "questions": [
    {
      "field_name": "last_name",
      "required": true
    }
  ]
}

Responses

Status: 204 **HTTP Status Code:** `204` Webinar registrant questions updated.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Invalid webinar ID. <br> **Error Code:** `200` <br> No permission. <br> **Error Code:** `200` <br> Webinar plan is missing. You must subscribe to the webinar plan and enable webinars for this user in order to perform this action. <br> **Error Code:** `3000` <br> Registration has not been enabled for this webinar: {webinarId}. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Webinar does not exist: {webinarId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Update registrant's status

  • Method: PUT
  • Path: /accounts/{accountId}/webinars/{webinarId}/registrants/status
  • Tags: Webinars

Update webinar registrants' registration status. You can approve or deny a registrant, or revoke a registrant's approval.

Prerequisites

This API has an additional rate limit of requests per registrant, per 24-hour period. See the Rate Limits page for more information.

Scopes: webinar:master

Granular Scopes: webinar:update:registrant_status:master

Rate Limit Label: MEDIUM

Request Body

Content-Type: application/json
  • action (required)

    string, possible values: "approve", "deny", "cancel" — The registration action to perform. * `approve` - Approve the registrant. * `deny` - Reject the registrant. * `cancel` - Cancel the registrant's approval.

  • registrants

    array — The registrant information.

    Items:

    • email

      string, format: email — The registrant's email address.

    • id

      string — The registrant's ID.

Example:

{
  "action": "approve",
  "registrants": [
    {
      "email": "jchill@example.com",
      "id": "9tboDiHUQAeOnbmudzWa5g"
    }
  ]
}

Responses

Status: 204 **HTTP Status Code:** `204` <br> Registrant status updated.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `3035` <br> Webinar has reached maximum attendee capacity. <br> **Error Code:** `300` <br> Invalid webinar ID. <br> **Error Code:** `200` <br> No permission. <br> **Error Code:** `200` <br> Webinar plan is missing. You must subscribe to the webinar plan and enable webinars for this user in order to perform this action. <br> **Error Code:** `300` <br> Registration has not been enabled for this meeting: {webinarId}. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Webinar does not exist: {webinarId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Get a webinar registrant

  • Method: GET
  • Path: /accounts/{accountId}/webinars/{webinarId}/registrants/{registrantId}
  • Tags: Webinars

Zoom users with a webinar plan have access to creating and managing webinars. The webinar feature lets a host broadcast a Zoom meeting to up to 10,000 attendees. Scheduling a webinar with registration requires your registrants to complete a brief form before receiving the link to join the webinar.
Use this API to get details on a specific user who has registered for the webinar.

Prerequisites:

  • The account must have a webinar plan.

Scopes: webinar:master

Granular Scopes: webinar:read:registrant:master

Rate Limit Label: LIGHT

Responses

Status: 200 Success.
Content-Type: application/json

All of:

  • id

    string

All of:

  • email (required)

    string, format: email — The registrant's email address. See [Email address display rules](https://developers.zoom.us/docs/api/rest/using-zoom-apis/#email-address-display-rules) for return value details.

  • first_name (required)

    string — The registrant's first name.

  • address

    string — The registrant's address.

  • city

    string — The registrant's city.

  • comments

    string — The registrant's questions and comments.

  • country

    string — The registrant's two-letter ISO [country code](https://developers.zoom.us/docs/api/rest/other-references/abbreviation-lists/#countries).

  • custom_questions

    array — Information about custom questions.

    Items:

    • title

      string — The title of the custom question.

    • value

      string — The custom question's response value. This has a limit of 128 characters.

  • industry

    string — The registrant's industry.

  • job_title

    string — The registrant's job title.

  • last_name

    string — The registrant's last name.

  • no_of_employees

    string, possible values: "", "1-20", "21-50", "51-100", "101-250", "251-500", "501-1,000", "1,001-5,000", "5,001-10,000", "More than 10,000" — The registrant's number of employees: * `1-20` * `21-50` * `51-100` * `101-250` * `251-500` * `501-1,000` * `1,001-5,000` * `5,001-10,000` * `More than 10,000`

  • org

    string — The registrant's organization.

  • phone

    string — The registrant's phone number.

  • purchasing_time_frame

    string, possible values: "", "Within a month", "1-3 months", "4-6 months", "More than 6 months", "No timeframe" — The registrant's purchasing time frame: * `Within a month` * `1-3 months` * `4-6 months` * `More than 6 months` * `No timeframe`

  • role_in_purchase_process

    string, possible values: "", "Decision Maker", "Evaluator/Recommender", "Influencer", "Not involved" — The registrant's role in the purchase process: * `Decision Maker` * `Evaluator/Recommender` * `Influencer` * `Not involved`

  • state

    string — The registrant's state or province.

  • status

    string, possible values: "approved", "denied", "pending" — The registrant's status: * `approved` &mdash; Registrant is approved. * `denied` &mdash; Registrant is denied. * `pending` &mdash; Registrant is waiting for approval.

  • zip

    string — The registrant's ZIP or postal code.

  • language

    string, possible values: "en-US", "de-DE", "es-ES", "fr-FR", "jp-JP", "pt-PT", "ru-RU", "zh-CN", "zh-TW", "ko-KO", "it-IT", "vi-VN", "pl-PL", "Tr-TR" — The registrant's language preference for confirmation emails: * `en-US` &mdash; English (US) * `de-DE` &mdash; German (Germany) * `es-ES` &mdash; Spanish (Spain) * `fr-FR` &mdash; French (France) * `jp-JP` &mdash; Japanese * `pt-PT` &mdash; Portuguese (Portugal) * `ru-RU` &mdash; Russian * `zh-CN` &mdash; Chinese (PRC) * `zh-TW` &mdash; Chinese (Taiwan) * `ko-KO` &mdash; Korean * `it-IT` &mdash; Italian (Italy) * `vi-VN` &mdash; Vietnamese * `pl-PL` &mdash; Polish * `Tr-TR` &mdash; Turkish

  • create_time

    string, format: date-time

  • join_url

    string, format: string

  • status

    string

Example:

{
  "id": "95204914252",
  "address": "1800 Amphibious Blvd.",
  "city": "Mountain View",
  "comments": "Looking forward to the discussion.",
  "country": "US",
  "custom_questions": [
    {
      "title": "What do you hope to learn from this?",
      "value": "Look forward to learning how you come up with new recipes and what other services you offer."
    }
  ],
  "email": "jchill@example.com",
  "first_name": "Jill",
  "industry": "Food",
  "job_title": "Chef",
  "last_name": "Chill",
  "no_of_employees": "1-20",
  "org": "Cooking Org",
  "phone": "5550100",
  "purchasing_time_frame": "1-3 months",
  "role_in_purchase_process": "Influencer",
  "state": "CA",
  "status": "approved",
  "zip": "94045",
  "language": "en-US",
  "create_time": "2022-03-26T06:44:14Z",
  "join_url": "https://example.com/j/11111"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Invalid webinar ID. <br> **Error Code:** `200` <br> No permission. <br> **Error Code:** `200` <br> Webinar plan is missing. You must subscribe to the webinar plan and enable webinars for this user in order to perform this action. <br> **Error Code:** `3000` <br> Registration has not been enabled for this webinar: {webinarId}. <br> **Error Code:** `3079` <br> This registrant does not exist: {registrantId}. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Webinar does not exist: {webinarId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Delete a webinar registrant

  • Method: DELETE
  • Path: /accounts/{accountId}/webinars/{webinarId}/registrants/{registrantId}
  • Tags: Webinars

Delete a webinar registrant.

Prerequisites

Scopes: webinar:master

Granular Scopes: webinar:delete:registrant:master

Rate Limit Label: LIGHT

Responses

Status: 204 **HTTP status code:** `204` OK
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> Webinar plan is missing. You must subscribe to the webinar plan and enable webinars for this user in order to perform this action. <br> **Error Code:** `300` <br> The value that you entered for the Registrant ID field is invalid. Enter a valid value and try again. <br> **Error Code:** `3000` <br> Registration has not been enabled for this webinar: {webinarId}. <br> **Error Code:** `3000` <br> Registrant {registrantId} was not found. <br> **Error Code:** `200` <br> No permission. <br> **Error Code:** `300` <br> Invalid webinar ID. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Webinar does not exist: {webinarId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Update webinar status

  • Method: PUT
  • Path: /accounts/{accountId}/webinars/{webinarId}/status
  • Tags: Webinars

Update a webinar's status. Use this API to end an ongoing webinar.

Prerequisites:

Scopes: webinar:master

Granular Scopes: webinar:update:status:master

Rate Limit Label: LIGHT

Request Body

Content-Type: application/json
  • action

    string, possible values: "end"

Example:

{
  "action": "end"
}

Responses

Status: 200 Webinar plan subscription is missing. Enable webinar for this user once the subscription is added: {userId}.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `3063` <br> You can not end an on-premise user's meeting: {webinarId} using this API. <br> **Error Code:** `300` <br> Invalid webinar ID. <br> **Error Code:** `200` <br> No permission. <br> **Error Code:** `200` <br> Webinar plan is missing. You must subscribe to the webinar plan and enable webinars for this user in order to perform this action. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Webinar does not exist: {webinarId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Get a webinar survey

  • Method: GET
  • Path: /accounts/{accountId}/webinars/{webinarId}/survey
  • Tags: Webinars

Return information about a webinar survey.

Prerequisites:

  • A Pro or higher plan with the Webinar add-on.
  • The Webinar Survey feature enabled in the host's account.

Scopes: webinar:master

Granular Scopes: webinar:read:survey:master

Rate Limit Label: LIGHT

Responses

Status: 200 **HTTP Status Code:** `200` Webinar survey object returned.
Content-Type: application/json
  • custom_survey

    object — Information about the customized webinar survey.

    • anonymous

      boolean, default: false — Allow participants to anonymously answer survey questions. * `true` - Anonymous survey enabled. * `false` - Participants cannot answer survey questions anonymously. This value defaults to `true`.

    • feedback

      string — The survey's feedback, up to 320 characters. This value defaults to `Thank you so much for taking the time to complete the survey, your feedback really makes a difference.`.

    • numbered_questions

      boolean, default: false — Whether to display the number in the question name. This value defaults to `true`.

    • questions

      array — Information about the webinar survey's questions.

      Items:

      • answer_max_character

        integer — The allowed maximum number of characters. This field only applies to `short_answer` and `long_answer` questions. * For `short_answer` question, a maximum of 500 characters. * For `long_answer` question, a maximum of 2,000 characters.

      • answer_min_character

        integer — The allowed minimum number of characters. This field only applies to `short_answer` and `long_answer` questions. You must provide at least a **one** character minimum value.

      • answer_required

        boolean, default: false — Whether participants must answer the question. * `true` - The participant must answer the question. * `false` - The participant does not need to answer the question. This value defaults to `false`.

      • answers

        array — The survey question's available answers. This field requires a **minimum** of two answers. * For `single` and `multiple` questions, you can only provide a maximum of 50 answers. * For `matching` polls, you can only provide a maximum of 16 answers. * For `rank_order` polls, you can only provide a maximum of seven answers.

        Items:

        string

      • name

        string — The survey question, up to 420 characters.

      • prompts

        array — Information about the prompt questions. This field only applies to `matching` and `rank_order` questions. You **must** provide a minimum of two prompts, up to a maximum of 10 prompts.

        Items:

        • prompt_question

          string — The question prompt's title.

      • rating_max_label

        string — The high score label used for the `rating_max_value` field, up to 50 characters. This field only applies to the `rating_scale` survey.

      • rating_max_value

        integer — The rating scale's maximum value, up to a maximum value of 10. This field only applies to the `rating_scale` survey.

      • rating_min_label

        string — The low score label used for the `rating_min_value` field, up to 50 characters. This field only applies to the `rating_scale` survey.

      • rating_min_value

        integer — The rating scale's minimum value. This value cannot be less than zero. This field only applies to the `rating_scale` survey.

      • show_as_dropdown

        boolean, default: false — Whether to display the radio selection as a drop-down box. * `true` - Show as a drop-down box. * `false` - Do not show as a drop-down box. This value defaults to `false`.

      • type

        string, possible values: "single", "multiple", "matching", "rank_order", "short_answer", "long_answer", "fill_in_the_blank", "rating_scale" — The survey's question and answer type. * `single` - Single choice. * `multiple` - Multiple choice. * `matching` - Matching. * `rank_order` - Rank order * `short_answer` - Short answer * `long_answer` - Long answer. * `fill_in_the_blank` - Fill in the blank * `rating_scale` - Rating scale.

    • show_question_type

      boolean, default: false — Whether to display the question type in the question name. This value defaults to `false`.

    • title

      string — The survey's title, up to 64 characters.

  • show_in_the_browser

    boolean, default: true — Whether the **Show in the browser when the webinar ends** option is enabled. * `true` - Enabled. * `false` - Disabled. This value defaults to `true`.

  • show_in_the_follow_up_email

    boolean, default: false — Whether the **Show the link on the follow-up email** option is enabled. * `true` - Enabled. * `false` - Disabled. This value defaults to `false`.

  • third_party_survey

    string — The link to the third party webinar survey.

Example:

{
  "custom_survey": {
    "title": "Learn something new",
    "anonymous": false,
    "numbered_questions": false,
    "show_question_type": false,
    "feedback": "Thank you so much for taking the time to complete the survey. Your feedback really makes a difference.",
    "questions": [
      {
        "name": "How useful was this webinar?",
        "type": "single",
        "answer_required": false,
        "show_as_dropdown": false,
        "answers": [
          "Extremely useful"
        ],
        "prompts": [
          {
            "prompt_question": "How are you?"
          }
        ],
        "answer_min_character": 1,
        "answer_max_character": 200,
        "rating_min_value": 1,
        "rating_max_value": 4,
        "rating_min_label": "Not likely",
        "rating_max_label": "Extremely Likely"
      }
    ]
  },
  "show_in_the_browser": true,
  "show_in_the_follow_up_email": false,
  "third_party_survey": "https://example.com"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Invalid webinar ID. <br> **Error Code:** `3000` <br> Webinar survey disabled. To enable this feature, enable the **Webinar Survey** setting in the Zoom web portal's **Settings** interface. <br> **Error Code:** `200` <br> No permission. <br> **Error Code:** `200` <br> Webinar plan is missing. You must subscribe to the webinar plan and enable webinars for this user in order to perform this action. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Webinar does not exist: {webinarId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Delete a webinar survey

  • Method: DELETE
  • Path: /accounts/{accountId}/webinars/{webinarId}/survey
  • Tags: Webinars

Delete a webinar survey.

Prerequisites:

  • A Pro or higher plan with the Webinar Add-on.
  • The Webinar Survey feature enabled in the host's account.

Scopes: webinar:master

Granular Scopes: webinar:delete:survey:master

Rate Limit Label: LIGHT

Responses

Status: 204 **HTTP Status Code:** `204` Webinar survey deleted.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Invalid webinar ID. <br> **Error Code:** `3000` <br> Webinar survey disabled. To enable this feature, enable the **Webinar Survey** setting in the Zoom web portal's **Settings** interface. <br> **Error Code:** `200` <br> No permission. <br> **Error Code:** `200` <br> Webinar plan is missing. You must subscribe to the webinar plan and enable webinars for this user in order to perform this action. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Webinar does not exist: {webinarId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Update a webinar survey

  • Method: PATCH
  • Path: /accounts/{accountId}/webinars/{webinarId}/survey
  • Tags: Webinars

Update a webinar survey. Prerequisites: * A Pro or higher plan with the Webinar add-on. * Enable the Webinar Survey feature in the host's account.

Scopes: webinar:master

Granular Scopes: webinar:update:survey:master

Rate Limit Label: LIGHT

Request Body

Content-Type: application/json

All of:

  • custom_survey

    object — Information about the customized webinar survey.

    • anonymous

      boolean, default: false — Allow participants to anonymously answer survey questions. * `true` - Anonymous survey enabled. * `false` - Participants cannot answer survey questions anonymously. This value defaults to `true`.

    • feedback

      string — The survey's feedback, up to 320 characters. This value defaults to `Thank you so much for taking the time to complete the survey, your feedback really makes a difference.`.

    • numbered_questions

      boolean, default: false — Whether to display the number in the question name. This value defaults to `true`.

    • questions

      array — Information about the webinar survey's questions.

      Items:

      • answer_max_character

        integer — The allowed maximum number of characters. This field only applies to `short_answer` and `long_answer` questions. * For `short_answer` question, a maximum of 500 characters. * For `long_answer` question, a maximum of 2,000 characters.

      • answer_min_character

        integer — The allowed minimum number of characters. This field only applies to `short_answer` and `long_answer` questions. You must provide at least a **one** character minimum value.

      • answer_required

        boolean, default: false — Whether participants must answer the question. * `true` - The participant must answer the question. * `false` - The participant does not need to answer the question. This value defaults to `false`.

      • answers

        array — The survey question's available answers. This field requires a **minimum** of two answers. * For `single` and `multiple` questions, you can only provide a maximum of 50 answers. * For `matching` polls, you can only provide a maximum of 16 answers. * For `rank_order` polls, you can only provide a maximum of seven answers.

        Items:

        string

      • name

        string — The survey question, up to 420 characters.

      • prompts

        array — Information about the prompt questions. This field only applies to `matching` and `rank_order` questions. You **must** provide a minimum of two prompts, up to a maximum of 10 prompts.

        Items:

        • prompt_question

          string — The question prompt's title.

      • rating_max_label

        string — The high score label used for the `rating_max_value` field, up to 50 characters. This field only applies to the `rating_scale` survey.

      • rating_max_value

        integer — The rating scale's maximum value, up to a maximum value of 10. This field only applies to the `rating_scale` survey.

      • rating_min_label

        string — The low score label used for the `rating_min_value` field, up to 50 characters. This field only applies to the `rating_scale` survey.

      • rating_min_value

        integer — The rating scale's minimum value. This value can't be less than zero. This field only applies to the `rating_scale` survey.

      • show_as_dropdown

        boolean, default: false — Whether to display the radio selection as a drop-down box. * `true` - Show as a drop-down box. * `false` - Do not show as a drop-down box. This value defaults to `false`.

      • type

        string, possible values: "single", "multiple", "matching", "rank_order", "short_answer", "long_answer", "fill_in_the_blank", "rating_scale" — The survey's question and answer type. * `single` - Single choice. * `multiple` - Multiple choice. * `matching` - Matching. * `rank_order` - Rank order * `short_answer` - Short answer * `long_answer` - Long answer. * `fill_in_the_blank` - Fill in the blank * `rating_scale` - Rating scale.

    • show_question_type

      boolean, default: false — Whether to display the question type in the question name. This value defaults to `false`.

    • title

      string — The survey's title, up to 64 characters.

  • show_in_the_browser

    boolean, default: true — Whether the **Show in the browser when the webinar ends** option is enabled. * `true` - Enabled. * `false` - Disabled. This value defaults to `true`.

  • show_in_the_follow_up_email

    boolean, default: false — Whether the **Show the link on the follow-up email** option is enabled. * `true` - Enabled. * `false` - Disabled. This value defaults to `false`.

  • third_party_survey

    string — The link to the third party webinar survey.

Example:

{
  "custom_survey": {
    "title": "Learn something new",
    "anonymous": false,
    "numbered_questions": false,
    "show_question_type": false,
    "feedback": "Thank you so much for taking the time to complete the survey. Your feedback really makes a difference.",
    "questions": [
      {
        "name": "How useful was this webinar?",
        "type": "single",
        "answer_required": false,
        "show_as_dropdown": false,
        "answers": [
          "Extremely useful"
        ],
        "prompts": [
          {
            "prompt_question": "How are you?"
          }
        ],
        "answer_min_character": 1,
        "answer_max_character": 200,
        "rating_min_value": 1,
        "rating_max_value": 4,
        "rating_min_label": "Not likely",
        "rating_max_label": "Extremely Likely"
      }
    ]
  },
  "show_in_the_browser": true,
  "show_in_the_follow_up_email": false,
  "third_party_survey": "https://example.com"
}

Responses

Status: 204 **HTTP Status Code:** `204` Webinar survey updated.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Invalid webinar ID. <br> **Error Code:** `300` <br> Invalid third party survey: {third_party_survey}. <br> **Error Code:** `3000` <br> Webinar survey disabled. To use this feature, enable the **Webinar Survey** setting in the Zoom web portal's **Settings** interface. <br> **Error Code:** `3000` <br> The host isn't allowed to use a third party survey link. To use this feature, enable the "Allow host to use a 3rd-party survey link" setting in the "Account Settings" page of the Zoom web portal. <br> **Error Code:** `200` <br> No permission. <br> **Error Code:** `200` <br> Webinar plan is missing. You must subscribe to the webinar plan and enable webinars for this user in order to perform this action. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Webinar does not exist: {webinarId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Get webinar's token

  • Method: GET
  • Path: /accounts/{accountId}/webinars/{webinarId}/token
  • Tags: Webinars

Use this API to get a webinar's closed caption token (caption URL). This token lets you use a third-party service to stream text to their closed captioning software to the Zoom webinar.

Prerequisites:

  • A Pro or higher plan with the Webinar add-on.
  • The Closed captioning setting enabled in the Zoom web portal.
  • The Allow use of caption API Token to integrate with 3rd-party Closed Captioning services setting enabled.

Scopes: webinar:master

Granular Scopes: webinar:read:token:master

Rate Limit Label: LIGHT

Responses

Status: 200 **HTTP Status Code:** `200` Webinar token returned.
Content-Type: application/json
  • token

    string — The generated webinar token.

Example:

{
  "token": "https://example.com/closedcaption?id=200610693&ns=GZHkEA==&expire=86400&spparams=id%2Cns%2Cexpire&signature=nYtXJqRKCW"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Invalid webinar ID. <br> **Error Code:** `3000` <br> Closed captioning disabled. To enable this feature, enable the **Closed captioning** and **Allow use of caption API Token to integrate with 3rd-party Closed Captioning services** settings in the Zoom web portal's **Settings** interface. <br> **Error Code:** `3000` <br> Webinar {webinarId} has not started. <br> **Error Code:** `200` <br> No permission. <br> **Error Code:** `200` <br> Webinar plan is missing. You must subscribe to the webinar plan and enable webinars for this user in order to perform this action. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Webinar does not exist: {webinarId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Get webinar tracking sources

  • Method: GET
  • Path: /accounts/{accountId}/webinars/{webinarId}/tracking_sources
  • Tags: Webinars

Webinar Registration Tracking Sources allow you to see where your registrants are coming from if you share the webinar registration page in multiple platforms. You can then use the source tracking to see the number of registrants generated from each platform.
Use this API to list information on all the tracking sources of a Webinar.

Prerequisites:

Scopes: webinar:master

Granular Scopes: webinar:read:list_tracking_sources:master

Rate Limit Label: MEDIUM

Responses

Status: 200 **HTTP Status Code:** `200`
Content-Type: application/json
  • total_records

    integer — The total number of registration records for this Webinar.

  • tracking_sources

    array — Tracking Sources object.

    Items:

    • id

      string — Unique Identifier of the tracking source.

    • registration_count

      integer — Number of registrations made from this source.

    • source_name

      string — Name of the source (platform) where the registration URL was shared.

    • tracking_url

      string — Tracking URL. The URL that was shared for the registration.

    • visitor_count

      integer — Number of visitors who visited the registration page from this source.

Example:

{
  "total_records": 1,
  "tracking_sources": [
    {
      "id": "5516482804110",
      "registration_count": 1,
      "source_name": "https://example.com",
      "tracking_url": "https://example.com/webinar/register/5516482804110/WN_juM2BGyLQMyQ_ZrqiGRhLg",
      "visitor_count": 1
    }
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Invalid webinar ID. <br> **Error Code:** `200` <br> No permission. <br> **Error Code:** `200` <br> Webinar plan is missing. You must subscribe to the webinar plan and enable webinars for this user in order to perform this action. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Webinar does not exist: {webinarId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).