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:
- The Meeting and Webinar Archiving feature enabled for your account by Zoom Support.
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
-
fromstring, format:date-time— The queried start date. -
meetingsarray— 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_deleteboolean— 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_pathstring— 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_messagesinteger— The number of `TXT` or `JSON` file messages. This field returns only when the `file_extension` is `JSON` or `TXT`. -
participant_emailstring, 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_locationstring, 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_idstring— Primary group IDs of participants who belong to your account. Each group ID is separated by a comma. -
parent_meeting_idstring— 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_filesarray— Information about the physical files.Items:
-
download_urlstring— 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_idstring— The physical file's unique ID. -
file_namestring— The physical file's name. -
file_sizeinteger— The physical file's size, in bytes.
-
-
-
next_page_tokenstring— 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_sizeinteger— The number of records returned within a single API call. -
tostring, format:date-time— The queried end date. -
total_recordsinteger— 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_idstring— The user account's unique identifier. -
auto_deleteboolean— 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_datestring— The date when the recording will be auto-deleted when `auto_delete` is true. Otherwise, no date will be returned. -
durationinteger— The duration of the meeting's recording. -
host_idstring— The ID of the user set as the host of the meeting. -
idinteger— The meeting ID, also known as the meeting number. -
recording_countinteger— 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_passcodestring— 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_timestring, format:date-time— The time when the meeting started. -
topicstring— The meeting topic. -
total_sizeinteger, format:int64— The recording's total file size. This includes the `recording_files` and `participant_audio_files` files. -
typestring, 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. -
uuidstring— The unique meeting identifier. Each instance of the meeting has its own UUID.
All of:
-
recording_filesarray— List of recording files.Items:
All of:
-
deleted_timestring— The time when the recording was deleted. Returned in the response only for the trash query. -
download_urlstring— 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_extensionstring, possible values:"MP4", "M4A", "TXT", "VTT", "CSV", "JSON", "JPG"— The file extension type of the recording file. -
file_pathstring— 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_sizenumber— The recording file size. -
file_typestring, 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. -
idstring— The recording file ID. It's included in the response of the general query. -
meeting_idstring— The meeting ID. -
play_urlstring— The URL that can play a recording file. -
recording_endstring— The recording end time. The response is in the general query. -
recording_startstring— The recording start time. -
recording_typestring, 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. -
statusstring, possible values:"completed"— The recording status.
-
-
download_access_tokenstring— 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. -
passwordstring— 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_passcodestring— 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_filesarray— 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_urlstring— 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_namestring— The recording file's name. -
file_pathstring— 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_sizenumber— The recording file's size, in bytes. -
file_typestring— 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. -
idstring— The recording file's unique ID. This is included in the general query response. -
play_urlstring— The URL where the recording file can be opened and played. -
recording_endstring, format:date-time— The recording file's end time. This is included in the general query response. -
recording_startstring, format:date-time— The recording file's start time. -
statusstring, 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
- Enable Cloud Recording on the user's account. Learn more about enabling cloud recordings and managing cloud recording settings.
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_detailsarray— Analytics Detail.Items:
-
date_timestring, format:date-time— Explicit time to watch or download the recording. -
durationinteger— When the query type is `by_view`, this field indicates the viewing time, unit: seconds -
emailstring— The user's email who downloaded this Meeting Recording. -
namestring— The user's name who watched or downloaded.
-
-
fromstring, format:date— The queried start date -
next_page_tokenstring— 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_sizeinteger— The number of records returned within a single API call. -
tostring, format:date— The queried end date. -
total_recordsinteger— 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_summaryarray— Analytics Summary.Items:
-
datestring— Date of viewing or downloading the recording. -
downloads_total_countinteger— The number of people who downloaded this Meeting Recording. -
views_total_countinteger— The number of people who have watched this Meeting Recording.
-
-
fromstring, format:date— The queried start date -
tostring, 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_tokenstring— 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_countinteger— The number of pages returned for the request made. -
page_numberinteger, default:1— **Deprecated.** We will no longer support this field in a future release. Instead, use the `next_page_token` for pagination. -
page_sizeinteger, default:30— The number of records returned with a single API call. -
total_recordsinteger— The total number of all the records available across pages.
-
registrantsarray— Information about the cloud recording registrants.Items:
All of:
-
idstring— 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. -
addressstring— The registrant's address. -
citystring— The registrant's city. -
commentsstring— The registrant's questions and comments. -
countrystring— The registrant's two-letter [country code](https://developers.zoom.us/docs/api/rest/other-references/abbreviation-lists/#countries). -
custom_questionsarray— Information about custom questions.Items:
-
titlestring— The custom question's title. -
valuestring— The custom question's response value. This has a limit of 128 characters.
-
-
industrystring— The registrant's industry. -
job_titlestring— The registrant's job title. -
last_namestring— The registrant's last name. -
no_of_employeesstring, 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` -
orgstring— The registrant's organization. -
phonestring— The registrant's phone number. -
purchasing_time_framestring, 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_processstring, possible values:"", "Decision Maker", "Evaluator/Recommender", "Influencer", "Not involved"— The registrant's role in the purchase process. * `Decision Maker` * `Evaluator/Recommender` * `Influencer` * `Not involved` -
statestring— The registrant's state or province. -
statusstring, possible values:"approved", "denied", "pending"— The registrant's status. * `approved` - Registrant is approved. * `denied` - Registrant is denied. * `pending` - Registrant is waiting for approval. -
zipstring— 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. -
addressstring— The registrant's address. -
citystring— The registrant's city. -
commentsstring— The registrant's questions and comments. -
countrystring— The registrant's two-letter [country code](https://developers.zoom.us/docs/api/rest/other-references/abbreviation-lists/#countries). -
custom_questionsarray— Information about custom questions.Items:
-
titlestring— The title of the custom question. -
valuestring— The custom question's response value. This has a limit of 128 characters.
-
-
industrystring— The registrant's industry. -
job_titlestring— The registrant's job title. -
last_namestring— The registrant's last name. -
no_of_employeesstring, 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` -
orgstring— The registrant's organization. -
phonestring— The registrant's phone number. -
purchasing_time_framestring, 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_processstring, possible values:"", "Decision Maker", "Evaluator/Recommender", "Influencer", "Not involved"— The registrant's role in the purchase process. * `Decision Maker` * `Evaluator/Recommender` * `Influencer` * `Not involved` -
statestring— The registrant's state or province. -
statusstring, possible values:"approved", "denied", "pending"— The registrant's status. * `approved` - Registrant is approved. * `denied` - Registrant is denied. * `pending` - Registrant is waiting for approval. -
zipstring— 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
-
idinteger, 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. -
registrant_idstring— Registrant ID -
share_urlstring— Share URL for the on-demand recording. This includes the “tk” 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. -
topicstring— 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_questionsarray— Array of registrant custom questions.Items:
-
answersarray— Answer choices for the question. Cannot be used with short answer type.Items:
string -
requiredboolean— Whether registrants are required to answer custom questions or not. -
titlestring— The question's title. -
typestring, possible values:"short", "single", "multiple"— The type of registration question and answers.
-
-
questionsarray— Array of registrant questions.Items:
-
field_namestring, 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. -
requiredboolean— 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_questionsarray— Array of registrant custom questions.Items:
-
answersarray— Answer choices for the question. Cannot be used with short answer type.Items:
string -
requiredboolean— Whether registrants are required to answer custom questions or not. -
titlestring— The question's title. -
typestring, possible values:"short", "single", "multiple"— The type of registration question and answers.
-
-
questionsarray— Array of registrant questions.Items:
-
field_namestring, 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. -
requiredboolean— 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" -
registrantsarray— List of registrants.Items:
-
idstring
-
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_typeinteger, 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_domainsstring— The domains for authentication. -
authentication_namestring— The name for authentication. -
authentication_optionstring— The options for authentication. -
auto_deleteboolean— 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_datestring— The date when the recording will be auto-deleted when `auto_delete` is `true`. Otherwise, no date is returned. -
on_demandboolean— This field determines whether registration is required to view the recording. -
passwordstring— 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_authenticationboolean— Only allow authenticated users to view. -
send_email_to_hostboolean— Enable sending an email to the host when someone registers to view the recording. This applies for On-demand recordings only. -
share_recordingstring, possible values:"publicly", "internally", "none"— Determine how the meeting recording is shared. -
show_social_share_buttonsboolean— Show social share buttons on the registration page. This applies for On-demand recordings only. -
topicstring— The recording's name. -
viewer_downloadboolean— 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_typeinteger, 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_domainsstring— The authentication domains. -
authentication_optionstring— The authentication options. -
auto_deleteboolean— 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_demandboolean— Determine whether the registration is required to view the recording. -
passwordstring— 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_authenticationboolean— Indicate that only authenticated users can view. -
send_email_to_hostboolean— Send an email to host when someone registers to view the recording. This setting applies for On-demand recordings only. -
share_recordingstring, possible values:"publicly", "internally", "none"— Determine how the meeting recording is shared. -
show_social_share_buttonsboolean— Show social share buttons on registration page. This setting applies for On-demand recordings only. -
topicstring— The name of the recording. -
viewer_downloadboolean— 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
-
actionstring, 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
-
actionstring, 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
-
fromstring, format:date— The queried start date. -
meetingsarray— The information about the meetings.Items:
-
durationinteger— The meeting's scheduled duration. -
external_storage_addrstring— NFS addres.s -
host_idstring— The meeting host's user ID. -
idinteger— The meeting's ID. -
instance_idstring— The unique ID for the hybrid recorder or recording connector. Only RC and HRC recording returns this data. -
rc_zonestring— Recording zone used in the Zoom Node Platform. Only RC recording returns this data. -
recording_countinteger— The total number of recordings retrieved from the account. -
recording_filesarray— The information about the recording files.Items:
-
download_urlstring— 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_extensionstring, possible values:"MP4", "M4A", "TXT", "VTT", "CSV", "JSON", "JPG"— The file extension type of the recording file. -
file_pathstring— 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_sizeinteger— The size of the recording file, in bytes. -
file_typestring, possible values:"MP4", "M4A", "CHAT", "TRANSCRIPT", "CSV", "TB", "CC", "CHAT_MESSAGE", "SUMMARY", "TIMELINE"— The recording file's type. * `MP4` — Video file. * `M4A` — Audio-only file. * `CHAT` — A TXT file containing in-meeting chat messages. * `TRANSCRIPT` — A transcription file, in VTT format. * `CC` — A file containing the closed captions of the recording, in VTT file format. * `CSV` — A file containing polling data, in CSV format. * `TB` — 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. -
idstring— The recording's ID. -
meeting_idstring— The recorded meeting's ID. -
play_urlstring— The URL that indicates the recording can be played. -
recording_endstring, format:date-time— The date and time when the recording ended. -
recording_startstring, format:date-time— The date and time when the recording started. -
recording_typestring, 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. -
statusstring, possible values:"completed", "processing"— The participant audio file's processing status: * `completed` — The processing of the file is complete. * `processing` — The file is processing.
-
-
service_namestring— The name of the Zoom Node Service. -
start_timestring, format:date-time— The date and time when the meeting started. -
topicstring— The meeting's topic. -
total_sizeinteger— The total size of the recording file, in bytes. -
typeinteger, 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.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. -
uuidstring— The meeting's universally unique ID.
-
-
next_page_tokenstring— 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_sizeinteger— The number of records returned within a single API call. -
tostring, format:date— The queried end date. -
total_recordsinteger— 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:
- Must have a Pro or a higher plan.
- Must enable Cloud Recording on the user's account. Learn more about enabling cloud recordings and managing cloud recording settings.
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:
-
fromstring, format:date— The start date. -
tostring, format:date— The end date.
-
next_page_tokenstring— 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_countinteger— The number of pages returned for the request made. -
page_sizeinteger, default:30— The number of records returned within a single API call. -
total_recordsinteger— The number of all records available across pages.
-
meetingsarray— List of recordings.Items:
All of:
All of:
-
account_idstring— Unique Identifier of the user account. -
auto_deleteboolean— 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_datestring— The date when the recording will be auto-deleted when `auto_delete` is `true`. Otherwise, no date will be returned. -
durationinteger— Meeting duration. -
host_idstring— ID of the user set as host of meeting. -
idinteger— Meeting ID - also known as the meeting number. -
recording_countinteger— Number of recording files returned in the response of this API call. This includes the `recording_files` and `participant_audio_files` files. -
recording_play_passcodestring— 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_timestring, format:date-time— The time when the meeting started. -
topicstring— Meeting topic. -
total_sizeinteger, format:int64— The total file size of the recording. This includes the `recording_files` and `participant_audio_files` files. -
typestring, 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. -
uuidstring— Unique Meeting Identifier. Each instance of the meeting will have its own UUID.
All of:
-
recording_filesarray— List of recording file.Items:
All of:
-
deleted_timestring— The time when recording was deleted. Returned in the response only for trash query. -
download_urlstring— 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_extensionstring, possible values:"MP4", "M4A", "TXT", "VTT", "CSV", "JSON", "JPG"— The file extension type of the recording file. -
file_pathstring— 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_sizenumber— The recording file size. -
file_typestring, 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. -
idstring— The recording file ID. Included in the response of general query. -
meeting_idstring— The meeting ID. -
play_urlstring— The URL to play a recording file. -
recording_endstring— The recording end time. Response in general query. -
recording_startstring— The recording start time. -
recording_typestring, 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` -
statusstring, 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_tokenstring— 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_countinteger— The number of pages returned for the request made. -
page_numberinteger, default:1— **Deprecated.** We will no longer support this field in a future release. Instead, use the `next_page_token` for pagination. -
page_sizeinteger, default:30— The number of records returned with a single API call. -
total_recordsinteger— The total number of all the records available across pages.
-
devicesarray— List of H.323/SIP Device objects.Items:
All of:
-
idstring— 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:
-
idstring— 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:
- The user calling this API must be the host or an alternative meeting host.
- The meeting must be a live meeting, except when inviting participants to the meeting through call out (phone)/call out (room system).
- The Cloud recording control must be enabled.
- The AI Companion control must be enabled.
Scopes: meeting:master
Granular Scopes: meeting:update:in_meeting_controls:master
Rate Limit Label: MEDIUM
Request Body
Content-Type: application/json
-
methodstring, 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. -
paramsobject— The in-meeting parameters.-
ai_companion_modestring, 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_typestring— 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. -
contactsarray— 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:
-
emailstring— 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. -
idstring— The user's ID.
-
-
delete_meeting_assetsboolean, 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_ipstring— 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_headersobject— 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_namestring— Custom name that will be used within the h323 Header. -
to_display_namestring— Custom remote name that will be used within the meeting.
-
-
invite_optionsobject— Information about the `participant.invite.callout` settings.-
require_greetingboolean, 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_oneboolean, 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_namestring— 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_numberstring— 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_transcriptboolean— 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_headersobject— 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_headersarray— 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:
-
keystring— Additional custom SIP header's key. -
valuestring— Additional custom SIP header's value.
-
-
from_display_namestring— Custom name that will be used within the SIP Header. -
from_uristring— 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_namestring— Custom remote name that will be used within the meeting.
-
-
waiting_room_descriptionstring— The description shown in the waiting room. Use this field if you pass the `waiting_room.update` value for the `method` field. -
waiting_room_titlestring— 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
-
tokenstring— 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_approveboolean— 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). -
registrantsarrayItems:
-
email(required)string, format:email— Email address of the registrant. -
first_name(required)string— First name of the registrant. -
last_namestring— Last name of the registrant.
-
-
registrants_confirmation_emailboolean— 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
-
registrantsarrayItems:
-
emailstring— Email address of the registrant. -
join_urlstring— Unique URL using which registrant can join the meeting. -
participant_pin_codeinteger, format:int64— The participant PIN code is used to authenticate audio participants before they join the meeting. -
registrant_idstring— 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
-
invitationstring— Meeting invitation. -
sip_linksarray— 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
ttlvalue, in seconds, defines the invite link's expiration time. It must be between0or no expiration and7776000or 90 days, and has a default value of7200or 2 hours.
Scopes: meeting:master
Granular Scopes: meeting:write:invite_links:master
Rate Limit Label: LIGHT
Request Body
Content-Type: application/json
-
attendeesarray— The attendees list.Items:
-
name(required)string— User display name. -
disable_audioboolean, 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_videoboolean, 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.
-
-
ttlinteger, 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
-
attendeesarray— The attendee list.Items:
-
join_urlstring— The URL to join the meeting. -
namestring— 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_tokenstring— 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_countinteger— The number of pages returned for the request made. -
page_numberinteger, default:1— **Deprecated.** We will no longer support this field in a future release. Instead, use the `next_page_token` for pagination. -
page_sizeinteger, default:30— The number of records returned with a single API call. -
total_recordsinteger— The total number of all the records available across pages.
-
registrantsarray— List of registrant objects.Items:
All of:
-
idstring— 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. -
addressstring— The registrant's address. -
citystring— The registrant's city. -
commentsstring— The registrant's questions and comments. -
countrystring— The registrant's two-letter [country code](/docs/api/rest/other-references/abbreviation-lists/#countries). -
custom_questionsarray— Information about custom questions.Items:
-
titlestring— The title of the custom question. -
valuestring— The custom question's response value. This has a limit of 128 characters.
-
-
industrystring— The registrant's industry. -
job_titlestring— The registrant's job title. -
last_namestring— The registrant's last name. -
no_of_employeesstring, 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` -
orgstring— The registrant's organization. -
phonestring— The registrant's phone number. -
purchasing_time_framestring, 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_processstring, possible values:"", "Decision Maker", "Evaluator/Recommender", "Influencer", "Not involved"— The registrant's role in the purchase process. * `Decision Maker` * `Evaluator/Recommender` * `Influencer` * `Not involved` -
statestring— The registrant's state or province. -
statusstring, possible values:"approved", "denied", "pending"— The registrant's status. * `approved` - Registrant is approved. * `denied` - Registrant is denied. * `pending` - Registrant is waiting for approval. -
zipstring— The registrant's ZIP or postal code.
-
create_timestring, format:date-time— The time when the registrant registered. -
join_urlstring, format:string— The URL that an approved registrant can use to join the meeting or webinar. -
participant_pin_codeinteger, format:int64— The participant PIN code is used to authenticate audio participants before they join the meeting. -
statusstring— 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. -
addressstring— The registrant's address. -
citystring— The registrant's city. -
commentsstring— The registrant's questions and comments. -
countrystring— The registrant's two-letter [country code](https://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#countries). -
custom_questionsarray— Information about custom questions.Items:
-
titlestring— The title of the custom question. -
valuestring— The custom question's response value. This has a limit of 128 characters.
-
-
industrystring— The registrant's industry. -
job_titlestring— The registrant's job title. -
last_namestring— The registrant's last name. -
no_of_employeesstring, 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` -
orgstring— The registrant's organization. -
phonestring— The registrant's phone number. -
purchasing_time_framestring, 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_processstring, possible values:"", "Decision Maker", "Evaluator/Recommender", "Influencer", "Not involved"— The registrant's role in the purchase process: * `Decision Maker` * `Evaluator/Recommender` * `Influencer` * `Not involved` -
statestring— The registrant's state or province. -
zipstring— The registrant's ZIP or postal code.
-
languagestring, 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` — 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
-
auto_approveboolean— 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
-
idinteger, format:int64— The meeting ID. -
join_urlstring— 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). -
occurrencesarray— Array of occurrence objects.Items:
-
durationinteger— Duration. -
occurrence_idstring— Occurrence ID: 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_timestring, format:date-time— Start time. -
statusstring— Occurrence status.
-
-
participant_pin_codeinteger, format:int64— The participant PIN code is used to authenticate audio participants before they join the meeting. -
registrant_idstring— The registrant's ID. -
start_timestring, format:date-time— The meeting's start time. -
topicstring— 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_questionsarray— Array of custom questions for registrants.Items:
-
answersarray— 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 -
requiredboolean— Whether or not the custom question is required to be answered by participants or not. -
titlestring— Title of the custom question. -
typestring, possible values:"short", "single"— Type of the question being asked.
-
-
questionsarray— Array of registrant questions.Items:
-
field_namestring, 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. -
requiredboolean— 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_questionsarray— Array of Registrant Custom QuestionsItems:
-
answersarray— 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 -
requiredboolean— Indicates whether or not the custom question is required to be answered by participants or not. -
titlestring— Title of the custom question. -
typestring, possible values:"short", "single"— The type of question being asked.
-
-
questionsarray— Array of registrant questions.Items:
-
field_namestring, 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. -
requiredboolean— 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. -
registrantsarray— List of registrants.Items:
-
emailstring -
idstring
-
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:
-
idstring
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. -
addressstring— The registrant's address. -
citystring— The registrant's city. -
commentsstring— The registrant's questions and comments. -
countrystring— The registrant's two-letter [country code](https://developers.zoom.us/docs/api/rest/other-references/abbreviation-lists/#countries). -
custom_questionsarray— Information about custom questions.Items:
-
titlestring— The title of the custom question. -
valuestring— The custom question's response value. This has a limit of 128 characters.
-
-
industrystring— The registrant's industry. -
job_titlestring— The registrant's job title. -
last_namestring— The registrant's last name. -
no_of_employeesstring, 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` -
orgstring— The registrant's organization. -
phonestring— The registrant's phone number. -
purchasing_time_framestring, 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_processstring, possible values:"", "Decision Maker", "Evaluator/Recommender", "Influencer", "Not involved"— The registrant's role in the purchase process. * `Decision Maker` * `Evaluator/Recommender` * `Influencer` * `Not involved` -
statestring— The registrant's state or province. -
statusstring, possible values:"approved", "denied", "pending"— The registrant's status. * `approved` - Registrant is approved. * `denied` - Registrant is denied. * `pending` - Registrant is waiting for approval. -
zipstring— The registrant's ZIP or postal code.
-
create_timestring, format:date-time— The registrant's registration date and time. -
join_urlstring, format:url— The URL with which the approved registrant can join the meeting. -
participant_pin_codeinteger, format:int64— The participant PIN code is used to authenticate audio participants before they join the meeting. -
statusstring, 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_typemust be 2 or 3 to require theoccurrence_idfield. - If the
registration_typeis 1, theoccurrence_idis not needed, as registrants can attend any occurrence.
- The
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_urlstring— Live streaming page URL. This is the URL using which anyone can view the livestream of the meeting. -
resolutionstring— The number of pixels in each dimension that the video camera can display. -
stream_keystring— Stream Key. -
stream_urlstring— 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. -
resolutionstring— 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
-
actionstring, 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. -
settingsobject— The meeting's livestreaming settings.-
active_speaker_nameboolean— 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_captionstring, 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_namestring— The display name of the meeting's livestream. Use this field if you pass the `start` value for the `action` field. -
layoutstring, 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
-
agendastring— The meeting description. -
assistant_idstring— The ID of the user who scheduled this meeting on behalf of the host. -
chat_join_urlstring— The URL to join the chat. -
created_atstring, format:date-time— The creation time. -
creation_sourcestring, 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. -
durationinteger— The meeting duration. -
dynamic_host_keystring— The meeting dynamic host key. -
encrypted_passwordstring— Encrypted passcode for third party endpoints (H323/SIP). -
h323_passwordstring— H.323/SIP room system passcode. -
host_emailstring, format:email— The meeting host's email address. -
host_idstring— The ID of the user who is set as the meeting host. -
idinteger, 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_urlstring— The URL for participants to join the meeting. This URL should only be shared with users invited to the meeting. -
occurrencesarray— Array of occurrence objects.Items:
-
durationinteger— Duration. -
occurrence_idstring— 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_timestring, format:date-time— Start time. -
statusstring, possible values:"available", "deleted"— Occurrence status. `available` - Available occurrence. `deleted` - Deleted occurrence.
-
-
passwordstring— Meeting passcode. -
pmistring— [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_scheduleboolean, 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_passwordstring— Password for participants to join the meeting via [PSTN](https://support.zoom.us/hc/en-us/articles/204517069-Getting-Started-with-Personal-Audio-Conference). -
recurrenceobject— 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_timestring, 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_timesinteger, 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_dayinteger, 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_weekinteger, 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_dayinteger, 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_intervalinteger— 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_daysstring, 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_urlstring— The URL that registrants can use to register for a meeting. This field is only returned for meetings that have enabled registration. -
settingsobject— Meeting settings.-
additional_data_center_regionsarray— 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_stateboolean— 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_devicesboolean— 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_recordingboolean— Whether to allow an alternative host to manage meeting cloud recordings. -
alternative_host_manage_meeting_summaryboolean— Whether to allow an alternative host to manage meeting summaries. -
alternative_host_update_pollsboolean— Whether the **Allow alternative hosts to add or edit polls** feature is enabled. This requires Zoom version 5.8.0 or higher. -
alternative_hostsstring— A semicolon-separated list of the meeting's alternative hosts' email addresses or IDs. -
alternative_hosts_email_notificationboolean, default:true— Flag to determine whether to send email notifications to alternative hosts, default value is true. -
approval_typeinteger, 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_regionsobject— Approve or block users from specific regions/countries from joining this meeting.-
approved_listarray— List of countries/regions from where participants can join this meeting.Items:
string -
denied_listarray— List of countries or regions from where participants can not join this meeting.Items:
string -
enableboolean— `true` - Setting enabled to either allow users or block users from specific regions to join your meetings. `false` - Setting disabled. -
methodstring, 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`
-
-
audiostring, 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_infostring— Third party audio conference information. -
authentication_domainsstring— 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_exceptionarray— The participants added here will receive unique meeting invite links and bypass authentication.Items:
-
emailstring, format:email— The participant's email address. -
join_urlstring— URL for participants to join the meeting -
namestring— The participant's name.
-
-
authentication_namestring— 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_optionstring— Meeting authentication option ID. -
auto_add_recording_to_video_managementobject— 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. -
channelsarray— 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. -
namestring— The name of the video management channel.
-
-
-
auto_recordingstring, possible values:"local", "cloud", "none", default:"none"— Automatic recording. `local` - Record on local. `cloud` - Record on cloud. `none` - Disabled. -
auto_start_ai_companion_questionsboolean, default:false— Whether to automatically start AI Companion questions. -
auto_start_meeting_summaryboolean, default:false— Whether to automatically start a meeting summary. -
breakout_roomobject— 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).-
enableboolean— Set this field's value to `true` if you would like to enable the [breakout room pre-assign](https://support.zoom.us/hc/en-us/articles/360032752671-Pre-assigning-participants-to-breakout-rooms#h_36f71353-4190-48a2-b999-ca129861c1f4) option. -
roomsarray— Create room or rooms.Items:
-
namestring— The breakout room's name. -
participantsarray— Email addresses of the participants who are to be assigned to the breakout room.Items:
string
-
-
-
calendar_typeinteger, 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_registrationboolean, default:false— Close registration after event date. -
cn_meetingboolean, default:false— Host meeting in China. -
contact_emailstring— Contact email for registration. -
contact_namestring— Contact name for registration. -
continuous_meeting_chatobject— 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_usersboolean— Whether to enable the **Automatically add invited external users** setting. -
auto_add_meeting_participantsboolean— Whether to enable the **Automatically add meeting participants** setting. -
channel_idstring— The channel's ID. -
enableboolean— Whether to enable the **Enable continuous meeting chat** setting.
-
-
custom_keysarray— Custom keys and values assigned to the meeting.Items:
-
keystring— Custom key associated with the user. -
valuestring— Value of the custom key associated with the user.
-
-
device_testingboolean, default:false— Enable the device testing. -
disable_participant_videoboolean, 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_reportboolean— Whether to include authenticated guest's email addresses in meetings' attendee reports. -
email_notificationboolean, 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_typestring, 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_loginboolean— 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_domainsstring— 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_modeboolean— 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_countriesarray— List of global dial-in countries.Items:
string -
global_dial_in_numbersarray— Global Dial-in Countries and RegionsItems:
-
citystring— City of the number, if any. For example, Chicago. -
countrystring— Country code, such as BR. -
country_namestring— Full name of country, such as Brazil. -
numberstring— Phone number, such as +1 2332357613. -
typestring, possible values:"toll", "tollfree"— Type of number.
-
-
host_save_video_orderboolean— Whether the **Allow host to save video order** feature is enabled. -
host_videoboolean— Start video when the host joins the meeting. -
in_meetingboolean, default:false— Host meeting in India. -
internal_meetingboolean, default:false— Whether to set the meeting as an internal meeting. -
jbh_timeinteger, 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_hostboolean, default:false— Allow participants to join the meeting before the host starts the meeting. Only used for scheduled or recurring meetings. -
language_interpretationobject— 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.-
enableboolean— Whether to enable [language interpretation](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0064768) for the meeting. -
interpretersarray— Information about the meeting's language interpreters.Items:
-
emailstring, format:email— The interpreter's email address. -
interpreter_languagesstring— 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`. -
languagesstring— 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_authenticationboolean— `true` - Only authenticated users can join meetings. -
meeting_inviteesarray— A list of the meeting's invitees.Items:
-
emailstring, format:email— The invitee's email address. -
internal_userboolean, default:false— Whether the meeting invitee is an internal user.
-
-
mute_upon_entryboolean, default:false— Mute participants upon entry. -
participant_focused_meetingboolean, default:false— Whether to set the meeting as a participant focused meeting. -
participant_videoboolean— Start video when participants join the meeting. -
private_meetingboolean— Whether the meeting is set as private. -
push_change_to_calendarboolean, 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_answerobject— [Q&A](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0065237) for meeting.-
allow_anonymous_questionsboolean— * `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_questionsboolean— * `true` - Allow participants to submit questions. * `false` - Don't allow participants to submit questions. -
attendees_can_commentboolean— * `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_upvoteboolean— * `true` - Attendees can select the thumbs up button to bring popular questions to the top of the Q&A window. * `false` - Attendees can't select the thumbs up button on questions. -
enableboolean— * `true` - Enable [Q&A](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0065237) for the meeting. * `false` - Disable Q&A for the meeting. -
question_visibilitystring, 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&A.
-
-
registrants_confirmation_emailboolean— Whether to send registrants an email confirmation. * `true` - Send a confirmation email. * `false` - Do not send a confirmation email. -
registrants_email_notificationboolean— 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_typeinteger, 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_participantsboolean— 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. -
resourcesarray— The meeting's resources.Items:
-
permission_levelstring, 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_idstring— The resource ID. -
resource_typestring, possible values:"whiteboard"— The resource type.
-
-
show_join_infoboolean— 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_buttonboolean— 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_interpretationobject— 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.-
enableboolean— 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. -
interpretersarray— Information about the meeting's sign language interpreters.Items:
-
emailstring, format:email— The interpreter's email address. -
sign_languagestring— 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_idstring— 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_pmiboolean— 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_roomboolean, default:false— Enable waiting room -
waiting_room_optionsobject— 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_roomstring, 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.
-
-
watermarkboolean, default:false— Add a watermark when viewing a shared screen. -
who_can_ask_questionsinteger, 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_summaryinteger, 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_timestring, format:date-time— Meeting start time in GMT or UTC. Start time will not be returned if the meeting is an **instant** meeting. -
start_urlstring— 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. -
statusstring, possible values:"waiting", "started"— The meeting status. * `waiting` - The meeting has not started. * `started` - The meeting is currently in progress. -
template_idstring— 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). -
timezonestring— The timezone to format the meeting start time. -
topicstring— Meeting topic. -
tracking_fieldsarray— Tracking fields.Items:
-
fieldstring— The tracking field's label. -
valuestring— The tracking field's value. -
visibleboolean— 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.
-
-
typeinteger, 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. -
uuidstring— 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_idis 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_timevalue 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
recurrenceobject is required only when updating the entire series of a recurring meeting withtype=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
-
agendastring— Meeting description. -
durationinteger— 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. -
passwordstring— 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_scheduleboolean, 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. -
recurrenceobject— 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_timestring, 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_timesinteger, 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_dayinteger, 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_weekinteger, 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_dayinteger, 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_intervalinteger— 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_daysstring, 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_forstring— The email address or `userId` of the user to schedule a meeting for. -
settingsobject— Meeting settings.-
allow_host_control_participant_mute_stateboolean— 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_devicesboolean— 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_recordingboolean— Whether to allow an alternative host to manage meeting cloud recordings. -
alternative_host_manage_meeting_summaryboolean— Whether to allow an alternative host to manage meeting summaries. -
alternative_host_update_pollsboolean— Whether the **Allow alternative hosts to add or edit polls** feature is enabled. This requires Zoom version 5.8.0 or higher. -
alternative_hostsstring— A semicolon-separated list of the meeting's alternative hosts' email addresses or IDs. -
alternative_hosts_email_notificationboolean, default:true— Flag to determine whether to send email notifications to alternative hosts, default value is true. -
approval_typeinteger, 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_regionsobject— Approve or block users from specific regions or countries from joining this meeting.-
approved_listarray— List of countries or regions from where participants can join this meeting.Items:
string -
denied_listarray— List of countries or regions from where participants can not join this meeting.Items:
string -
enableboolean— `true` - Setting enabled to either allow users or block users from specific regions to join your meetings. `false` - Setting disabled. -
methodstring, 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`
-
-
audiostring, 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_infostring— Third party audio conference info. -
authentication_domainsstring— 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_exceptionarray— The participants added here will receive unique meeting invite links and bypass authentication.Items:
-
emailstring, format:email— The participant's email address. -
join_urlstring— URL for participants to join the meeting -
namestring— The participant's name.
-
-
authentication_namestring— 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_optionstring— Meeting authentication option ID. -
auto_add_recording_to_video_managementobject— 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. -
channelsarray— 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. -
namestring— The video management channel's name.
-
-
-
auto_recordingstring, possible values:"local", "cloud", "none", default:"none"— Automatic recording. `local` - Record on local. `cloud` - Record on cloud. `none` - Disabled. -
auto_start_ai_companion_questionsboolean, default:false— Whether to automatically start AI Companion questions. -
auto_start_meeting_summaryboolean, default:false— Whether to automatically start meeting summary. -
breakout_roomobject— 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).-
enableboolean— Set this field's value to `true` to enable the [breakout room pre-assign](https://support.zoom.us/hc/en-us/articles/360032752671-Pre-assigning-participants-to-breakout-rooms#h_36f71353-4190-48a2-b999-ca129861c1f4) option. -
roomsarray— Create room(s).Items:
-
namestring— The breakout room's name. -
participantsarray— Email addresses of the participants who are to be assigned to the breakout room.Items:
string
-
-
-
calendar_typeinteger, 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_registrationboolean, default:false— Close registration after the event date. -
cn_meetingboolean, default:false— Host the meeting in China. -
contact_emailstring— Contact email for registration. -
contact_namestring— Contact name for registration. -
continuous_meeting_chatobject— 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_usersboolean— Whether to enable the **Automatically add invited external users** setting. -
auto_add_meeting_participantsboolean— Whether to enable the **Automatically add meeting participants** setting. -
enableboolean— Whether to enable the **Enable continuous meeting chat** setting.
-
-
custom_keysarray— Custom keys and values assigned to the meeting.Items:
-
keystring— Custom key associated with the user. -
valuestring— Value of the custom key associated with the user.
-
-
device_testingboolean, default:false— Enable the device testing. -
disable_participant_videoboolean, 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_reportboolean— Whether to include authenticated guest's email addresses in meetings' attendee reports. -
email_notificationboolean, 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_typestring, 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_loginboolean— 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_domainsstring— 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_modeboolean— 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_countriesarray— List of global dial-in countriesItems:
string -
global_dial_in_numbersarray— Global dial-in countries or regionsItems:
-
citystring— City of the number, if any, such as Chicago. -
countrystring— Country code, such as BR. -
country_namestring— Full name of country, such as Brazil. -
numberstring— Phone number, such as +1 2332357613. -
typestring, possible values:"toll", "tollfree"— Type of number.
-
-
host_save_video_orderboolean— Whether the **Allow host to save video order** feature is enabled. -
host_videoboolean— Start video when the host joins the meeting. -
in_meetingboolean, default:false— Host meeting in India. -
internal_meetingboolean, default:false— Whether to set the meeting as an internal meeting. -
jbh_timeinteger, 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_hostboolean, default:false— Allow participants to join the meeting before the host starts the meeting. Only used for scheduled or recurring meetings. -
language_interpretationobject— 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.-
enableboolean— Whether to enable [language interpretation](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0064768) for the meeting. -
interpretersarray— Information about the meeting's language interpreters.Items:
-
emailstring, format:email— The interpreter's email address. -
interpreter_languagesstring— 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`. -
languagesstring— 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_authenticationboolean— `true`- Only authenticated users can join meetings. -
meeting_inviteesarray— A list of the meeting's invitees.Items:
-
emailstring, format:email— The invitee's email address.
-
-
mute_upon_entryboolean, default:false— Mute participants upon entry. -
participant_focused_meetingboolean, default:false— Whether to set the meeting as a participant focused meeting. -
participant_videoboolean— Start video when participants join the meeting. -
private_meetingboolean— Whether the meeting is set as private. -
push_change_to_calendarboolean— 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_answerobject— [Q&A](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0065237) for meeting.-
allow_anonymous_questionsboolean— * `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_questionsboolean— * `true`: Allow participants to submit questions. * `false`: Do not allow submit questions. -
attendees_can_commentboolean— * `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_upvoteboolean— * `true` - Attendees can click the thumbs up button to bring popular questions to the top of the Q&A window. * `false` - Attendees can not click the thumbs up button on questions. -
enableboolean— * `true` - Enable [Q&A](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0065237) for meeting. * `false` - Disable Q&A for meeting. -
question_visibilitystring, 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&A.
-
-
registrants_confirmation_emailboolean— Whether to send registrants an email confirmation. * `true` - Send a confirmation email. * `false` - Do not send a confirmation email. -
registrants_email_notificationboolean— 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_typeinteger, 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_participantsboolean— 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. -
resourcesarray— The meeting's resources.Items:
-
permission_levelstring, 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_idstring— The resource ID. -
resource_typestring, possible values:"whiteboard"— The resource type.
-
-
show_share_buttonboolean— 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_interpretationobject— 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.-
enableboolean— 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. -
interpretersarray— Information about the meeting's sign language interpreters.Items:
-
emailstring, format:email— The interpreter's email address. -
sign_languagestring— 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_idstring— 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_pmiboolean— 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_roomboolean, default:false— Enable waiting room. -
waiting_room_optionsobject— 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_roomstring, 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.
-
-
watermarkboolean, default:false— Add a watermark when viewing a shared screen. -
who_can_ask_questionsinteger, 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_summaryinteger, 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_timestring, 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_idstring— 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. -
timezonestring— 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). -
topicstring— Meeting topic. -
tracking_fieldsarray— Tracking fields.Items:
-
fieldstring— Tracking fields type. -
valuestring— Tracking fields value.
-
-
typeinteger, 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
-
actionstring, possible values:"end", "recover"— `end` - End a meeting. `recover` - [Recover](https://support.zoom.us/hc/en-us/articles/360038297111-Recover-a-deleted-meeting) a deleted meeting.
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
-
meetingsarray— List of ended meeting instances.Items:
-
start_timestring, format:date-time— Start time -
uuidstring— 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
typeis set toupcoming,upcoming_meetings, orprevious_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_tokenstring— 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_countinteger— The number of pages returned for the request made. -
page_numberinteger, default:1— The page number of the current results. -
page_sizeinteger, default:30— The number of records returned with a single API call. -
total_recordsinteger— The total number of all the records available across pages.
-
meetingsarray— List of meeting objects.Items:
All of:
-
agendastring— 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_atstring, format:date-time— Time of creation. -
durationinteger— Meeting duration. -
host_idstring— ID of the user who is set as the meeting's host. -
idinteger, format:int64— Meeting ID - also known as the meeting number in long (int64) format. -
join_urlstring— URL using which participants can join a meeting. -
pmistring— [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_timestring, format:date-time— Meeting start time. -
timezonestring— Timezone to format the meeting start time. -
topicstring— Meeting topic. -
typeinteger, 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. -
uuidstring— 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_urlvalue is the URL a host or an alternative host can use to start a meeting. Thestart_urlvalue's expiration time is two hours for all regular users. - For
custCreatemeeting hosts - users created with thecustCreateparameter via the Create users API - the expiration time of thestart_urlparameter is 90 days from the generation of thestart_url. - For security reasons, the recommended way to programmatically get the updated
start_urlvalue after expiry is to call the Get a meeting API. Refer to thestart_urlvalue in the response. - 100 requests per day. The rate limit is applied against the
userIdof 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
-
agendastring— The meeting's agenda. This value has a maximum length of 2,000 characters. -
default_passwordboolean, 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. -
durationinteger, 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. -
passwordstring— 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_scheduleboolean, 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. -
recurrenceobject— 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_timestring, 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_timesinteger, 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_dayinteger, 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_weekinteger, 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_dayinteger, 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_intervalinteger— 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_daysstring, 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_forstring— The email address or user ID of the user to schedule a meeting for. -
settingsobject— Information about the meeting's settings.-
additional_data_center_regionsarray— 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_stateboolean— 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_devicesboolean— 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_recordingboolean— Whether to allow an alternative host to manage meeting cloud recordings. -
alternative_host_manage_meeting_summaryboolean— Whether to allow an alternative host to manage meeting summaries. -
alternative_host_update_pollsboolean— Whether the **Allow alternative hosts to add or edit polls** feature is enabled. This requires Zoom version 5.8.0 or higher. -
alternative_hostsstring— A semicolon-separated list of the meeting's alternative hosts' email addresses or IDs. -
alternative_hosts_email_notificationboolean, default:true— Whether to send email notifications to alternative hosts. This value defaults to `true`. -
approval_typeinteger, 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_regionsobject— The list of approved or blocked users from specific countries or regions who can join the meeting.-
approved_listarray— The list of approved countries or regions.Items:
string -
denied_listarray— The list of blocked countries or regions.Items:
string -
enableboolean— 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. -
methodstring, 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.
-
-
audiostring, 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_infostring— Third party audio conference information. -
authentication_domainsstring— 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_exceptionarray— A list of participants who can bypass meeting authentication. These participants will receive a unique meeting invite.Items:
-
emailstring, format:email— The participant's email address. -
namestring— The participant's name.
-
-
authentication_optionstring— 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_managementobject— 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. -
channelsarray— 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. -
namestring— The name of the video management channel.
-
-
-
auto_recordingstring, 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_questionsboolean— Whether to automatically start AI Companion questions. If not provided, the default value will be based on the user's setting. -
auto_start_meeting_summaryboolean— Whether to automatically start a meeting summary. If not provided, the default value will be based on the user's setting. -
breakout_roomobject— The [pre-assigned breakout rooms](https://support.zoom.us/hc/en-us/articles/360032752671-Pre-assigning-participants-to-breakout-rooms) settings.-
enableboolean— Whether to enable the [**Breakout Room pre-assign**](https://support.zoom.us/hc/en-us/articles/360032752671-Pre-assigning-participants-to-breakout-rooms) option. -
roomsarray— Information about the breakout rooms.Items:
-
namestring— The breakout room's name. -
participantsarray— The email addresses of the participants to assign to the breakout room.Items:
string
-
-
-
calendar_typeinteger, 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_registrationboolean, default:false— Whether to close registration after the event date. This value defaults to `false`. -
cn_meetingboolean, default:false— Whether to host the meeting in China (CN). This value defaults to `false`. -
contact_emailstring— The contact email address for meeting registration. -
contact_namestring— The contact name for meeting registration. -
continuous_meeting_chatobject— 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_usersboolean— Whether to enable the **Automatically add invited external users** setting. -
auto_add_meeting_participantsboolean— Whether to enable the **Automatically add meeting participants** setting. -
enableboolean— 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_testingboolean, default:false— Enable the device testing. -
disable_participant_videoboolean, 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_reportboolean— Whether to include authenticated guest's email addresses in meetings' attendee reports. -
email_notificationboolean, 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_typestring, 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_modeboolean— 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_countriesarray— A list of available global dial-in countries.Items:
string -
host_save_video_orderboolean— Whether the **Allow host to save video order** feature is enabled. -
host_videoboolean— Whether to start meetings with the host video on. -
in_meetingboolean, default:false— Whether to host the meeting in India (IN). This value defaults to `false`. -
internal_meetingboolean, default:false— Whether to set the meeting as an internal meeting. -
jbh_timeinteger, 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_hostboolean, 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_interpretationobject— 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.-
enableboolean— 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. -
interpretersarray— Information about the meeting's language interpreters.Items:
-
emailstring, format:email— The interpreter's email address. -
interpreter_languagesstring— 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`. -
languagesstring— 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_authenticationboolean— 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_inviteesarray— A list of the meeting's invitees.Items:
-
emailstring, format:email— The invitee's email address.
-
-
mute_upon_entryboolean, default:false— Whether to mute participants upon entry. -
participant_focused_meetingboolean, default:false— Whether to set the meeting as a participant focused meeting. -
participant_videoboolean— Whether to start meetings with the participant video on. -
private_meetingboolean— Whether to set the meeting as private. -
push_change_to_calendarboolean, 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_answerobject— [Q&A](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0065237) for meeting.-
allow_anonymous_questionsboolean— * `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_questionsboolean— * `true` - Allow participants to submit questions. * `false` - Don't allow participants to submit questions. -
attendees_can_commentboolean— * `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_upvoteboolean— * `true` - Attendees can select the thumbs up button to bring popular questions to the top of the Q&A window. * `false` - Attendees can't select the thumbs up button on questions. -
enableboolean— * `true` - Enable [Q&A](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0065237) for meeting. * `false` - Disable Q&A for meeting. If not provided, the default value will be based on the user's setting. -
question_visibilitystring, 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&A.
-
-
registrants_confirmation_emailboolean— Whether to send registrants an email confirmation. * `true` - Send a confirmation email. * `false` - Do not send a confirmation email. -
registrants_email_notificationboolean— 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_typeinteger, 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_participantsboolean, 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. -
resourcesarray— The meeting's resources.Items:
-
permission_levelstring, 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_idstring— The resource ID. -
resource_typestring, possible values:"whiteboard"— The resource type.
-
-
show_join_infoboolean— 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_buttonboolean— 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_interpretationobject— 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.-
enableboolean— 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. -
interpretersarray— Information about the meeting's sign language interpreters.Items:
-
emailstring, format:email— The interpreter's email address. -
sign_languagestring— 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_idstring— 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_pmiboolean— 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_roomboolean— 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_optionsobject— 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_roomstring, 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.
-
-
watermarkboolean— 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_questionsinteger, 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_summaryinteger, 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_timestring, 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_idstring— 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). -
timezonestring— 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). -
topicstring— The meeting's topic. -
tracking_fieldsarray— Information about the meeting's tracking fields.Items:
-
field(required)string— The tracking field's label. -
valuestring— The tracking field's value.
-
-
typeinteger, 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
-
agendastring— Agenda -
assistant_idstring— The ID of the user who scheduled this meeting on behalf of the host. -
chat_join_urlstring— The URL to join the chat. -
created_atstring, format:date-time— The date and time when this meeting was created. -
creation_sourcestring, 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. -
durationinteger— The meeting duration. -
dynamic_host_keystring— The meeting dynamic host key. -
encrypted_passwordstring— Encrypted passcode for third party endpoints (H323/SIP). -
h323_passwordstring— H.323/SIP room system passcode -
host_emailstring, format:email— The meeting host's email address. -
host_idstring— The ID of the user who is set as the meeting host. -
idinteger, 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_urlstring— URL for participants to join the meeting. This URL should only be shared with users that you would like to invite for the meeting. -
occurrencesarray— Array of occurrence objects.Items:
-
durationinteger— Duration. -
occurrence_idstring— 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_timestring, format:date-time— Start time. -
statusstring, possible values:"available", "deleted"— Occurrence status. `available` - Available occurrence. `deleted` - Deleted occurrence.
-
-
passwordstring— 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. -
pmistring— [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_scheduleboolean, 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_passwordstring— Passcode for participants to join the meeting via [PSTN](https://support.zoom.us/hc/en-us/articles/204517069-Getting-Started-with-Personal-Audio-Conference). -
recurrenceobject— 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_timestring, 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_timesinteger, 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_dayinteger, 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_weekinteger, 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_dayinteger, 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_intervalinteger— 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_daysstring, 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_urlstring— The URL that registrants can use to register for a meeting. This field is only returned for meetings that have enabled registration. -
settingsobject— Meeting settings.-
additional_data_center_regionsarray— 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_stateboolean— 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_devicesboolean— 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_recordingboolean— Whether to allow an alternative host to manage meeting cloud recordings. -
alternative_host_manage_meeting_summaryboolean— Whether to allow an alternative host to manage meeting summaries. -
alternative_host_update_pollsboolean— Whether the **Allow alternative hosts to add or edit polls** feature is enabled. This requires Zoom version 5.8.0 or higher. -
alternative_hostsstring— A semicolon-separated list of the meeting's alternative hosts' email addresses or IDs. -
alternative_hosts_email_notificationboolean, default:true— Flag to determine whether to send email notifications to alternative hosts, default value is true. -
approval_typeinteger, 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_regionsobject— Approve or block users from specific regions or countries from joining this meeting.-
approved_listarray— List of countries or regions from where participants can join this meeting.Items:
string -
denied_listarray— List of countries or regions from where participants can not join this meeting.Items:
string -
enableboolean— `true` - Setting enabled to either allow users or block users from specific regions to join your meetings. `false` - Setting disabled. -
methodstring, 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`
-
-
audiostring, 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_infostring— Third party audio conference info. -
authentication_domainsstring— 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_exceptionarray— The participants added here will receive unique meeting invite links and bypass authentication.Items:
-
emailstring, format:email— The participant's email address. -
join_urlstring— URL for participants to join the meeting. -
namestring— The participant's name.
-
-
authentication_namestring— 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_optionstring— Meeting authentication option ID. -
auto_add_recording_to_video_managementobject— 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. -
channelsarray— 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. -
namestring— The name of the video management channel.
-
-
-
auto_recordingstring, possible values:"local", "cloud", "none", default:"none"— Automatic recording. `local` - Record on local. `cloud` - Record on cloud. `none` - Disabled. -
auto_start_ai_companion_questionsboolean— Whether to automatically start AI Companion questions. If not provided, the default value will be based on the user's setting. -
auto_start_meeting_summaryboolean— Whether to automatically start a meeting summary. If not provided, the default value will be based on the user's setting. -
breakout_roomobject— 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).-
enableboolean— Set this field's value to `true` to enable the [breakout room pre-assign](https://support.zoom.us/hc/en-us/articles/360032752671-Pre-assigning-participants-to-breakout-rooms#h_36f71353-4190-48a2-b999-ca129861c1f4) option. -
roomsarray— Create a room or rooms.Items:
-
namestring— The breakout room's name. -
participantsarray— Email addresses of the participants who are to be assigned to the breakout room.Items:
string
-
-
-
calendar_typeinteger, 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_registrationboolean, default:false— Close registration after event date. -
cn_meetingboolean, default:false— Host meeting in China. -
contact_emailstring— Contact email for registration -
contact_namestring— Contact name for registration -
continuous_meeting_chatobject— 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_usersboolean— Whether to enable the **Automatically add invited external users** setting. -
auto_add_meeting_participantsboolean— Whether to enable the **Automatically add meeting participants** setting. -
channel_idstring— The channel's ID. -
enableboolean— 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_keysarray— Custom keys and values assigned to the meeting.Items:
-
keystring— Custom key associated with the user. -
valuestring— Value of the custom key associated with the user.
-
-
device_testingboolean, default:false— Enable the device testing. -
disable_participant_videoboolean, 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_reportboolean— Whether to include authenticated guest's email addresses in meetings' attendee reports. -
email_notificationboolean, 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_typestring, 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_loginboolean— 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_domainsstring— 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_modeboolean— 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_countriesarray— List of global dial-in countries.Items:
string -
global_dial_in_numbersarray— Global dial-in countries or regions.Items:
-
citystring— City of the number, such as Chicago. -
countrystring— The country code, such as BR. -
country_namestring— Full name of country, such as Brazil. -
numberstring— A phone number, such as +1 2332357613. -
typestring, possible values:"toll", "tollfree"— Type of number.
-
-
host_save_video_orderboolean— Whether the **Allow host to save video order** feature is enabled. -
host_videoboolean— Start video when the host joins the meeting. -
in_meetingboolean, default:false— Host meeting in India. -
internal_meetingboolean, default:false— Whether to set the meeting as an internal meeting. -
jbh_timeinteger, 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_hostboolean, default:false— Allow participants to join the meeting before the host starts the meeting. Only used for scheduled or recurring meetings. -
language_interpretationobject— 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.-
enableboolean— 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. -
interpretersarray— Information about the meeting's language interpreters.Items:
-
emailstring, format:email— The interpreter's email address. -
interpreter_languagesstring— 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`. -
languagesstring— 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_authenticationboolean— `true` - Only authenticated users can join meetings. -
meeting_inviteesarray— A list of the meeting's invitees.Items:
-
emailstring, format:email— The invitee's email address.
-
-
mute_upon_entryboolean, default:false— Mute participants upon entry. -
participant_focused_meetingboolean, default:false— Whether to set the meeting as a participant focused meeting. -
participant_videoboolean— Start video when participants join the meeting. -
private_meetingboolean— Whether the meeting is set as private. -
push_change_to_calendarboolean, 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_answerobject— [Q&A](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0065237) for meeting.-
allow_anonymous_questionsboolean— * `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_questionsboolean— * `true`: Allow participants to submit questions. * `false`: Do not allow submit questions. -
attendees_can_commentboolean— * `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_upvoteboolean— * `true` - Attendees can click the thumbs up button to bring popular questions to the top of the Q&A window. * `false` - Attendees can not click the thumbs up button on questions. -
enableboolean— * `true` - Enable [Q&A](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0065237) for meeting. * `false` - Disable Q&A for meeting. If not provided, the default value will be based on the user's setting. -
question_visibilitystring, 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&A.
-
-
registrants_confirmation_emailboolean— Whether to send registrants an email confirmation. * `true` - Send a confirmation email. * `false` - Do not send a confirmation email. -
registrants_email_notificationboolean— 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_typeinteger, 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_participantsboolean, 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. -
resourcesarray— The meeting's resources.Items:
-
permission_levelstring, 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_idstring— The resource ID. -
resource_typestring, possible values:"whiteboard"— The resource type.
-
-
show_join_infoboolean— 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_buttonboolean— 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_interpretationobject— 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.-
enableboolean— 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. -
interpretersarray— Information about the meeting's sign language interpreters.Items:
-
emailstring, format:email— The interpreter's email address. -
sign_languagestring— 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_idstring— 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_pmiboolean— 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_roomboolean, default:false— Enable the waiting room. -
waiting_room_optionsobject— 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_roomstring, 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.
-
-
watermarkboolean— 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_questionsinteger, 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_summaryinteger, 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_timestring, format:date-time— Meeting start date-time in UTC/GMT, such as `2020-03-31T12:02:00Z`. -
start_urlstring— 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. -
statusstring, possible values:"waiting", "started"— The meeting status. * `waiting` - The meeting has not started. * `started` - The meeting is currently in progress. -
template_idstring— 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). -
timezonestring— Timezone to format `start_time`. -
topicstring— Meeting topic. -
tracking_fieldsarray— Tracking fields.Items:
-
fieldstring— The tracking field's label. -
valuestring— The tracking field's value. -
visibleboolean— 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.
-
-
typeinteger, 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. -
uuidstring— 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
- A Pro or higher plan with an Audio Conferencing subscription.
- The Personal Audio Conference setting enabled in the user's profile.
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_accountsarray— Information about the PAC accounts.Items:
-
conference_idinteger, format:int64— The conference ID. -
dedicated_dial_in_numberarray— Information about the account's dedicated dial-in numbers.Items:
-
countrystring— The dial-in country code. -
numberstring— The dial-in number.
-
-
global_dial_in_numbersarray— Information about the account's global dial-in numbers.Items:
-
countrystring— The global dial-in country code. -
numberstring— The global dial-in number.
-
-
listen_only_passwordstring— The listen-only password, up to six characters in length. -
participant_passwordstring— 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
-
pollsarray— The information about the meeting's polls.Items:
-
anonymousboolean, default:false— Whether to allow meeting participants to answer poll questions anonymously: * `true` — Anonymous polls enabled. * `false` — Participants cannot answer poll questions anonymously. This value defaults to `false`. -
poll_typeinteger, possible values:1, 2, 3, default:1— 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`. -
questionsarray— The information about the poll's questions.Items:
-
answer_max_characterinteger— 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_characterinteger— 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_requiredboolean, 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`. -
answersarray— 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_sensitiveboolean, 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`. -
namestring— 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. -
promptsarray— 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_questionstring— The question prompt's title. -
prompt_right_answersarray— 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_labelstring— The high score label for the `rating_max_value` field. This field only applies to the `rating_scale` poll. -
rating_max_valueinteger— The rating scale's maximum value, up to a maximum value of 10. This field only applies to the `rating_scale` poll. -
rating_min_labelstring— The low score label for the `rating_min_value` field. This field only applies to the `rating_scale` poll. -
rating_min_valueinteger— The rating scale's minimum value. This value cannot be less than zero. This field only applies to the `rating_scale` poll. -
right_answersarray— 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_dropdownboolean, 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`. -
typestring, 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.
-
-
titlestring— 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
-
pollsarrayItems:
-
anonymousboolean— Whether to allow meeting participants to answer poll questions anonymously: * `true` — Anonymous polls enabled. * `false` — Participants cannot answer poll questions anonymously. -
idstring— Meeting Poll ID -
poll_typeinteger, 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. -
questionsarray— The information about the poll's questions.Items:
-
answer_max_characterinteger— The allowed maximum number of characters. This field only returns for `short_answer` and `long_answer` polls. -
answer_min_characterinteger— The allowed minimum number of characters. This field only returns for `short_answer` and `long_answer` polls. -
answer_requiredboolean— Whether participants must answer the question: * `true` — The participant must answer the question. * `false` — The participant does not need to answer the question. -
answersarray— The poll question's available answers.Items:
string -
case_sensitiveboolean, default:false— Whether the correct answer is case sensitive. This field only returns for `fill_in_the_blank` polls: * `true` — The answer is case-sensitive. * `false` — The answer is not case-sensitive. -
namestring— The poll question's title. For `fill_in_the_blank` polls, this field is the poll's question. -
promptsarray— The information about the prompt questions. This object only returns for `matching` and `rank_order` polls.Items:
-
prompt_questionstring— The question prompt's title. -
prompt_right_answersarray— The question prompt's correct answers.Items:
string
-
-
rating_max_labelstring— The high score label for the `rating_max_value` field. This field only returns for `rating_scale` polls. -
rating_max_valueinteger— The rating scale's maximum value. This field only returns for `rating_scale` polls. -
rating_min_labelstring— The low score label for the `rating_min_value` field. This field only returns for `rating_scale` polls. -
rating_min_valueinteger— The rating scale's minimum value. This field only returns for `rating_scale` polls. -
right_answersarray— The poll question's correct answer(s).Items:
string -
show_as_dropdownboolean— 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. -
typestring, 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.
-
-
statusstring, 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 -
titlestring— 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:
-
pollsarray— An array of polls.Items:
All of:
-
idstring— The poll ID. -
statusstring, 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
-
anonymousboolean, default:false— Whether meeting participants can answer poll questions anonymously. This value defaults to `false`. -
poll_typeinteger, 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`. -
questionsarray— Information about the poll's questions.Items:
-
answer_max_characterinteger— 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_characterinteger— 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_requiredboolean, 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`. -
answersarray— 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_sensitiveboolean, 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`. -
namestring— 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. -
promptsarray— 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_questionstring— The question prompt's title. -
prompt_right_answersarray— 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_labelstring— The high score label for the `rating_max_value` field. This field only applies to the `rating_scale` poll. -
rating_max_valueinteger— The rating scale's maximum value, up to a maximum value of 10. This field only applies to the `rating_scale` poll. -
rating_min_labelstring— The low score label for the `rating_min_value` field. This field only applies to the `rating_scale` poll. -
rating_min_valueinteger— The rating scale's minimum value. This value cannot be less than zero. This field only applies to the `rating_scale` poll. -
right_answersarray— 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_dropdownboolean, 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`. -
typestring, 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.
-
-
titlestring— The poll's title, up to 64 characters.
-
-
total_recordsinteger— 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:
-
anonymousboolean, default:false— Whether meeting participants answer poll questions anonymously. This value defaults to `false`. -
poll_typeinteger, 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`. -
questionsarray— The information about the poll's questions.Items:
-
answer_max_characterinteger— 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_characterinteger— 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_requiredboolean, 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`. -
answersarray— 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_sensitiveboolean, 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`. -
namestring— 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. -
promptsarray— 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_questionstring— The question prompt's title. -
prompt_right_answersarray— 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_labelstring— The high score label for the `rating_max_value` field. This field only applies to the `rating_scale` poll. -
rating_max_valueinteger— The rating scale's maximum value, up to a maximum value of 10. This field only applies to the `rating_scale` poll. -
rating_min_labelstring— The low score label for the `rating_min_value` field. This field only applies to the `rating_scale` poll. -
rating_min_valueinteger— The rating scale's minimum value. This value cannot be less than zero. This field only applies to the `rating_scale` poll. -
right_answersarray— 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_dropdownboolean, 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`. -
typestring, 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.
-
-
titlestring— 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:
-
idstring— The meeting poll ID -
statusstring, 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
-
anonymousboolean, default:false— Whether meeting participants answer poll questions anonymously. This value defaults to `false`. -
poll_typeinteger, 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`. -
questionsarray— The information about the poll's questions.Items:
-
answer_max_characterinteger— 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_characterinteger— 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_requiredboolean, 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`. -
answersarray— 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_sensitiveboolean, 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`. -
namestring— 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. -
promptsarray— 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_questionstring— The question prompt's title. -
prompt_right_answersarray— 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_labelstring— The high score label for the `rating_max_value` field. This field only applies to the `rating_scale` poll. -
rating_max_valueinteger— The rating scale's maximum value, up to a maximum value of 10. This field only applies to the `rating_scale` poll. -
rating_min_labelstring— The low score label for the `rating_min_value` field. This field only applies to the `rating_scale` poll. -
rating_min_valueinteger— The rating scale's minimum value. This value cannot be less than zero. This field only applies to the `rating_scale` poll. -
right_answersarray— 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_dropdownboolean, 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`. -
typestring, 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.
-
-
titlestring— 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:
-
idstring— The meeting poll ID. -
statusstring, 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
-
anonymousboolean, default:false— Whether meeting participants answer poll questions anonymously. This value defaults to `false`. -
poll_typeinteger, 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`. -
questionsarray— Information about the poll's questions.Items:
-
answer_max_characterinteger— 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_characterinteger— 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_requiredboolean, 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`. -
answersarray— 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_sensitiveboolean, 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`. -
namestring— 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. -
promptsarray— 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_questionstring— The question prompt's title. -
prompt_right_answersarray— 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_labelstring— The high score label for the `rating_max_value` field. This field only applies to the `rating_scale` poll. -
rating_max_valueinteger— The rating scale's maximum value, up to a maximum value of 10. This field only applies to the `rating_scale` poll. -
rating_min_labelstring— The low score label for the `rating_min_value` field. This field only applies to the `rating_scale` poll. -
rating_min_valueinteger— The rating scale's minimum value. This value cannot be less than zero. This field only applies to the `rating_scale` poll. -
right_answersarray— 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_dropdownboolean, 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`. -
typestring, 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.
-
-
titlestring— 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:
-
anonymousboolean, default:false— Whether meeting participants answer poll questions anonymously. This value defaults to `false`. -
poll_typeinteger, 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`. -
questionsarray— The information about the poll's questions.Items:
-
answer_max_characterinteger— 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_characterinteger— 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_requiredboolean, 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`. -
answersarray— 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_sensitiveboolean, 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`. -
namestring— 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. -
promptsarray— 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_questionstring— The question prompt's title. -
prompt_right_answersarray— 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_labelstring— The high score label for the `rating_max_value` field. This field only applies to the `rating_scale` poll. -
rating_max_valueinteger— The rating scale's maximum value, up to a maximum value of 10. This field only applies to the `rating_scale` poll. -
rating_min_labelstring— The low score label for the `rating_min_value` field. This field only applies to the `rating_scale` poll. -
rating_min_valueinteger— The rating scale's minimum value. This value cannot be less than zero. This field only applies to the `rating_scale` poll. -
right_answersarray— 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_dropdownboolean, 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`. -
typestring, 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.
-
-
titlestring— 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_logsarray— Array of activity logs.Items:
-
client_typestring— The client interface type using which the activity was performed. -
emailstring, format:email— Email address of the user used for the activity. -
ip_addressstring— The IP address of the user's device. -
timestring, format:date-time— Time during which the activity occurred. -
typestring, possible values:"Sign in", "Sign out"— The type of activity. * `Sign in` — Sign in activity by user. * `Sign out` — Sign out activity by user. -
versionstring— Zoom client version of the user.
-
-
fromstring— Start date from which you want the activity logs report to be generated. -
next_page_tokenstring— 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_sizeinteger— The number of records returned with a single API call. -
tostring— 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_reportsarrayItems:
-
end_datestring, format:date— End date of the billing period. -
idstring— Unique Identifier of the report. Use this ID to retrieve billing invoice via the "Get Billing Invoices API". 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_datestring, format:date— Start date of the billing period. -
tax_amountstring— Total tax amount for this billing period. -
total_amountstring— Total billing amount for this billing period. -
typeinteger, 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
-
-
currencystring— 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
-
currencystring— Currency of the billed amount in the invoice. -
invoicesarrayItems:
-
end_datestring, format:date— End date of the invoice period. -
invoice_charge_namestring— Name of the invoice. -
invoice_numberstring— Invoice number -
quantityinteger— Number of licenses bought. -
start_datestring, format:date— Start date of the invoice period. -
tax_amountstring— Tax amount in the invoice. -
total_amountstring— 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:
-
fromstring, format:date— Start date for this report -
tostring, format:date— End date for this report
-
cloud_recording_storagearray— Array of cloud usage objectsItems:
-
datestring, format:date— Date of the usage -
free_usagestring— Free storage -
plan_usagestring— Paid storage -
usagestring— 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
-
datesarray— Array of date objects.Items:
-
datestring, format:date— Date for this object. -
meeting_minutesinteger— Number of meeting minutes on this date. -
meetingsinteger— Number of meetings on this date. -
new_usersinteger— Number of new users on this date. -
participantsinteger— Number of participants on this date.
-
-
monthinteger— Month for this report. -
yearinteger— 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_recordsarray— Array of disclaimer records.Items:
-
client_typestring— User login client types. When the user is a guest, the client type is empty. -
disclaimer_statusstring, possible values:"Agree", "Cancel", "Passive Agree", "Decline Attend"— The disclaimer status. -
disclaimer_typestring— The disclaimer type. -
display_namestring— The disclaimer's user name. -
group_idsarray— The user's group IDs.Items:
string— The group ID. -
is_guestboolean— Whether the user is a guest. -
is_zoom_eventboolean— Whether the meeting is a Zoom Event. -
meeting_idstring— The disclaimer's meeting ID. -
meeting_numberinteger, format:int64— The disclaimer's meeting number. -
timestring— The disclaimer's generated time. -
user_emailstring— 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_tokenstring— 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_sizeinteger— 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_meetingsarray— Array of history meetings.Items:
-
create_timestring— The meeting's create date and time. -
custom_fieldsarray— The custom attributes that the host is assignedItems:
-
keystring— The custom attribute's name. -
valuestring— The custom attribute's value.
-
-
departmentstring— The host's department. -
durationinteger— The meeting's duration, in minutes. -
end_timestring— The meeting's end date and time. -
feature_usedobject— Features used in the meeting.-
annotationboolean— Whether annotation was used in the meeting. -
avatarboolean— Whether anyone used an avatar in the meeting. -
breakout_roomboolean— Whether breakout room was enabled in the meeting. -
closed_captionboolean— Whether closed caption was enabled in the meeting. -
color_themesboolean— Whether anyone used color themes in the meeting. -
document_collaborationboolean— Whether anyone shared the document in the meeting. -
file_sharingboolean— Whether anyone sent files in the meeting chat. -
gen_ai_virtual_backgroundboolean— Whether anyone used the GenAI virtual background in the meeting. -
immersive_sceneboolean— Whether immersive scene was enabled in then meeting. -
in_meeting_chatboolean— Whether anyone in the meeting has sent a message in the meeting chat. -
join_by_roomboolean— Whether anyone has joined the meeting by Zoom Room. -
language_interpretationboolean— Whether language translation was used in the meeting. -
live_transcriptionboolean— Whether live transcription was turned on. -
live_translationboolean— Whether live translation was used in the meeting. -
meeting_questionsboolean— Whether the meeting questions was enabled. -
meeting_summaryboolean— Whether the meeting summary was enabled. -
meeting_wallpaperboolean— Whether host set wallpaper in the meeting. -
multi_shareboolean— Whether multi-share was used in the meeting -
multi_speakerboolean— Whether anyone used the multi-speaker view in the meeting. -
personalized_audio_isolationboolean— Whether anyone used personalized audio isolation in the meeting. -
pollboolean— Whether the meeting has poll data. -
portrait_lightingboolean— Whether anyone used portrait lighting in the meeting. -
raise_handboolean— Whether anyone has raised hand in the meeting. -
reactionboolean— Whether anyone sent an emoticon. -
record_to_cloudboolean— Whether to record the meeting to the cloud. -
record_to_computerboolean— Whether to record the meeting to the local computer. -
registrationboolean— Whether registration was enabled for the meeting. -
remote_controlboolean— Whether to use remote control in the meeting. -
screen_sharingboolean— Whether the screen was shared in the meeting. -
smart_recordingboolean— Whether smart recording was enabled for the meeting. -
switch_to_mobileboolean— Whether anyone switched the meeting to their mobile phone. -
telephone_usageboolean— Whether anyone has joined the meeting by telephone. -
video_onboolean— Whether the video was on in the meeting. -
virtual_backgroundboolean— Whether anyone used a virtual background in the meeting. -
waiting_roomboolean— Whether to open the waiting room for the meeting. -
whiteboardboolean— Whether a whiteboard was used in the meeting. -
zoom_appsboolean— Whether the Zoom app was used in the meeting.
-
-
grouparray— The host's groupsItems:
string— The host's group name -
host_display_namestring— The host's display name. -
host_emailstring— The host's email address. -
max_concurrent_viewsinteger— The maximum number of online viewers at the same time during the webinar, excluding panelists. -
meeting_idinteger, 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. -
meeting_uuidstring— 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. -
participantsinteger— The number of meeting participants. -
sourcestring— 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_timestring— The meeting's start date and time. -
topicstring— The meeting's topic. -
total_participant_minutesinteger— The total duration of all participants, in minutes. -
tracking_fieldsarray— The tracking fields and values assigned to the meeting.Items:
-
fieldstring— The label of the tracking field. -
valuestring— The value of the tracking field.
-
-
typestring, possible values:"Meeting", "Webinar"— The meeting type, either Meeting or Webinar. -
unique_viewersinteger— 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_tokenstring— 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_sizeinteger— 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_logsarray— 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_tokenstring— 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_sizenumber, 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_keysarray— Custom keys and values assigned to the meeting.Items:
-
keystring— Custom key associated with the user. -
valuestring— Value of the custom key associated with the user.
-
-
deptstring— Department of the host. -
durationinteger— Meeting duration. -
end_timestring, format:date-time— Meeting end time. -
idinteger, 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. -
participants_countinteger— Number of meeting participants. -
start_timestring, format:date-time— Meeting start time. -
topicstring— Meeting topic. -
total_minutesinteger— 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_fieldsarray— Tracking fields.Items:
-
fieldstring— Tracking fields type. -
valuestring— Tracking fields value.
-
-
typeinteger— Meeting type. -
user_emailstring— User email. -
user_namestring— User display name. -
uuidstring— 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:
- Is a legacy HIPAA BAA account.
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_tokenstring— 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_countinteger— The number of pages returned for the request made. -
page_sizeinteger, default:30— The number of records returned within a single API call. -
total_recordsinteger— The number of all records available across pages.
-
participantsarray— Array of meeting participant objects.Items:
-
bo_mtg_idstring— 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_keystring— The participant's SDK identifier. This value can be alphanumeric, up to a maximum length of 35 characters. -
durationinteger— 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. -
failoverboolean— Indicates if failover happened during the meeting. -
idstring— 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_timestring, format:date-time— Participant join time. -
leave_timestring, format:date-time— Participant leave time. -
namestring— Participant display name. This returns an empty string value if the account calling the API is a BAA account. -
participant_user_idstring— 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_idstring— Unique identifier of the registrant. This field is only returned if you entered "registrant_id" as the value of `include_fields` query parameter. -
statusstring, possible values:"in_meeting", "in_waiting_room"— The participant's status. * `in_meeting` - In a meeting. * `in_waiting_room` - In a waiting room. -
user_emailstring— 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_idstring— 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
-
idinteger, format:int64— The [meeting ID](https://support.zoom.us/hc/en-us/articles/201362373-What-is-a-Meeting-ID). -
questionsarray— Information about the meeting questions.Items:
-
emailstring, format:email— The participant's email address. -
first_namestring— 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 "Anonymous Attendee" value. -
last_namestring— 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 "Anonymous Attendee" value. -
namestring— 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 "Anonymous Attendee" value. -
question_detailsarray— Information about the user's questions and answers.Items:
-
answerstring— The user's given answer. -
date_timestring— The date and time at which the user answered the poll question. -
polling_idstring— The poll's ID. -
questionstring— The poll question.
-
-
-
start_timestring, format:date-time— The meeting's start time. -
uuidstring— 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&A report returned. Only available for Paid or ZMP account: {accountId}.
Content-Type: application/json
-
idinteger, format:int64— The meeting ID in `long` format, represented as int64 data type in JSON. Also known as the meeting number. -
questionsarray— Array of meeting question objects.Items:
-
emailstring— 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. -
namestring— Participant's display name. If the anonymous [Q&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&A without providing their name, the value of the `name` field is "Anonymous Attendee". -
question_detailsarray— Array of questions from user.Items:
-
answerstring— 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_detailsarray— Array of answers from the user.Items:
-
contentstring— The answer from host or the comment from participant. -
create_timestring— Content submit time. -
emailstring— 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. -
namestring— User display name, including the host or participant. -
typestring, possible values:"default", "host_answered_publicly", "host_answered_privately", "participant_commented", "host_answered", default:"default"— Type of answer. -
user_idstring— The user ID of the user who answered the question. This value returns blank for external users.
-
-
create_timestring— Question create time. -
questionstring— Asked question. -
question_idstring— Question UUID. -
question_statusstring, possible values:"default", "open", "dismissed", "answered", "deleted"— Question status. If not supported, the value will be `default`.
-
-
user_idstring— The user ID of the user who asked the question. This value returns blank for external users.
-
-
start_timestring, format:date-time— Meeting start time. -
uuidstring— 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_idinteger, format:int64— The meeting ID. -
meeting_uuidstring— The meeting's universally unique identifier (UUID). Each meeting instance generates a meeting UUID. -
start_timestring, format:date-time— The meeting's start time. -
survey_answersarray— Information about the survey questions and answers.Items:
-
answer_detailsarray— Information about the user's questions and answers.Items:
-
answerstring— The user's given answer. -
date_timestring— The date and time at which the user answered the survey question. -
questionstring— The survey question. -
question_idstring— The question's ID
-
-
emailstring, format:email— The participant's email address. -
first_namestring— 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 "Anonymous Attendee" value. -
last_namestring— 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 "Anonymous Attendee" value. -
namestring— 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 "Anonymous Attendee" value.
-
-
survey_idstring— The survey's ID -
survey_namestring— 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_tokenstring— 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_sizeinteger, default:30— The amount of records returns within a single API call.
-
operation_logsarray— Array of operation log objectsItems:
-
actionstring— Action -
category_typestring— Category type -
operation_detailstring— Operation detail -
operatorstring— The user who performed the operation. -
timestring, 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_tokenstring— 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_sizeinteger— The number of records returned with a single API call. -
remote_support_logsarray— Array of remote support logs.Items:
-
durationstring— The duration of remote support, formatted in `hh:mm:ss`. -
end_timestring— Remote support end time -
meeting_host_idstring— The meeting's host id. -
meeting_numberinteger— The meeting number. -
meeting_start_timestring— The meeting's start time. -
meeting_uuidstring— 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_timestring— The time to request remote support. -
start_timestring— Remote support start time. -
supportee_emailstring— The supportee's user email. -
supportee_namestring— The supportee's user name. -
supporter_emailstring— The supporter's user email. -
supporter_namestring— The supporter's user name. -
topicstring— The meeting's topic. -
wait_timestring— 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:
-
fromstring, format:date— Start date for this report. -
next_page_tokenstring— 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_countinteger— 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_sizeinteger— The number of records returned with a single API call. -
tostring, format:date— End date for this report. -
total_recordsinteger— 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_usagearray— Array of telephony objects.Items:
-
call_in_numberstring— Caller's call-in number. -
country_namestring— Country name. -
deptstring— User department. -
durationinteger— Call leg duration -
end_timestring, format:date-time— Call leg end time -
host_emailstring— User email. -
host_idstring— The user ID of the meeting host. -
host_namestring— User display name. -
meeting_idinteger, 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. -
meeting_typestring— Meeting type. -
phone_numberstring— Toll-free telephone number. -
ratenumber— Calling rate for the telephone call. -
signaled_numberstring— The number that is signaled to Zoom. -
start_timestring, format:date-time— Call leg start time -
totalnumber— Total cost (USD) for Call Out. Calculated as plan rate by duration. -
typestring, possible values:"toll-free", "call-out", "call-in", "US toll-number", "global toll-number", "premium", "premium call-in", "Toll"— Call type. -
uuidstring— 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:
-
fromstring, format:date— The report's start date. This value must be within the past six months. -
next_page_tokenstring— 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_sizeinteger, default:30— The number of records returned in a single API call. -
tostring, 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_eventsarray— Information about the upcoming event.Items:
-
deptstring— The event host's department. -
host_idstring— The event host's ID. -
host_namestring— The event host's name. -
idstring— The event's unique ID. -
start_timestring— The event's start time. -
topicstring— 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
fromandtorange. -
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:
-
fromstring, format:date— Start date for this report. -
next_page_tokenstring— 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_countinteger— The number of pages returned for the request made. -
page_numberinteger, default:1— The page number of the current results. -
page_sizeinteger, default:30— The number of records returned with a single API call. -
tostring, format:date— End date for this report. -
total_recordsinteger— The total number of all the records available across pages.
-
total_meeting_minutesinteger— Number of meeting minutes for this range. -
total_meetingsinteger— Number of meetings for this range. -
total_participantsinteger— Number of participants for this range. -
usersarray— Array of user objects.Items:
-
custom_attributesarray— Custom attributes that have been assigned to the user.Items:
-
keystring— Identifier for the custom attribute. -
namestring— Name of the custom attribute. -
valuestring— Value of the custom attribute.
-
-
deptstring— User department. -
emailstring— User email. -
idstring— User ID. -
meeting_minutesinteger— Number of meeting minutes for user. -
meetingsinteger— Number of meetings for user. -
participantsinteger— Number of participants in meetings for user. -
typeinteger— User type. -
user_namestring— 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_tokenstring— 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_countinteger— The number of pages returned for the request made. -
page_numberinteger, default:1— **Deprecated.** We will no longer support this field in a future release. Instead, use the `next_page_token` for pagination. -
page_sizeinteger, default:30— The number of records returned with a single API call. -
total_recordsinteger— The total number of all the records available across pages.
-
fromstring, format:date— The report's start date. -
meetingsarray— Information about the meeting.Items:
-
custom_keysarray— Information about the meeting's assigned custom keys and values. This returns a maximum of 10 items.Items:
-
keystring— The custom key name. -
valuestring— The custom key's value.
-
-
durationinteger— The meeting's duration. -
end_timestring, format:date-time— The meeting's end date and time. -
has_chatboolean— Whether or not the chat feature was used by this user in the meeting. This is meeting feature for attendee level. -
has_recordingboolean— Whether or not the recording feature was enabled by this user in the meeting. This is meeting feature for attendee level. -
has_screen_shareboolean— Whether or not the screenshare feature was used by this user in the meeting. This is meeting feature for attendee level. -
host_namestring— Host's name. -
host_organizationstring— Host Account Name of Hosting Organization. -
idinteger— The [meeting ID](https://support.zoom.us/hc/en-us/articles/201362373-What-is-a-Meeting-ID). -
join_timestring— The date and time at which the attendee joined the meeting. -
join_waiting_room_timestring— The date and time at which the attendee joined the waiting room. -
leave_timestring— The date and time at which the attendee left the meeting. -
meeting_encryption_statusinteger, possible values:1, 2— The meeting's encryption status. * `1` - E2E encryption. * `2` - Enhanced encryption. -
participants_countinteger— The number of meeting participants. -
participants_count_my_accountinteger— The number of meeting participants from my account. -
schedule_timestring— The meeting's scheduled date and time. -
session_keystring— The Video SDK custom session ID. -
sourcestring— 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_timestring, format:date-time— The meeting's start date and time. -
topicstring— The meeting's topic. -
total_minutesinteger— The sum of meeting minutes from all meeting participants in the meeting. -
typeinteger, 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_emailstring, format:email— The user's email address. -
user_namestring— The user's display name. -
uuidstring— The meeting's universally unique identifier (UUID). Each meeting instance generates a meeting UUID.
-
-
next_page_tokenstring— 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. -
tostring, 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_keysarray— Custom keys and values assigned to the meeting.Items:
-
keystring— Custom key associated with the user. -
valuestring— Value of the custom key associated with the user.
-
-
deptstring— Department of the host. -
durationinteger— Meeting duration. -
end_timestring, format:date-time— Meeting end time. -
idinteger, 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. -
participants_countinteger— Number of meeting participants. -
start_timestring, format:date-time— Meeting start time. -
topicstring— Meeting topic. -
total_minutesinteger— 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_fieldsarray— Tracking fields.Items:
-
fieldstring— Tracking fields type. -
valuestring— Tracking fields value.
-
-
typeinteger— Meeting type. -
user_emailstring— User email. -
user_namestring— User display name. -
uuidstring— 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_tokenstring— 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_countinteger— The number of pages returned for the request made. -
page_sizeinteger, default:30— The number of records returned within a single API call. -
total_recordsinteger— The number of all records available across pages.
-
participantsarray— Information about the webinar participant.Items:
-
bo_mtg_idstring— 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_keystring— The participant's SDK identifier. This value can be alphanumeric, up to a maximum length of 35 characters. -
durationinteger— 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. -
failoverboolean— Whether failover occurred during the webinar. -
idstring— 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_timestring, format:date-time— The participant's join time. -
leave_timestring, format:date-time— The participant's leave time. -
namestring— The participant's display name. This returns an empty string value if the account calling the API is a BAA account. -
participant_user_idstring— 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_idstring— The registrant's ID. This field only returns if you provide the `registrant_id` value for the `include_fields` query parameter. -
statusstring, possible values:"in_meeting", "in_waiting_room"— The participant's status. * `in_meeting` - In a meeting. * `in_waiting_room` - In a waiting room. -
user_emailstring— 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_idstring— 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
-
idinteger, format:int64— The webinar ID. -
questionsarray— Information about the webinar questions.Items:
-
emailstring, format:email— The participant's email address. -
first_namestring— 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 "Anonymous Attendee" value. -
last_namestring— 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 "Anonymous Attendee" value. -
namestring— 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 "Anonymous Attendee" value. -
question_detailsarray— Information about the user's questions and answers.Items:
-
answerstring— The user's given answer. -
date_timestring— The date and time at which the user answered the poll question. -
polling_idstring— The poll's ID. -
questionstring— The poll question.
-
-
-
start_timestring, format:date-time— The webinar's start time. -
uuidstring— 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
-
idinteger, format:int64— Webinar ID in `long` format, represented as int64 data type in JSON. Also known as the webinar number. -
questionsarray— Array of webinar question objects.Items:
-
emailstring— 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. -
namestring— Participant's display name. If anonymous [Q&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&A without providing their name, the value of the `name` field will be "Anonymous Attendee". -
question_detailsarray— Array of questions from the user.Items:
-
answerstring— 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_detailsarray— Array of answers from user.Items:
-
contentstring— The answer from the host or the comment from a participant. -
create_timestring— Content submission time. -
emailstring— 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. -
namestring— User display name, including the host or participant. -
typestring, possible values:"default", "host_answered_publicly", "host_answered_privately", "participant_commented", "host_answered", default:"default"— Type of answer. -
user_idstring— The user ID of the user who answered the question. This value returns blank for external users.
-
-
create_timestring— Question creation time. -
questionstring— Asked question. -
question_idstring— Question UUID. -
question_statusstring, possible values:"default", "open", "dismissed", "answered", "deleted"— Question status. If not supported, the value will be `default`.
-
-
user_idstring— The user ID of the user who asked the question. This value returns blank for external users.
-
-
start_timestring, format:date-time— Webinar start time. -
uuidstring— 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_timestring, format:date-time— The webinar's start time. -
survey_answersarray— Information about the survey questions and answers.Items:
-
answer_detailsarray— Information about the user's questions and answers.Items:
-
answerstring— The user's given answer. -
date_timestring— The date and time at which the user answered the survey question. -
questionstring— The survey question. -
question_idstring— The question's ID
-
-
emailstring, format:email— The participant's email address. -
first_namestring— 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 "Anonymous Attendee" value. -
last_namestring— 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 "Anonymous Attendee" value. -
namestring— 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 "Anonymous Attendee" value.
-
-
survey_idstring— The survey's ID -
survey_namestring— The name of survey -
webinar_idinteger, format:int64— The webinar ID. -
webinar_uuidstring— 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_countriesarrayItems:
-
codestring— Country code. -
idstring— Two letter country ID. -
namestring— The country's name.
-
-
total_recordsinteger— 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
-
callout_countries(required)array— List of callout countries.Items:
-
id(required)string— The call-out country's two-letter [ISO country code](https://developers.zoom.us/docs/api/rest/other-references/abbreviation-lists/#countries).
-
Example:
{
"callout_countries": [
{
"id": "1"
}
]
}
Responses
Status: 201 **HTTP Status Code:** `201` **Created** Call-out countries created.
Content-Type: application/json
-
callout_countriesarray— List of Call-out countries.Items:
-
codestring— Country code for Phone number. -
idstring— Country ID. -
namestring— 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_numbersarrayItems:
-
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_meetingsboolean— Control whether the number can be used to attend 3rd-party meetings. -
allow_joinboolean— 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_accountsarray— The current internal number is assigned to this account list.Items:
-
idstring— The account ID. -
namestring— The account name. -
typeinteger— The account type. * `1` - Master account * `2` - Sub account
-
-
idstring— The internal number's unique identifier. -
visibleboolean— 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_tokenstring— 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_sizeinteger, default:30— The number of records that you specified to get in the response per page. -
total_recordsinteger— 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_numbersarrayItems:
-
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_meetingsboolean— Control whether the number can be used to attend 3rd party meetings. -
allow_joinboolean— 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`. -
visibleboolean— 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_numbersarrayItems:
-
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_meetingsboolean— Control whether the number can be used to attend 3rd party meetings. -
allow_joinboolean— 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`. -
idstring— Unique identifier of the internal number. -
visibleboolean— 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
accountIdpath parameter. - To update a Master Account's internal number, use the
mevalue for theaccountIdpath 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_allboolean— Whether editing the internal number will also affect its shared accounts. -
allow_for_external_meetingsboolean— Whether to allow the phone number to be used to attend 3rd party meetings. -
allow_joinboolean— 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`. -
countrystring— The phone number's [two-letter country code](https://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#countries). -
display_numberstring— The phone number's display format. -
labelsstring— A short description for the phone number. -
languagesstring, 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) -
numberstring— The phone number, in [E.164 format](https://en.wikipedia.org/wiki/E.164). -
typeinteger, possible values:0, 1— The type of phone number. * `0` - Toll. * `1` - Tollfree. -
visibleboolean— 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_numbersarrayItems:
-
countrystring— Country ID, such as `US`.) -
numberstring— Phone number.
-
-
total_recordsinteger— 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_numbersarray— 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_numberboolean— 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_countriesinteger, 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_numbersinteger, 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
-
enableboolean— 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_accountboolean— 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_numberboolean— 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_countriesinteger— 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_numbersinteger, 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_trunksarrayItems:
-
dnisstring— DNIS of the SIP trunk. -
idstring— Unique identifier of the sip trunk. -
namestring— Name assigned to the SIP trunk. -
number_prefixstring— Prefix of the SIP Connected Audio phone number. -
outbound_caller_idstring— Outbound caller Id assigned to the trunk. -
sip_server_addressstring— IP address or domain of the SIP trunk.
-
-
total_recordsinteger— 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_trunksarray— Array of one or more SIP trunk objects.Items:
-
dnisstring— 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. -
idstring— 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_idstring— 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_trunksarrayItems:
-
dnisstring— DNIS - identifier for the SIP trunk enabled account. -
idstring— Unique identifier of the SIP trunk. -
namestring— Name of the SIP trunk. -
number_prefixstring— 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_addressstring— 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_tokenstring -
page_sizeinteger, default:30— The number of records returned within a single API call. -
phonesarray— SIP phones object.Items:
-
authorization_namestring— The authorization name of the user that is registered for SIP phone. -
display_numberstring— 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. -
domainstring— The name or IP address of your provider's SIP domain. -
passwordstring— The password generated for the user in the SIP account. -
phone_idstring— The SIP phone ID. -
registration_expire_timeinteger— 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. -
serverobject— Defined a set of basic components of SIP network architecture, including proxy_server, register_server and transport_protocol.-
proxy_serverstring— 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_serverstring— 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_protocolstring, possible values:"UDP", "TCP", "TLS", "AUTO"— Protocols supported by the SIP provider. The value must be either `UDP`, `TCP`, `TLS`, `AUTO`.
-
-
server_2object— Defined a set of basic components of SIP network architecture, including proxy_server, register_server and transport_protocol.-
proxy_serverstring— 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_serverstring— 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_protocolstring, possible values:"UDP", "TCP", "TLS", "AUTO"— Protocols supported by the SIP provider. The value must be either `UDP`, `TCP`, `TLS`, `AUTO`.
-
-
server_3object— Defined a set of basic components of SIP network architecture, including proxy_server, register_server and transport_protocol.-
proxy_serverstring— 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_serverstring— 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_protocolstring, possible values:"UDP", "TCP", "TLS", "AUTO"— Protocols supported by the SIP provider. The value must be either `UDP`, `TCP`, `TLS`, `AUTO`.
-
-
user_emailstring, 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_namestring— The phone number associated with the user in the SIP account. -
voice_mailstring— 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_serverstring— 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_serverstring— 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_protocolstring, 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_numberstring— 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_timeinteger, 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_2object— Defined a set of basic components of SIP network architecture, including proxy_server, register_server and transport_protocol.-
proxy_serverstring— 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_serverstring— 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_protocolstring, possible values:"UDP", "TCP", "TLS", "AUTO"— Protocols supported by the SIP provider. The value must be either `UDP`, `TCP`, `TLS`, `AUTO`.
-
-
server_3object— Defined a set of basic components of SIP network architecture, including proxy_server, register_server and transport_protocol.-
proxy_serverstring— 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_serverstring— 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_protocolstring, possible values:"UDP", "TCP", "TLS", "AUTO"— Protocols supported by the SIP provider. The value must be either `UDP`, `TCP`, `TLS`, `AUTO`.
-
-
voice_mailstring— 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_namestring— The authorization name of the user that is registered for SIP phone. -
display_numberstring— 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. -
domainstring— The name or IP address of your provider's SIP domain (example: CDC.WEB). -
passwordstring— The password generated for the user in the SIP account. -
phone_idstring— The SIP phone ID. -
registration_expire_timeinteger, 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. -
serverobject— Defined a set of basic components of SIP network architecture, including proxy_server, register_server and transport_protocol.-
proxy_serverstring— 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_serverstring— 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_protocolstring, possible values:"UDP", "TCP", "TLS", "AUTO"— Protocols supported by the SIP provider. The value must be either `UDP`, `TCP`, `TLS`, `AUTO`.
-
-
server_2object— Defined a set of basic components of SIP network architecture, including proxy_server, register_server and transport_protocol.-
proxy_serverstring— 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_serverstring— 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_protocolstring, possible values:"UDP", "TCP", "TLS", "AUTO"— Protocols supported by the SIP provider. The value must be either `UDP`, `TCP`, `TLS`, `AUTO`.
-
-
server_3object— Defined a set of basic components of SIP network architecture, including proxy_server, register_server and transport_protocol.-
proxy_serverstring— 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_serverstring— 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_protocolstring, possible values:"UDP", "TCP", "TLS", "AUTO"— Protocols supported by the SIP provider. The value must be either `UDP`, `TCP`, `TLS`, `AUTO`.
-
-
user_emailstring, 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_namestring— The phone number associated with the user in the SIP account. -
voice_mailstring— 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_namestring— The authorization name of the user that is registered for SIP phone. -
display_numberstring— 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. -
domainstring— The name or IP address of your provider's SIP domain, such as example.com. -
passwordstring— The password generated for the user in the SIP account. -
registration_expire_timeinteger, 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. -
serverobject— Defined a set of basic components of SIP network architecture, including proxy_server, register_server and transport_protocol.-
proxy_serverstring— 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_serverstring— 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_protocolstring, possible values:"UDP", "TCP", "TLS", "AUTO"— Protocols supported by the SIP provider. The value must be either `UDP`, `TCP`, `TLS`, `AUTO`.
-
-
server_2object— Defined a set of basic components of SIP network architecture, including proxy_server, register_server and transport_protocol.-
proxy_serverstring— 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_serverstring— 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_protocolstring, possible values:"UDP", "TCP", "TLS", "AUTO"— Protocols supported by the SIP provider. The value must be either `UDP`, `TCP`, `TLS`, `AUTO`.
-
-
server_3object— Defined a set of basic components of SIP network architecture, including proxy_server, register_server and transport_protocol.-
proxy_serverstring— 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_serverstring— 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_protocolstring, possible values:"UDP", "TCP", "TLS", "AUTO"— Protocols supported by the SIP provider. The value must be either `UDP`, `TCP`, `TLS`, `AUTO`.
-
-
user_namestring— The phone number associated with the user in the SIP account. -
voice_mailstring— 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
-
fromstring, 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_tokenstring— 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_sizeinteger, default:30— The number of records returned with a single API call. -
summariesarray— List of meeting summary objects.Items:
-
meeting_end_timestring, format:date-time— The meeting's end date and time. -
meeting_host_emailstring, format:email— The meeting host's email address. -
meeting_host_idstring— The ID of the user who is set as the meeting host. -
meeting_idinteger, 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_timestring, format:date-time— The meeting's start date and time. -
meeting_topicstring— Meeting topic. -
meeting_uuidstring— 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_timestring, format:date-time— The date and time when the meeting summary was created. -
summary_end_timestring, format:date-time— The summary's end date and time. -
summary_last_modified_timestring, format:date-time— The date and time when the meeting summary was last modified. -
summary_start_timestring, format:date-time— The summary's start date and time.
-
-
tostring, 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_summaryobject— The edited summary content.-
next_stepsarray— The user edited next steps.Items:
string— The user edited next step. -
summary_detailsstring— The user edited summary details. -
summary_overviewstring— The user edited summary overview.
-
-
meeting_end_timestring, format:date-time— The meeting's end date and time. -
meeting_host_emailstring, format:email— The meeting host's email address. -
meeting_host_idstring— The ID of the user who is set as the meeting host. -
meeting_idinteger, 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_timestring, format:date-time— The meeting's start date and time. -
meeting_topicstring— The meeting topic. -
meeting_uuidstring— 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_stepsarray— The next steps.Items:
string— The next step. -
summary_contentstring— 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_timestring, format:date-time— The date and time when the meeting summary was created. -
summary_detailsarray— The summary content details.Items:
-
labelstring— The summary label. -
summarystring— The summary content.
-
-
summary_doc_urlstring, format:uri— The URL to view the full summary document in Zoom Docs. -
summary_end_timestring, format:date-time— The summary's end date and time. -
summary_last_modified_timestring, format:date-time— The date and time when the meeting summary was last modified. -
summary_last_modified_user_emailstring— The user email of the user who last modified the meeting summary. -
summary_last_modified_user_idstring— The user ID of the user who last modified the meeting summary. -
summary_overviewstring— The summary overview. -
summary_start_timestring, format:date-time— The summary's start date and time. -
summary_titlestring— 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_surveyobject— Information about the customized meeting survey.-
anonymousboolean, default:false— Allow participants to anonymously answer survey questions. This value defaults to `true`. -
feedbackstring— 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_questionsboolean, default:false— Whether to display the number in the question name. This value defaults to `true`. -
questionsarray— Information about the meeting survey's questions.Items:
-
answer_max_characterinteger— 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_characterinteger— 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_requiredboolean, 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`. -
answersarray— 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 -
namestring— The survey question, up to 420 characters. -
promptsarray— 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_questionstring— The question prompt's title.
-
-
rating_max_labelstring— 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_valueinteger— The rating scale's maximum value, up to a maximum value of 10. This field only applies to the `rating_scale` survey. -
rating_min_labelstring— 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_valueinteger— The rating scale's minimum value. This value cannot be less than zero. This field only applies to the `rating_scale` survey. -
show_as_dropdownboolean, 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`. -
typestring, 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_typeboolean, default:false— Whether to display the question type in the question name. This value defaults to `false`. -
titlestring— The survey's title, up to 64 characters.
-
-
show_in_the_browserboolean, 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_surveystring— 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_surveyobject— Information about the customized meeting survey.-
anonymousboolean, default:false— Allow participants to anonymously answer survey questions. This value defaults to `true`. -
feedbackstring— 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_questionsboolean, default:false— Whether to display the number in the question name. This value defaults to `true`. -
questionsarray— Information about the meeting survey's questions.Items:
-
answer_max_characterinteger— 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_characterinteger— 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_requiredboolean, 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`. -
answersarray— 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 -
namestring— The survey question, up to 420 characters. -
promptsarray— 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_questionstring— The question prompt's title.
-
-
rating_max_labelstring— 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_valueinteger— The rating scale's maximum value, up to a maximum value of 10. This field only applies to the `rating_scale` survey. -
rating_min_labelstring— 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_valueinteger— The rating scale's minimum value. This value cannot be less than zero. This field only applies to the `rating_scale` survey. -
show_as_dropdownboolean, 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`. -
typestring, 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_typeboolean, default:false— Whether to display the question type in the question name. This value defaults to `false`. -
titlestring— The survey's title, up to 64 characters.
-
-
show_in_the_browserboolean, 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_surveystring— 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_unrestrictedboolean— Control restriction on account users adding a TSP number outside of account's dial in numbers. -
dial_in_numbersarray— List of dial in numbers.Items:
-
codestring— Country code. -
numberstring— Dial-in number. Length is less than 16. -
typestring— Dial-in number type.
-
-
enableboolean— Enable Telephony Service Provider for account users. -
master_account_setting_extendedboolean— For master account, extend its TSP setting to all sub accounts. For sub account, extend TSP setting from master account. -
modify_credential_forbiddenboolean— Control restriction on account users being able to modify their TSP credentials. -
tsp_bridgestring, possible values:"US_TSP_TB", "EU_TSP_TB"— Telephony bridge zone -
tsp_enabledboolean— Enable TSP feature for account. This has to be enabled to use any other tsp settings/features. -
tsp_providerstring— 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_unrestrictedboolean— Control restriction on account users adding a TSP number outside of account's dial in numbers. -
enableboolean— Enable 3rd party audio conferencing for account users -
master_account_setting_extendedboolean— For master account, extend its TSP setting to all sub accounts. For sub account, extend TSP setting from master account. -
modify_credential_forbiddenboolean— Control restriction on account users being able to modify their TSP credentials. -
tsp_bridgestring, possible values:"US_TSP_TB", "EU_TSP_TB"— Telephony bridge -
tsp_enabledboolean— Enable TSP feature for account. This has to be enabled to use any other tsp settings/features. -
tsp_providerstring— 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_accountsarray— 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_numbersarray— List of dial in numbers.Items:
-
codestring— Country code. -
country_labelstring— Country label, if passed, will display in place of code. -
numberstring— Dial-in number. Length is less than 16. -
typestring, possible values:"toll", "tollfree", "media_link"— Dial-in number types. `toll` - Toll number. `tollfree` - Toll free number. `media_link` - Media link.
-
-
idstring, possible values:"1", "2"— The TSP account's ID. -
tsp_bridgestring, 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_numbersarray— List of dial in numbers.Items:
-
codestring— Country code. -
country_labelstring— Country Label, if passed, will display in place of code. -
numberstring— Dial-in number: length is less than 16. -
typestring, possible values:"toll", "tollfree", "media_link"— Dial-in number types: `toll` - Toll number. `tollfree` -Toll free number. `media_link` - Media link.
-
-
tsp_bridgestring, 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:
-
idstring— 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_numbersarray— List of dial in numbers.Items:
-
codestring— Country code. -
country_labelstring— Country Label, if passed, will display in place of code. -
numberstring— Dial-in number: length is less than 16. -
typestring, possible values:"toll", "tollfree", "media_link"— Dial-in number types: `toll` - Toll number. `tollfree` -Toll free number. `media_link` - Media link.
-
-
tsp_bridgestring, 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_urlstring— 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_numbersarray— List of dial in numbers.Items:
-
codestring— Country code. -
country_labelstring— Country Label, if passed, will display in place of code. -
numberstring— Dial-in number: length is less than 16. -
typestring, 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.
-
-
idstring— The TSP account's ID. -
tsp_bridgestring, 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_numbersarray— List of dial in numbers.Items:
-
codestring— Country code. -
country_labelstring— Country label, if passed, will display in place of code. -
numberstring— Dial-in number. Length is less than 16. -
typestring, 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_bridgestring, 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
-
templatesarrayItems:
-
idstring— The template ID. -
namestring— The template name. -
typeinteger— The template type: `1`: Meeting template `2`: Admin meeting template
-
-
total_recordsinteger— 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_idinteger, format:int64— The meeting ID - the meeting number in long (int64) format. -
namestring— The template name. -
overwriteboolean, default:false— Overwrite an existing meeting template if the template is created from same existing meeting. -
save_recurrenceboolean, 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:
-
idstring— The template ID. -
namestring— 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_recordsinteger— The number of all records available across pages. -
tracking_fieldsarray— Array of tracking fields.Items:
-
fieldstring— Label or name for the tracking field. -
idstring— Tracking field's ID. -
recommended_valuesarray— Array of recommended valuesItems:
string -
requiredboolean— Tracking field required. -
visibleboolean— 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
-
fieldstring— Label/ Name for the tracking field. -
recommended_valuesarray— Array of recommended valuesItems:
string -
requiredboolean— Tracking Field Required -
visibleboolean— 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:
-
idstring— Tracking Field ID
-
fieldstring— Label/ Name for the tracking field. -
recommended_valuesarray— Array of recommended valuesItems:
string -
requiredboolean— Tracking Field Required -
visibleboolean— 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
-
fieldstring— Label or name for the tracking field. -
idstring— Tracking field ID. -
recommended_valuesarray— Array of recommended values.Items:
string -
requiredboolean— Tracking field required. -
visibleboolean— 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
-
fieldstring— Label or name for the tracking field. -
recommended_valuesarray— Array of recommended values.Items:
string -
requiredboolean— Tracking field required. -
visibleboolean— 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
- A Pro or higher plan with a Webinar plan add-on.
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_tokenstring— 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_countinteger— The number of pages returned for the request made. -
page_numberinteger, 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_sizeinteger, default:30— The number of records returned with a single API call. -
total_recordsinteger— The total number of all the records available across pages.
-
registrantsarray— List of registrant objects.Items:
All of:
-
idstring— 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. -
addressstring— The registrant's address. -
citystring— The registrant's city. -
commentsstring— The registrant's questions and comments. -
countrystring— The registrant's two-letter ISO [country code](https://developers.zoom.us/docs/api/rest/other-references/abbreviation-lists/#countries). -
custom_questionsarray— Information about custom questions.Items:
-
titlestring— The title of the custom question. -
valuestring— The custom question's response value. This has a limit of 128 characters.
-
-
industrystring— The registrant's industry. -
job_titlestring— The registrant's job title. -
last_namestring— The registrant's last name. -
no_of_employeesstring, 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` -
orgstring— The registrant's organization. -
phonestring— The registrant's phone number. -
purchasing_time_framestring, 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_processstring, possible values:"", "Decision Maker", "Evaluator/Recommender", "Influencer", "Not involved"— The registrant's role in the purchase process. * `Decision Maker` * `Evaluator/Recommender` * `Influencer` * `Not involved` -
statestring— The registrant's state or province. -
statusstring, possible values:"approved", "denied", "pending"— The registrant's status. * `approved` - Registrant is approved. * `denied` - Registrant is denied. * `pending` - Registrant is waiting for approval. -
zipstring— The registrant's ZIP or postal code.
-
create_timestring, format:date-time— The time when the registrant registered. -
join_urlstring, format:string— The URL that an approved registrant can use to join the meeting or webinar. -
statusstring— 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
- A Pro or higher plan with a Webinar plan add-on.
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:
-
webinarsarray— List of ended webinar instances.Items:
All of:
-
start_timestring, format:date-time— Start time. -
uuidstring— 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
-
templatesarray— Information about the webinar templates.Items:
-
idstring— The webinar template's ID. -
namestring— The webinar template's name. -
typeinteger— The webinar template type. `1`: Webinar template `2`: Admin webinar template
-
-
total_recordsinteger— 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
- A Pro or higher plan with a Webinar plan add-on.
Scopes: webinar:master
Granular Scopes: webinar:write:template:master
Rate Limit Label: MEDIUM
Request Body
Content-Type: application/json
All of:
-
namestring— The webinar template's name. -
overwriteboolean, default:false— Overwrite an existing webinar template if the template is created from same existing webinar. -
save_recurrenceboolean, default:false— If the field is set to true, the recurrence webinar template will be saved as the scheduled webinar. -
webinar_idinteger, 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:
-
idstring— The webinar template's ID. -
namestring— 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_tokenstring— 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_countinteger— The number of pages returned for the request made. -
page_numberinteger, default:1— **Deprecated** We will no longer support this field in a future release. Instead, use the `next_page_token` for pagination. -
page_sizeinteger, default:30— The number of records returned with a single API call. -
total_recordsinteger— The total number of all the records available across pages.
-
webinarsarray— List of webinar objects.Items:
All of:
-
agendastring— 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_atstring, format:date-time— The webinar's creation time. -
durationinteger— The webinar's duration, in minutes. -
host_idstring— The host's ID. -
idinteger, format:int64— The webinar ID. -
is_events_webinarboolean— The webinar is created from zoom events -
is_simuliveboolean— Whether the webinar is `simulive`. -
join_urlstring— The URL to join the webinar. -
start_timestring, format:date-time— The webinar's start time. -
timezonestring— The webinar's [timezone](https://developers.zoom.us/docs/api/rest/other-references/abbreviation-lists/#timezones). -
topicstring— The webinar's topic. -
typeinteger, 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. -
uuidstring— 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
- A Pro or higher plan with a Webinar plan add-on.
Scopes: webinar:master
Granular Scopes: webinar:write:webinar:master
Rate Limit Label: LIGHT
Request Body
Content-Type: application/json
-
agendastring— Webinar description. -
default_passcodeboolean, 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. -
durationinteger— Webinar duration, in minutes. Used for scheduled webinars only. -
is_simuliveboolean— Whether to set the webinar to simulive. -
passwordstring— 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_idstring— The previously recorded file's ID for `simulive`. -
recurrenceobject— 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_timestring, 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_timesinteger, 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_dayinteger— 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_weekinteger, 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_dayinteger, 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_intervalinteger— 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_daysstring— 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_forstring— The email address or user ID of the user to schedule a webinar for. -
settingsobject— Create webinar settings.-
add_audio_watermarkboolean— 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_watermarkboolean— 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_regionsarray— 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_stateboolean— 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_devicesboolean— Allow attendees to join from multiple devices. -
alternative_host_update_pollsboolean— Whether the **Allow alternative hosts to add or edit polls** feature is enabled. This requires Zoom version 5.8.0 or higher. -
alternative_hostsstring— Alternative host emails or IDs. Multiple values separated by comma. -
approval_typeinteger, 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_notificationobject— Send reminder email to attendees and panelists.-
enableboolean— * `true` - Send reminder email to attendees and panelists. * `false` - Do not send reminder email to attendees and panelists. -
typeinteger, 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.
-
-
audiostring, 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_infostring— Third party audio conference information. -
authentication_domainsstring— 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_optionstring— 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_recordingstring, 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_registrationboolean— Close registration after event date. -
contact_emailstring— Contact email for registration -
contact_namestring— Contact name for registration -
email_in_attendee_reportboolean— Whether to include guest's email addresses in webinars' attendee reports. -
email_languagestring— 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_brandingboolean— 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_loginboolean— 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_domainsstring— 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_notificationobject— Send follow-up email to absentees.-
enableboolean— * `true` - Send follow-up email to absentees. * `false` - Do not send follow-up email to absentees. -
typeinteger, 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_notificationobject— Send follow-up email to attendees.-
enableboolean— * `true`: Send follow-up email to attendees. * `false`: Do not send follow-up email to attendees. -
typeinteger, 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_countriesarray— List of global dial-in countriesItems:
string -
hd_videoboolean, default:false— Default to HD video. Not supported for simulive webinar. -
hd_video_for_attendeesboolean, default:false— Whether HD video for attendees is enabled. This value defaults to `false`. Not supported for simulive webinar. -
host_videoboolean— Start video when host joins webinar. Not supported for simulive webinar. -
language_interpretationobject— 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.-
enableboolean— 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. -
interpretersarray— Information about the webinar's language interpreters.Items:
-
emailstring, format:email— The interpreter's email address. -
interpreter_languagesstring— 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`. -
languagesstring— 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_authenticationboolean— 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_demandboolean, default:false— Make the webinar on-demand. Not supported for simulive webinar. -
panelist_authenticationboolean— Require panelists to authenticate to join. If not provided, the default value will be based on the user's setting. -
panelists_invitation_email_notificationboolean— Send invitation email to panelists. If `false`, do not send invitation email to panelists. -
panelists_videoboolean— Start video when panelists join webinar. Not supported for simulive webinar. -
post_webinar_surveyboolean— Zoom will open a survey page in attendees' browsers after leaving the webinar -
practice_sessionboolean, default:false— Enable practice session. -
question_and_answerobject— [Q&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_questionsboolean— * `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_replyboolean— If simulive webinar, * `true` - allow auto-reply to attendees. * `false` - don't allow auto-reply to the attendees. -
allow_submit_questionsboolean— * `true` - Allow participants to submit questions. * `false` - Do not allow submit questions. -
answer_questionsstring, 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&A. -
attendees_can_commentboolean— * `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_upvoteboolean— * `true` - Attendees can click the thumbs up button to bring popular questions to the top of the Q&A window. * `false` - Attendees can not click the thumbs up button on questions. -
auto_reply_textstring— If `allow_auto_reply` = true, the text to be included in the automatic response. -
enableboolean— * `true` - Enable [Q&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&A for webinar. If not provided, the default value will be based on the user's setting.
-
-
registrants_confirmation_emailboolean— Send confirmation email to registrants. -
registrants_email_notificationboolean— 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_numberinteger, 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_typeinteger, 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_participantsboolean, 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_attendeesboolean, default:false— Whether to always send 1080p video to attendees. This value defaults to `false`.(Not supported for simulive webinar.) -
show_join_infoboolean— 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_buttonboolean— Show social share buttons on the registration page. -
sign_language_interpretationobject— 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.-
enableboolean— 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. -
interpretersarray— Information about the webinar's sign language interpreters.Items:
-
emailstring, format:email— The interpreter's email address. -
sign_languagestring— 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_urlstring— Survey URL for post webinar survey.
-
-
simulive_delay_startobject— {"enable":false,"time":0,"timeunit":"second"}-
enableboolean— Whether simulive need delay playback. -
timeinteger— 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. -
timeunitstring, 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_timestring, 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_idstring— 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. -
timezonestring— 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). -
topicstring— The webinar's topic. -
tracking_fieldsarray— Tracking fields.Items:
-
field(required)string— Tracking fields type. -
valuestring— Tracking fields value.
-
-
transition_to_liveboolean— Whether to transition a simulive webinar to live. The host must be present at the time of transition. -
typeinteger, 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
-
agendastring— The webinar's agenda. -
created_atstring, format:date-time— Creation time. -
creation_sourcestring, 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. -
durationinteger— The webinar's duration. -
encrypted_passcodestring— Encrypted passcode for third party endpoints (H323/SIP). -
h323_passcodestring— H.323/SIP room system passcode. -
host_emailstring, format:email— Email address of the meeting host. -
host_idstring— ID of the user set as host of the webinar. -
idinteger, format:int64— Webinar ID in **long** format, represented as int64 data type in JSON. Also known as the webinar number. -
is_simuliveboolean— Whether the webinar is `simulive`. -
join_urlstring— URL to join the webinar. Only share this URL with the users who should be invited to the webinar. -
occurrencesarray— Array of occurrence objects.Items:
-
durationinteger— Duration. -
occurrence_idstring— 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_timestring, format:date-time— Start time. -
statusstring, possible values:"available", "deleted"— Occurrence status. `available` - Available occurrence. `deleted` - Deleted occurrence.
-
-
passwordstring— 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_idstring— The previously recorded file's ID for `simulive`. -
recurrenceobject— 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_timestring, 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_timesinteger, 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_dayinteger— 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_weekinteger, 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_dayinteger, 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_intervalinteger— 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_daysstring— 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_urlstring— The URL that registrants can use to register for a webinar. This field is only returned for webinars that have enabled registration. -
settingsobject— Webinar settings.-
add_audio_watermarkboolean— Add audio watermark that identifies the participants. If not provided, the default value will be based on the user's setting. -
add_watermarkboolean— Add watermark that identifies the viewing participant. If not provided, the default value will be based on the user's setting. -
additional_data_center_regionsarray— 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_stateboolean— 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_devicesboolean— Allow attendees to join from multiple devices. -
alternative_host_update_pollsboolean— Whether the **Allow alternative hosts to add or edit polls** feature is enabled. This requires Zoom version 5.8.0 or higher. -
alternative_hostsstring— Alternative host emails or IDs. Multiple values separated by comma. -
approval_typeinteger, possible values:0, 1, 2, default:2— `0` - Automatically approve. `1` - Manually approve. `2` - No registration required. -
attendees_and_panelists_reminder_email_notificationobject— Send reminder email to attendees and panelists.-
enableboolean— * `true` - Send reminder email to attendees and panelists. * `false` - Do not send reminder email to attendees and panelists. -
typeinteger, 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.
-
-
audiostring, possible values:"both", "telephony", "voip", "thirdParty", default:"both"— Determine how participants can join the audio portion of the webinar. -
audio_conference_infostring— Third party audio conference info. -
authentication_domainsstring— 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_namestring— 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_optionstring— Webinar authentication option ID. -
auto_recordingstring, possible values:"local", "cloud", "none", default:"none"— Automatic recording. `local` - Record on local. `cloud` - Record on cloud. `none` - Disabled. -
close_registrationboolean— Close registration after event date. -
contact_emailstring— Contact email for registration -
contact_namestring— Contact name for registration -
email_in_attendee_reportboolean— Whether to include guest's email addresses in attendee reports for webinars. -
email_languagestring— 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_brandingboolean— 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_loginboolean— 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_domainsstring— 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_notificationobject— Send follow-up email to absentees.-
enableboolean— * `true` - Send follow-up email to absentees. * `false` - Do not send follow-up email to absentees. -
typeinteger, 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_notificationobject— Send follow-up email to attendees.-
enableboolean— * `true` - Send follow-up email to attendees. * `false` - Do not send follow-up email to attendees. -
typeinteger, 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_countriesarray— List of global dial-in countriesItems:
string -
global_dial_in_numbersarray— A list of available dial-in numbers for different countries or regions.Items:
-
citystring— City of the number. -
countrystring— The country code. -
country_namestring— Full name of country. -
numberstring— Dial-in phone number. -
typestring, possible values:"toll", "tollfree", "premium"— Dial-in number type.
-
-
hd_videoboolean, default:false— Default to HD video. -
hd_video_for_attendeesboolean, default:false— Whether HD video for attendees is enabled. -
host_videoboolean— Start video when host joins webinar. -
language_interpretationobject— 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.-
enableboolean— 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. -
interpretersarray— Information about the webinar's language interpreters.Items:
-
emailstring, format:email— The interpreter's email address. -
interpreter_languagesstring— 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`. -
languagesstring— 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_authenticationboolean— Only authenticated users can join Webinar. -
on_demandboolean, default:false— Make the webinar on demand. -
panelist_authenticationboolean— Require panelists to authenticate to join. If not provided, the default value will be based on the user's setting. -
panelists_invitation_email_notificationboolean— Send invitation email to panelists. If `false`, do not send invitation email to panelists. -
panelists_videoboolean— Start video when panelists join the webinar. -
post_webinar_surveyboolean— Zoom will open a survey page in attendees' browsers after leaving the webinar. -
practice_sessionboolean, default:false— Enable practice session. -
question_and_answerobject— [Q&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_questionsboolean— * `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_replyboolean— If simulive webinar, * `true` - allow auto-reply to attendees. * `false` - don't allow auto-reply to the attendees. -
allow_submit_questionsboolean— * `true` - Allow participants to submit questions. * `false` - Do not allow submit questions. -
answer_questionsstring, 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&A. -
attendees_can_commentboolean— * `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_upvoteboolean— * `true` - Attendees can click the thumbs up button to bring popular questions to the top of the Q&A window. * `false` - Attendees can not click the thumbs up button on questions. -
auto_reply_textstring— If `allow_auto_reply` = true, the text to be included in the automatic response. -
enableboolean— * `true`: Enable [Q&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&A for webinar. If not provided, the default value will be based on the user's setting.
-
-
registrants_confirmation_emailboolean— Send confirmation email to registrants. -
registrants_email_notificationboolean— 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_numberinteger, 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_typeinteger, 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_participantsboolean, 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_attendeesboolean, default:false— Always send 1080p video to attendees. -
show_join_infoboolean— 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_buttonboolean— Show social share buttons on the registration page. -
sign_language_interpretationobject— 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.-
enableboolean— 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. -
interpretersarray— Information about the webinar's sign language interpreters.Items:
-
emailstring, format:email— The interpreter's email address. -
sign_languagestring— 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_urlstring— Survey url for post webinar survey.
-
-
simulive_delay_startobject— {"enable":false,"time":0,"timeunit":"second"}-
enableboolean— Whether simulive need delay playback. -
timeinteger— The time for delayed playback. -
timeunitstring— The time unit for delayed playback.
-
-
start_timestring, format:date-time— Webinar start time in GMT/UTC. -
start_urlstring— 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_idstring— 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. -
timezonestring— Time zone to format `start_time`. -
topicstring— The webinar's topic. -
tracking_fieldsarray— Tracking fields.Items:
-
fieldstring— Tracking fields type. -
valuestring— Tracking fields value. -
visibleboolean— 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_liveboolean— Whether to transition a simulive webinar to live. The host must be present at the time of transition. -
typeinteger, 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. -
uuidstring— 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
-
agendastring— Webinar agenda. -
created_atstring, format:date-time— Create time. -
creation_sourcestring, 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. -
durationinteger— Webinar duration. -
encrypted_passcodestring— Encrypted passcode for third party endpoints (H323/SIP). -
h323_passcodestring— H.323/SIP room system passcode. -
host_emailstring, format:email— The meeting host's email address. -
host_idstring— ID of the user set as host of webinar. -
idinteger, format:int64— The webinar ID in **long** format, represented as int64 data type in JSON, also known as the webinar number. -
is_simuliveboolean— Whether the webinar is `simulive`. -
join_urlstring— URL to join the webinar. Only share this URL with the users who should be invited to the webinar. -
occurrencesarray— Array of occurrence objects.Items:
-
durationinteger— Duration. -
occurrence_idstring— 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_timestring, format:date-time— Start time. -
statusstring, possible values:"available", "deleted"— Occurrence status. `available` - Available occurrence. `deleted` - Deleted occurrence.
-
-
passwordstring— 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_idstring— The previously recorded file's ID for `simulive`. -
recurrenceobject— 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_timestring, 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_timesinteger, 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_dayinteger— 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_weekinteger, 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_dayinteger, 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_intervalinteger— 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_daysstring— 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_urlstring— The URL that registrants can use to register for a webinar. This field is only returned for webinars that have enabled registration. -
settingsobject— Webinar settings.-
add_audio_watermarkboolean— Add audio watermark that identifies the participants. -
add_watermarkboolean— Add watermark that identifies the viewing participant. -
additional_data_center_regionsarray— 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_stateboolean— 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_devicesboolean— Allow attendees to join from multiple devices. -
alternative_host_update_pollsboolean— Whether the **Allow alternative hosts to add or edit polls** feature is enabled. This requires Zoom version 5.8.0 or higher. -
alternative_hostsstring— Alternative host emails or IDs. Multiple values separated by comma. -
approval_typeinteger, possible values:0, 1, 2, default:2— `0` - Automatically approve. `1` - Manually approve. `2` - No registration required. -
attendees_and_panelists_reminder_email_notificationobject— Send reminder email to attendees and panelists.-
enableboolean— * `true` - Send reminder email to attendees and panelists. * `false` - Do not send reminder email to attendees and panelists. -
typeinteger, 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.
-
-
audiostring, possible values:"both", "telephony", "voip", "thirdParty", default:"both"— Determine how participants can join the audio portion of the webinar. -
audio_conference_infostring— Third party audio conference info. -
authentication_domainsstring— 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_namestring— 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_optionstring— Webinar authentication option ID. -
auto_recordingstring, possible values:"local", "cloud", "none", default:"none"— Automatic recording. `local` - Record on local. `cloud` - Record on cloud. `none` - Disabled. -
close_registrationboolean— Close registration after event date. -
contact_emailstring— Contact email for registration. -
contact_namestring— Contact name for registration. -
email_in_attendee_reportboolean— Whether to include guest's email addresses in webinars' attendee reports. -
email_languagestring— 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_brandingboolean— 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_loginboolean— 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_domainsstring— 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_notificationobject— Send follow-up email to absentees.-
enableboolean— * `true` - Send follow-up email to absentees. * `false` - Do not send follow-up email to absentees. -
typeinteger, 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_notificationobject— Send follow-up email to attendees.-
enableboolean— * `true` - Send follow-up email to attendees. * `false` - Do not send follow-up email to attendees. -
typeinteger, 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_countriesarray— List of global dial-in countries.Items:
string -
global_dial_in_numbersarray— A list of available dial-in numbers for different countries or regions.Items:
-
citystring— The number's city. -
countrystring— The country code. -
country_namestring— Full name of country. -
numberstring— Dial-in phone number. -
typestring, possible values:"toll", "tollfree", "premium"— Dial-in number type.
-
-
hd_videoboolean, default:false— Default to HD video. -
hd_video_for_attendeesboolean, default:false— Whether HD video for attendees is enabled. -
host_videoboolean— Start video when the host joins the webinar. -
language_interpretationobject— 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.-
enableboolean— Whether to enable [language interpretation](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0064768) for the webinar. -
interpretersarray— Information about the webinar's language interpreters.Items:
-
emailstring, format:email— The interpreter's email address. -
interpreter_languagesstring— 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`. -
languagesstring— 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_authenticationboolean— Only authenticated users can join the webinar. -
on_demandboolean, default:false— Make the webinar on-demand. -
panelist_authenticationboolean— Require panelists to authenticate to join. -
panelists_invitation_email_notificationboolean— Send invitation email to panelists. If `false`, do not send invitation email to panelists. -
panelists_videoboolean— Start video when panelists join webinar. -
post_webinar_surveyboolean— Zoom will open a survey page in attendees' browsers after leaving the webinar. -
practice_sessionboolean, default:false— Enable practice session. -
question_and_answerobject— [Q&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_questionsboolean— * `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_replyboolean— If simulive webinar, * `true` - allow auto-reply to attendees. * `false` - don't allow auto-reply to the attendees. -
allow_submit_questionsboolean— * `true` - Allow participants to submit questions. * `false` - Do not allow submit questions. -
answer_questionsstring, 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&A. -
attendees_can_commentboolean— * `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_upvoteboolean— * `true` - Attendees can click the thumbs up button to bring popular questions to the top of the Q&A window. * `false` - Attendees can not click the thumbs up button on questions. -
auto_reply_textstring— If `allow_auto_reply` = true, the text to be included in the automatic response. -
enableboolean— * `true` - Enable [Q&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&A for webinar.
-
-
registrants_confirmation_emailboolean— Send confirmation email to registrants -
registrants_email_notificationboolean— 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_numberinteger, 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_typeinteger, 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_participantsboolean— 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_attendeesboolean, default:false— Always send 1080p video to attendees. -
show_join_infoboolean— 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_buttonboolean— Show social share buttons on the registration page. -
sign_language_interpretationobject— 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.-
enableboolean— 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. -
interpretersarray— Information about the webinar's sign language interpreters.Items:
-
emailstring, format:email— The interpreter's email address. -
sign_languagestring— 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_urlstring— Survey URL for post webinar survey.
-
-
simulive_delay_startobject— {"enable":false,"time":0,"timeunit":"second"}-
enableboolean— Whether simulive needs to delay playback. -
timeinteger— 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. -
timeunitstring, 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_timestring, format:date-time— Webinar start time in GMT/UTC. -
start_urlstring— 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_idstring— 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. -
timezonestring— Time zone to format `start_time`. -
topicstring— Webinar topic. -
tracking_fieldsarray— Tracking fields.Items:
-
fieldstring— Tracking fields type. -
valuestring— Tracking fields value. -
visibleboolean— 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_liveboolean— Whether to transition a simulive webinar to live. The host must be present at the time of transition. -
typeinteger, 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. -
uuidstring— 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
-
agendastring— Webinar description. -
durationinteger— Webinar duration, in minutes. Used for scheduled webinar only. -
is_simuliveboolean— Whether to set the webinar to simulive. -
passwordstring— 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_idstring— The previously recorded file's ID for `simulive`. -
recurrenceobject— 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_timestring, 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_timesinteger, 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_dayinteger, 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_weekinteger, 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_dayinteger, 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_intervalinteger— 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_daysstring, 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_forstring— The user's email address or `userId` to schedule a webinar for. -
settingsobject— Webinar settings.-
add_audio_watermarkboolean— Add audio watermark that identifies the participants. -
add_watermarkboolean— Add watermark that identifies the viewing participant. -
additional_data_center_regionsarray— 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_stateboolean— 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_devicesboolean— Allow attendees to join from multiple devices. -
alternative_host_update_pollsboolean— Whether the **Allow alternative hosts to add or edit polls** feature is enabled. This requires Zoom version 5.8.0 or higher. -
alternative_hostsstring— Alternative host emails or IDs. Separate multiple values by commas. -
approval_typeinteger, possible values:0, 1, 2, default:2— `0` - Automatically approve. `1` - Manually approve. `2` - No registration required. -
attendees_and_panelists_reminder_email_notificationobject— Send reminder email to attendees and panelists.-
enableboolean— * `true` - Send reminder email to attendees and panelists. * `false` - Do not send reminder email to attendees and panelists. -
typeinteger, 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.
-
-
audiostring, possible values:"both", "telephony", "voip", "thirdParty", default:"both"— Determine how participants can join the audio portion of the webinar. -
audio_conference_infostring— Third party audio conference info. -
authentication_domainsstring— 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_optionstring— Webinar authentication option ID. -
auto_recordingstring, possible values:"local", "cloud", "none", default:"none"— Automatic recording. `local` - Record on local. `cloud` - Record on cloud. `none` - Disabled. -
close_registrationboolean— Close registration after event date. -
contact_emailstring— Contact email for registration -
contact_namestring— Contact name for registration -
email_in_attendee_reportboolean— Whether to include guest's email addresses in webinars' attendee reports. -
email_languagestring— 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_brandingboolean— 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_loginboolean— 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_domainsstring— 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_notificationobject— Send follow-up email to absentees.-
enableboolean— * `true` - Send follow-up email to absentees. * `false` - Do not send follow-up email to absentees. -
typeinteger, 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_notificationobject— Send follow-up email to attendees.-
enableboolean— * `true` - Send follow-up email to attendees. * `false` - Do not send follow-up email to attendees. -
typeinteger, 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_countriesarray— List of global dial-in countriesItems:
string -
hd_videoboolean, default:false— Default to HD video. -
hd_video_for_attendeesboolean, default:false— Whether HD video for attendees is enabled. -
host_videoboolean— Start video when host joins the webinar. -
language_interpretationobject— 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.-
enableboolean— Whether to enable [language interpretation](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0064768) for the webinar. -
interpretersarray— Information about the webinar's language interpreters.Items:
-
emailstring, format:email— The interpreter's email address. -
interpreter_languagesstring— 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`. -
languagesstring— 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_authenticationboolean— Only authenticated users can join the webinar. -
notify_registrantsboolean— Send notification email to registrants when the host updates a webinar. -
on_demandboolean, default:false— Make the webinar on-demand. -
panelist_authenticationboolean— Require panelists to authenticate to join. -
panelists_invitation_email_notificationboolean— Send invitation email to panelists. If `false`, do not send invitation email to panelists. -
panelists_videoboolean— Start video when panelists join the webinar. -
post_webinar_surveyboolean— Zoom will open a survey page in attendees' browsers after leaving the webinar. -
practice_sessionboolean, default:false— Enable practice session. -
question_and_answerobject— [Q&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_questionsboolean— * `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_replyboolean— If simulive webinar, * `true` - allow auto-reply to attendees. * `false` - don't allow auto-reply to the attendees. -
allow_submit_questionsboolean— * `true` - Allow participants to submit questions. * `false` - Do not allow submit questions. -
answer_questionsstring, 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&A. -
attendees_can_commentboolean— * `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_upvoteboolean— * `true` - Attendees can click the thumbs up button to bring popular questions to the top of the Q&A window. * `false` - Attendees can't click the thumbs up button on questions. -
auto_reply_textstring— If `allow_auto_reply` = true, the text to be included in the automatic response. -
enableboolean— * `true` - Enable [Q&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&A for webinar.
-
-
registrants_confirmation_emailboolean— Send confirmation email to registrants -
registrants_email_notificationboolean— 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_numberinteger, 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_typeinteger, 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_participantsboolean— 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_attendeesboolean, default:false— Always send 1080p video to attendees. -
show_join_infoboolean— 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_buttonboolean— Show social share buttons on the registration page. -
sign_language_interpretationobject— 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.-
enableboolean— 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. -
interpretersarray— Information about the webinar's sign language interpreters.Items:
-
emailstring, format:email— The interpreter's email address. -
sign_languagestring— 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_urlstring— Survey url for post webinar survey
-
-
simulive_delay_startobject— {"enable":false,"time":0,"timeunit":"second"}-
enableboolean— Whether simulive need delay playback. -
timeinteger— 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. -
timeunitstring, 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_timestring, 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. -
timezonestring— 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). -
topicstring— The webinar topic. -
tracking_fieldsarray— Tracking fields.Items:
-
fieldstring— Tracking fields type. -
valuestring— Tracking fields value.
-
-
transition_to_liveboolean— Whether to transition a simulive webinar to live. The host must be present at the time of transition. -
typeinteger, 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_approveboolean— 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). -
registrantsarrayItems:
-
email(required)string, format:email— The registrant's email address. -
first_name(required)string— The registrant's first name. -
last_namestring— 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
-
registrantsarrayItems:
-
emailstring— The registrant's email address. -
join_urlstring— Unique URL using which registrant can join the webinar. -
registrant_idstring— 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_tagsarray— Information about the webinar's name tag.Items:
-
accent_colorstring— The name tag's accent color. -
background_colorstring— The name tag's background color. -
idstring— The name tag's ID. -
is_defaultboolean— Whether the file is the default name tag or not. -
namestring— The name tag's name. -
text_colorstring— The name tag's text color.
-
-
virtual_backgroundsarray— Information about the webinar's [virtual background](https://support.zoom.us/hc/en-us/articles/210707503-Virtual-Background) files.Items:
-
idstring— The virtual background's file ID. -
is_defaultboolean— Whether the file is the default virtual background file. -
namestring— The virtual background's file name.
-
-
wallpaperobject— Information about the webinar's [wallpaper] file.-
idstring— 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_defaultboolean, default:false— Whether set the name tag as the default name tag or not. -
set_default_for_all_panelistsboolean, 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_colorstring— The name tag's accent color. -
background_colorstring— The name tag's background_color color. -
idstring— The name tag's ID. -
is_defaultboolean— Whether the name tag is the default name tag or not. -
namestring— The name tag's name. -
text_colorstring— 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_colorstring, format:Hex color code— The name tag's accent color. -
background_colorstring, format:Hex color code— The name tag's background color. -
is_defaultboolean, default:false— Whether set the name tag as the default name tag or not. -
namestring— The name tag's name. **Note:** This value cannot exceed more than 50 characters. -
set_default_for_all_panelistsboolean, 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_colorstring, 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. -
defaultboolean, default:false— Whether set the file as the default virtual background file. -
set_default_for_all_panelistsboolean, 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
-
idstring— The virtual background file's ID. -
is_defaultboolean— Whether the file is the default virtual background file. -
namestring— The virtual background file's name. -
sizeinteger— The virtual background file's size, in bytes. -
typestring, 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
-
idstring— The wallpaper file's ID. -
namestring— The wallpaper file's name. -
sizeinteger— The wallpaper file's size, in bytes. -
typestring, 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
-
attendeesarray— The attendees list.Items:
-
name(required)string— User display name. -
disable_audioboolean, 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_videoboolean, 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.
-
-
ttlinteger, 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
-
attendeesarray— The attendee list.Items:
-
join_urlstring— The URL to join the meeting. -
namestring— 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_urlstring— Live streaming page URL. This is the URL using which anyone can view the live stream of the webinar. -
resolutionstring— The number of pixels in each dimension that the video camera can display. -
stream_keystring— Stream key. -
stream_urlstring— 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. -
resolutionstring— 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
-
actionstring, possible values:"start", "stop"— Update the live stream's status. * `start` - Start a webinar live stream. * `stop` - Stop an ongoing webinar live stream. -
settingsobject— Update the live stream session's settings. **Only** settings for a stopped live stream can be updated.-
active_speaker_nameboolean— Display the name of the active speaker during a live stream. -
close_captionstring, 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_namestring— 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:
- Pro or a higher plan with Webinar Add-on.
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:
-
panelistsarray— List of panelist objects.Items:
All of:
-
idstring— Panelist's ID.
-
emailstring, format:email— Panelist's email. See [Email address display rules](https://developers.zoom.us/docs/api/rest/using-zoom-apis/#email-address-display-rules) for return value details. -
namestring— The panelist's full name. **Note** This value cannot exceed more than 12 Chinese characters.
-
join_urlstring— Join URL.
-
name_tag_descriptionstring— The description for the name tag, such as the person's title. -
name_tag_idstring— The name tag ID to bind. -
name_tag_namestring— The panelist's name to display in the name tag. -
name_tag_pronounsstring— The pronouns to display in the name tag. -
virtual_background_idstring— The virtual background's ID.
-
-
total_recordsinteger— 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:
- Pro or a higher plan with the Webinar Add-on.
Scopes: webinar:master
Granular Scopes: webinar:write:panelist:master
Rate Limit Label: MEDIUM
Request Body
Content-Type: application/json
-
panelistsarray— List of panelist objects.Items:
All of:
-
emailstring, format:email— Panelist's email. See the [email address display rules](https://developers.zoom.us/docs/api/rest/using-zoom-apis/#email-address-display-rules) for return value details. -
namestring— The panelist's full name. **Note:** This value cannot exceed more than 12 Chinese characters.
-
name_tag_descriptionstring— The description for the name tag, such the person's title. -
name_tag_idstring— The name tag ID to bind. -
name_tag_namestring— The panelist's name to display in the name tag. -
name_tag_pronounsstring— The pronouns to display in the name tag. -
virtual_background_idstring— 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
-
idstring— Webinar ID. -
updated_atstring, 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:
- Pro or a higher plan with the webinar add-on.
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:
- Pro or a higher plan with the webinar add-on.
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
- A Pro or higher plan with a Webinar plan add-on.
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:
-
pollsarray— An array of polls.Items:
All of:
-
idstring— The poll ID. -
statusstring, 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
-
anonymousboolean, default:false— Whether meeting participants answer poll questions anonymously. This value defaults to `false`. -
poll_typeinteger, 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`. -
questionsarray— The information about the poll's questions.Items:
-
answer_max_characterinteger— 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_characterinteger— 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_requiredboolean, 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`. -
answersarray— 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_sensitiveboolean, 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`. -
namestring— 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. -
promptsarray— 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_questionstring— The question prompt's title. -
prompt_right_answersarray— 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_labelstring— The high score label for the `rating_max_value` field. This field only applies to the `rating_scale` poll. -
rating_max_valueinteger— The rating scale's maximum value, up to a maximum value of 10. This field only applies to the `rating_scale` poll. -
rating_min_labelstring— The low score label for the `rating_min_value` field. This field only applies to the `rating_scale` poll. -
rating_min_valueinteger— The rating scale's minimum value. This value cannot be less than zero. This field only applies to the `rating_scale` poll. -
right_answersarray— 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_dropdownboolean, 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`. -
typestring, 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.
-
-
titlestring— The poll's title, up to 64 characters.
-
-
total_recordsinteger— 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
- A Pro or higher plan with a Webinar plan add-on.
Scopes: webinar:master
Granular Scopes: webinar:write:poll:master
Rate Limit Label: LIGHT
Request Body
Content-Type: application/json
All of:
-
anonymousboolean, default:false— Whether meeting participants answer poll questions anonymously. This value defaults to `false`. -
poll_typeinteger, 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`. -
questionsarray— The information about the poll's questions.Items:
-
answer_max_characterinteger— 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_characterinteger— 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_requiredboolean, 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`. -
answersarray— 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_sensitiveboolean, 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`. -
namestring— 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. -
promptsarray— 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_questionstring— The question prompt's title. -
prompt_right_answersarray— 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_labelstring— The high score label for the `rating_max_value` field. This field only applies to the `rating_scale` poll. -
rating_max_valueinteger— The rating scale's maximum value, up to a maximum value of 10. This field only applies to the `rating_scale` poll. -
rating_min_labelstring— The low score label for the `rating_min_value` field. This field only applies to the `rating_scale` poll. -
rating_min_valueinteger— The rating scale's minimum value. This value cannot be less than zero. This field only applies to the `rating_scale` poll. -
right_answersarray— 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_dropdownboolean, 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`. -
typestring, 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.
-
-
titlestring— 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:
-
idstring— The webinar poll ID. -
statusstring, 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
-
anonymousboolean, default:false— Whether meeting participants answer poll questions anonymously. This value defaults to `false`. -
poll_typeinteger, 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`. -
questionsarray— The information about the poll's questions.Items:
-
answer_max_characterinteger— 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_characterinteger— 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_requiredboolean, 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`. -
answersarray— 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_sensitiveboolean, 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`. -
namestring— 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. -
promptsarray— 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_questionstring— The question prompt's title. -
prompt_right_answersarray— 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_labelstring— The high score label for the `rating_max_value` field. This field only applies to the `rating_scale` poll. -
rating_max_valueinteger— The rating scale's maximum value, up to a maximum value of 10. This field only applies to the `rating_scale` poll. -
rating_min_labelstring— The low score label for the `rating_min_value` field. This field only applies to the `rating_scale` poll. -
rating_min_valueinteger— The rating scale's minimum value. This value cannot be less than zero. This field only applies to the `rating_scale` poll. -
right_answersarray— 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_dropdownboolean, 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`. -
typestring, 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.
-
-
titlestring— 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
- A Pro or higher plan with a Webinar plan add-on.
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:
-
idstring— The webinar poll ID. -
statusstring, 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
-
anonymousboolean, default:false— Whether meeting participants answer poll questions anonymously. This value defaults to `false`. -
poll_typeinteger, 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`. -
questionsarray— The information about the poll's questions.Items:
-
answer_max_characterinteger— 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_characterinteger— 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_requiredboolean, 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`. -
answersarray— 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_sensitiveboolean, 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`. -
namestring— 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. -
promptsarray— 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_questionstring— The question prompt's title. -
prompt_right_answersarray— 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_labelstring— The high score label for the `rating_max_value` field. This field only applies to the `rating_scale` poll. -
rating_max_valueinteger— The rating scale's maximum value, up to a maximum value of 10. This field only applies to the `rating_scale` poll. -
rating_min_labelstring— The low score label for the `rating_min_value` field. This field only applies to the `rating_scale` poll. -
rating_min_valueinteger— The rating scale's minimum value. This value cannot be less than zero. This field only applies to the `rating_scale` poll. -
right_answersarray— 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_dropdownboolean, 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`. -
typestring, 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.
-
-
titlestring— 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
- A Pro or higher plan with a Webinar plan add-on.
Scopes: webinar:master
Granular Scopes: webinar:update:poll:master
Rate Limit Label: LIGHT
Request Body
Content-Type: application/json
All of:
-
anonymousboolean, default:false— Whether meeting participants answer poll questions anonymously. This value defaults to `false`. -
poll_typeinteger, 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`. -
questionsarray— The information about the poll's questions.Items:
-
answer_max_characterinteger— 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_characterinteger— 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_requiredboolean, 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`. -
answersarray— 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_sensitiveboolean, 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`. -
namestring— 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. -
promptsarray— 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_questionstring— The question prompt's title. -
prompt_right_answersarray— 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_labelstring— The high score label for the `rating_max_value` field. This field only applies to the `rating_scale` poll. -
rating_max_valueinteger— The rating scale's maximum value, up to a maximum value of 10. This field only applies to the `rating_scale` poll. -
rating_min_labelstring— The low score label for the `rating_min_value` field. This field only applies to the `rating_scale` poll. -
rating_min_valueinteger— The rating scale's minimum value. This value cannot be less than zero. This field only applies to the `rating_scale` poll. -
right_answersarray— 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_dropdownboolean, 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`. -
typestring, 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.
-
-
titlestring— 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
- A Pro or higher plan with a Webinar plan add-on.
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_tokenstring— 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_countinteger— The number of pages returned for the request made. -
page_numberinteger, 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_sizeinteger, default:30— The number of records returned with a single API call. -
total_recordsinteger— The total number of all the records available across pages.
-
registrantsarray— List of registrant objects.Items:
All of:
-
idstring— 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. -
addressstring— The registrant's address. -
citystring— The registrant's city. -
commentsstring— The registrant's questions and comments. -
countrystring— The registrant's two-letter ISO [country code](https://developers.zoom.us/docs/api/rest/other-references/abbreviation-lists/#countries). -
custom_questionsarray— Information about custom questions.Items:
-
titlestring— The title of the custom question. -
valuestring— The custom question's response value. This has a limit of 128 characters.
-
-
industrystring— The registrant's industry. -
job_titlestring— The registrant's job title. -
last_namestring— The registrant's last name. -
no_of_employeesstring, 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` -
orgstring— The registrant's organization. -
phonestring— The registrant's phone number. -
purchasing_time_framestring, 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_processstring, possible values:"", "Decision Maker", "Evaluator/Recommender", "Influencer", "Not involved"— The registrant's role in the purchase process. * `Decision maker` * `Evaluator/Recommender.` * `Influencer.` * `Not involved.` -
statestring— The registrant's state or province. -
statusstring, possible values:"approved", "denied", "pending"— The registrant's status. * `approved` - Registrant is approved. * `denied` - Registrant is denied. * `pending` - Registrant is waiting for approval. -
zipstring— The registrant's ZIP or postal code.
-
create_timestring, format:date-time— The time when the registrant registered. -
join_urlstring, format:string— The URL that an approved registrant can use to join the meeting or webinar. -
statusstring— 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. -
addressstring— The registrant's address. -
citystring— The registrant's city. -
commentsstring— The registrant's questions and comments. -
countrystring— The registrant's two-letter [country code](https://developers.zoom.us/docs/api/rest/other-references/abbreviation-lists/#countries). -
custom_questionsarray— Information about custom questions.Items:
-
titlestring— The custom question's title. -
valuestring— The custom question's response value. This has a limit of 128 characters.
-
-
industrystring— The registrant's industry. -
job_titlestring— The registrant's job title. -
languagestring, 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_namestring— The registrant's last name. -
no_of_employeesstring, 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` -
orgstring— The registrant's organization. -
phonestring— The registrant's phone number. -
purchasing_time_framestring, 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_processstring, 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_idstring— The tracking source's unique identifier. -
statestring— The registrant's state or province. -
zipstring— 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
-
idinteger, format:int64— The webinar's ID. -
join_urlstring— The URL the registrant can use to join the webinar. -
occurrencesarray— Array of occurrence objects.Items:
-
durationinteger— Duration. -
occurrence_idstring— Occurrence ID: 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_timestring, format:date-time— Start time. -
statusstring— Occurrence status.
-
-
registrant_idstring— The registrant's ID. -
start_timestring, format:date-time— The webinar's start time. -
topicstring— 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_questionsarray— Array of Registrant Custom Questions.Items:
-
answersarray— An array of answer choices. Can't be used for short answer type.Items:
string -
requiredboolean— State whether or not the custom question is required to be answered by a registrant. -
titlestring— Custom question. -
typestring, possible values:"short", "single_radio", "single_dropdown", "multiple"— The question-answer type.
-
-
questionsarray— Array of registration fields whose values should be provided by registrants during registration.Items:
-
field_namestring, 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 -
requiredboolean— 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_questionsarray— Array of custom questions for registrants.Items:
-
answersarray— An array of answer choices. Can't be used for short answer type.Items:
string -
requiredboolean— State whether or not a registrant is required to answer the custom question. -
titlestring— Custom question. -
typestring, possible values:"short", "single_radio", "single_dropdown", "multiple"— The question-answer type.
-
-
questionsarray— Array of registration fields whose values should be provided by registrants.Items:
-
field_namestring, 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 -
requiredboolean— 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
- A Pro or higher plan with a Webinar plan add-on.
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. -
registrantsarray— The registrant information.Items:
-
emailstring, format:email— The registrant's email address. -
idstring— 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:
-
idstring
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. -
addressstring— The registrant's address. -
citystring— The registrant's city. -
commentsstring— The registrant's questions and comments. -
countrystring— The registrant's two-letter ISO [country code](https://developers.zoom.us/docs/api/rest/other-references/abbreviation-lists/#countries). -
custom_questionsarray— Information about custom questions.Items:
-
titlestring— The title of the custom question. -
valuestring— The custom question's response value. This has a limit of 128 characters.
-
-
industrystring— The registrant's industry. -
job_titlestring— The registrant's job title. -
last_namestring— The registrant's last name. -
no_of_employeesstring, 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` -
orgstring— The registrant's organization. -
phonestring— The registrant's phone number. -
purchasing_time_framestring, 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_processstring, possible values:"", "Decision Maker", "Evaluator/Recommender", "Influencer", "Not involved"— The registrant's role in the purchase process: * `Decision Maker` * `Evaluator/Recommender` * `Influencer` * `Not involved` -
statestring— The registrant's state or province. -
statusstring, possible values:"approved", "denied", "pending"— The registrant's status: * `approved` — Registrant is approved. * `denied` — Registrant is denied. * `pending` — Registrant is waiting for approval. -
zipstring— The registrant's ZIP or postal code.
-
languagestring, 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` — 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
-
create_timestring, format:date-time -
join_urlstring, format:string -
statusstring
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
- A Pro or higher plan with a Webinar plan add-on.
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:
- The account must hold a valid Webinar plan.
Scopes: webinar:master
Granular Scopes: webinar:update:status:master
Rate Limit Label: LIGHT
Request Body
Content-Type: application/json
-
actionstring, 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_surveyobject— Information about the customized webinar survey.-
anonymousboolean, 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`. -
feedbackstring— 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_questionsboolean, default:false— Whether to display the number in the question name. This value defaults to `true`. -
questionsarray— Information about the webinar survey's questions.Items:
-
answer_max_characterinteger— 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_characterinteger— 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_requiredboolean, 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`. -
answersarray— 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 -
namestring— The survey question, up to 420 characters. -
promptsarray— 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_questionstring— The question prompt's title.
-
-
rating_max_labelstring— 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_valueinteger— The rating scale's maximum value, up to a maximum value of 10. This field only applies to the `rating_scale` survey. -
rating_min_labelstring— 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_valueinteger— The rating scale's minimum value. This value cannot be less than zero. This field only applies to the `rating_scale` survey. -
show_as_dropdownboolean, 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`. -
typestring, 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_typeboolean, default:false— Whether to display the question type in the question name. This value defaults to `false`. -
titlestring— The survey's title, up to 64 characters.
-
-
show_in_the_browserboolean, 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_emailboolean, 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_surveystring— 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_surveyobject— Information about the customized webinar survey.-
anonymousboolean, 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`. -
feedbackstring— 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_questionsboolean, default:false— Whether to display the number in the question name. This value defaults to `true`. -
questionsarray— Information about the webinar survey's questions.Items:
-
answer_max_characterinteger— 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_characterinteger— 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_requiredboolean, 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`. -
answersarray— 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 -
namestring— The survey question, up to 420 characters. -
promptsarray— 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_questionstring— The question prompt's title.
-
-
rating_max_labelstring— 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_valueinteger— The rating scale's maximum value, up to a maximum value of 10. This field only applies to the `rating_scale` survey. -
rating_min_labelstring— 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_valueinteger— 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_dropdownboolean, 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`. -
typestring, 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_typeboolean, default:false— Whether to display the question type in the question name. This value defaults to `false`. -
titlestring— The survey's title, up to 64 characters.
-
-
show_in_the_browserboolean, 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_emailboolean, 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_surveystring— 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
-
tokenstring— 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:
- Webinar license.
- Registration must be required for the Webinar.
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_recordsinteger— The total number of registration records for this Webinar. -
tracking_sourcesarray— Tracking Sources object.Items:
-
idstring— Unique Identifier of the tracking source. -
registration_countinteger— Number of registrations made from this source. -
source_namestring— Name of the source (platform) where the registration URL was shared. -
tracking_urlstring— Tracking URL. The URL that was shared for the registration. -
visitor_countinteger— 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
}
]
}