Zoom Meeting

Video conferencing and meeting API

developers.zoom.us/docs/api/rest/reference/zoom-api ↗
Version
2
OpenAPI
3.0.0
Endpoints
172
Schemas
172
93
Quality
Updated
3 days ago
Video video conferencing meetings
Use this API in your AI agent

Query structured spec data via REST or MCP. Get exactly what your agent needs.

Get API Key

Server URLs

https://api.zoom.us/v2

Endpoints

Clear filters

Archiving 3 endpoints

GET /archive_files

Get an account’s archived meeting or webinar files.

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

Prerequisites:

Scopes: recording:read:admin

Granular Scopes: archiving:read:list_archived_files:admin,archiving:read:list_archived_files

Rate Limit Label: MEDIUM

operationId: Archiving_meetingFilesList

Parameters

Name In Required Type Description
page_size query optional integer

The number of records returned within a single API call.

next_page_token query optional string

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

from query optional string

The query start date, in yyyy-MM-dd'T'HH:mm:ssZ format. This value and the to query parameter value cannot exceed seven days.

to query optional string

The query end date, in yyyy-MM-dd'T'HH:mm:ssZ format. This value and the from query parameter value cannot exceed seven days.

query_date_type query optional string

The type of query date.

  • meeting_start_time
  • archive_complete_time

This value defaults to meeting_start_time.

group_id query optional string

The group ID. To get a group ID, use the List groups API.

Responses

200

HTTP Status Code: 200

Archived files returned.

400

HTTP Status Code: 400

Bad Request

Error Code: 2001

Account does not exist: {accountId}

GET /archive_files
GET /archive_files/statistics

Get statistics about 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 and other compliance requirements.

Prerequisites:

Scopes: recording:read:admin

Rate Limit Label: Medium

operationId: Archiving_getStatistics

Parameters

Name In Required Type Description
from query optional string

The query start date, yyyy-MM-dd'T'HH:mm:ssZ format. This value and the to query parameter value cannot exceed seven days.

to query optional string

The query end date, in yyyy-MM-dd'T'HH:mm:ssZ format. This value and the from query parameter value cannot exceed seven days.

Responses

200

HTTP Status Code: 200

The statistics of Archived files returned.

400

HTTP Status Code: 400

Bad Request

Error Code: 2001

Account does not exist: {accountId}

GET /archive_files/statistics
GET /past_meetings/{meetingUUID}/archive_files

Return a specific meeting instance’s archived files.

Prerequisites:

Scopes: recording:read

Rate Limit Label: LIGHT

operationId: Archiving_meetingFilesList

Parameters

Name In Required Type Description
meetingUUID path required string

The meeting’s universally unique identifier (UUID). Each meeting instance generates a UUID. After a meeting ends, a new UUID is generated for the next meeting instance.

If the meeting UUID begins with a / character or contains a // character, you must double encode the meeting UUID when using the meeting UUID for other API calls.

Responses

200

HTTP Status Code: 200

Meeting archived files returned.

404

HTTP Status Code: 404

Not Found

Error Code: 3001

Meeting {meetingUUId} does not exist.

GET /past_meetings/{meetingUUID}/archive_files

Cloudrecording 7 endpoints

GET /meetings/{meetingId}/recordings

Returns all of a meeting’s recordings.

Use the download_url property listed in the response to download the recording files. To access a 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

Scopes: recording:read,phone_recording:read:admin

Rate Limit Label: LIGHT

operationId: CloudRecording_getMeetingRecordings

Parameters

Name In Required Type Description
meetingId path required string

To get a meeting’s cloud recordings, provide the meeting ID or UUID. If providing the meeting ID instead of UUID, the response will be for the latest meeting instance.

To get a webinar’s cloud recordings, provide the webinar’s ID or UUID. If providing the webinar ID instead of UUID, the response will be for the latest webinar instance.

If a UUID starts with / or contains // (example: /ajXp112QmuoKj4854875==), double encode the UUID before making an API request.

include_fields query optional string

The download_access_token value for downloading the meeting’s recordings.

ttl query optional integer

The download_access_token Time to Live (TTL) value. This parameter is only valid if the include_fields query parameter contains the download_access_token value.

Responses

200

HTTP Status Code: 200

Recording object returned.

Error Code: 200

You do not have the right permissions.

400

HTTP Status Code: 400

Bad Request

Error Code: 1010

User not found on this account: {accountId}.

404

HTTP Status Code: 404

Not Found

Error Code: 1001

User “{userId}” does not exist or does not belong to this account.

Error Code: 3301

There is no recording for this meeting.

GET /meetings/{meetingId}/recordings
GET /meetings/{meetingId}/recordings/analytics_details

Use this API to return a meeting recording’s analytics details. Maximum duration: 1 Month. To access a password-protected cloud recording, send the user’s OAuth access token as a Bearer token in the Authorization header. For example,

curl -H &quot;Authorization: Bearer &lt;ACCESS_TOKEN&gt;&quot; https://{{base-domain}}/rec/archive/download/xyz

Scopes: recording:read:admin,recording:read

Rate Limit Label: Medium

operationId: analytics_details

Parameters

Name In Required Type Description
meetingId path required string

To get Cloud Recordings of a meeting, provide the meeting ID or meeting UUID. If the meeting ID is provided instead of UUID,the response will be for the latest meeting instance.

To get Cloud Recordings of a webinar, provide the webinar ID or the webinar UUID. If the webinar ID is provided instead of UUID,the response will be for the latest webinar instance.

If a UUID starts with "/" or contains "//" (example: "/ajXp112QmuoKj4854875=="), you must double encode the UUID before making an API request.

page_size query optional integer

The number of records returned within a single API call.

next_page_token query optional string

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

from query optional string

The start date for the monthly range to query. The maximum range can be a month. If you do not provide this value, this defaults to the current date.

to query optional string

The end date for the monthly range to query. The maximum range can be a month.

type query optional string

The type of analytics details:

  • by_view — by_view.
  • by_download — by_download.

Responses

200

HTTP Status Code: 200

Analytics Detail listed successfully.

400

HTTP Status Code: 400

Bad Request

Error Code: 1010

User not found on this account: {accountId}

404

HTTP Status Code: 404

Not Found

Error Code: 1001

User “{userId}” does not exist or does not belong to this account.

Error Code: 3301

There is no recording for this meeting.

GET /meetings/{meetingId}/recordings/analytics_details
GET /meetings/{meetingId}/recordings/analytics_summary

Use this API to return a meeting recording’s analytics summary. Maximum duration: 1 Month. To access a password-protected cloud recording, send the user’s OAuth access token as a Bearer token in the Authorization header. For example,

curl -H &quot;Authorization: Bearer &lt;ACCESS_TOKEN&gt;&quot; https://{{base-domain}}/rec/archive/download/xyz

Scopes: recording:read:admin,recording:read

Rate Limit Label: Medium

operationId: analytics_summary

Parameters

Name In Required Type Description
meetingId path required string

To get Cloud Recordings of a meeting, provide the meeting ID or meeting UUID. If the meeting ID is provided instead of UUID,the response will be for the latest meeting instance.

To get Cloud Recordings of a webinar, provide the webinar ID or the webinar UUID. If the webinar ID is provided instead of UUID,the response will be for the latest webinar instance.

If a UUID starts with "/" or contains "//" (example: "/ajXp112QmuoKj4854875=="), you must double encode the UUID before making an API request.

from query optional string

The start date for the monthly range to query. The maximum range can be a month. If you do not provide this value, this defaults to the current date.

to query optional string

The end date for the monthly range to query. The maximum range can be a month.

Responses

200

HTTP Status Code: 200

Analytics Summary listed successfully.

400

HTTP Status Code: 400

Bad Request

Error Code: 1010

User not found on this account: {accountId}

404

HTTP Status Code: 404

Not Found

Error Code: 1001

User “{userId}” does not exist or does not belong to this account.

Error Code: 3301

There is no recording for this meeting.

GET /meetings/{meetingId}/recordings/analytics_summary
GET /meetings/{meetingId}/recordings/registrants

Use this API to list registrants of a past meeting’s on-demand cloud recordings. Users must register to view the recordings.

Scopes: recording:read:admin,recording:read

Rate Limit Label: Medium

operationId: CloudRecording_listRegistrants

Parameters

Name In Required Type Description
meetingId path required integer

The meeting’s ID.

When storing this value in your database, you must store it as a long format integer and not an integer. Meeting IDs can exceed 10 digits.

status query optional string

Query by the registrant’s status:

  • pending — The registration is pending.
  • approved — The registrant is approved.
  • denied — The registration is denied.
page_size query optional integer

The number of records returned within a single API call.

page_number query optional integer

Deprecated. We will no longer support this field in a future release. Instead, use the next_page_token for pagination.

next_page_token query optional string

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

Responses

200

HTTP Status Code: 200

Registrants returned.

404

HTTP Status Code: 404

Not Found

GET /meetings/{meetingId}/recordings/registrants
GET /meetings/{meetingId}/recordings/registrants/questions

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

Use this API to retrieve a list of questions that are displayed for users to complete when registering to view the recording of a specific meeting.

Scopes: recording:read:admin,recording:read

Rate Limit Label: Light

operationId: CloudRecording_listRegistrationQuestions

Parameters

Name In Required Type Description
meetingId path required string

To get Cloud Recordings of a meeting, provide the meeting ID or meeting UUID. If the meeting ID is provided instead of UUID,the response will be for the latest meeting instance.

To get Cloud Recordings of a webinar, provide the webinar ID or the webinar UUID. If the webinar ID is provided instead of UUID,the response will be for the latest webinar instance.

If a UUID starts with "/" or contains "//" (example: "/ajXp112QmuoKj4854875=="), you must double encode the UUID before making an API request.

Responses

200

HTTP Status Code: 200

Recording Registrant Question object returned.

404

HTTP Status Code: 404

Not Found

GET /meetings/{meetingId}/recordings/registrants/questions
GET /meetings/{meetingId}/recordings/settings

Retrieves settings applied to a meeting’s Cloud Recording.

Scopes: recording:read:admin,recording:read

Rate Limit Label: LIGHT

operationId: CloudRecording_getSettings

Parameters

Name In Required Type Description
meetingId path required string

The meeting ID enables you to get cloud recording of a:

  • Meeting, provide the meeting ID or meeting UUID. If the meeting ID is provided instead of UUID,the response will be for the latest meeting instance.

  • Webinar, provide the webinar ID or the webinar UUID. If the webinar ID is provided instead of UUID,the response will be for the latest webinar instance.

If a UUID starts with "/" or contains "//" (example: "/ajXp112QmuoKj4854875=="), you must double encode the UUID before making an API request.

Responses

200

HTTP Status Code: 200 Meeting recording settings returned.

404

HTTP Status Code: 404

Not Found

GET /meetings/{meetingId}/recordings/settings
GET /users/{userId}/recordings

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.

Scopes: recording:read:admin,recording:read

Granular Scopes: user:read:list_recordings,user:read:list_recordings:admin,user:read:list_recordings:master

Rate Limit Label: MEDIUM

operationId: CloudRecording_listRecordings

Parameters

Name In Required Type Description
userId path required string

The user’s ID or email address. For user-level apps, pass the me value.

page_size query optional integer

The number of records returned within a single API call.

next_page_token query optional string

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

mc query optional string

The query metadata of the recording if using an on-premise meeting connector for the meeting.

trash query optional boolean

The query trash.

  • true - List recordings from trash.
  • false - Do not list recordings from the trash.

The default value is false. If you set it to true, you can use the trash_type property to indicate the type of Cloud recording that you need to retrieve.

from query optional string

The start date in ‘yyyy-mm-dd’ UTC format for the date range where you would like to retrieve recordings. The maximum range can be a month. If no value is provided for this field, the default will be current date.

For example, if you make the API request on June 30, 2020, without providing the from and to parameters, by default the value of ‘from’ field will be 2020-06-30 and the value of the ‘to’ field will be 2020-07-01.

Note: The trash files cannot be filtered by date range and thus, the from and to fields should not be used for trash files.

to query optional string

The end date in ‘yyyy-mm-dd’ ‘yyyy-mm-dd’ UTC format.

trash_type query optional string

The type of cloud recording to retrieve from the trash.

  • meeting_recordings: List all meeting recordings from the trash.
  • recording_file: List all individual recording files from the trash.
meeting_id query optional integer

The meeting ID.

Responses

200

HTTP Status Code: 200

List of recording objects returned.

401

HTTP Status Code: 401

Unauthorized

Error Code: 124

Requires an access token.

404

HTTP Status Code: 404

Not Found

Error Code: 1001

User {userId} does not exist, or does not belong to this account.

Error Code: 3301

There is no recording for this session.

GET /users/{userId}/recordings

Devices 4 endpoints

GET /devices

This API lets you list devices.

Scopes: device:read:admin,device:write:admin

Rate Limit Label: HEAVY

operationId: Devices_list

Parameters

Name In Required Type Description
search_text query optional string

Filter devices by name or serial number.

platform_os query optional string

Filter devices by platform operating system.

is_enrolled_in_zdm query optional boolean

Filter devices by enrollment of ZDM (Zoom Device Management).

device_type query optional integer

Filter devices by device type.
Device Type:
-1 - All Zoom Room device(0,1,2,3,4,6).
0 - Zoom Rooms Computer.
1 - Zoom Rooms Controller.
2 - Zoom Rooms Scheduling Display.
3 - Zoom Rooms Control System.
4 - Zoom Rooms Whiteboard.
5 - Zoom Phone Appliance.
6 - Zoom Rooms Computer (with Controller).

device_vendor query optional string

Filter devices by vendor.

device_model query optional string

Filter devices by model.

device_status query optional integer

Filter devices by status.
Device Status:
0 - offline.
1 - online.
-1 - unlink

page_size query optional integer

The number of records returned within a single API call.

next_page_token query optional string

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

Responses

200

HTTP Status Code: 200 OK

Device detail returned successfully.

400

HTTP Status Code: 400

Bad Request

Error Code: 30055008

no permission.

GET /devices
GET /devices/groups

Get Zoom Device Manager (ZDM) group information for an account.

Scopes: device:read:admin

Granular Scopes: device:read:list_groups:admin,device:read:list_groups:master

Rate Limit Label: MEDIUM

operationId: Devices_listZdmGroupInfo

Parameters

Name In Required Type Description
page_size query optional integer

The total number of records returned from a single API call.
Default - 30.
Max -100.

next_page_token query optional string

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

Responses

200

HTTP Status Code: 200 OK Version detail returned successfully.

400

HTTP Status Code: 400

Bad Request

Error Code: 30051037

Invalid parameters.

403

HTTP Status Code: 403

Forbidden

Error Code: 30055008

No permission.

GET /devices/groups
GET /devices/zpa/zdm_groups/{zdmGroupId}/versions

Get ZPA firmware and app version information that can be upgraded for devices.

Scopes: device:read:admin

Granular Scopes: device:read:list_zpa_versions:admin,device:read:list_zpa_versions:master

Rate Limit Label: MEDIUM

operationId: Devices_getZpaVersionInfo

Parameters

Name In Required Type Description
zdmGroupId path required string

The Zoom Device Management (ZDM) group ID.

Responses

200

HTTP Status Code: 200 OK Version detail returned successfully.

400

HTTP Status Code: 400

Bad Request

Error Code: 30051037

  • AccountId is empty.
404

HTTP Status Code: 404

Not Found

Error Code: 30052027

  • ZdmGroup not found.
GET /devices/zpa/zdm_groups/{zdmGroupId}/versions
GET /devices/{deviceId}

Retrieve a device’s details.

Scopes: device:read:admin,device:write:admin

Rate Limit Label: HEAVY

operationId: Devices_getDetail

Parameters

Name In Required Type Description
deviceId path required string

The device’s unique identifier.

Responses

200

HTTP Status Code: 200 OK

Device detail returned successfully.

400

HTTP Status Code: 400

Bad Request

Error Code: 30055008

No permission.

404

HTTP Status Code: 404

Not Found

Error Code: 30055012

No found unified deviceId.

GET /devices/{deviceId}

H323devices 1 endpoints

GET /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:read:admin

Rate Limit Label: Medium

operationId: H323Devices_listDevices

Parameters

Name In Required Type Description
page_size query optional integer

The number of records returned within a single API call.

page_number query optional integer

Deprecated. We will no longer support this field in a future release. Instead, use the next_page_token for pagination.

next_page_token query optional string

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

Responses

200

HTTP Status Code: 200

List of H.323/SIP devices returned.

Error Code: 200

No permission.

GET /h323/devices

Meetings 23 endpoints

GET /meetings/meeting_summaries

Generates a list of all meeting summaries for an account.

Prerequisites

  • Host user type must be Pro or higher plan.
  • The Meeting Summary with AI Companion feature enabled in the host’s account.
  • E2ee meetings do not have summary feature enabled.

Scopes: meeting_summary:read:admin

Granular Scopes: meeting:read:list_summaries:admin

Rate Limit Label: MEDIUM

operationId: Meetings_listMeetingSummaries

Parameters

Name In Required Type Description
page_size query optional integer

The number of records returned within a single API call.

next_page_token query optional string

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

from query optional string

The start date in yyyy-MM-dd'T'HH:mm:ss'Z' UTC format used to retrieve the creation date range of the meeting summaries.

to query optional string

The end date in yyyy-MM-dd'T'HH:mm:ss'Z' UTC format used to retrieve the creation date range of the meeting summaries.

Responses

200

HTTP Status Code: 200

Successfully listed meeting summaries of an account.

400

HTTP Status Code: 400

Bad Request

Error Code: 3161

Meeting hosting and scheduling capabilities are not allowed for your user account.

Error Code: 3000

Meeting summary disabled. To enable this feature, enable the “Meeting Summary with AI Companion” setting in the Zoom web portal’s “Settings” interface.

401

HTTP Status Code: 401

Unauthorized

Error Code: 1001

User {userId} not exist or not belong to this account.

GET /meetings/meeting_summaries
GET /meetings/{meetingId}

Retrieve the given meeting’s details.

Scopes: meeting:read,meeting:read:admin

Granular Scopes: meeting:read:meeting,meeting:read:meeting:admin

Rate Limit Label: LIGHT

operationId: Meetings_getDetails

Parameters

Name In Required Type Description
meetingId path required integer

The meeting’s ID.

When storing this value in your database, store it as a long format integer and not an integer. Meeting IDs can be more than 10 digits.

occurrence_id query optional string

Meeting occurrence ID. Provide this field to view meeting details of a particular occurrence of the recurring meeting.

show_previous_occurrences query optional boolean

Set this field’s value to true to view meeting details of all previous occurrences of a recurring meeting.

Responses

200

HTTP Status Code: 200

Meeting object returned.

400

HTTP Status Code: 400

Bad Request

Error Code: 3000

Cannot access webinar info.

Error Code: 3161

Your user account is not allowed meeting hosting and scheduling capabilities.

404

HTTP Status Code: 404

Not Found

Error Code: 3001

Meeting does not exist: {meetingId}.

GET /meetings/{meetingId}
GET /meetings/{meetingId}/invitation

Retrieve the meeting invitation note for a specific meeting.

Scopes: meeting:read,meeting:read:admin

Rate Limit Label: LIGHT

operationId: Meetings_getInvitationNote

Parameters

Name In Required Type Description
meetingId path required integer

The meeting’s ID.

When storing this value in your database, you must store it as a long format integer and not an integer. Meeting IDs can exceed 10 digits.

Responses

200

HTTP Status Code: 200

Meeting invitation returned.

400

HTTP Status Code: 400

Bad Request

Error Code: 3161

Meeting hosting and scheduling capabilities are not allowed for your user account.

GET /meetings/{meetingId}/invitation
GET /meetings/{meetingId}/jointoken/live_streaming

Get a meeting’s join token to allow live streaming. The join token allows a recording bot implemented using Zoom meeting SDK to connect to a Zoom meeting "hosted by the issuer of the token", and can call the streaming method automatically. It supports both regular live streaming, and raw streaming.

Prerequisites:

  • A Pro or higher plan for the meeting host.
  • The Allow livestreaming of meetings user setting enabled in the Zoom web portal.

Scopes: meeting_token:read:admin:live_streaming,meeting_token:read:live_streaming

Rate Limit Label: Light

operationId: Meetings_getJoinToken

Parameters

Name In Required Type Description
meetingId path required integer

The meeting’s ID.

When storing this value in your database, you must store it as a long format integer and not an integer. Meeting IDs can exceed 10 digits.

Responses

200

HTTP Status Code: 200

Meeting live streaming token returned.

400

HTTP Status Code: 400

Bad Request

Error Code: 300

Invalid meeting ID.

Error Code: 3000

Cannot access Webinar information.

Error Code: 124

This API only supports OAuth2 authorization.

Error Code: 3000

Not allowed to start live streaming. To use this feature, enable the “Allow livestreaming of meetings” setting in the “Settings” page of the Zoom web portal.

Error Code: 3161

Meeting hosting and scheduling capabilities are not allowed for your user account.

404

HTTP Status Code: 404

Not Found

Error Code: 300

Meeting ID does not exist.

Error Code: 3001

Meeting does not exist: {meetingId}

GET /meetings/{meetingId}/jointoken/live_streaming
GET /meetings/{meetingId}/jointoken/local_archiving

Get a meeting’s archive token to allow local archiving. The archive token allows a meeting SDK app or bot to get archive permission to access the meeting’s raw audio and video media stream in real-time.

Prerequisites:

  • A Pro or higher plan for the meeting host.
  • The Archive meetings and webinars account setting enabled in the Zoom web portal.

Scopes: meeting_token:read:admin:local_archiving

Rate Limit Label: Light

operationId: Meetings_getMeetingArchiveTokenForLocalArchiving

Parameters

Name In Required Type Description
meetingId path required integer

The meeting’s ID.

When storing this value in your database, you must store it as a long format integer and not an integer. Meeting IDs can exceed 10 digits.

Responses

200

HTTP Status Code: 200

Meeting local archiving token returned.

400

HTTP Status Code: 400

Bad Request

Error Code: 300

Invalid meeting ID.

Error Code: 3000

Cannot access Webinar information.

Error Code: 124

This API only supports OAuth2 authorization.

Error Code: 3000

Not allowed to start local archiving. To use this feature, enable the “Archive meetings and webinars” setting in the “Settings” page of the Zoom web portal.

Error Code: 3161

Meeting hosting and scheduling capabilities are not allowed for your user account.

404

HTTP Status Code: 404

Not Found

Error Code: 300

Meeting ID does not exist.

Error Code: 3001

Meeting does not exist: {meetingId}

GET /meetings/{meetingId}/jointoken/local_archiving
GET /meetings/{meetingId}/jointoken/local_recording

Get a meeting’s join token to allow for local recording. The join token lets a recording bot implemented using Zoom Meeting SDK to connect to a Zoom meeting. The recording bot can then automatically start locally recording. This supports both regular and raw local recording types.

Prerequisites:

  • The Local recording user setting enabled in the Zoom web portal.

Scopes: meeting_token:read:local_recording,meeting_token:read:admin:local_recording

Granular Scopes: meeting:read:local_recording_token,meeting:read:local_recording_token:admin

Rate Limit Label: LIGHT

operationId: Meetings_getJoinTokenLocalRecording

Parameters

Name In Required Type Description
meetingId path required integer

The meeting’s ID.

When storing this value in your database, you must store it as a long format integer and not an integer. Meeting IDs can exceed 10 digits.

bypass_waiting_room query optional boolean

Whether to bypass the waiting room.

Responses

200

HTTP Status Code: 200

Meeting local recording token returned.

400

HTTP Status Code: 400

Bad Request

Error Code: 300

Invalid meeting ID.

Error Code: 3000

Cannot access Webinar information.

Error Code: 124

This API only supports OAuth2 authorization.

Error Code: 3000

Not allowed to start local recording. To use this feature, enable the “Local Recording” setting in the “Settings” page of the Zoom web portal.

Error Code: 3161

Meeting hosting and scheduling capabilities are not allowed for your user account.

404

HTTP Status Code: 404

Not Found

Error Code: 300

Meeting ID does not exist.

Error Code: 3001

Meeting does not exist: {meetingId}.

GET /meetings/{meetingId}/jointoken/local_recording
GET /meetings/{meetingId}/livestream

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:read:admin,meeting:read

Rate Limit Label: Light

operationId: Meetings_getLivestreamDetails

Parameters

Name In Required Type Description
meetingId path required string

Unique identifier of the meeting.

Responses

200

HTTP Status Code: 200 OK

Live Stream details returned.

400

HTTP Status Code: 400

Bad Request

Error Code: 300

Missing meetingId

Invalid meetingId

Error Code: 1010

User does not belong to this account: {accountId}

Error Code: 3161

Meeting hosting and scheduling capabilities are not allowed for your user account.

404

HTTP Status Code: 404

Not Found

Error Code: 1001

User {userId} does not exist.

GET /meetings/{meetingId}/livestream
GET /meetings/{meetingId}/meeting_summary

Displays information about a meeting summary.

Prerequisites:

  • Host user type must be Pro or higher plan.
  • The Meeting Summary with AI Companion feature enabled in the host’s account.
  • E2ee meetings do not have summary feature enabled.

Scopes: meeting_summary:read:admin,meeting_summary:read

Granular Scopes: meeting:read:summary,meeting:read:summary:admin

Rate Limit Label: LIGHT

operationId: Meetings_getMeetingSummary

Parameters

Name In Required Type Description
meetingId path optional string

The meeting’s universally unique ID (UUID). When you provide a meeting UUID that begins with a / character or contains the // characters, you must double-encode the meeting UUID before making an API request.

Responses

200

HTTP Status Code: 200Meeting Poll object returned.

GET /meetings/{meetingId}/meeting_summary
GET /meetings/{meetingId}/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:read:admin,meeting:read

Rate Limit Label: Light

operationId: Meetings_listMeetingPolls

Parameters

Name In Required Type Description
meetingId path required integer

The meeting’s ID.

When storing this value in your database, you must store it as a long format integer and not an integer. Meeting IDs can exceed 10 digits.

anonymous query optional boolean

Whether to query for polls with the Anonymous option enabled:

  • true — Query for polls with the Anonymous option enabled.
  • false — Do not query for polls with the Anonymous option enabled.

Responses

200

HTTP Status Code:

List polls of a Meeting returned

400

HTTP Status Code: 400

Bad Request

Error Code: 4400

Meeting polls disabled. To enable this feature, enable the “Meeting Polls/Quizzes” setting in the Zoom web portal’s “Settings” interface.

Error Code: 3161

Meeting hosting and scheduling capabilities are not allowed for your user account.

404

HTTP Status Code: 404

Not Found

Error Code: 404

Meeting Poll not found

GET /meetings/{meetingId}/polls
GET /meetings/{meetingId}/polls/{pollId}

Polls allow the meeting host to survey attendees. Retrieve information about a specific meeting poll.

Scopes: meeting:read:admin,meeting:read

Rate Limit Label: Light

operationId: Meetings_getPoll

Parameters

Name In Required Type Description
meetingId path required integer

The meeting’s ID.

When storing this value in your database, you must store it as a long format integer and not an integer. Meeting IDs can exceed 10 digits.

pollId path required string

The poll ID

Responses

200

HTTP Status Code: 200

Meeting Poll object returned

400

HTTP Status Code: 400

Bad Request

Error Code: 4400

Meeting polls disabled. To enable this feature, enable the “Meeting Polls/Quizzes” setting in the Zoom web portal’s “Settings” interface.

Error Code: 3161

Meeting hosting and scheduling capabilities are not allowed for your user account.

404

HTTP Status Code: 404

Not Found

Error Code: 404

Meeting Poll not found.

GET /meetings/{meetingId}/polls/{pollId}
GET /meetings/{meetingId}/registrants

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

Scopes: meeting:read:admin,meeting:read

Rate Limit Label: Medium

operationId: Meetings_listRegistrants

Parameters

Name In Required Type Description
meetingId path required integer

The meeting’s ID.

When storing this value in your database, you must store it as a long format integer and not an integer. Meeting IDs can exceed 10 digits.

occurrence_id query optional string

The meeting or webinar occurrence ID.

status query optional string

Query by the registrant’s status.

  • pending - The registration is pending.
  • approved - The registrant is approved.
  • denied - The registration is denied.
page_size query optional integer

The number of records returned within a single API call.

page_number query optional integer

Deprecated. We will no longer support this field in a future release. Instead, use the next_page_token for pagination.

next_page_token query optional string

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

Responses

200

HTTP Status Code: 200

Successfully listed meeting registrants.

400

HTTP Status Code: 400

Bad Request

Error Code: 1010

User does not belong to this account: {accountId}.


Error Code: 3003

You are not the meeting host.


Error Code: 3000

Cannot access meeting info.

Error Code: 3161

Meeting hosting and scheduling capabilities are not allowed for your user account.

404

HTTP Status Code: 404

Not Found

Error Code: 1001

Meeting host does not exist: {userId}.

GET /meetings/{meetingId}/registrants
GET /meetings/{meetingId}/registrants/questions

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

Scopes: meeting:read,meeting:read:admin

Rate Limit Label: Light

operationId: Meetings_listRegistrationQuestions

Parameters

Name In Required Type Description
meetingId path required integer

The meeting’s ID.

When storing this value in your database, you must store it as a long format integer and not an integer. Meeting IDs can exceed 10 digits.

Responses

200

HTTP Status Code: 200

Meeting Registrant Question object returned

400

HTTP Status Code: 400

Bad Request

Error Code: 3161

Meeting hosting and scheduling capabilities are not allowed for your user account.

404

HTTP Status Code: 404

Not Found

GET /meetings/{meetingId}/registrants/questions
GET /meetings/{meetingId}/registrants/{registrantId}

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:read:admin,meeting:read

Rate Limit Label: Light

operationId: Meetings_getRegistrantDetails

Parameters

Name In Required Type Description
meetingId path required integer

The meeting’s ID.

When storing this value in your database, you must store it as a long format integer and not an integer. Meeting IDs can exceed 10 digits.

registrantId path required string

The registrant ID.

Responses

200

Success.

400

HTTP Status Code: 400

Bad Request

Error Code: 1010

User does not belong to this account: “{accountId}”


Error Code: 3003

You are not the meeting host.


Error Code: 3000

Cannot access meeting info.

Error Code: 3161

Meeting hosting and scheduling capabilities are not allowed for your user account.

404

HTTP Status Code: 404

Not Found

Error Code: 1001

Meeting host does not exist: “{userId}”

GET /meetings/{meetingId}/registrants/{registrantId}
GET /meetings/{meetingId}/survey

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:read,meeting:read:admin

Rate Limit Label: LIGHT

operationId: Meetings_getMeetingSurvey

Parameters

Name In Required Type Description
meetingId path required integer

The meeting’s ID.

When storing this value in your database, store it as a long-format integer and not a simple integer. Meeting IDs can be more than 10 digits.

Responses

200

HTTP Status Code: 200

Meeting survey object returned.

400

HTTP Status Code: 400

Bad Request

Error Code: 300

Invalid meeting ID.

Error Code: 3000

Cannot access Webinar information.

Error Code: 3000

Meeting survey disabled. To enable this feature, enable the “Meeting Survey” setting in the Zoom web portal’s “Settings” interface.

Error Code: 3161

Meeting hosting and scheduling capabilities are not allowed for your user account.

404

HTTP Status Code: 404

Not Found

Error Code: 300

Meeting ID does not exist.

Error Code: 3001

Meeting does not exist: {meetingId}.

GET /meetings/{meetingId}/survey
GET /meetings/{meetingId}/token

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 3rd-party Closed Captioning services setting enabled.

Scopes: meeting:read,meeting:read:admin

Rate Limit Label: Light

operationId: Meetings_getMeetingToken

Parameters

Name In Required Type Description
meetingId path required integer

The meeting’s ID.

When storing this value in your database, you must store it as a long format integer and not an integer. Meeting IDs can exceed 10 digits.

type query optional string

The meeting token type:

  • closed_caption_token — The third-party closed caption API token.

This defaults to closed_caption_token.

Responses

200

HTTP Status Code: 200

Meeting token returned.

400

HTTP Status Code: 400

Bad Request

Error Code: 300

Invalid meeting ID.

Error Code: 3000

  • Cannot access Webinar information.
  • Meeting survey disabled. To enable this feature, enable the “Meeting Survey” setting in the Zoom web portal’s “Settings” interface.

Error Code: 3161

Meeting hosting and scheduling capabilities are not allowed for your user account.

404

HTTP Status Code: 404

Not Found

Error Code: 300

Meeting ID does not exist.

Error Code: 3001

Meeting does not exist: {meetingId}

GET /meetings/{meetingId}/token
GET /past_meetings/{meetingId}

Get information about a past meeting.

Scopes: meeting:read:admin,meeting:read

Rate Limit Label: Light

operationId: Meetings_getDetails

Parameters

Name In Required Type Description
meetingId path required

The meeting’s ID or universally unique ID (UUID).

  • If you provide a meeting ID, the API will return a response for the latest meeting instance.
  • If you provide a meeting UUID that begins with a / character or contains the // characters, you must double encode the meeting UUID before making an API request.

Responses

200

HTTP Status Code: 200

Meeting information returned.

400

HTTP Status Code: 400

Bad Request

Error Code: 1010

  • User does not exist: {userId}
  • User “{userId}” does not exist or does not belong to this account.

Error Code: 300

Cannot access meeting information.

Error Code: 200

Only available for paid account: {accountId}

Error Code: 12702

Can not access a meeting a year ago.

404

HTTP Status Code: 404

Not Found

Error Code: 3001

  • This meeting is not available or the meeting ID is invalid.
  • The meeting ID is invalid or the meeting has not ended.
GET /past_meetings/{meetingId}
GET /past_meetings/{meetingId}/instances

Return a list of past meeting instances.

Scopes: meeting:read:admin,meeting:read

Rate Limit Label: Medium

operationId: Meetings_listPastMeetingInstances

Parameters

Name In Required Type Description
meetingId path required integer

The past meeting’s ID.

Responses

200

HTTP Status Code: 200

List of ended meeting instances returned.

404

HTTP Status Code: 404

Not Found

GET /past_meetings/{meetingId}/instances
GET /past_meetings/{meetingId}/participants

Retrieve information on participants from a past meeting. Note the API doesn’t return results if there’s only one participant in a meeting.

Prerequisites:

  • Paid account on a Pro or higher plan.

    Note: Please double encode your UUID when using this API if the UUID begins with a ‘/’or contains ‘//’ in it.

Scopes: meeting:read:admin,meeting:read

Granular Scopes: meeting:read:list_past_participants,meeting:read:list_past_participants:admin

Rate Limit Label: MEDIUM

operationId: Meetings_getPastMeetingParticipants

Parameters

Name In Required Type Description
meetingId path required string

The meeting’s ID or universally unique ID (UUID).

  • If you provide a meeting ID, the API will return a response for the latest meeting instance.
  • If you provide a meeting UUID that begins with a / character or contains the // characters, you must double-encode the meeting UUID before making an API request.
page_size query optional integer

The number of records returned within a single API call.

next_page_token query optional string

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

Responses

200

HTTP Status Code: 200

Meeting participants’ report returned.

400

HTTP Status Code: 400

Bad Request

Error Code: 1010

User {userId} not exist or not belong to this account.



Error Code: 300

Cannot access meeting information.



Error Code: 200

Only available for paid account: {accountId}

Error Code: 12702

Can not access a meeting a year ago.

404

HTTP Status Code: 404

Not Found

Error Code: 1001

User {userId} not exist or not belong to this account.

User not exist: {userId}



Error Code: 3001

This meeting is not available or ID is not valid.

Meeting ID is invalid or not end.

GET /past_meetings/{meetingId}/participants
GET /past_meetings/{meetingId}/polls

Polls allow the meeting host to survey attendees. List poll results of a meeting.

Prerequisites:

  • Host user type must be Pro.
  • Meeting must be a scheduled meeting. Instant meetings do not have polling features enabled.

Scopes: meeting:read:admin,meeting:read

Rate Limit Label: Medium

operationId: Meetings_listPastMeetingPolls

Parameters

Name In Required Type Description
meetingId path required string

The meeting’s ID or universally unique ID (UUID).

  • If you provide a meeting ID, the API will return a response for the latest meeting instance.
  • If you provide a meeting UUID that begins with a / character or contains the // characters, you must double-encode the meeting UUID before making an API request.

Responses

200

HTTP Status Code: 200 OK

Polls returned successfully.

400

HTTP Status Code: 400

Bad Request

Error Code: 12702

Can not access a meeting a year ago.

GET /past_meetings/{meetingId}/polls
GET /past_meetings/{meetingId}/qa

The question & answer (Q&A) feature for Zoom Meetings lets attendees ask questions during a meeting and lets the other attendees answer those questions.

List Q&A of a specific meeting.

Prerequisites:

Scopes: meeting:read:admin,meeting:read

Rate Limit Label: Medium

operationId: Meetings_listPastMeetingQA

Parameters

Name In Required Type Description
meetingId path required string

The meeting’s ID or universally unique ID (UUID).

  • If you provide a meeting ID, the API will return a response for the latest meeting instance.
  • If you provide a meeting UUID that begins with a / character or contains the // characters, you must double-encode the meeting UUID before making an API request.

Responses

200

HTTP Status Code: 200 OK

Q&A returned successfully.

401

HTTP Status Code: 401

Unauthorized

Error Code: 1010

User does not belong to this account:{accountId}.

404

HTTP Status Code: 404

Not Found

Error Code: 3001

Meeting ID is invalid or not end.

This Meeting id does not belong to you:{meetingId}.

GET /past_meetings/{meetingId}/qa
GET /users/{userId}/meeting_templates

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

Scopes: meeting:read,meeting:read:admin

Rate Limit Label: Medium

operationId: Meetings_listMeetingTemplates

Parameters

Name In Required Type Description
userId path required string

The user ID retrievable from the List users API.

Responses

200

HTTP Status Code: 200 OK

400

HTTP Status Code: 400

Bad Request

Error Code: 3161

Meeting hosting and scheduling capabilities are not allowed for your user account.

404

HTTP Status Code: 404

Not Found

Error Code: 1001

User not exist: {userId}.

User {userId} does not exist or does not belong to this account.

GET /users/{userId}/meeting_templates
GET /users/{userId}/meetings

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

Note

  • This API only supports scheduled meetings. This API does not return information about instant meetings.
  • This API only returns a user’s unexpired meetings.

Scopes: meeting:read,meeting:read:admin

Granular Scopes: meeting:read:list_meetings,meeting:read:list_meetings:admin

Rate Limit Label: MEDIUM

operationId: Meetings_listHostScheduled

Parameters

Name In Required Type Description
userId path required string

The user’s user ID or email address. For user-level apps, pass the me value.

type query optional string

The type of meeting.

  • scheduled - All valid previous (unexpired) meetings, live meetings, and upcoming scheduled meetings.
  • live - All the ongoing meetings.
  • upcoming - All upcoming meetings, including live meetings.
  • upcoming_meetings - All upcoming meetings, including live meetings.
  • previous_meetings - All the previous meetings.
page_size query optional integer

The number of records returned within a single API call.

next_page_token query optional string

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

page_number query optional integer

The page number of the current page in the returned records.

from query optional string

The start date.

to query optional string

The end date.

timezone query optional string

The timezone to assign to the from and to value. For a list of supported timezones and their formats, see our timezone list.

Responses

200

HTTP Status Code: 200

List of meeting objects returned.

400

HTTP Status Code: 400

Bad Request

Error Code: 3161

Meeting hosting and scheduling capabilities are not allowed for your user account.

404

HTTP Status Code: 404

Not Found

Error Code: 1001

User {userId} not exist or not belong to this account.

GET /users/{userId}/meetings
GET /users/{userId}/upcoming_meetings

List a Zoom user’s upcoming meetings. For user-level apps, pass the me value instead of the userId parameter.

Note

  • This API includes the meetings that Zoom users schedule and the meetings they are invited to join.
  • This API only includes upcoming meetings within the next 24 hours.

Scopes: meeting:read,meeting:read:admin

Granular Scopes: meeting:read:list_upcoming_meetings,meeting:read:list_upcoming_meetings:admin

Rate Limit Label: MEDIUM

operationId: Meetings_listUpcomingMeetings

Parameters

Name In Required Type Description
userId path required string

The user’s user ID or email address. For user-level apps, pass the me value.

Responses

200

HTTP Status Code: 200 List of upcoming meeting objects returned.

GET /users/{userId}/upcoming_meetings

Pac 1 endpoints

GET /users/{userId}/pac

Retrieve a list of a user’s personal audio conference (PAC) accounts. For user-level apps, pass the me value instead of the userId parameter.

PAC allows Pro or higher account holders to host meetings through PSTN (phone dial-in) only.

Prerequisites

Scopes: pac:read:admin,pac:read

Rate Limit Label: Light

operationId: Pac_listAccounts

Parameters

Name In Required Type Description
userId path required string

The user’s user ID or email address. For user-level apps, pass the me value.

Responses

200

HTTP Status Code: 200

PAC account list returned.

400

HTTP Status Code: 400

Bad Request

Error Code: 2024

User does not have PAC enabled.

404

HTTP Status Code: 404

Not Found

Error Code: 1001

User does not exist: $userId

GET /users/{userId}/pac

Reports 20 endpoints

GET /report/activities

Retrieve a list of sign in / sign out activity logs report of users under a Zoom account.

Prerequisites

  • Pro or higher plan.

Scopes: report:read:admin

Granular Scopes: report:read:user_activities:admin

Rate Limit Label: Heavy

operationId: Reports_listSignInSignOutActivities

Parameters

Name In Required Type Description
from query optional string

Start date for which you would like to view the activity logs report. Using the from and to parameters, specify a monthly date range for the report as the API only provides one month worth of data in one request. The specified date range should fall within the last six months.

to query optional string

End date up to which you would like to view the activity logs report.

page_size query optional integer

The number of records to be returned within a single API call

next_page_token query optional string

Next page token is used to paginate through large result sets

Responses

200

HTTP Status Code: 200

Success

400

HTTP Status Code: 400

Bad Request

Error Code: 200

No permission.

GET /report/activities
GET /report/billing

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:read:admin

Granular Scopes: report:read:billing:admin

Rate Limit Label: Heavy

operationId: Reports_getBillingDepartmentReports

Responses

200

HTTP Status Code: 200 OK

Billing report returned.

400

HTTP Status Code: 400

Bad Request

Error Code: 200

No permission.

GET /report/billing
GET /report/billing/invoices

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 for. This ID can be retrieved from 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:read:admin

Granular Scopes: report:read:billing_invoice:admin

Rate Limit Label: Heavy

operationId: Reports_getBillingInvoices

Parameters

Name In Required Type Description
billing_id query required string

Unique Identifier of the Billing Report. Retrieve this ID from the response of Get Billing Reports API request.

Responses

200

HTTP Status Code: 200 OK

Billing Invoice reports returned.

404

HTTP Status Code: 404

Not Found

Error Code: 5010

Report does not exist.

GET /report/billing/invoices
GET /report/cloud_recording

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:read:admin

Rate Limit Label: Heavy

operationId: Reports_getCloudRecordingUsageReport

Parameters

Name In Required Type Description
from query required string

Start date in ‘yyyy-mm-dd’ format. The date range defined by the "from" and "to" parameters should only be one month as the report includes only one month worth of data at once.

to query required string

End date.

group_id query optional string

The group ID. To get a group ID, use the List groups API.

Note: The API response will only contain users who are members of the queried group ID.

Responses

200

HTTP Status Code: 200

Cloud Recording Report Returned

400

HTTP Status Code: 400

Bad Request

Error Code: 200

No permission.

GET /report/cloud_recording
GET /report/daily

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:read:admin

Rate Limit Label: Heavy

operationId: Reports_getDailyUsageReport

Parameters

Name In Required Type Description
year query optional integer

Year for this report

month query optional integer

Month for this report

group_id query optional string

The group ID. To get a group ID, use the List groups API.

Note: The API response will only contain users who are members of the queried group ID.

Responses

200

HTTP Status Code: 200

Daily report retrieved.

This is only available for paid accounts:{accountId}.

400

HTTP Status Code: 400

Bad Request

Error Code: 300

Daily report can only be provided for a month that falls within the recent 6 months.

Error Code: 200

No permission.

GET /report/daily
GET /report/meetings/{meetingId}

Get a detailed report for a past meeting.

Prerequisites:

  • Pro or a higher plan.

Scopes: report:read:admin

Granular Scopes: report:read:meeting:admin

Rate Limit Label: Heavy

operationId: Reports_getMeetingDetailReports

Parameters

Name In Required Type Description
meetingId path required

The meeting’s ID or universally unique ID (UUID).

  • If you provide a meeting ID, the API will return a response for the latest meeting instance.
  • If you provide a meeting UUID that begins with a / character or contains the // characters, you must double encode the meeting UUID before making an API request.

Responses

200

HTTP Status Code: 200

Meeting details returned.

This is only available for paid account.

400

HTTP Status Code: 400

Bad Request

Error Code: 12702

Can not access meeting a year ago.

Error Code: 200

No permission.

404

HTTP Status Code: 404

Not Found

Error Code: 3001

Meeting {meetingId} not found or has expired.

GET /report/meetings/{meetingId}
GET /report/meetings/{meetingId}/participants

Return a report of a past meeting with two or more participants, including the host. To return a report for past meeting with only one participant, use the List meeting participants API.

Note:

This API may return empty values for participants’ user_name, ip_address, location, and email responses when the account calling this API:

Prerequisites:

  • A Pro or a higher plan.

Scopes: report:read:admin

Granular Scopes: report:read:list_meeting_participants:admin

Rate Limit Label: Heavy

operationId: Reports_getMeetingParticipantReports

Parameters

Name In Required Type Description
meetingId path required string

The meeting’s ID or universally unique ID (UUID).

  • If you provide a meeting ID, the API will return a response for the latest meeting instance.
  • If you provide a meeting UUID that begins with a / character or contains the // characters, you must double-encode the meeting UUID before making an API request.
page_size query optional integer

The number of records returned within a single API call.

next_page_token query optional string

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

include_fields query optional string

Provide registrant_id as the value for this field if you would like to see the registrant ID attribute in the response of this API call. A registrant ID is a unique identifier of a meeting registrant.

Responses

200

HTTP Status Code: 200

Meeting participants report returned.

Only available for Paid or ZMP account: {accountId}.

400

HTTP Status Code: 400

Bad Request

Error Code: 1010

User does not belong to this account:{accountId}.


Error Code: 12702

Can not access meeting a year ago.


Error Code: 200

No permission.

404

HTTP Status Code: 404

Not Found

Error Code: 3001

Meeting {MeetingId} not found or has expired.

GET /report/meetings/{meetingId}/participants
GET /report/meetings/{meetingId}/polls

Use this API to get a report of poll results for a past meeting.

Prerequisites:

  • A Pro or a higher plan.

Scopes: report:read:admin

Granular Scopes: report:read:list_meeting_polls:admin

Rate Limit Label: Heavy

operationId: Reports_getMeetingPollReports

Parameters

Name In Required Type Description
meetingId path required

The meeting’s ID or universally unique ID (UUID).

  • If you provide a meeting ID, the API will return a response for the latest meeting instance.
  • If you provide a meeting UUID that begins with a / character or contains the // characters, you must double encode the meeting UUID before making an API request.

Responses

200

HTTP Status Code: 200

  • Meeting polls report returned.
  • This is only available for paid account: {accountId}
400

HTTP Status Code: 400

Bad Request

Error Code: 12702

Can not access meeting a year ago.

Error Code: 200

No permission.

404

HTTP Status Code: 404

Not Found

Error Code: 3001

Meeting “{meetingId}” not found or has expired.

GET /report/meetings/{meetingId}/polls
GET /report/meetings/{meetingId}/qa

Retrieve a report on questions asked and answered by participants from past meetings.

Prerequisites:

  • Pro plan or higher.

Scopes: report:read:admin

Granular Scopes: report:read:meeting_qna:admin

Rate Limit Label: HEAVY

operationId: Reports_getMeetingQaReport

Parameters

Name In Required Type Description
meetingId path required string

The meeting’s ID or universally unique ID (UUID).

  • If you provide a meeting ID, the API will return a response for the latest meeting instance.
  • If you provide a meeting UUID that begins with a / character or contains the // characters, you must double-encode the meeting UUID before making an API request.

Responses

200

HTTP Status Code: 200

Meeting Q&A report returned.

Only available for Paid or ZMP account: {accountId}.

400

HTTP Status Code: 400

Bad Request

Error Code: 200

No permission.

404

HTTP Status Code: 404

Not Found

Error Code: 1001

User does not exist: {userId}.


Error Code: 3001

Meeting {meetingId} not found or has expired.

GET /report/meetings/{meetingId}/qa
GET /report/meetings/{meetingId}/survey

Retrieve a report on past meeting survey.

Prerequisites:

  • Pro or a higher plan.

Scopes: report:read:admin

Granular Scopes: report:read:meeting_survey:admin

Rate Limit Label: HEAVY

operationId: Reports_getMeetingSurveyReport

Parameters

Name In Required Type Description
meetingId path required string

The meeting’s ID or universally unique ID (UUID).

  • If you provide a meeting ID, the API will return a response for the latest meeting instance.
  • If you provide a meeting UUID that begins with a / character or contains the // characters, you must double-encode the meeting UUID before making an API request.

Responses

200

HTTP Status Code: 200

Meeting survey report returned.

Only available for Paid or ZMP account: {accountId}.

400

HTTP Status Code: 400

Bad Request

Error Code: 1010

User does not belong to this account:{accountId}.


Error Code: 12702

Can not access a webinar a year ago.


Error Code: 200

No permission.

404

HTTP Status Code: 404

Not Found

Error Code: 3001

Webinar {webinarId} not found or has expired.

GET /report/meetings/{meetingId}/survey
GET /report/operationlogs

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:read:admin

Granular Scopes: report:read:operation_logs:admin

Rate Limit Label: Heavy

operationId: Reports_getOperationLogsReport

Parameters

Name In Required Type Description
from query required string

Start date in ‘yyyy-mm-dd’ format. The date range defined by the "from" and "to" parameters should only be one month as the report includes only one month worth of data at once.

to query required string

End date.

page_size query optional integer

The number of records returned within a single API call.

next_page_token query optional string

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

category_type query optional string

Optional

Filter your response by a category type to see reports for a specific category.
The value for this field can be one of the following:
all
user
user_settings
account
billing
im
recording
phone_contacts
webinar
sub_account
role
zoom_rooms

Responses

200

HTTP Status Code: 200

Operation Logs Report Returned

400

HTTP Status Code: 400

Bad Request

Error Code: 200

No permission.

GET /report/operationlogs
GET /report/telephone

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:read:admin

Granular Scopes: report:read:telephone:admin

Rate Limit Label: Heavy

operationId: Reports_getTelephoneReports

Parameters

Name In Required Type Description
type query optional string

Audio types:
1 - Toll-free Call-in & Call-out.
2 - Toll

3 - SIP Connected Audio

query_date_type query optional string

The type of date to query.

  • start_time — Query by call start time.
  • end_time — Query by call end time.
  • meeting_start_time — Query by meeting start time.
  • meeting_end_time — Query by meeting end time.

This value defaults to start_time.

from query required string

Start date in ‘yyyy-mm-dd’ format. The date range defined by the "from" and "to" parameters should only be one month as the report includes only one month worth of data at once.

to query required string

End date.

page_size query optional integer

The number of records returned within a single API call.

page_number query optional integer

The page number of the current page in the returned records. This field is not available if the query_date_type parameter is the meeting_start_time or meeting_end_time value.

This field is deprecated. Use the next_page_token query parameter for pagination.

next_page_token query optional string

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

Responses

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.

Toll Report feature must be enabled to perform this action. Contact the Zoom Support team for help.

GET /report/telephone
GET /report/upcoming_events

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:read:admin

Granular Scopes: report:read:upcoming_meetings_webinars:admin

Rate Limit Label: Heavy

operationId: Reports_listUpcomingEventsReport

Parameters

Name In Required Type Description
from query required string

Start date in ‘yyyy-mm-dd’ format. The date range defined by the "from" and "to" parameters should only be one month as the report includes only one month worth of data at once.

to query required string

End date.

page_size query optional integer

The number of records returned within a single API call.

next_page_token query optional string

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

type query optional string

The type of event to query.

  • meeting — A meeting event.
  • webinar — A webinar event.
  • all — Both meeting and webinar events.

This value defaults to all.

group_id query optional string

The group ID. To get a group ID, use the List groups API.

Note: The API response will only contain meetings where the host is a member of the queried group ID.

Responses

200

HTTP Status Code: 200

Upcoming events report returned.

400

HTTP Status Code: 400

Bad Request

Error Code: 200

This is only available for the paid account: {accountId}

Error Code: 300

The next page token is invalid or expired.

Error Code: 200

No permission.

GET /report/upcoming_events
GET /report/users

Retrieve a host report for a specified period of time within the last six months.
The report time range is limited to a month.

You can specify the type of report and date range using the query parameters.

  • The Active Hosts report displays a list of meetings, participants, and meeting minutes.
    An active host is defined as any user who has hosted at least one meeting during the during the month specified in the from and to range.

  • The Inactive Hosts report pulls a list of users who were not active during a specific period of time.
    An inactive host is defined as any user who has not hosted any meetings during the specified period of time for the report. to be inactive.

Prerequisites:

  • Pro or higher plan.

Scopes: report:read:admin

Granular Scopes: report:read:list_users:admin

Rate Limit Label: HEAVY

operationId: Reports_getActiveInactiveHostReports

Parameters

Name In Required Type Description
type query optional string

Active or inactive hosts.
active - Active hosts.
inactive - Inactive hosts.

from query required string

Start date in ‘yyyy-mm-dd’ format. The date range defined by the from and to parameters should only be one month as the report includes only one month worth of data at once.

to query required string

End date.

page_size query optional integer

The number of records returned within a single API call.

page_number query optional integer

The page number of the current page in the returned records.

next_page_token query optional string

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

group_id query optional string

The group ID. To get a group ID, use the List groups API.

Note: The API response will only contain users who are members of the queried group ID.

Responses

200

HTTP Status Code: 200

Active or inactive hosts report returned.

Only available for Paid or ZMP account: {accountId}.

400

HTTP Status Code: 400

Bad Request

Error Code: 200

No permission.


GET /report/users
GET /report/users/{userId}/meetings

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:read:admin

Granular Scopes: report:read:user:admin

Rate Limit Label: Heavy

operationId: Reports_getMeetingReports

Parameters

Name In Required Type Description
userId path required

The user ID or email address of the user. For user-level apps, pass the me value.

from query required string

Start date in ‘yyyy-mm-dd’ format. The date range defined by the "from" and "to" parameters should only be one month as the report includes only one month worth of data at once.

to query required string

End date.

page_size query optional integer

The number of records returned within a single API call.

next_page_token query optional string

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

type query optional string

The meeting type to query for:

  • past — All past meetings.
  • pastOne — A single past user meeting.
  • pastJoined — All past meetings the account’s users hosted or joined.

Responses

200

HTTP Status Code: 200

Active or inactive hosts report returned.

400

HTTP Status Code: 400

Bad Request

Error Code: 200

This is only available for paid account:{accountId}.

Error Code: 300

The next page token is invalid or expired.

Error Code: 200

No permission.

404

HTTP Status Code: 404

Not Found

Error Code: 1001

User {userId} not exist or not belong to this account.

GET /report/users/{userId}/meetings
GET /report/webinars/{webinarId}

Retrieve a report containing past webinar details.

Prerequisites:

  • Pro or higher plan with Webinar add-on.

Scopes: report:read:admin

Granular Scopes: report:read:webinar:admin

Rate Limit Label: Heavy

operationId: Reports_getWebinarDetailsReport

Parameters

Name In Required Type Description
webinarId path required string

The webinar’s ID or universally unique ID (UUID).

  • If you provide a webinar ID, the API will return a response for the latest webinar instance.
  • If you provide a webinar UUID that begins with a / character or contains the // characters, you must double encode the webinar UUID before making an API request.

Responses

200

HTTP Status Code: 200

Webinar details returned.

This is only available for paid account:{accountId}.

400

HTTP Status Code: 400

Bad Request

Error Code: 1010

User does not belong to this account:{accountId}.

Error Code: 12702

Can not access a webinar a year ago.

Error Code: 200

No permission.

404

HTTP Status Code: 404

Not Found

Error Code: 3001

Meeting {meetingId} not found or has expired.

GET /report/webinars/{webinarId}
GET /report/webinars/{webinarId}/participants

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:read:admin

Granular Scopes: report:read:list_webinar_participants:admin

Rate Limit Label: Heavy

operationId: Reports_webinarParticipantsList

Parameters

Name In Required Type Description
webinarId path required string

The webinar’s ID or universally unique ID (UUID).

  • If you provide a webinar ID, the API will return a response for the latest webinar instance.
  • If you provide a webinar UUID that begins with a / character or contains the // characters, you must double-encode the webinar UUID before making an API request.
page_size query optional integer

The number of records returned within a single API call.

next_page_token query optional string

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

include_fields query optional string

The additional query parameters to include.

  • registrant_id - Include the registrant’s ID in the API response. The registrant ID is the webinar participant’s unique ID.

Responses

200

HTTP Status Code: 200

  • Meeting participants report returned.

Only available for Paid or ZMP account: {accountId}.

400

HTTP Status Code: 400

Bad Request

Error Code: 1010

User does not belong to this account: {accountId}

Error Code: 12702

Can not access a webinar a year ago.


Error Code: 200

No permission.

404

HTTP Status Code: 404

Not Found

Error Code: 3001

Webinar “{webinarId}” not found or has expired

GET /report/webinars/{webinarId}/participants
GET /report/webinars/{webinarId}/polls

Retrieve a report on past webinar polls.

Prerequisites:

  • Pro or a higher plan with Webinar add-on enabled.

Scopes: report:read:admin

Granular Scopes: report:read:list_webinar_polls:admin

Rate Limit Label: Heavy

operationId: Reports_getWebinarPollReports

Parameters

Name In Required Type Description
webinarId path required string

The webinar’s ID or universally unique ID (UUID).

  • If you provide a webinar ID, the API will return a response for the latest webinar instance.
  • If you provide a webinar UUID that begins with a / character or contains the // characters, you must double-encode the webinar UUID before making an API request.

Responses

200

HTTP Status Code: 200

Webinar polls report returned.

Missing webinar subscription plan.

Only available for Paid or ZMP account: {accountId}.

400

HTTP Status Code: 400

Bad Request

Error Code: 1010

User does not belong to this account:{accountId}.

Error Code: 12702

Can not access a webinar a year ago.

Error Code: 200

No permission.

404

HTTP Status Code: 404

Not Found

Error Code: 3001

Webinar {webinarId} not found or has expired.

GET /report/webinars/{webinarId}/polls
GET /report/webinars/{webinarId}/qa

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:read:admin

Granular Scopes: report:read:webinar_qna:admin

Rate Limit Label: HEAVY

operationId: Reports_getWebinarQAReport

Parameters

Name In Required Type Description
webinarId path required string

The webinar’s ID or universally unique ID (UUID).

  • If you provide a webinar ID, the API will return a response for the latest webinar instance.
  • If you provide a webinar UUID that begins with a / character or contains the // characters, you must double-encode the webinar UUID before making an API request.

Responses

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.

400

HTTP Status Code: 400

Bad Request

Error Code: 200

No permission.

404

HTTP Status Code: 404

Not Found

Error Code: 1001

User does not exist: {userId}.


Error Code: 3001

Webinar {webinarId} not found or has expired.

GET /report/webinars/{webinarId}/qa
GET /report/webinars/{webinarId}/survey

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:admin

Rate Limit Label: HEAVY

operationId: Reports_getWebinarSurveyReport

Parameters

Name In Required Type Description
webinarId path required string

The webinar’s ID or universally unique ID (UUID).

  • If you provide a webinar ID, the API returns a response for the latest webinar instance.
  • If you provide a webinar UUID that begins with a / character or contains the // characters, you must double-encode the webinar UUID before making an API request.

Responses

200

HTTP Status Code: 200

Webinar survey report returned.

Missing webinar subscription plan.

Only available for Paid or ZMP account: {accountId}.

400

HTTP Status Code: 400

Bad Request

Error Code: 1010

User does not belong to this account:{accountId}.


Error Code: 12702

Can not access a webinar a year ago.


Error Code: 200

No permission.

404

HTTP Status Code: 404

Not Found

Error Code: 3001

Webinar {webinarId} not found or has expired.

GET /report/webinars/{webinarId}/survey

Sipphone 1 endpoints

GET /sip_phones

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. Use this API to list SIP phones on an account.

Prerequisites:

  • Currently only supported on Cisco and Avaya PBX systems.
  • User must enable SIP Phone Integration by contacting the Sales team.

Scopes: sip_phone:read:admin

Rate Limit Label: Medium

operationId: SipPhone_list

Parameters

Name In Required Type Description
page_number query optional integer

Deprecated. We will no longer support this field in a future release. Instead, use the next_page_token for pagination.

search_key query optional string

User name or email address of a user. If this parameter is provided, only the SIP phone system integration enabled for that specific user will be returned. Otherwise, all SIP phones on an account will be returned.

page_size query optional integer

The number of records returned within a single API call.

next_page_token query optional string

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

Responses

200

HTTP Status Code: 200

SIP Phones listed successfully.

Error Code: 200

Permission missing: Enable SIP Phone Integration by contacting a Zoom Admin first.

400

HTTP Status Code: 400

Bad Request

GET /sip_phones

Tsp 3 endpoints

GET /tsp

Get information on Telephony Service Provider on an account level.

Prerequisites:

  • A Pro or a higher plan.

Scopes: tsp:read:admin

Rate Limit Label: Light

operationId: Tsp_getAccountInfo

Responses

200

HTTP Status Code: 200

TSP account detail returned successfully.

GET /tsp
GET /users/{userId}/tsp

A user can have a maximum of two TSP accounts. Use this API to list all TSP accounts of a user.

Scopes: tsp:read:admin,tsp:read

Rate Limit Label: Medium

operationId: Tsp_listUserTspAccounts

Parameters

Name In Required Type Description
userId path required

The user ID or email address of the user. For user-level apps, pass the me value.

Responses

200

HTTP Status Code: 200 OK

TSP account list returned successfully.

400

HTTP Status Code: 400

Bad Request

Error Code: 2024

Account has not enabled TSP.

404

HTTP Status Code: 404

Not Found

Error Code: 1001

User does not exist: $userId.

Error Code: 1120

A valid invitation to join the Zoom account was not found for this user.

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 - thus making the userId invalid.

GET /users/{userId}/tsp
GET /users/{userId}/tsp/{tspId}

Each user can have a maximum of two TSP accounts. Use this API to retrieve details of a specific TSP account enabled for a specific user.

Scopes: tsp:read:admin,tsp:read

Rate Limit Label: Light

operationId: Tsp_getUserTspAccount

Parameters

Name In Required Type Description
userId path required

The user ID or email address of the user. For user-level apps, pass the me value.

tspId path required string

TSP account ID.

Responses

200

HTTP Status Code: 200

TSP account retrieved successfully.

400

HTTP Status Code: 400

Bad Request

Error Code: 300

The TSP id provided does not exist.

Error Code: 300

TSP Config does not exist.

Error Code: 2024

Account has not enabled TSP.

404

HTTP Status Code: 404

Not Found

Error Code: 1001

User does not exist: $userId.

Error Code: 1120

A valid invitation to join the Zoom account was not found for this user.

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 - thus making the userId invalid.

GET /users/{userId}/tsp/{tspId}

Trackingfield 2 endpoints

GET /tracking_fields

Use this API to 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:read:admin

Rate Limit Label: Medium

operationId: TrackingField_list

Responses

200

HTTP Status Code: 200

List of Tracking Fields returned.

GET /tracking_fields
GET /tracking_fields/{fieldId}

Use this API to return information about a tracking field.

Prerequisites:

  • A Business, Education, API or higher plan.

Scopes: tracking_fields:read:admin

Rate Limit Label: Light

operationId: TrackingField_get

Parameters

Name In Required Type Description
fieldId path required string

The Tracking Field ID

Responses

200

HTTP Status Code: 200

Tracking Field object returned

404

HTTP Status Code: 404

Not Found

GET /tracking_fields/{fieldId}

Webinars 22 endpoints

GET /webinars/{webinarId}

Get details for a scheduled Zoom Webinar.

Prerequisites:

  • Pro or higher plan with a Webinar add-on.

Scopes: webinar:read:admin,webinar:read

Granular Scopes: webinar:read:webinar,webinar:read:webinar:admin

Rate Limit Label: LIGHT

operationId: Webinars_getDetails

Parameters

Name In Required Type Description
webinarId path required string

The webinar’s ID or universally unique ID (UUID).

occurrence_id query optional string

Unique identifier for an occurrence of a recurring webinar. Recurring webinars can have a maximum of 50 occurrences. When you create a recurring Webinar using Create a webinar API, you can retrieve the Occurrence ID from the response of the API call.

show_previous_occurrences query optional boolean

Set the value of this field to true if you would like to view Webinar details of all previous occurrences of a recurring Webinar.

Responses

200

HTTP Status Code: 200

Success

400

HTTP Status Code: 400

Bad Request

Error Code: 300

Invalid webinar ID.

Error Code: 200

Webinar plan is missing. You must subscribe to the webinar plan and enable webinars for this user to perform this action.

404

HTTP Status Code: 404

Not Found

Error Code: 3001

Webinar does not exist: {webinarId}.

GET /webinars/{webinarId}
GET /webinars/{webinarId}/branding

Use this API to 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 the Webinar add-on.
  • The Webinar Session Branding setting enabled.

Scopes: webinar:read,webinar:read:admin

Rate Limit Label: Light

operationId: Webinars_getSessionBranding

Parameters

Name In Required Type Description
webinarId path required integer

The webinar’s ID.

Responses

200

HTTP Status Code: 200

Webinar session branding returned.

400

HTTP Status Code: 400

Bad Request

Error Code: 1010

User does not belong to this account: {accountId}

Error Code: 3000

You cannot enable session branding for this webinar.

404

HTTP Status Code: 404

Not Found

Error Code: 1001

User “{userId}” does not exist or does not belong to this account.

Error Code: 3001

Webinar “{webinarId}” not found or has expired.

GET /webinars/{webinarId}/branding
GET /webinars/{webinarId}/jointoken/live_streaming

Use this API to get a webinar’s archive token to allow live streaming. The join token allows a recording bot implemented using Zoom meeting SDK to connect to a Zoom meeting "hosted by the issuer of the token", and can call the streaming method automatically. It supports both regular live streaming, and raw streaming.

Prerequisites:

  • A Pro or higher plan with a Webinar Add-on.
  • The Allow livestreaming of webinars user setting enabled in the Zoom web portal.

Scopes: webinar_token:read:admin:live_streaming,webinar_token:read:live_streaming

Rate Limit Label: Light

operationId: Webinars_joinTokenLiveStreaming

Parameters

Name In Required Type Description
webinarId path required integer

The webinar’s ID.

Responses

200

HTTP Status Code: 200

Webinar live streaming token returned.

400

HTTP Status Code: 400

Bad Request

Error Code: 300

Invalid webinar ID.

Error Code: 124

This API only supports OAuth2 authorization.

Error Code: 3000

Not allowed to start live streaming. To use this feature, enable the “Allow livestreaming of webinars” setting in the “Settings” page of the Zoom web portal.

404

HTTP Status Code: 404

Not Found

Error Code: 300

Webinar ID does not exist.

Error Code: 3001

Webinar does not exist: {webinarId}

GET /webinars/{webinarId}/jointoken/live_streaming
GET /webinars/{webinarId}/jointoken/local_archiving

Use this API to get a webinar’s archive token to allow local archiving. The archive token allows a meeting SDK app or bot to get archive permission to access the webinar’s raw audio and video media stream in real-time.

Prerequisites:

  • A Pro or higher plan with a Webinar Add-on.
  • The Archive meetings and webinars account setting enabled in the Zoom web portal.

Scopes: webinar_token:read:admin:local_archiving

Rate Limit Label: Light

operationId: Webinars_getMeetingArchiveTokenForLocalArchiving

Parameters

Name In Required Type Description
webinarId path required integer

The webinar’s ID.

Responses

200

HTTP Status Code: 200

Webinar local archiving token returned.

400

HTTP Status Code: 400

Bad Request

Error Code: 300

Invalid webinar ID.

Error Code: 124

This API only supports OAuth2 authorization.

Error Code: 3000

Not allowed to start local archiving. To use this feature, enable the “Archive meetings and webinars” setting in the “Settings” page of the Zoom web portal.

404

HTTP Status Code: 404

Not Found

Error Code: 300

Webinar ID does not exist.

Error Code: 3001

Webinar does not exist: {webinarId}

GET /webinars/{webinarId}/jointoken/local_archiving
GET /webinars/{webinarId}/jointoken/local_recording

Use this API to get a webinar’s join token to allow for local recording. The join token lets a recording bot implemented using Zoom Meeting SDK to connect to a Zoom webinar. The recording bot can then automatically start locally recording. This supports both regular and raw local recording types.

Prerequisites:

  • A Pro or higher plan with a Webinar Add-on.
  • The Local recording user setting enabled in the Zoom web portal.

Scopes: webinar_token:read:admin:local_recording,webinar_token:read:local_recording

Rate Limit Label: Light

operationId: Webinars_getJoinTokenLocalRecording

Parameters

Name In Required Type Description
webinarId path required integer

The webinar’s ID.

Responses

200

HTTP Status Code: 200

Webinar local recording token returned.

400

HTTP Status Code: 400

Bad Request

Error Code: 300

Invalid webinar ID.

Error Code: 124

This API only supports OAuth2 authorization.

Error Code: 3000

Not allowed to start local recording. To use this feature, enable the “Local Recording” setting in the “Settings” page of the Zoom web portal.

404

HTTP Status Code: 404

Not Found

Error Code: 300

Webinar ID does not exist.

Error Code: 3001

Webinar does not exist: {webinarId}

GET /webinars/{webinarId}/jointoken/local_recording
GET /webinars/{webinarId}/livestream

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:read:admin,webinar:read

Granular Scopes: webinar:read:livestream,webinar:read:livestream:admin

Rate Limit Label: LIGHT

operationId: Webinars_getLiveStreamDetails

Parameters

Name In Required Type Description
webinarId path required string

The webinar’s unique ID.

Responses

200

HTTP Status Code: 200 OK Live stream details returned.

400

HTTP Status Code: 400

Bad Request

Error Code: 300

  • Webinar ID does not exist.
    * Invalid Webinar ID.


    Error Code: 3001

    Webinar {webinarId} does not exist.


    Error Code: 1001

    User {userId} does not exist.


    Error Code: 200
  • Webinar plan is missing. Subscribe to the webinar plan and enable webinars for user {userId} in order to perform this action.
    * The current user has not enabled the custom live streaming feature of the webinar.
GET /webinars/{webinarId}/livestream
GET /webinars/{webinarId}/panelists

List all of a webinar’s panelists.

Webinar panelists can view and send video, screen share, annotate, and do much more compared to webinar attendees.

Prerequisites:

Scopes: webinar:read:admin,webinar:read

Granular Scopes: webinar:read:list_panelists,webinar:read:list_panelists:admin

Rate Limit Label: MEDIUM

operationId: Webinars_listPanelists

Parameters

Name In Required Type Description
webinarId path required integer

The webinar’s ID.

Responses

200

HTTP Status Code: 200

Webinar plan subscription missing. Enable webinar for this user once the subscription is added.

400

HTTP Status Code: 400

Bad Request

Error Code: 1010

User does not belong to this account:{accountId}.

404

HTTP Status Code: 404

Not Found

Error Code: 1001

User {userId} does not exist or does not belong to this account.


Error Code: 3001

Webinar {webinarId} not found or has expired.

GET /webinars/{webinarId}/panelists
GET /webinars/{webinarId}/polls

List all the polls of a Webinar.

Scopes: webinar:read:admin,webinar:read

Granular Scopes: webinar:read:list_polls,webinar:read:list_polls:admin

Rate Limit Label: LIGHT

operationId: Webinars_listPolls

Parameters

Name In Required Type Description
webinarId path required integer

The webinar’s ID.

anonymous query optional boolean

Whether to query for polls with the Anonymous option enabled:

  • true — Query for polls with the Anonymous option enabled.
  • false — Do not query for polls with the Anonymous option enabled.

Responses

200

HTTP Status Code: 200

List polls of a Webinar returned

400

HTTP Status Code: 400

Bad Request

Error Code: 4400

Webinar polls disabled. To enable this feature, enable the “Webinar Polls/Quizzes” setting in the Zoom web portal’s “Settings” interface.

404

HTTP Status Code: 404

Not Found

GET /webinars/{webinarId}/polls
GET /webinars/{webinarId}/polls/{pollId}

Get a webinar’s poll details.

Scopes: webinar:read:admin,webinar:read

Granular Scopes: webinar:read:poll,webinar:read:poll:admin

Rate Limit Label: LIGHT

operationId: Webinars_getPollDetails

Parameters

Name In Required Type Description
webinarId path required integer

The webinar’s ID.

pollId path required string

The poll ID

Responses

200

HTTP Status Code: 200

Webinar Poll object returned

400

HTTP Status Code: 400

Bad Request

Error Code: 4400

Webinar polls disabled. To enable this feature, enable the “Webinar Polls/Quizzes” setting in the Zoom web portal’s “Settings” interface.

404

HTTP Status Code: 404

Not Found

Error Code: 3001

Webinar {webinarId} not found or has expired.

GET /webinars/{webinarId}/polls/{pollId}
GET /webinars/{webinarId}/registrants

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:read:admin,webinar:read

Granular Scopes: webinar:read:list_registrants,webinar:read:list_registrants:admin

Rate Limit Label: MEDIUM

operationId: Webinars_listRegistrants

Parameters

Name In Required Type Description
webinarId path required integer

The webinar’s ID.

occurrence_id query optional string

The meeting or webinar occurrence ID.

status query optional string

Query by the registrant’s status.

  • pending - The registration is pending.
  • approved - The registrant is approved.
  • denied - The registration is denied.
tracking_source_id query optional string

The tracking source ID for the registrants. Useful if you share the webinar registration page in multiple locations. See Creating source tracking links for webinar registration for details.

page_size query optional integer

The number of records returned within a single API call.

page_number query optional integer

Deprecated This field will be deprecated. We will no longer support this field in a future release. Instead, use the next_page_token for pagination.

next_page_token query optional string

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

Responses

200

HTTP Status Code: 200

Webinar plan subscription is missing. Enable webinar for this user once the subscription is added:{userId}.

400

HTTP Status Code: 400

Bad Request

Error Code: 1010

User does not belong to this account:{accountId}.

404

HTTP Status Code: 404

Not Found

Error Code: 1001

User {userId} does not exist or does not belong to this account.


Error Code: 3001

Webinar {webinarId} not found or has expired.

GET /webinars/{webinarId}/registrants
GET /webinars/{webinarId}/registrants/questions

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:read:admin,webinar:read

Granular Scopes: webinar:read:list_registration_questions,webinar:read:list_registration_questions:admin

Rate Limit Label: LIGHT

operationId: Webinars_listRegistrationQuestions

Parameters

Name In Required Type Description
webinarId path required integer

The webinar’s ID.

Responses

200

HTTP Status Code: 200 Webinar registrant question object returned.

404

HTTP Status Code: 404

Not Found

GET /webinars/{webinarId}/registrants/questions
GET /webinars/{webinarId}/registrants/{registrantId}

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:read:admin,webinar:read

Granular Scopes: webinar:read:registrant,webinar:read:registrant:admin

Rate Limit Label: LIGHT

operationId: Webinars_registrantDetails

Parameters

Name In Required Type Description
webinarId path required integer

The webinar’s ID.

registrantId path required string

The registrant ID.

occurrence_id query optional string

The meeting or webinar occurrence ID.

Responses

200

Success.

400

HTTP Status Code: 400

Bad Request

Error Code: 1010

User does not belong to this account:{accountId}.

404

HTTP Status Code: 404

Not Found

Error Code: 1001

User {userId} does not exist or does not belong to this account.


Error Code: 3001

Webinar {webinarId} not found or has expired.

GET /webinars/{webinarId}/registrants/{registrantId}
GET /webinars/{webinarId}/survey

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:read:admin,webinar:read

Granular Scopes: webinar:read:survey,webinar:read:survey:admin

Rate Limit Label: LIGHT

operationId: Webinars_getSurvey

Parameters

Name In Required Type Description
webinarId path required integer

The webinar’s ID.

Responses

200

HTTP Status Code: 200

Webinar survey object returned.

400

HTTP Status Code: 400

Bad Request

Error Code: 300

Invalid webinar ID.

Error Code: 3000

Webinar survey disabled. To enable this feature, enable the “Webinar Survey” setting in the Zoom web portal’s “Settings” interface.

404

HTTP Status Code: 404

Not Found

Error Code: 300

Webinar ID does not exist.

Error Code: 3001

Webinar does not exist: {webinarId}.

GET /webinars/{webinarId}/survey
GET /webinars/{webinarId}/token

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:read,webinar:read:admin

Rate Limit Label: Light

operationId: Webinars_getWebinarToken

Parameters

Name In Required Type Description
webinarId path required integer

The webinar’s ID.

type query optional string

The webinar token type:

  • closed_caption_token — The third-party closed caption API token.

This defaults to closed_caption_token.

Responses

200

HTTP Status Code: 200

Webinar token returned.

400

HTTP Status Code: 400

Bad Request

Error Code: 300

Invalid webinar ID.

Error Code: 3000

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.

Error Code: 3000

Webinar {webinarId} has not started.

404

HTTP Status Code: 404

Not Found

Error Code: 300

Webinar ID does not exist.

Error Code: 3001

Webinar does not exist: {webinarId}

GET /webinars/{webinarId}/token
GET /webinars/{webinarId}/tracking_sources

Webinar Registration Tracking Sources allow you to see where your registrants are coming from if you share the webinar registration page in multiple platforms. You can then use the source tracking to see the number of registrants generated from each platform.
Use this API to list information on all the tracking sources of a Webinar.

Prerequisites:

Scopes: webinar:read:admin,webinar:read

Granular Scopes: webinar:read:list_tracking_sources,webinar:read:list_tracking_sources:admin

Rate Limit Label: MEDIUM

operationId: Webinars_listTrackingSources

Parameters

Name In Required Type Description
webinarId path required integer

The webinar’s ID.

Responses

200

HTTP Status Code: 200

GET /webinars/{webinarId}/tracking_sources
GET /past_webinars/{webinarId}/absentees

List absentees of a webinar.

Scopes: webinar:read:admin,webinar:read

Granular Scopes: webinar:read:list_absentees,webinar:read:list_absentees:admin

Rate Limit Label: HEAVY

operationId: Webinars_listAbsentees

Parameters

Name In Required Type Description
webinarId path required string

The webinar’s ID or universally unique ID (UUID).

  • If you provide a webinar ID, the API will return a response for the latest webinar instance.
  • If you provide a webinar UUID that begins with a / character or contains the // characters, you must double encode the webinar UUID before making an API request.
occurrence_id query optional string

The meeting or webinar occurrence ID.

page_size query optional integer

The number of records returned within a single API call.

next_page_token query optional string

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

Responses

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}.

400

HTTP Status Code: 400

Bad Request

Error Code: 300

The request could not be completed because you have provided an invalid occurrence ID: {occurrenceId}


Error Code: 1010

User does not belong to this account:{accountId}.


Error Code: 3000

This Webinar has not registration required: {webinarUUID}

404

HTTP Status Code: 404

Not Found

Error Code: 1001

User {userId} does not exist or does not belong to this account.


Error Code: 3001

Meeting ID is invalid or not end.

GET /past_webinars/{webinarId}/absentees
GET /past_webinars/{webinarId}/instances

List past webinar instances.

Scopes: webinar:read:admin,webinar:read

Granular Scopes: webinar:read:list_past_instances,webinar:read:list_past_instances:admin

Rate Limit Label: LIGHT

operationId: Webinars_listPastInstances

Parameters

Name In Required Type Description
webinarId path required integer

The webinar’s ID.

Responses

200

HTTP Status Code: 200

List of past webinar instances returned.

404

HTTP Status Code: 404

Not Found

GET /past_webinars/{webinarId}/instances
GET /past_webinars/{webinarId}/participants

Retrieve a list of all the participants who attended a webinar hosted in the past.

Prerequisites:

  • A Pro or higher plan with a webinar add-on.

Scopes: webinar:read:admin,webinar:read

Granular Scopes: webinar:read:list_past_participants:admin,webinar:read:list_past_participants

Rate Limit Label: MEDIUM

operationId: Webinars_listParticipants

Parameters

Name In Required Type Description
webinarId path required string

The webinar’s ID or universally unique ID (UUID).

  • If you provide a webinar ID, the API returns a response for the latest webinar instance.
  • If you provide a webinar UUID that begins with a / character or contains the // characters, you must double encode the webinar UUID before making an API request.
page_size query optional integer

The number of records returned within a single API call.

next_page_token query optional string

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

Responses

200

HTTP Status Code: 200 OK

Participants list returned.

400

HTTP Status Code: 400

Bad Request

Error Code: 200

No permission.

Only available for paid account: {accountId}.



Error Code: 300

The next page token is invalid or expired.

404

HTTP Status Code: 404

Not Found

Error Code: 3001

Webinar does not exist.

GET /past_webinars/{webinarId}/participants
GET /past_webinars/{webinarId}/polls

The polling feature for webinar lets you create single-choice or multiple-choice polling questions for your webinars. This API endpoint retrieves the results for webinar polls of a specific webinar.

Prerequisites:

Scopes: webinar:read:admin,webinar:read

Granular Scopes: webinar:read:list_past_polls,webinar:read:list_past_polls:admin

Rate Limit Label: MEDIUM

operationId: Webinars_listPollResults

Parameters

Name In Required Type Description
webinarId path required string

The webinar’s ID or universally unique ID (UUID).

  • If you provide a webinar ID, the API returns a response for the latest webinar instance.
  • If you provide a webinar UUID that begins with a / character or contains the // characters, you must double encode the webinar UUID before making an API request.

Responses

200

HTTP Status Code: 200 OK

Polls returned successfully.

401

HTTP Status Code: 401

Unauthorized

Error Code: 1010

User does not belong to this account:{accountId}.

404

HTTP Status Code: 404

Not Found

Error Code: 3001

Webinar ID is invalid or not end.

This webinar id does not belong to you:{webinarId}.

GET /past_webinars/{webinarId}/polls
GET /past_webinars/{webinarId}/qa

List the Q&A of a specific past webinar.

The question & answer (Q&A) feature for webinars lets attendees ask questions during the webinar and for the panelists, co-hosts and host to answer their questions.

Prerequisites

Scopes: webinar:read:admin,webinar:read

Granular Scopes: webinar:read:past_qa,webinar:read:past_qa:admin

Rate Limit Label: MEDIUM

operationId: Webinars_listPastWebinarQa

Parameters

Name In Required Type Description
webinarId path required string

The webinar’s ID or universally unique ID (UUID).

  • If you provide a webinar ID, the API returns a response for the latest webinar instance.
  • If you provide a webinar UUID that begins with a / character or contains the // characters, you must double encode the webinar UUID before making an API request.

Responses

200

HTTP Status Code: 200 OK

Q&A returned successfully.

401

HTTP Status Code: 401

Unauthorized

Error Code: 1010

User does not belong to this account:{accountId}.

404

HTTP Status Code: 404

Not Found

Error Code: 3001

Webinar ID is invalid or not end.

This webinar id does not belong to you:{webinarId}.

GET /past_webinars/{webinarId}/qa
GET /users/{userId}/webinar_templates

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:read:admin,webinar:read

Granular Scopes: webinar:read:list_templates,webinar:read:list_templates:admin

operationId: Webinars_listWebinarTemplates

Parameters

Name In Required Type Description
userId path required string

The user’s ID. To get a user’s ID, use the List users API. For user-level apps, pass the me value instead of the user ID value.

Responses

200

HTTP Status Code: 200 OK List of existing templates returned.

400

HTTP Status Code: 400

Bad Request

Error Code: 200

Cannot use webinar API, you need to subscribe webinar plan and then enable webinar for this user:{userId}.


Error Code: 1001

  • User not exist: {userId}.
  • User {userId} does not exist or does not belong to this account.
GET /users/{userId}/webinar_templates
GET /users/{userId}/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:read:admin,webinar:read

Granular Scopes: webinar:read:list_webinars,webinar:read:list_webinars:admin

Rate Limit Label: MEDIUM

operationId: Webinars_listWebinars

Parameters

Name In Required Type Description
userId path required string

The user’s user ID or email address. For user-level apps, pass the me value.

type query optional string

The type of webinar.

  • scheduled - All valid previous (unexpired) webinars, live webinars, and upcoming scheduled webinars.
  • upcoming - All upcoming webinars, including live webinars.
page_size query optional integer

The number of records returned within a single API call.

page_number query optional integer

Deprecated We will no longer support this field in a future release. Instead, use the next_page_token for pagination.

Responses

200

HTTP Status Code: 200

List of webinar objects returned.

404

HTTP Status Code: 404

Not Found

Error Code: 1001

User {userId} not exist or not belong to this account.

GET /users/{userId}/webinars

Schemas

object AnalyticsDetailsResponse
{
  "type": "object",
  "properties": {
    "to": {
      "type": "string",
      "format": "date",
      "example": "2020-07-30",
      "description": "The queried end date."
    },
    "from": {
      "type": "string",
      "format": "date",
      "example": "2020-07-30",
      "description": "The queried start date"
    },
    "page_size": {
      "type": "integer",
      "example": 30,
      "maximum": 300,
      "description": "The number of records returned within a single API call."
    },
    "total_records": {
      "type": "integer",
      "example": 5,
      "description": "The total number of all the records available across pages."
    },
    "next_page_token": {
      "type": "string",
      "example": "R4aF9Oj0fVM2hhezJTEmSKaBSkfesDwGy42",
      "description": "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."
    },
    "analytics_details": {
      "type": "array",
      "items": {
        "properties": {
          "name": {
            "type": "string",
            "example": "2",
            "description": "The user's name who watched or downloaded."
          },
          "email": {
            "type": "string",
            "example": "2",
            "description": "The user's email who downloaded this Meeting Recording."
          },
          "duration": {
            "type": "integer",
            "example": 60,
            "description": "When the query type is `by_view`, this field indicates the viewing time, unit: seconds"
          },
          "date_time": {
            "type": "string",
            "format": "date-time",
            "example": "2021-07-04T22:14:57Z",
            "description": "Explicit time to watch or download the recording."
          }
        }
      },
      "description": "Analytics Detail."
    }
  }
}
object AnalyticsSummaryResponse
{
  "type": "object",
  "properties": {
    "to": {
      "type": "string",
      "format": "date",
      "example": "2020-07-30",
      "description": "The queried end date."
    },
    "from": {
      "type": "string",
      "format": "date",
      "example": "2020-07-30",
      "description": "The queried start date"
    },
    "analytics_summary": {
      "type": "array",
      "items": {
        "properties": {
          "date": {
            "type": "string",
            "example": "2022-07-06",
            "description": "Date of viewing or downloading the recording."
          },
          "views_total_count": {
            "type": "integer",
            "example": 2,
            "description": "The number of people who have watched this Meeting Recording."
          },
          "downloads_total_count": {
            "type": "integer",
            "example": 2,
            "description": "The number of people who downloaded this Meeting Recording."
          }
        }
      },
      "description": "Analytics Summary."
    }
  }
}
object ArchivingGetStatisticsResponse
{
  "type": "object",
  "properties": {
    "to": {
      "type": "string",
      "format": "date-time",
      "example": "2021-03-18T05:41:36Z",
      "description": "The queried end date."
    },
    "from": {
      "type": "string",
      "format": "date-time",
      "example": "2021-03-18T05:41:36Z",
      "description": "The queried start date."
    },
    "total_records": {
      "type": "integer",
      "example": 20,
      "description": "The total number of returned meeting records."
    },
    "statistic_by_file_status": {
      "type": "object",
      "properties": {
        "failed_file_count": {
          "type": "integer",
          "example": 1,
          "description": "The number of failed files."
        },
        "completed_file_count": {
          "type": "integer",
          "example": 1,
          "description": "The number of completed files."
        },
        "processing_file_count": {
          "type": "integer",
          "example": 1,
          "description": "The number of processing files."
        }
      },
      "description": "Statistics about archive files, by file status."
    },
    "statistic_by_file_extension": {
      "type": "object",
      "properties": {
        "m4a_file_count": {
          "type": "integer",
          "example": 1,
          "description": "The number of m4a files."
        },
        "mp4_file_count": {
          "type": "integer",
          "example": 1,
          "description": "The number of mp4 files."
        },
        "txt_file_count": {
          "type": "integer",
          "example": 1,
          "description": "The number of txt files."
        },
        "vtt_file_count": {
          "type": "integer",
          "example": 1,
          "description": "The number of vtt files."
        },
        "json_file_count": {
          "type": "integer",
          "example": 1,
          "description": "The number of json files."
        }
      },
      "description": "Statistics about archive files, by file extension."
    }
  }
}
object ArchivingMeetingFilesList200Response
{
  "type": "object",
  "required": [
    "account_name",
    "archive_files",
    "complete_time",
    "duration",
    "duration_in_second",
    "host_id",
    "id",
    "is_breakout_room",
    "meeting_type",
    "recording_count",
    "start_time",
    "status",
    "timezone",
    "topic",
    "total_size",
    "type",
    "uuid"
  ],
  "properties": {
    "id": {
      "type": "integer",
      "format": "int64",
      "example": 553068284,
      "description": "The meeting or webinar ID, either `meetingId` or `webinarId`."
    },
    "type": {
      "enum": [
        1,
        2,
        3,
        4,
        5,
        6,
        7,
        8,
        9,
        100
      ],
      "type": "integer",
      "example": 1,
      "description": "The type of archived meeting or webinar. \n\n If the recording is of a meeting: \n* `1` - Instant meeting. \n* `2` - Scheduled meeting. \n* `3` - A recurring meeting with no fixed time. \n* `4` - A meeting created via PMI (Personal Meeting ID). \n* `7` - A [Personal Audio Conference](https://support.zoom.us/hc/en-us/articles/204517069-Getting-Started-with-Personal-Audio-Conference) (PAC). \n* `8` - Recurring meeting with a fixed time. \n\n If the recording is of a webinar: \n* `5` - A webinar. \n* `6` - A recurring webinar without a fixed time. \n* `9` - A recurring webinar with a fixed time. \n\n If the recording is **not** from a meeting or webinar: \n\n* `100` - A [breakout room](https://support.zoom.us/hc/en-us/articles/115005769646-Participating-in-breakout-rooms)."
    },
    "uuid": {
      "type": "string",
      "example": "yO3dfhh3t467UkQ==",
      "description": "The universally unique identifier (UUID) of the recorded meeting or webinar instance. Each meeting or webinar instance generates a UUID."
    },
    "topic": {
      "type": "string",
      "example": "My Personal Meeting Room",
      "description": "The meeting or webinar topic."
    },
    "status": {
      "enum": [
        "completed",
        "processing"
      ],
      "type": "string",
      "example": "completed",
      "description": "The archive's processing status. \n* `completed` - The archive's processing is complete. \n* `processing` - The archive is processing."
    },
    "host_id": {
      "type": "string",
      "example": "Dhjdfgdkg8w",
      "description": "The host's user ID for the archived meeting or webinar."
    },
    "duration": {
      "type": "integer",
      "example": 1,
      "description": "The meeting or webinar's scheduled duration."
    },
    "group_id": {
      "type": "string",
      "example": "pvFIYKSDTum9iCDOOtQL4w,_FsqLyI0RlO6LVPeUVWi8g",
      "description": "Primary group IDs of participants who belong to your account. Each group ID is separated by a comma."
    },
    "timezone": {
      "type": "string",
      "example": "Asia/Shanghai",
      "description": "The meeting or webinar's [timezone](https://developers.zoom.us/docs/api/rest/other-references/abbreviation-lists/#timezones)."
    },
    "start_time": {
      "type": "string",
      "format": "date-time",
      "example": "2021-04-26T05:23:18Z",
      "description": "The meeting or webinar's start time."
    },
    "total_size": {
      "type": "integer",
      "example": 364463,
      "description": "The total size of the archive file, in bytes."
    },
    "account_name": {
      "type": "string",
      "example": "account_01",
      "description": "The user's account name."
    },
    "meeting_type": {
      "enum": [
        "internal",
        "external"
      ],
      "type": "string",
      "example": "internal",
      "description": "Whether the meeting or webinar is internal or external. \n* `internal` - An internal meeting or webinar. \n* `external` - An external meeting or webinar. \n\n The `id`, `host_id`, and `topic` PII (Personal Identifiable Information) values in this response are removed when this value is `external`."
    },
    "archive_files": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "download_url",
          "encryption_fingerprint",
          "file_extension",
          "file_size",
          "file_type",
          "id",
          "individual",
          "participant_join_time",
          "participant_leave_time",
          "recording_type",
          "status"
        ],
        "properties": {
          "id": {
            "type": "string",
            "example": "a2f19f96-9294-4f51-8134-6f0eea108eb2",
            "description": "The archive file's unique ID."
          },
          "status": {
            "enum": [
              "completed",
              "processing",
              "failed"
            ],
            "type": "string",
            "example": "completed",
            "description": "The archived file's processing status. \n* `completed` - The processing of the file is complete. \n* `processing` - The file is processing. \n* `failed` - The processing of the file failed."
          },
          "file_path": {
            "type": "string",
            "example": "/9090876528/path01/demo.mp4",
            "description": "The file path to the on-premise account archive file. \n\n **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."
          },
          "file_size": {
            "type": "integer",
            "example": 165743,
            "description": "The archived file's size, in bytes."
          },
          "file_type": {
            "enum": [
              "MP4",
              "M4A",
              "CHAT",
              "CC",
              "CHAT_MESSAGE"
            ],
            "type": "string",
            "example": "CHAT",
            "description": "The archive file's type. \n* `MP4` - Video file. \n* `M4A` - Audio-only file. \n* `CHAT` - A TXT file containing in-meeting chat messages. \n* `CC` - A file containing the closed captions of the recording, in VTT file format. \n* `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."
          },
          "individual": {
            "type": "boolean",
            "example": true,
            "description": "Whether the archive file is an individual recording file. \n* `true` - An individual recording file. \n * `false` - An entire meeting file."
          },
          "auto_delete": {
            "type": "boolean",
            "example": false,
            "description": "Whether to auto delete the archived file.\n\n **Prerequisites:** \n\n* The \"Tag Archiving Files for Deletion\" feature must be enabled in OP. Contact [Zoom Support](https://support.zoom.us/hc/en-us/articles/201362003) to open.\n"
          },
          "download_url": {
            "type": "string",
            "example": "https://example.com/recording/download/Qg75t7xZBtEbAkjdlgbfdngBBBB",
            "description": "The URL to download the the archive file. \n\n **OAuth apps** \n\n 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. For example: \n\n `https://{{base-domain}}/rec/archive/download/xxx--header 'Authorization: Bearer {{OAuth-access-token}}'` \n\n **Note:** This field does **not** return for [Zoom On-Premise accounts](https://support.zoom.us/hc/en-us/articles/360034064852-Zoom-On-Premise-Deployment). Instead, this API will return the `file_path` field."
          },
          "file_extension": {
            "type": "string",
            "example": "JSON",
            "description": "The archived file's extension."
          },
          "recording_type": {
            "enum": [
              "shared_screen_with_speaker_view",
              "audio_only",
              "chat_file",
              "closed_caption",
              "chat_message"
            ],
            "type": "string",
            "example": "chat_message",
            "description": "The archive file's recording type. \n* `shared_screen_with_speaker_view` \n* `audio_only` \n* `chat_file` \n* `closed_caption` \n* `chat_message` \n\n 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."
          },
          "storage_location": {
            "enum": [
              "US",
              "AU",
              "BR",
              "CA",
              "EU",
              "IN",
              "JP",
              "SG",
              "CH"
            ],
            "type": "string",
            "example": "US",
            "description": "The region where the file is stored. This field returns only `Enable Distributed Compliance Archiving` op feature is enabled."
          },
          "participant_email": {
            "type": "string",
            "format": "email",
            "example": "jchill@example.com",
            "description": "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](https://developers.zoom.us/docs/api/rest/using-zoom-apis/#email-address-display-rules) for details."
          },
          "number_of_messages": {
            "type": "integer",
            "example": 150,
            "description": "The number of `TXT` or `JSON` file messages. This field returns only when the `file_extension` is `JSON` or `TXT`"
          },
          "participant_join_time": {
            "type": "string",
            "format": "date-time",
            "example": "2021-03-12T02:07:27Z",
            "description": "The join time for the generated recording file. If this value is returned when the individual value is true, then it is the recording file's participant join time. When the individual value is false, it returns the join time for the archiving gateway."
          },
          "encryption_fingerprint": {
            "type": "string",
            "example": "abf85f0fe6a4db3cdd8c37e505e1dd18a34d9696170a14b5bc6395677472cf43",
            "description": "The archived file's encryption fingerprint, using the SHA256 hash algorithm."
          },
          "participant_leave_time": {
            "type": "string",
            "format": "date-time",
            "example": "2021-03-12T02:12:27Z",
            "description": "The leave time for the generated recording file. If this value is returned when the individual value is true, then it is the recording file's participant leave time. When the individual value is false, it returns the leave time for the archiving gateway."
          }
        }
      },
      "description": "Information about the archive files."
    },
    "complete_time": {
      "type": "string",
      "anyOf": [
        {
          "type": "object",
          "format": "date-time",
          "example": "2021-03-12T02:12:27Z",
          "minLength": 1,
          "description": "The archive completion time."
        },
        {
          "enum": [
            ""
          ],
          "type": "string",
          "description": "An empty string."
        }
      ],
      "format": "date-time",
      "example": "2021-03-12T02:57:27Z",
      "description": "The meeting or webinar's archive completion time."
    },
    "recording_count": {
      "type": "integer",
      "example": 2,
      "description": "The number of archived files returned in the API call response."
    },
    "is_breakout_room": {
      "type": "boolean",
      "example": false,
      "description": "Whether the room is a [breakout room](https://support.zoom.us/hc/en-us/articles/115005769646-Participating-in-breakout-rooms)."
    },
    "parent_meeting_id": {
      "type": "string",
      "example": "atsXxhSEQWit9t+U02HXNQ==",
      "description": "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."
    },
    "duration_in_second": {
      "type": "integer",
      "example": 1800,
      "description": "The meeting or webinar's duration, in seconds."
    }
  }
}
object ArchivingMeetingFilesListResponse
{
  "type": "object",
  "properties": {
    "to": {
      "type": "string",
      "format": "date-time",
      "example": "2021-03-12T02:12:27Z",
      "description": "The queried end date."
    },
    "from": {
      "type": "string",
      "format": "date-time",
      "example": "2021-03-12T02:12:27Z",
      "description": "The queried start date."
    },
    "meetings": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "account_name",
          "archive_files",
          "complete_time",
          "duration",
          "duration_in_second",
          "host_id",
          "id",
          "is_breakout_room",
          "meeting_type",
          "recording_count",
          "start_time",
          "status",
          "timezone",
          "topic",
          "total_size",
          "type",
          "uuid"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "example": 553068284,
            "description": "The meeting or webinar ID, either `meetingId` or `webinarId`."
          },
          "type": {
            "enum": [
              1,
              2,
              3,
              4,
              5,
              6,
              7,
              8,
              9,
              100
            ],
            "type": "integer",
            "example": 1,
            "description": "The type of archived meeting or webinar. \n\n Meeting recordings use these archive types. \n* `1` - Instant meeting. \n* `2` - Scheduled meeting. \n* `3` - A recurring meeting with no fixed time. \n* `4` - A meeting created via PMI (Personal Meeting ID). \n* `7` - A [Personal Audio Conference](https://support.zoom.us/hc/en-us/articles/204517069-Getting-Started-with-Personal-Audio-Conference) (PAC). \n* `8` - Recurring meeting with a fixed time. \n\n Webinar recordings use these archive types. \n* `5` - A webinar. \n* `6` - A recurring webinar without a fixed time. \n* `9` - A recurring webinar with a fixed time. \n\n If the recording is **not** from a meeting or webinar: \n\n* `100` - A [breakout room](https://support.zoom.us/hc/en-us/articles/115005769646-Participating-in-breakout-rooms)."
          },
          "uuid": {
            "type": "string",
            "example": "yO3dfhh3t467UkQ==",
            "description": "The recorded meeting or webinar instance's universally unique identifier (UUID). Each meeting or webinar instance generates a UUID."
          },
          "topic": {
            "type": "string",
            "example": "My Personal Meeting Room",
            "description": "The meeting or webinar topic."
          },
          "status": {
            "enum": [
              "completed",
              "processing"
            ],
            "type": "string",
            "example": "completed",
            "description": "The archive's processing status. \n* `completed` - The archive's processing is complete. \n* `processing` - The archive is processing."
          },
          "host_id": {
            "type": "string",
            "example": "Dhjdfgdkg8w",
            "description": "The ID of the user set as the host of the archived meeting or webinar."
          },
          "duration": {
            "type": "integer",
            "example": 1,
            "description": "The meeting or webinar's scheduled duration."
          },
          "group_id": {
            "type": "string",
            "example": "pvFIYKSDTum9iCDOOtQL4w,_FsqLyI0RlO6LVPeUVWi8g",
            "description": "Primary group IDs of participants who belong to your account. Each group ID is separated by a comma."
          },
          "timezone": {
            "type": "string",
            "example": "Asia/Shanghai",
            "description": "The meeting or webinar's [timezone](https://developers.zoom.us/docs/api/rest/other-references/abbreviation-lists/#timezones)."
          },
          "start_time": {
            "type": "string",
            "format": "date-time",
            "example": "2021-04-26T05:23:18Z",
            "description": "The meeting or webinar's start time."
          },
          "total_size": {
            "type": "integer",
            "example": 364463,
            "description": "The total size of the archive file, in bytes."
          },
          "account_name": {
            "type": "string",
            "example": "account_01",
            "description": "The user's account name."
          },
          "meeting_type": {
            "enum": [
              "internal",
              "external"
            ],
            "type": "string",
            "example": "internal",
            "description": "Whether the meeting or webinar is internal or external. \n* `internal` - An internal meeting or webinar. \n* `external` - An external meeting or webinar. \n\n The `id`, `host_id`, and `topic` PII (Personal Identifiable Information) values in this response are removed when this value is `external`."
          },
          "archive_files": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "download_url",
                "encryption_fingerprint",
                "file_extension",
                "file_size",
                "file_type",
                "id",
                "individual",
                "participant_join_time",
                "participant_leave_time",
                "recording_type",
                "status"
              ],
              "properties": {
                "id": {
                  "type": "string",
                  "example": "a2f19f96-9294-4f51-8134-6f0eea108eb2",
                  "description": "The archive file's unique ID."
                },
                "status": {
                  "enum": [
                    "completed",
                    "processing",
                    "failed"
                  ],
                  "type": "string",
                  "example": "completed",
                  "description": "The archived file's processing status. \n* `completed` - The processing of the file is complete. \n* `processing` - The file is processing. \n* `failed` - The processing of the file failed."
                },
                "file_path": {
                  "type": "string",
                  "example": "/9090876528/path01/demo.mp4",
                  "description": "The file path to the on-premise account archive file. \n\n **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."
                },
                "file_size": {
                  "type": "integer",
                  "example": 165743,
                  "description": "The archived file's size, in bytes."
                },
                "file_type": {
                  "enum": [
                    "MP4",
                    "M4A",
                    "CHAT",
                    "CC",
                    "CHAT_MESSAGE"
                  ],
                  "type": "string",
                  "example": "CHAT",
                  "description": "The archive file's type. \n* `MP4` - Video file. \n* `M4A` - Audio-only file. \n* `CHAT` - A TXT file containing in-meeting chat messages. \n* `CC` - A file containing the closed captions of the recording, in VTT file format. \n*  `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."
                },
                "individual": {
                  "type": "boolean",
                  "example": true,
                  "description": "Whether the archive file is an individual recording file. \n* `true` - An individual recording file. \n * `false` - An entire meeting file."
                },
                "auto_delete": {
                  "type": "boolean",
                  "example": false,
                  "description": "Whether to auto delete the archived file.\n\n**Prerequisites:** \n\nEnable the \"Tag Archiving Files for Deletion\" feature in OP. Contact [Zoom Support](https://support.zoom.us/hc/en-us/articles/201362003) to open."
                },
                "download_url": {
                  "type": "string",
                  "example": "https://example.com/recording/download/Qg75t7xZBtEbAkjdlgbfdngBBBB",
                  "description": "The URL to download the the archive file. \n\n **OAuth apps** \n\n 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. For example, `https://{{base-domain}}/rec/archive/download/xxx--header 'Authorization: Bearer {{OAuth-access-token}}'` \n\n **Note:** This field does **not** return for [Zoom on-premise accounts](https://support.zoom.us/hc/en-us/articles/360034064852-Zoom-On-Premise-Deployment). Instead, this API will return the `file_path` field."
                },
                "file_extension": {
                  "type": "string",
                  "example": "JSON",
                  "description": "The archived file's extension."
                },
                "recording_type": {
                  "enum": [
                    "shared_screen_with_speaker_view",
                    "audio_only",
                    "chat_file",
                    "closed_caption",
                    "chat_message"
                  ],
                  "type": "string",
                  "example": "chat_message",
                  "description": "The archive file's recording type. \n* `shared_screen_with_speaker_view` \n* `audio_only` \n* `chat_file` \n* `closed_caption` \n* `chat_message` \n\n 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."
                },
                "storage_location": {
                  "enum": [
                    "US",
                    "AU",
                    "BR",
                    "CA",
                    "EU",
                    "IN",
                    "JP",
                    "SG",
                    "CH"
                  ],
                  "type": "string",
                  "example": "US",
                  "description": "The region where the file is stored. This field returns only `Enable Distributed Compliance Archiving` op feature is enabled."
                },
                "participant_email": {
                  "type": "string",
                  "format": "email",
                  "example": "jchill@example.com",
                  "description": "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](https://developers.zoom.us/docs/api/rest/using-zoom-apis/#email-address-display-rules) for details."
                },
                "number_of_messages": {
                  "type": "integer",
                  "example": 150,
                  "description": "The number of `TXT` or `JSON` file messages. This field returns only when the `file_extension` is `JSON` or `TXT`."
                },
                "participant_join_time": {
                  "type": "string",
                  "format": "date-time",
                  "example": "2021-03-12T02:07:27Z",
                  "description": "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."
                },
                "encryption_fingerprint": {
                  "type": "string",
                  "example": "abf85f0fe6a4db3cdd8c37e505e1dd18a34d9696170a14b5bc6395677472cf43",
                  "description": "The archived file's encryption fingerprint, using the SHA256 hash algorithm."
                },
                "participant_leave_time": {
                  "type": "string",
                  "format": "date-time",
                  "example": "2021-03-12T02:12:27Z",
                  "description": "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."
                }
              }
            },
            "description": "Information about the archive files."
          },
          "complete_time": {
            "type": "string",
            "anyOf": [
              {
                "type": "object",
                "format": "date-time",
                "example": "2021-03-12T02:12:27Z",
                "minLength": 1,
                "description": "The archive completion time."
              },
              {
                "enum": [
                  ""
                ],
                "type": "string",
                "description": "An empty string."
              }
            ],
            "format": "date-time",
            "example": "2021-03-12T02:57:27Z",
            "description": "The meeting or webinar's archive completion time."
          },
          "recording_count": {
            "type": "integer",
            "example": 2,
            "description": "The number of archived files returned in the API call response."
          },
          "is_breakout_room": {
            "type": "boolean",
            "example": false,
            "description": "Whether the room is a [breakout room](https://support.zoom.us/hc/en-us/articles/115005769646-Participating-in-breakout-rooms)."
          },
          "parent_meeting_id": {
            "type": "string",
            "example": "atsXxhSEQWit9t+U02HXNQ==",
            "description": "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."
          },
          "duration_in_second": {
            "type": "integer",
            "example": 1800,
            "description": "The meeting or webinar's duration, in seconds."
          }
        }
      },
      "description": "Information about the meeting or webinar."
    },
    "page_size": {
      "type": "integer",
      "example": 20,
      "description": "The number of records returned within a single API call."
    },
    "total_records": {
      "type": "integer",
      "example": 20,
      "description": "The total number of returned meeting records."
    },
    "next_page_token": {
      "type": "string",
      "example": "At6eWnFZ1FB3arCXnRxqHLXKhbDW18yz2i2",
      "description": "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.\n\n **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."
    }
  }
}
object ArchivingUpdateAutoDeleteStatusRequest
{
  "type": "object",
  "required": [
    "auto_delete"
  ],
  "properties": {
    "auto_delete": {
      "type": "boolean",
      "example": true,
      "description": "Whether to auto-delete the archived file."
    }
  }
}
object CloudRecordingCreateRegistrantRequest
{
  "type": "object",
  "required": [
    "email",
    "first_name"
  ],
  "properties": {
    "org": {
      "type": "string",
      "example": "Cooking Org",
      "description": "The registrant's organization."
    },
    "zip": {
      "type": "string",
      "example": "94045",
      "description": "The registrant's ZIP or postal code."
    },
    "city": {
      "type": "string",
      "example": "Mountain View",
      "description": "The registrant's city."
    },
    "email": {
      "type": "string",
      "format": "email",
      "example": "jchill@example.com",
      "maxLength": 128,
      "description": "The registrant's email address. See [Email address display rules](https://marketplace.zoom.us/docs/api-reference/using-zoom-apis#email-address) for return value details."
    },
    "phone": {
      "type": "string",
      "example": "5550100",
      "description": "The registrant's phone number."
    },
    "state": {
      "type": "string",
      "example": "CA",
      "description": "The registrant's state or province."
    },
    "status": {
      "enum": [
        "approved",
        "denied",
        "pending"
      ],
      "type": "string",
      "example": "approved",
      "description": "The registrant's status: \n* `approved` &mdash; Registrant is approved. \n* `denied` &mdash; Registrant is denied. \n* `pending` &mdash; Registrant is waiting for approval."
    },
    "address": {
      "type": "string",
      "example": "1800 Amphibious Blvd.",
      "description": "The registrant's address."
    },
    "country": {
      "type": "string",
      "example": "US",
      "description": "The registrant's two-letter [country code](https://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#countries)."
    },
    "comments": {
      "type": "string",
      "example": "Looking forward to the discussion.",
      "description": "The registrant's questions and comments."
    },
    "industry": {
      "type": "string",
      "example": "Food",
      "description": "The registrant's industry."
    },
    "job_title": {
      "type": "string",
      "example": "Chef",
      "description": "The registrant's job title."
    },
    "last_name": {
      "type": "string",
      "example": "Chill",
      "maxLength": 64,
      "description": "The registrant's last name."
    },
    "first_name": {
      "type": "string",
      "example": "Jill",
      "maxLength": 64,
      "description": "The registrant's first name."
    },
    "no_of_employees": {
      "enum": [
        "",
        "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"
      ],
      "type": "string",
      "example": "1-20",
      "description": "The registrant's number of employees: \n* `1-20` \n* `21-50` \n* `51-100` \n* `101-250` \n* `251-500` \n* `501-1,000` \n* `1,001-5,000` \n* `5,001-10,000` \n* `More than 10,000`"
    },
    "custom_questions": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "example": "What do you hope to learn from this?",
            "description": "The title of the custom question."
          },
          "value": {
            "type": "string",
            "example": "Look forward to learning how you come up with new recipes and what other services you offer.",
            "maxLength": 128,
            "description": "The custom question's response value. This has a limit of 128 characters."
          }
        },
        "description": "Information about custom questions."
      },
      "description": "Information about custom questions."
    },
    "purchasing_time_frame": {
      "enum": [
        "",
        "Within a month",
        "1-3 months",
        "4-6 months",
        "More than 6 months",
        "No timeframe"
      ],
      "type": "string",
      "example": "1-3 months",
      "description": "The registrant's purchasing time frame: \n* `Within a month` \n* `1-3 months` \n* `4-6 months` \n* `More than 6 months` \n* `No timeframe`"
    },
    "role_in_purchase_process": {
      "enum": [
        "",
        "Decision Maker",
        "Evaluator/Recommender",
        "Influencer",
        "Not involved"
      ],
      "type": "string",
      "example": "Influencer",
      "description": "The registrant's role in the purchase process: \n* `Decision Maker` \n* `Evaluator/Recommender` \n* `Influencer` \n* `Not involved`"
    }
  },
  "description": " Registrant."
}
object CloudRecordingCreateRegistrantResponse
{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "format": "int64",
      "example": 6840331990,
      "description": "[Meeting ID](https://support.zoom.us/hc/en-us/articles/201362373-What-is-a-Meeting-ID-): Unique identifier of the meeting in &quot;**long**&quot; format(represented as int64 data type in JSON), also known as the meeting number."
    },
    "topic": {
      "type": "string",
      "example": "My Personal Meeting Room",
      "description": "Meeting Topic"
    },
    "share_url": {
      "type": "string",
      "example": "https://example.com/rec/share/Qg75t7xZBtEbAkjdlgbfdngBBBB",
      "description": "Share URL for the on-demand recording. This includes the &ldquo;tk&rdquo; token for the registrant. This is similar to the token that Zoom returns in the URL response to join a registered meeting, for example: `url?tk=xxxx`. Except while the meeting registration token can be used to join the meeting, this token can only be used to watch the recording."
    },
    "registrant_id": {
      "type": "string",
      "example": "3Z7sEm0TQQieLav3c3OD_g",
      "description": "Registrant ID"
    }
  }
}
object CloudRecordingGetMeetingRecordingsResponse
{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "example": 6840331990,
      "description": "The meeting ID, also known as the meeting number."
    },
    "type": {
      "enum": [
        "1",
        "2",
        "3",
        "4",
        "5",
        "6",
        "7",
        "8",
        "9",
        "99"
      ],
      "type": "string",
      "example": "1",
      "extensions": {
        "x-enum-descriptions": [
          "Instant Meeting",
          "Scheduled Meeting",
          "Recurring Meeting with no fixed time",
          "Meeting created using a Personal Meeting ID",
          "A webinar",
          "Recurring webinar without a fixed time",
          "Personal Audio Conference",
          "Recurring meeting with a fixed time",
          "Recurring webinar with a fixed time",
          "A recording uploaded"
        ]
      },
      "description": "The recording's associated type of meeting or webinar. \n\nIf the recording is of a meeting: \n* `1` - Instant meeting. \n* `2` - Scheduled meeting. \n* `3` - A recurring meeting with no fixed time. \n* `4` - A meeting created via PMI (Personal Meeting ID). \n* `7` - A [Personal Audio Conference](https://support.zoom.us/hc/en-us/articles/204517069-Getting-Started-with-Personal-Audio-Conference) (PAC). \n* `8` - Recurring meeting with a fixed time. \n\nIf the recording is of a webinar: \n* `5` - A webinar. \n* `6` - A recurring webinar without a fixed time \n* `9` - A recurring webinar with a fixed time.\n\nIf the recording is **not** from a meeting or webinar: \n\n* `99` - A recording uploaded via the [**Recordings**](https://zoom.us/recording) interface on the Zoom Web Portal."
    },
    "uuid": {
      "type": "string",
      "example": "BOKXuumlTAGXuqwr3bLyuQ==",
      "description": "The unique meeting identifier. Each instance of the meeting has its own UUID."
    },
    "topic": {
      "type": "string",
      "example": "My Personal Meeting",
      "description": "The meeting topic."
    },
    "host_id": {
      "type": "string",
      "example": "_0ctZtY0REqWalTmwvrdIw",
      "description": "The ID of the user set as host of meeting."
    },
    "duration": {
      "type": "integer",
      "example": 20,
      "description": "The meeting duration."
    },
    "password": {
      "type": "string",
      "example": "981651",
      "description": "The cloud recording's passcode."
    },
    "account_id": {
      "type": "string",
      "example": "Cx3wERazSgup7ZWRHQM8-w",
      "description": "The user account's unique identifier."
    },
    "start_time": {
      "type": "string",
      "format": "date-time",
      "example": "2021-03-18T05:41:36Z",
      "description": "The time when the meeting started."
    },
    "total_size": {
      "type": "integer",
      "format": "int64",
      "example": 22,
      "description": "The recording's total file size. This includes the `recording_files` and `participant_audio_files` files."
    },
    "recording_count": {
      "type": "integer",
      "example": 22,
      "description": " The number of recording files returned in the response of this API call. This includes the `recording_files` and  `participant_audio_files` files."
    },
    "recording_files": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "72576a1f-4e66-4a77-87c4-f13f9808bd76",
            "description": "The recording file ID. It's included in the response of general query."
          },
          "status": {
            "enum": [
              "completed"
            ],
            "type": "string",
            "example": "completed",
            "description": "The recording status."
          },
          "play_url": {
            "type": "string",
            "example": "https://example.com/rec/play/Qg75t7xZBtEbAkjdlgbfdngBBBB",
            "description": "The URL that can play a recording file."
          },
          "file_path": {
            "type": "string",
            "example": "/9090876528/path01/demo.mp4",
            "description": "The file path to the on-premise account recording. \n\n**Note:** This API only returns this field for [Zoom On-Premise accounts](https://support.zoom.us/hc/en-us/articles/360034064852-Zoom-On-Premise-Deployment). It does **not** return the `download_url` field."
          },
          "file_size": {
            "type": "number",
            "example": 7220,
            "description": "The recording file size."
          },
          "file_type": {
            "enum": [
              "MP4",
              "M4A",
              "CHAT",
              "TRANSCRIPT",
              "CSV",
              "TB",
              "CC",
              "CHAT_MESSAGE",
              "SUMMARY"
            ],
            "type": "string",
            "example": "MP4",
            "description": "The recording file type. \n \n`MP4` - Video file of the recording.  \n `M4A` - Audio-only file of the recording.  \n `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.\n  \n  `TRANSCRIPT` - Transcription file of the recording in VTT format.  \n  `CHAT` - A TXT file containing in-meeting chat messages that were sent during the meeting.  \n `CC` - File containing closed captions of the recording in VTT file format.  \n `CSV` - File containing polling data in csv format.\n\n  \n \n\nA recording file object with file type of either `CC` or `TIMELINE` **does not have** these properties.  \n \n\t`id`, `status`, `file_size`, `recording_type`, and `play_url`.  \n `SUMMARY` - Summary file of the recording in JSON file format."
          },
          "meeting_id": {
            "type": "string",
            "example": "L0AGOEPVR9m5WSOOs/d+FQ==",
            "description": "The meeting ID. "
          },
          "deleted_time": {
            "type": "string",
            "example": "2021-03-18T05:41:36Z",
            "description": "The time when recording was deleted. Returned in the response only for trash query."
          },
          "download_url": {
            "type": "string",
            "example": "https://example.com/rec/download/Qg75t7xZBtEbAkjdlgbfdngBBBB",
            "description": "The URL to download the recording. \n\nIf a user has authorized and installed your OAuth app that contains recording scopes, use the `download_access_token` or the the user's [OAuth access token](https://developers.zoom.us/docs/integrations/oauth/) to download the file, and set the `access_token` as a Bearer token in the Authorization header.\n\n`curl -H 'Authorization: Bearer <ACCESS_TOKEN>' https://{{base-domain}}/rec/archive/download/xyz`.\n\n**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 returns the `file_path` field."
          },
          "recording_end": {
            "type": "string",
            "example": "2021-03-18T05:41:36Z",
            "description": "The recording end time. The response is in general query."
          },
          "file_extension": {
            "enum": [
              "MP4",
              "M4A",
              "TXT",
              "VTT",
              "CSV",
              "JSON",
              "JPG"
            ],
            "type": "string",
            "example": "M4A",
            "description": "The file extension type of the recording file."
          },
          "recording_type": {
            "enum": [
              "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"
            ],
            "type": "string",
            "example": "shared_screen_with_speaker_view",
            "description": "The recording type.  \n `shared_screen_with_speaker_view(CC)`  \n `shared_screen_with_speaker_view`  \n `shared_screen_with_gallery_view`  \n `speaker_view`  \n `gallery_view`  \n `shared_screen`  \n `audio_only`  \n `audio_transcript`  \n `chat_file`  \n `active_speaker`  \n `poll`  \n `timeline`  \n `closed_caption`  \n `audio_interpretation`  \n `summary`  \n `summary_next_steps`  \n `summary_smart_chapters`  \n `sign_interpretation`  \n `production_studio`"
          },
          "recording_start": {
            "type": "string",
            "example": "2021-03-18T05:41:36Z",
            "description": "The recording start time."
          }
        },
        "description": "Recording file object."
      },
      "description": "The list of recording file."
    },
    "download_access_token": {
      "type": "string",
      "example": "abJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJodHRwczovL2V2ZW50Lnpvb20udXMiLCJhY2NvdW50SWQiOiJNdDZzdjR1MFRBeVBrd2dzTDJseGlBIiwiYXVkIjoiaHR0cHM6Ly9vYXV0aC56b29tLnVzIiwibWlkIjoieFp3SEc0c3BRU2VuekdZWG16dnpiUT09IiwiZXhwIjoxNjI2MTM5NTA3LCJ1c2VySWQiOiJEWUhyZHBqclMzdWFPZjdkUGtrZzh3In0.a6KetiC6BlkDhf1dP4KBGUE1bb2brMeraoD45yhFx0eSSSTFdkHQnsKmlJQ-hdo9Zy-4vQw3rOxlyoHv583JyZ",
      "description": "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."
    },
    "participant_audio_files": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "a2f19f96-9294-4f51-8134-6f0eea108eb2",
            "description": "The recording file's unique ID. This is included in the general query response."
          },
          "status": {
            "enum": [
              "completed"
            ],
            "type": "string",
            "example": "completed",
            "description": "The recording file's status."
          },
          "play_url": {
            "type": "string",
            "example": "https://example.com/rec/play/Qg75t7xZBtEbAkjdlgbfdngBBBB",
            "description": "The URL where the recording file can be opened and played."
          },
          "file_name": {
            "type": "string",
            "example": "test.json",
            "description": "The recording file's name."
          },
          "file_path": {
            "type": "string",
            "example": "/9090876528/path01/demo.mp4",
            "description": "The file path to the on-premise account recording. \n\n**Note:** This API only returns this field for [Zoom on-premise accounts](https://support.zoom.us/hc/en-us/articles/360034064852-Zoom-On-Premise-Deployment). It does **not** return the `download_url` field."
          },
          "file_size": {
            "type": "number",
            "example": 65536,
            "description": "The recording file's size, in bytes."
          },
          "file_type": {
            "type": "string",
            "example": "M4A",
            "description": "The recording file's format. \n\n* `MP4` - Video file.\n* `M4A` - Audio-only file.\n* `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.\n* `TRANSCRIPT` - A transcript of the recording, in VTT format.\n* `CHAT` - A text file containing chat messages sent during the meeting.\n* `CC` - A file containing the closed captions of the recording, in VTT file format.\n* `CSV` - A file containing polling data, in CSV format.\n\nA recording file object with file the `CC` or `TIMELINE` value **does not** have the `id`, `status`, `file_size`, `recording_type`, and `play_url` properties."
          },
          "download_url": {
            "type": "string",
            "example": "https://example.com/rec/download/Qg75t7xZBtEbAkjdlgbfdngBBBB",
            "description": "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](https://developers.zoom.us/docs/integrations/oauth/) to download the file, and set the `access_token` as a Bearer token in the Authorization header.\n\n`curl -H 'Authorization: Bearer <ACCESS_TOKEN>' https://{{base-domain}}/rec/archive/download/xyz` \n\n**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."
          },
          "recording_end": {
            "type": "string",
            "format": "date-time",
            "example": "2021-06-30T22:14:57Z",
            "description": "The recording file's end time. This is included in the general query response."
          },
          "recording_start": {
            "type": "string",
            "format": "date-time",
            "example": "2021-06-30T22:14:57Z",
            "description": "The recording file's start time."
          }
        },
        "description": "The recording file object."
      },
      "description": "A list of recording files. The API only returns this response when the **Record a separate audio file of each participant** setting is enabled."
    },
    "recording_play_passcode": {
      "type": "string",
      "example": "yNYIS408EJygs7rE5vVsJwXIz4-VW7MH",
      "description": "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'."
    }
  },
  "description": "This field returns a list of recording files for each participant. The API only returns this response when the **Record a separate audio file of each participant** setting is enabled."
}
object CloudRecordingGetSettingsResponse
{
  "type": "object",
  "title": "Recording settings",
  "properties": {
    "topic": {
      "type": "string",
      "example": "My Personal Meeting Room",
      "description": "The name of the recording."
    },
    "password": {
      "type": "string",
      "example": "975238724",
      "maxLength": 10,
      "minLength": 8,
      "description": "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.  \n   \n \n**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.   \n   \n 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."
    },
    "on_demand": {
      "type": "boolean",
      "example": false,
      "description": "This field determines whether registration is required to view the recording."
    },
    "approval_type": {
      "enum": [
        0,
        1,
        2
      ],
      "type": "integer",
      "example": 0,
      "extensions": {
        "x-enum-descriptions": [
          "Registrants can watch the recording directly after registration",
          "Registrants receive emails then watch the recording after you approve the registration",
          "Disabled"
        ]
      },
      "description": "The approval type for the registration.  \n \n`0`- Automatically approve the registration when a user registers.  \n \n`1` - Manually approve or deny the registration of a user.  \n \n`2` - No registration required to view the recording."
    },
    "share_recording": {
      "enum": [
        "publicly",
        "internally",
        "none"
      ],
      "type": "string",
      "example": "publicly",
      "extensions": {
        "x-enum-descriptions": [
          "Publicly",
          "Internally(account members only)",
          "None"
        ]
      },
      "description": "This field determines how the meeting recording is shared."
    },
    "viewer_download": {
      "type": "boolean",
      "example": true,
      "description": "This field determines whether a viewer can download the recording file or not."
    },
    "send_email_to_host": {
      "type": "boolean",
      "example": false,
      "description": "This field enables you to send an email to the host when someone registers to view the recording. This applies for On-demand recordings only."
    },
    "authentication_option": {
      "type": "string",
      "example": "auth_option",
      "description": "The options for authentication ."
    },
    "authentication_domains": {
      "type": "string",
      "example": "test.com",
      "description": "The domains for authentication."
    },
    "recording_authentication": {
      "type": "boolean",
      "example": true,
      "description": "THis field only authenticated users can view."
    },
    "show_social_share_buttons": {
      "type": "boolean",
      "example": true,
      "description": "This field shows social share buttons on registration page. This applies for On-demand recordings only."
    }
  }
}
object CloudRecordingListRecordingsResponse
{
  "type": "object",
  "properties": {
    "to": {
      "type": "string",
      "format": "date",
      "example": "2022-04-01",
      "description": "The end date."
    },
    "from": {
      "type": "string",
      "format": "date",
      "example": "2022-01-01",
      "description": "The start date."
    },
    "meetings": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "example": 6840331990,
            "description": "Meeting ID - also known as the meeting number."
          },
          "type": {
            "enum": [
              "1",
              "2",
              "3",
              "4",
              "5",
              "6",
              "7",
              "8",
              "9",
              "99"
            ],
            "type": "string",
            "example": "1",
            "extensions": {
              "x-enum-descriptions": [
                "Instant Meeting",
                "Scheduled Meeting",
                "Recurring Meeting with no fixed time",
                "Meeting created using a Personal Meeting ID",
                "A webinar",
                "Recurring webinar without a fixed time",
                "Personal Audio Conference",
                "Recurring meeting with a fixed time",
                "Recurring webinar with a fixed time",
                "A recording uploaded"
              ]
            },
            "description": "The recording's associated type of meeting or webinar: \n\nIf the recording is of a meeting: \n* `1` - Instant meeting. \n* `2` - Scheduled meeting. \n* `3` - A recurring meeting with no fixed time. \n* `4` - A meeting created viaPersonal Meeting ID (PMI). \n* `7` - A [Personal Audio Conference](https://support.zoom.us/hc/en-us/articles/204517069-Getting-Started-with-Personal-Audio-Conference) (PAC). \n* `8` - Recurring meeting with a fixed time. \n\nIf the recording is of a webinar: \n* `5` - A webinar. \n* `6` - A recurring webinar without a fixed time \n* `9` - A recurring webinar with a fixed time.\n\nIf the recording is **not** from a meeting or webinar: \n\n* `99` - A recording uploaded via the [**Recordings**](https://zoom.us/recording) interface on the Zoom Web Portal."
          },
          "uuid": {
            "type": "string",
            "example": "BOKXuumlTAGXuqwr3bLyuQ==",
            "description": "Unique Meeting Identifier. Each instance of the meeting will have its own UUID."
          },
          "topic": {
            "type": "string",
            "example": "My Personal Meeting",
            "description": "Meeting topic."
          },
          "host_id": {
            "type": "string",
            "example": "_0ctZtY0REqWalTmwvrdIw",
            "description": "ID of the user set as host of meeting."
          },
          "duration": {
            "type": "integer",
            "example": 20,
            "description": "Meeting duration."
          },
          "account_id": {
            "type": "string",
            "example": "Cx3wERazSgup7ZWRHQM8-w",
            "description": "Unique Identifier of the user account."
          },
          "start_time": {
            "type": "string",
            "format": "date-time",
            "example": "2021-03-18T05:41:36Z",
            "description": "The time when the meeting started."
          },
          "total_size": {
            "type": "integer",
            "format": "int64",
            "example": 22,
            "description": "The total file size of the recording. This includes the `recording_files` and `participant_audio_files` files."
          },
          "recording_count": {
            "type": "integer",
            "example": 22,
            "description": "Number of recording files returned in the response of this API call. This includes the `recording_files` and  `participant_audio_files` files."
          },
          "recording_files": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "example": "72576a1f-4e66-4a77-87c4-f13f9808bd76",
                  "description": "The recording file ID. Included in the response of general query."
                },
                "status": {
                  "enum": [
                    "completed"
                  ],
                  "type": "string",
                  "example": "completed",
                  "description": "The recording status."
                },
                "play_url": {
                  "type": "string",
                  "example": "https://example.com/rec/play/Qg75t7xZBtEbAkjdlgbfdngBBBB",
                  "description": "The URL to play a recording file."
                },
                "file_path": {
                  "type": "string",
                  "example": "/9090876528/path01/demo.mp4",
                  "description": "The file path to the On-Premise account recording. \n\n**Note:** This API only returns this field for [Zoom On-Premise accounts](https://support.zoom.us/hc/en-us/articles/360034064852-Zoom-On-Premise-Deployment). It does **not** return the `download_url` field."
                },
                "file_size": {
                  "type": "number",
                  "example": 7220,
                  "description": "The recording file size."
                },
                "file_type": {
                  "enum": [
                    "MP4",
                    "M4A",
                    "CHAT",
                    "TRANSCRIPT",
                    "CSV",
                    "TB",
                    "CC",
                    "CHAT_MESSAGE",
                    "SUMMARY"
                  ],
                  "type": "string",
                  "example": "MP4",
                  "description": "The recording file type.  \n \n`MP4` - Video file of the recording.  \n `M4A` Audio-only file of the recording.  \n `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.\n  \n  `TRANSCRIPT` - Transcription file of the recording in VTT format.  \n  `CHAT` - A TXT file containing in-meeting chat messages that were sent during the meeting.  \n `CC` - File containing closed captions of the recording in VTT file format.  \n `CSV` - File containing polling data in CSV format.\n\n  \n \n\nA recording file object with file type of either `CC` or `TIMELINE` **does not have** the following properties:  \n \n\t`id`, `status`, `file_size`, `recording_type`, and `play_url`.  \n `SUMMARY` - Summary file of the recording in JSON file format."
                },
                "meeting_id": {
                  "type": "string",
                  "example": "L0AGOEPVR9m5WSOOs/d+FQ==",
                  "description": "The meeting ID. "
                },
                "deleted_time": {
                  "type": "string",
                  "example": "2021-03-18T05:41:36Z",
                  "description": "The time when recording was deleted. Returned in the response only for trash query."
                },
                "download_url": {
                  "type": "string",
                  "example": "https://example.com/rec/download/Qg75t7xZBtEbAkjdlgbfdngBBBB",
                  "description": "The URL to download the recording. \n\n**OAuth apps** \n\nIf 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, and set the access_token as a Bearer token in the Authorization header. \n\n`curl -H 'Authorization: Bearer <ACCESS_TOKEN>' https://{{base-domain}}/rec/archive/download/xyz`. \n\n**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."
                },
                "recording_end": {
                  "type": "string",
                  "example": "2021-03-18T05:41:36Z",
                  "description": "The recording end time. Response in general query."
                },
                "file_extension": {
                  "enum": [
                    "MP4",
                    "M4A",
                    "TXT",
                    "VTT",
                    "CSV",
                    "JSON",
                    "JPG"
                  ],
                  "type": "string",
                  "example": "M4A",
                  "description": "The file extension type of the recording file."
                },
                "recording_type": {
                  "enum": [
                    "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"
                  ],
                  "type": "string",
                  "example": "shared_screen_with_speaker_view",
                  "description": "The recording type.  \n `shared_screen_with_speaker_view(CC)`  \n `shared_screen_with_speaker_view`  \n `shared_screen_with_gallery_view`  \n `speaker_view`  \n `gallery_view`  \n `shared_screen`  \n `audio_only`  \n `audio_transcript`  \n `chat_file`  \n `active_speaker`  \n `poll`  \n `timeline`  \n `closed_caption`  \n `audio_interpretation`  \n `summary`  \n `summary_next_steps`  \n `summary_smart_chapters`  \n `sign_interpretation`  \n `production_studio`"
                },
                "recording_start": {
                  "type": "string",
                  "example": "2021-03-18T05:41:36Z",
                  "description": "The recording start time."
                }
              },
              "description": "Recording file object."
            },
            "description": "List of recording file."
          },
          "recording_play_passcode": {
            "type": "string",
            "example": "yNYIS408EJygs7rE5vVsJwXIz4-VW7MH",
            "description": "The cloud recording's passcode to be used in the URL. 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."
          }
        },
        "description": "The recording meeting object."
      },
      "description": "List of recordings."
    },
    "page_size": {
      "type": "integer",
      "default": 30,
      "example": 30,
      "maximum": 300,
      "description": "The number of records returned within a single API call."
    },
    "page_count": {
      "type": "integer",
      "example": 1,
      "description": "The number of pages returned for the request made."
    },
    "total_records": {
      "type": "integer",
      "example": 1,
      "description": "The number of all records available across pages."
    },
    "next_page_token": {
      "type": "string",
      "example": "Tva2CuIdTgsv8wAnhyAdU3m06Y2HuLQtlh3",
      "description": "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."
    }
  },
  "description": "The pagination object."
}
object CloudRecordingListRegistrantsResponse
{
  "type": "object",
  "title": "Meeting Cloud Recording Registration",
  "properties": {
    "page_size": {
      "type": "integer",
      "default": 30,
      "example": 30,
      "maximum": 300,
      "description": "The number of records returned with a single API call."
    },
    "page_count": {
      "type": "integer",
      "example": 1,
      "description": "The number of pages returned for the request made."
    },
    "page_number": {
      "type": "integer",
      "default": 1,
      "example": 1,
      "deprecated": true,
      "description": "**Deprecated.** We will no longer support this field in a future release. Instead, use the `next_page_token` for pagination."
    },
    "registrants": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "email",
          "first_name"
        ],
        "properties": {
          "id": {
            "type": "string",
            "example": "3Z7sEm0TQQieLav3c3OD_g",
            "description": "The registrant's ID."
          },
          "org": {
            "type": "string",
            "example": "Cooking Org",
            "description": "The registrant's organization."
          },
          "zip": {
            "type": "string",
            "example": "94045",
            "description": "The registrant's ZIP or postal code."
          },
          "city": {
            "type": "string",
            "example": "Mountain View",
            "description": "The registrant's city."
          },
          "email": {
            "type": "string",
            "format": "email",
            "example": "jchill@example.com",
            "maxLength": 128,
            "description": "The registrant's email address. See [Email address display rules](https://marketplace.zoom.us/docs/api-reference/using-zoom-apis#email-address) for return value details."
          },
          "phone": {
            "type": "string",
            "example": "5550100",
            "description": "The registrant's phone number."
          },
          "state": {
            "type": "string",
            "example": "CA",
            "description": "The registrant's state or province."
          },
          "status": {
            "enum": [
              "approved",
              "denied",
              "pending"
            ],
            "type": "string",
            "example": "approved",
            "description": "The registrant's status: \n* `approved` &mdash; Registrant is approved. \n* `denied` &mdash; Registrant is denied. \n* `pending` &mdash; Registrant is waiting for approval."
          },
          "address": {
            "type": "string",
            "example": "1800 Amphibious Blvd.",
            "description": "The registrant's address."
          },
          "country": {
            "type": "string",
            "example": "US",
            "description": "The registrant's two-letter [country code](https://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#countries)."
          },
          "comments": {
            "type": "string",
            "example": "Looking forward to the discussion.",
            "description": "The registrant's questions and comments."
          },
          "industry": {
            "type": "string",
            "example": "Food",
            "description": "The registrant's industry."
          },
          "job_title": {
            "type": "string",
            "example": "Chef",
            "description": "The registrant's job title."
          },
          "last_name": {
            "type": "string",
            "example": "Chill",
            "maxLength": 64,
            "description": "The registrant's last name."
          },
          "first_name": {
            "type": "string",
            "example": "Jill",
            "maxLength": 64,
            "description": "The registrant's first name."
          },
          "no_of_employees": {
            "enum": [
              "",
              "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"
            ],
            "type": "string",
            "example": "1-20",
            "description": "The registrant's number of employees: \n* `1-20` \n* `21-50` \n* `51-100` \n* `101-250` \n* `251-500` \n* `501-1,000` \n* `1,001-5,000` \n* `5,001-10,000` \n* `More than 10,000`"
          },
          "custom_questions": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "title": {
                  "type": "string",
                  "example": "What do you hope to learn from this?",
                  "description": "The title of the custom question."
                },
                "value": {
                  "type": "string",
                  "example": "Look forward to learning how you come up with new recipes and what other services you offer.",
                  "maxLength": 128,
                  "description": "The custom question's response value. This has a limit of 128 characters."
                }
              },
              "description": "Information about custom questions."
            },
            "description": "Information about custom questions."
          },
          "purchasing_time_frame": {
            "enum": [
              "",
              "Within a month",
              "1-3 months",
              "4-6 months",
              "More than 6 months",
              "No timeframe"
            ],
            "type": "string",
            "example": "1-3 months",
            "description": "The registrant's purchasing time frame: \n* `Within a month` \n* `1-3 months` \n* `4-6 months` \n* `More than 6 months` \n* `No timeframe`"
          },
          "role_in_purchase_process": {
            "enum": [
              "",
              "Decision Maker",
              "Evaluator/Recommender",
              "Influencer",
              "Not involved"
            ],
            "type": "string",
            "example": "Influencer",
            "description": "The registrant's role in the purchase process: \n* `Decision Maker` \n* `Evaluator/Recommender` \n* `Influencer` \n* `Not involved`"
          }
        },
        "description": " Registrant."
      },
      "description": "Information about the cloud recording registrants."
    },
    "total_records": {
      "type": "integer",
      "example": 20,
      "description": "The total number of all the records available across pages."
    },
    "next_page_token": {
      "type": "string",
      "example": "w7587w4eiyfsudgf",
      "description": "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."
    }
  },
  "description": "Information about the meeting cloud recording registrant."
}
object CloudRecordingListRegistrationQuestionsResponse
{
  "type": "object",
  "title": "Recording Registrant Questions",
  "properties": {
    "questions": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "required": {
            "type": "boolean",
            "example": true,
            "description": "State whether the field is required to be answered by the registrant or not."
          },
          "field_name": {
            "enum": [
              "last_name",
              "address",
              "city",
              "country",
              "zip",
              "state",
              "phone",
              "industry",
              "org",
              "job_title",
              "purchasing_time_frame",
              "role_in_purchase_process",
              "no_of_employees",
              "comments"
            ],
            "type": "string",
            "example": "last_name",
            "extensions": {
              "x-enum-descriptions": [
                "Last Name",
                "Address",
                "City",
                "Country/Region",
                "Zip/Postal Code",
                "State/Province",
                "Phone",
                "Industry",
                "Organization",
                "Job Title",
                "Purchasing Time Frame",
                "Role in Purchase Process",
                "Number of Employees",
                "Questions & Comments"
              ]
            },
            "description": "Field name."
          }
        }
      },
      "description": "Array of Registrant Questions"
    },
    "custom_questions": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "type": {
            "enum": [
              "short",
              "single",
              "multiple"
            ],
            "type": "string",
            "example": "short",
            "extensions": {
              "x-enum-descriptions": [
                "Short Answer",
                "Single Answer",
                "Multiple Answer"
              ]
            },
            "description": "The type of registration question and answers."
          },
          "title": {
            "type": "string",
            "example": "What's your name?",
            "description": "Title of the question."
          },
          "answers": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "Yes"
            },
            "description": "Answer choices for the question. Can not be used with Short answer type."
          },
          "required": {
            "type": "boolean",
            "example": true,
            "description": "State whether registrants are required to answer custom questions or not."
          }
        }
      },
      "description": "Array of Registrant Custom Questions"
    }
  },
  "description": "Recording Registrant Questions"
}
object CloudRecordingRecoverRecordingStatusRequest
{
  "type": "object",
  "properties": {
    "action": {
      "enum": [
        "recover"
      ],
      "type": "string",
      "example": "recover",
      "extensions": {
        "x-enum-descriptions": [
          "recover meeting recording"
        ]
      }
    }
  }
}
object CloudRecordingRecoverStatusRequest
{
  "type": "object",
  "properties": {
    "action": {
      "enum": [
        "recover"
      ],
      "type": "string",
      "example": "recover",
      "extensions": {
        "x-enum-descriptions": [
          "recover meeting recording"
        ]
      }
    }
  }
}
object CloudRecordingUpdateRegistrantStatusRequest
{
  "type": "object",
  "required": [
    "action"
  ],
  "properties": {
    "action": {
      "enum": [
        "approve",
        "deny"
      ],
      "type": "string",
      "example": "approve",
      "extensions": {
        "x-enum-descriptions": [
          "Approve registrant",
          "Deny registrant"
        ]
      }
    },
    "registrants": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "3Z7sEm0TQQieLav3c3OD_g"
          }
        }
      },
      "maximum": 30,
      "description": "List of registrants"
    }
  },
  "description": "Registrant Status"
}
object CloudRecordingUpdateRegistrationQuestionsRequest
{
  "type": "object",
  "title": "Recording Registrant Questions",
  "properties": {
    "questions": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "required": {
            "type": "boolean",
            "example": true,
            "description": "State whether the field is required to be answered by the registrant or not."
          },
          "field_name": {
            "enum": [
              "last_name",
              "address",
              "city",
              "country",
              "zip",
              "state",
              "phone",
              "industry",
              "org",
              "job_title",
              "purchasing_time_frame",
              "role_in_purchase_process",
              "no_of_employees",
              "comments"
            ],
            "type": "string",
            "example": "last_name",
            "extensions": {
              "x-enum-descriptions": [
                "Last Name",
                "Address",
                "City",
                "Country/Region",
                "Zip/Postal Code",
                "State/Province",
                "Phone",
                "Industry",
                "Organization",
                "Job Title",
                "Purchasing Time Frame",
                "Role in Purchase Process",
                "Number of Employees",
                "Questions & Comments"
              ]
            },
            "description": "Field name."
          }
        }
      },
      "description": "Array of Registrant Questions"
    },
    "custom_questions": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "type": {
            "enum": [
              "short",
              "single",
              "multiple"
            ],
            "type": "string",
            "example": "short",
            "extensions": {
              "x-enum-descriptions": [
                "Short Answer",
                "Single Answer",
                "Multiple Answer"
              ]
            },
            "description": "The type of registration question and answers."
          },
          "title": {
            "type": "string",
            "example": "What's your name?",
            "description": "Title of the question."
          },
          "answers": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "Yes"
            },
            "description": "Answer choices for the question. Can not be used with Short answer type."
          },
          "required": {
            "type": "boolean",
            "example": true,
            "description": "State whether registrants are required to answer custom questions or not."
          }
        }
      },
      "description": "Array of Registrant Custom Questions"
    }
  },
  "description": "Recording Registrant Questions"
}
object CloudRecordingUpdateSettingsRequest
{
  "type": "object",
  "title": "Recording settings",
  "properties": {
    "topic": {
      "type": "string",
      "example": "My Personal Meeting Room",
      "description": "The name of the recording."
    },
    "password": {
      "type": "string",
      "example": "975238724",
      "maxLength": 10,
      "minLength": 8,
      "description": "This field enables passcode protection for the recording by setting a passcode. \n\nThe passcode must have a minimum of **eight** characters with a mix of numbers, letters and special characters.  \n   \n \n**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.   \n   \n 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."
    },
    "on_demand": {
      "type": "boolean",
      "example": false,
      "description": "This field determines whether the registration is required to view the recording."
    },
    "approval_type": {
      "enum": [
        0,
        1,
        2
      ],
      "type": "integer",
      "example": 0,
      "extensions": {
        "x-enum-descriptions": [
          "Registrants can watch the recording directly after registration",
          "Registrants will receive emails then watch the recording after you approve the registration",
          "Disabled"
        ]
      },
      "description": "The approval type for the registration.  \n \n`0`- Automatically approve the registration when a user registers.  \n \n`1` - Manually approve or deny the registration of a user.  \n \n`2` - No registration required to view the recording."
    },
    "share_recording": {
      "enum": [
        "publicly",
        "internally",
        "none"
      ],
      "type": "string",
      "example": "publicly",
      "extensions": {
        "x-enum-descriptions": [
          "Publicly",
          "Internally(account members only)",
          "None"
        ]
      },
      "description": "This field determines how the meeting recording is shared."
    },
    "viewer_download": {
      "type": "boolean",
      "example": true,
      "description": "This field determines whether a viewer can download the recording file or not."
    },
    "send_email_to_host": {
      "type": "boolean",
      "example": false,
      "description": "This field sends an email to host when someone registers to view the recording. This setting applies for On-demand recordings only."
    },
    "authentication_option": {
      "type": "string",
      "example": "auth_option",
      "description": "The authentication options."
    },
    "authentication_domains": {
      "type": "string",
      "example": "test.com",
      "description": "The authentication domains."
    },
    "recording_authentication": {
      "type": "boolean",
      "example": true,
      "description": "This field indicates that only authenticated users can view."
    },
    "show_social_share_buttons": {
      "type": "boolean",
      "example": true,
      "description": "This field shows social share buttons on registration page. This setting applies for On-demand recordings only."
    }
  }
}
object DevicesAssignDeviceZpaAssignmentRequest
{
  "type": "object",
  "required": [
    "mac_address",
    "vendor"
  ],
  "properties": {
    "vendor": {
      "type": "string",
      "example": "poly",
      "description": "The device's manufacturer."
    },
    "mac_address": {
      "type": "string",
      "example": "64167ffc0ed7",
      "description": "The device's mac address."
    },
    "extension_number": {
      "type": "string",
      "example": "802",
      "description": "The extension number."
    }
  }
}
object DevicesChangeDeviceAssociationRequest
{
  "type": "object",
  "required": [
    "action"
  ],
  "properties": {
    "room_id": {
      "type": "string",
      "example": "qMOLddnySIGGVycz8aX_JQ",
      "description": "The Zoom Room ID which device is being associated to. The `room_id` is required when `assign` is selected for `action` field."
    },
    "app_type": {
      "enum": [
        "ZR",
        "ZRC",
        "ZRP",
        "ZRW"
      ],
      "type": "string",
      "default": "ZR",
      "example": "ZR",
      "description": "Specify one of the following values for this field:\n\n`ZR`: Zoom Room Computer.  \n \n`ZRC`: Zoom Room Controller.  \n \n`ZRP`: Scheduling Display.  \n \n`ZRW`: Companion Whiteboard."
    }
  }
}
object DevicesCreateNewDeviceRequest
{
  "type": "object",
  "required": [
    "device_name",
    "device_type",
    "mac_address",
    "model",
    "serial_number",
    "vendor"
  ],
  "properties": {
    "tag": {
      "type": "string",
      "example": "personal rooms",
      "description": "The name of the tag."
    },
    "model": {
      "type": "string",
      "example": "StudioX30",
      "description": "The device's model."
    },
    "vendor": {
      "type": "string",
      "example": "Poly",
      "description": "The device's manufacturer."
    },
    "room_id": {
      "type": "string",
      "example": "72afdc13-a289-40c3-b358-50c8b8de",
      "description": "The Zoom Room's ID. Only for Zoom Room devices."
    },
    "user_email": {
      "type": "string",
      "example": "test-user@ya.us",
      "description": "User email for assigning the Zoom Phone device. Only for Zoom Phone devices."
    },
    "device_name": {
      "type": "string",
      "example": "My device",
      "description": "The device's name."
    },
    "device_type": {
      "enum": [
        0,
        1,
        5
      ],
      "type": "integer",
      "example": 0,
      "description": "Device type.  \n `0` - Zoom Rooms computer.  \n `1` - Zoom Rooms controller.  \n `5` - Zoom Phone appliance."
    },
    "mac_address": {
      "type": "string",
      "example": "01-23-45-67-89-AB",
      "description": "The device's mac address."
    },
    "zdm_group_id": {
      "type": "string",
      "example": "ff49588c-92c4-4406-99e6-1942d8a61a7b",
      "description": "The ZDM group ID."
    },
    "serial_number": {
      "type": "string",
      "example": "6NRN2A0",
      "description": "The device's serial number."
    },
    "extension_number": {
      "type": "string",
      "example": "802",
      "description": "The extension number."
    }
  }
}
object DevicesGetDetailResponse
{
  "type": "object",
  "properties": {
    "tag": {
      "type": "string",
      "example": "personal rooms",
      "description": "The tag's name."
    },
    "model": {
      "type": "string",
      "example": "StudioX30",
      "description": "The device's model."
    },
    "vendor": {
      "type": "string",
      "example": "Poly",
      "description": "The device's manufacturer."
    },
    "room_id": {
      "type": "string",
      "example": "72afdc13-a289-40c3-b358-50c8b8de",
      "description": "The Zoom Room's ID."
    },
    "device_id": {
      "type": "string",
      "example": "F1C6E9DF-429E-4FA1-85DA-AC95464F3D18",
      "description": "The device's unique identifier."
    },
    "room_name": {
      "type": "string",
      "example": "My Personal Meeting Room",
      "description": "The Zoom Room's name."
    },
    "user_email": {
      "type": "string",
      "example": "test-user@ya.us",
      "description": "The phone device's owner."
    },
    "app_version": {
      "type": "string",
      "example": "5.13.0.5762",
      "description": "App version of Zoom Rooms."
    },
    "device_name": {
      "type": "string",
      "example": "My device",
      "description": "The name of the device."
    },
    "device_type": {
      "enum": [
        0,
        1,
        2,
        3,
        4,
        5,
        6
      ],
      "type": "integer",
      "example": 0,
      "description": "Filter devices by device type.  \nDevice Type:  \n `-1` - All Zoom Room device(0,1,2,3,4,6).  \n `0` - Zoom Rooms Computer.  \n `1` - Zoom Rooms Controller.  \n `2` - Zoom Rooms Scheduling Display.  \n `3` - Zoom Rooms Control System.  \n `4` - Zoom Rooms Whiteboard.  \n `5` - Zoom Phone Appliance.  \n `6` - Zoom Rooms Computer (with Controller)."
    },
    "last_online": {
      "type": "string",
      "example": "2022-10-27T10:23:15Z",
      "description": "The time when the device was last online."
    },
    "mac_address": {
      "type": "string",
      "example": "01-23-45-67-89-AB",
      "description": "The device's MAC address."
    },
    "platform_os": {
      "type": "string",
      "example": "Epos expandvision5 1.2.22315.04",
      "description": "The device's platform."
    },
    "sdk_version": {
      "type": "string",
      "example": "2.0.11",
      "description": "The SDK version."
    },
    "device_status": {
      "enum": [
        -1,
        0,
        1
      ],
      "type": "integer",
      "example": 0,
      "description": "Filter devices by status.  \n Device Status:  \n `0` - offline.  \n `1` - online.  \n `-1` - unlink"
    },
    "serial_number": {
      "type": "string",
      "example": "6NRN2A0",
      "description": "The device's serial number."
    },
    "enrolled_in_zdm": {
      "type": "boolean",
      "example": true,
      "description": "Whether the device is enrolled in ZDM (Zoom Device Management)."
    },
    "connected_to_zdm": {
      "type": "boolean",
      "example": true,
      "description": "Whether the device is connected to ZDM (Zoom Device Management)."
    }
  },
  "description": "Information about the device."
}
object DevicesGetZpaVersionInfoResponse
{
  "type": "object",
  "properties": {
    "app_versions": {
      "type": "array",
      "items": {
        "type": "string",
        "example": "5.16.5.3920",
        "description": "The app version."
      },
      "description": "List of app versions that can be upgraded."
    },
    "firmware_versions": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "model": {
            "type": "string",
            "example": "C470HD",
            "description": "The device's model name."
          },
          "vendor": {
            "type": "string",
            "example": "AudioCodes",
            "description": "The device's manufacturer."
          },
          "version": {
            "type": "string",
            "example": "1.19.552",
            "description": "The package version."
          },
          "warn_info": {
            "type": "string",
            "example": "You are about to perform an Android operating system upgrade. The change is permanent and cannot be reversed.",
            "description": "The prompt information for this version."
          }
        },
        "description": "Details of firmware that the vendor can upgrade."
      },
      "description": "List of firmware that can be upgraded."
    }
  },
  "description": "Information about the version list."
}
object DevicesListResponse
{
  "type": "object",
  "properties": {
    "devices": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "tag": {
            "type": "string",
            "example": "personal rooms",
            "description": "The name of the tag."
          },
          "model": {
            "type": "string",
            "example": "StudioX30",
            "description": "The device's model."
          },
          "vendor": {
            "type": "string",
            "example": "Poly",
            "description": "The device's manufacturer."
          },
          "room_id": {
            "type": "string",
            "example": "72afdc13-a289-40c3-b358-50c8b8de",
            "description": "id of the Zoom Room."
          },
          "device_id": {
            "type": "string",
            "example": "F1C6E9DF-429E-4FA1-85DA-AC95464F3D18",
            "description": "Unique identifier of the device."
          },
          "room_name": {
            "type": "string",
            "example": "My Personal Meeting Room",
            "description": "Name of the Zoom Room."
          },
          "user_email": {
            "type": "string",
            "example": "test-user@ya.us",
            "description": "The owner of the phone device"
          },
          "app_version": {
            "type": "string",
            "example": "5.13.0.5762",
            "description": "App version of Zoom Rooms."
          },
          "device_name": {
            "type": "string",
            "example": "My device",
            "description": "The name of the device."
          },
          "device_type": {
            "enum": [
              0,
              1,
              2,
              3,
              4,
              5,
              6
            ],
            "type": "integer",
            "example": 0,
            "description": "Filter devices by device type.  \n  Device Type:  \n `-1` - All Zoom Room device(0,1,2,3,4,6).  \n `0` - Zoom Rooms Computer.  \n `1` - Zoom Rooms Controller.  \n `2` - Zoom Rooms Scheduling Display.  \n `3` - Zoom Rooms Control System.  \n `4` -  Zoom Rooms Whiteboard.  \n `5` - Zoom Phone Appliance.  \n `6` - Zoom Rooms Computer (with Controller)."
          },
          "last_online": {
            "type": "string",
            "example": "2022-10-27T10:23:15Z",
            "description": "The time when device was online last time."
          },
          "mac_address": {
            "type": "string",
            "example": "01-23-45-67-89-AB",
            "description": "The mac address of the device."
          },
          "platform_os": {
            "type": "string",
            "example": "Epos expandvision5 1.2.22315.04",
            "description": "The device's platform."
          },
          "skd_version": {
            "type": "string",
            "example": "2.0.11",
            "description": "The version of the SDK."
          },
          "device_status": {
            "enum": [
              -1,
              0,
              1
            ],
            "type": "integer",
            "example": 0,
            "description": "Filter devices by status.   \n  Device Status:  \n `0` - offline.  \n `1` - online.  \n `-1` - unlink"
          },
          "serial_number": {
            "type": "string",
            "example": "6NRN2A0",
            "description": "The device's serial number."
          },
          "enrolled_in_zdm": {
            "type": "boolean",
            "example": true,
            "description": "Whether the device enrolled in ZDM (Zoom Device Management)."
          },
          "connected_to_zdm": {
            "type": "boolean",
            "example": true,
            "description": "Whether the device connected to ZDM (Zoom Device Management)."
          }
        },
        "description": "The information about the device."
      }
    },
    "page_size": {
      "type": "integer",
      "example": 20,
      "description": "The number of records returned within a single API call."
    },
    "next_page_token": {
      "type": "string",
      "example": "At6eWnFZ1FB3arCXnRxqHLXKhbDW18yz2i2",
      "description": "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."
    }
  }
}
object DevicesListZdmGroupInfoResponse
{
  "type": "object",
  "properties": {
    "groups": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "example": "HeFei-group",
            "description": "The ZDM group's name."
          },
          "description": {
            "type": "string",
            "example": "Group in Hefei region",
            "description": "The ZDM group's describe."
          },
          "zdm_group_id": {
            "type": "string",
            "example": "ff49588c-92c4-4406-99e6-1942d8a61a7b",
            "description": "The ZDM group's unique ID."
          }
        }
      },
      "description": "All ZDM group information under current account."
    },
    "page_size": {
      "type": "integer",
      "example": 30,
      "description": "The total number of records returned from a single API call."
    },
    "next_page_token": {
      "type": "string",
      "example": "RaO87FrnwXvFQta5aV8sU5C3c9O8s9Nraq2",
      "description": "Use the next page token to paginate through a large set of results. 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."
    }
  }
}
object DevicesUpdateDeviceNameRequest
{
  "type": "object",
  "required": [
    "device_name"
  ],
  "properties": {
    "tag": {
      "type": "string",
      "example": "personal rooms",
      "description": "The name of the tag."
    },
    "room_id": {
      "type": "string",
      "example": "72afdc13-a289-40c3-b358-50c8b8de",
      "description": "id of the Zoom Room."
    },
    "device_name": {
      "type": "string",
      "example": "My device",
      "description": "The name of the device."
    },
    "device_type": {
      "enum": [
        0,
        1,
        3
      ],
      "type": "integer",
      "example": 1,
      "description": "Device Type:  \n `0` - Zoom Rooms Computer.  \n `1` - Zoom Rooms Controller.  \n `2` - Zoom Rooms Scheduling Display."
    }
  }
}
object DevicesUpgradeZpaOsAppRequest
{
  "type": "object",
  "required": [
    "data",
    "zdm_group_id"
  ],
  "properties": {
    "data": {
      "oneOf": [
        {
          "type": "object",
          "title": "",
          "required": [
            "upgrade_type"
          ],
          "properties": {
            "upgrade_type": {
              "enum": [
                "UPGRADE_FIRMWARE"
              ],
              "type": "string",
              "default": "UPGRADE_FIRMWARE",
              "example": "UPGRADE_FIRMWARE",
              "description": "Upgrade firmware."
            },
            "firmware_versions": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "model": {
                    "type": "string",
                    "example": "C470HD",
                    "description": "The device's model name. Maximum of 64 characters."
                  },
                  "vendor": {
                    "type": "string",
                    "example": "AudioCodes",
                    "description": "The device's manufacturer."
                  },
                  "version": {
                    "type": "string",
                    "example": "1.19.552",
                    "description": "The firmware version."
                  }
                }
              }
            }
          }
        },
        {
          "type": "object",
          "title": "",
          "required": [
            "upgrade_type"
          ],
          "properties": {
            "app_version": {
              "type": "string",
              "example": "5.16.5.3920",
              "description": "The app version to be upgraded. If upgrade type is `0`, this field won't work. If upgrade type is `1`, this field will work."
            },
            "upgrade_type": {
              "enum": [
                "UPGRADE_APP"
              ],
              "type": "string",
              "example": "UPGRADE_APP",
              "description": "Upgrade app."
            }
          }
        }
      ]
    },
    "zdm_group_id": {
      "type": "string",
      "example": "ff49588c-92c4-4406-99e6-1942d8a61a7b",
      "description": "The ZDM group ID."
    }
  }
}
object H323DevicesCreateDeviceRequest
{
  "type": "object",
  "title": "The H.323/SIP device object.",
  "required": [
    "encryption",
    "ip",
    "name",
    "protocol"
  ],
  "properties": {
    "ip": {
      "type": "string",
      "example": "127.0.0.1",
      "description": "Device IP."
    },
    "name": {
      "type": "string",
      "example": "api_test_20190508",
      "maxLength": 64,
      "description": "Device name."
    },
    "protocol": {
      "enum": [
        "H.323",
        "SIP"
      ],
      "type": "string",
      "example": "H.323",
      "extensions": {
        "x-enum-descriptions": [
          "H.323",
          "SIP"
        ]
      },
      "description": "Device protocol:  \n `H.323` - H.323.  \n `SIP` - SIP."
    },
    "encryption": {
      "enum": [
        "auto",
        "yes",
        "no"
      ],
      "type": "string",
      "example": "auto",
      "extensions": {
        "x-enum-descriptions": [
          "auto",
          "yes",
          "no"
        ]
      },
      "description": "Device encryption:  \n `auto` - auto.  \n `yes` - yes.  \n `no` - no."
    }
  },
  "description": "The H.323/SIP device object."
}
object H323DevicesCreateDeviceResponse
{
  "type": "object",
  "title": "The H.323/SIP device object.",
  "required": [
    "encryption",
    "ip",
    "name",
    "protocol"
  ],
  "properties": {
    "id": {
      "type": "string",
      "example": "abceHewahkrehwiK",
      "description": "Device ID."
    },
    "ip": {
      "type": "string",
      "example": "127.0.0.1",
      "description": "Device IP."
    },
    "name": {
      "type": "string",
      "example": "api_test_20190508",
      "maxLength": 64,
      "description": "Device name."
    },
    "protocol": {
      "enum": [
        "H.323",
        "SIP"
      ],
      "type": "string",
      "example": "H.323",
      "extensions": {
        "x-enum-descriptions": [
          "H.323",
          "SIP"
        ]
      },
      "description": "Device protocol:  \n `H.323` - H.323.  \n `SIP` - SIP."
    },
    "encryption": {
      "enum": [
        "auto",
        "yes",
        "no"
      ],
      "type": "string",
      "example": "auto",
      "extensions": {
        "x-enum-descriptions": [
          "auto",
          "yes",
          "no"
        ]
      },
      "description": "Device encryption:  \n `auto` - auto.  \n `yes` - yes.  \n `no` - no."
    }
  },
  "description": "The H.323/SIP device object."
}
object H323DevicesListDevicesResponse
{
  "type": "object",
  "title": "H.323/SIP Device List",
  "properties": {
    "devices": {
      "type": "array",
      "items": {
        "type": "object",
        "title": "The H.323/SIP device object.",
        "required": [
          "encryption",
          "ip",
          "name",
          "protocol"
        ],
        "properties": {
          "id": {
            "type": "string",
            "example": "abceHewahkrehwiK",
            "description": "Device ID."
          },
          "ip": {
            "type": "string",
            "example": "127.0.0.1",
            "description": "Device IP."
          },
          "name": {
            "type": "string",
            "example": "api_test_20190508",
            "maxLength": 64,
            "description": "Device name."
          },
          "protocol": {
            "enum": [
              "H.323",
              "SIP"
            ],
            "type": "string",
            "example": "H.323",
            "extensions": {
              "x-enum-descriptions": [
                "H.323",
                "SIP"
              ]
            },
            "description": "Device protocol:  \n `H.323` - H.323.  \n `SIP` - SIP."
          },
          "encryption": {
            "enum": [
              "auto",
              "yes",
              "no"
            ],
            "type": "string",
            "example": "auto",
            "extensions": {
              "x-enum-descriptions": [
                "auto",
                "yes",
                "no"
              ]
            },
            "description": "Device encryption:  \n `auto` - auto.  \n `yes` - yes.  \n `no` - no."
          }
        },
        "description": "The H.323/SIP device object."
      },
      "description": "List of H.323/SIP Device objects."
    },
    "page_size": {
      "type": "integer",
      "default": 30,
      "example": 30,
      "maximum": 300,
      "description": "The number of records returned with a single API call."
    },
    "page_count": {
      "type": "integer",
      "example": 1,
      "description": "The number of pages returned for the request made."
    },
    "page_number": {
      "type": "integer",
      "default": 1,
      "example": 1,
      "deprecated": true,
      "description": "**Deprecated.** We will no longer support this field in a future release. Instead, use the `next_page_token` for pagination."
    },
    "total_records": {
      "type": "integer",
      "example": 20,
      "description": "The total number of all the records available across pages."
    },
    "next_page_token": {
      "type": "string",
      "example": "w7587w4eiyfsudgf",
      "description": "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."
    }
  },
  "description": "List of H.323/SIP Devices."
}
object H323DevicesUpdateDeviceInfoRequest
{
  "type": "object",
  "title": "The H.323/SIP device object.",
  "required": [
    "encryption",
    "ip",
    "name",
    "protocol"
  ],
  "properties": {
    "ip": {
      "type": "string",
      "example": "127.0.0.1",
      "description": "Device IP."
    },
    "name": {
      "type": "string",
      "example": "api_test_20190508",
      "maxLength": 64,
      "description": "Device name."
    },
    "protocol": {
      "enum": [
        "H.323",
        "SIP"
      ],
      "type": "string",
      "example": "H.323",
      "extensions": {
        "x-enum-descriptions": [
          "H.323",
          "SIP"
        ]
      },
      "description": "Device protocol:  \n `H.323` - H.323.  \n `SIP` - SIP."
    },
    "encryption": {
      "enum": [
        "auto",
        "yes",
        "no"
      ],
      "type": "string",
      "example": "auto",
      "extensions": {
        "x-enum-descriptions": [
          "auto",
          "yes",
          "no"
        ]
      },
      "description": "Device encryption:  \n `auto` - auto.  \n `yes` - yes.  \n `no` - no."
    }
  },
  "description": "The H.323/SIP device object."
}
object MeetingsAddRegistrantRequest
{
  "type": "object",
  "required": [
    "email",
    "first_name"
  ],
  "properties": {
    "org": {
      "type": "string",
      "example": "Cooking Org",
      "description": "The registrant's organization."
    },
    "zip": {
      "type": "string",
      "example": "94045",
      "description": "The registrant's ZIP or postal code."
    },
    "city": {
      "type": "string",
      "example": "Mountain View",
      "description": "The registrant's city."
    },
    "email": {
      "type": "string",
      "format": "email",
      "example": "jchill@example.com",
      "maxLength": 128,
      "description": "The registrant's email address."
    },
    "phone": {
      "type": "string",
      "example": "5550100",
      "description": "The registrant's phone number."
    },
    "state": {
      "type": "string",
      "example": "CA",
      "description": "The registrant's state or province."
    },
    "address": {
      "type": "string",
      "example": "1800 Amphibious Blvd.",
      "description": "The registrant's address."
    },
    "country": {
      "type": "string",
      "example": "US",
      "description": "The registrant's two-letter [country code](https://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#countries)."
    },
    "comments": {
      "type": "string",
      "example": "Looking forward to the discussion.",
      "description": "The registrant's questions and comments."
    },
    "industry": {
      "type": "string",
      "example": "Food",
      "description": "The registrant's industry."
    },
    "language": {
      "enum": [
        "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"
      ],
      "type": "string",
      "example": "en-US",
      "description": "The registrant's language preference for confirmation emails: \n* `en-US` &mdash; English (US) \n* `de-DE` &mdash; German (Germany) \n* `es-ES` &mdash; Spanish (Spain) \n* `fr-FR` &mdash; French (France) \n* `jp-JP` &mdash; Japanese \n* `pt-PT` &mdash; Portuguese (Portugal) \n* `ru-RU` &mdash; Russian \n* `zh-CN` &mdash; Chinese (PRC) \n* `zh-TW` &mdash; Chinese (Taiwan) \n* `ko-KO` &mdash; Korean \n* `it-IT` &mdash; Italian (Italy) \n* `vi-VN` &mdash; Vietnamese \n* `pl-PL` &mdash; Polish \n* `Tr-TR` &mdash; Turkish"
    },
    "job_title": {
      "type": "string",
      "example": "Chef",
      "description": "The registrant's job title."
    },
    "last_name": {
      "type": "string",
      "example": "Chill",
      "maxLength": 64,
      "description": "The registrant's last name."
    },
    "first_name": {
      "type": "string",
      "example": "Jill",
      "maxLength": 64,
      "description": "The registrant's first name."
    },
    "auto_approve": {
      "type": "boolean",
      "example": true,
      "description": "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`. \n\n**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)."
    },
    "no_of_employees": {
      "enum": [
        "",
        "1-20",
        "21-50",
        "51-100",
        "101-500",
        "500-1,000",
        "1,001-5,000",
        "5,001-10,000",
        "More than 10,000"
      ],
      "type": "string",
      "example": "1-20",
      "description": "The registrant's number of employees: \n* `1-20` \n* `21-50` \n* `51-100` \n* `101-500` \n* `500-1,000` \n* `1,001-5,000` \n* `5,001-10,000` \n* `More than 10,000`"
    },
    "custom_questions": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "example": "What do you hope to learn from this?",
            "description": "The title of the custom question."
          },
          "value": {
            "type": "string",
            "example": "Look forward to learning how you come up with new recipes and what other services you offer.",
            "maxLength": 128,
            "description": "The custom question's response value. This has a limit of 128 characters."
          }
        },
        "description": "Information about custom questions."
      },
      "description": "Information about custom questions."
    },
    "purchasing_time_frame": {
      "enum": [
        "",
        "Within a month",
        "1-3 months",
        "4-6 months",
        "More than 6 months",
        "No timeframe"
      ],
      "type": "string",
      "example": "1-3 months",
      "description": "The registrant's purchasing time frame: \n* `Within a month` \n* `1-3 months` \n* `4-6 months` \n* `More than 6 months` \n* `No timeframe`"
    },
    "role_in_purchase_process": {
      "enum": [
        "",
        "Decision Maker",
        "Evaluator/Recommender",
        "Influencer",
        "Not involved"
      ],
      "type": "string",
      "example": "Influencer",
      "description": "The registrant's role in the purchase process: \n* `Decision Maker` \n* `Evaluator/Recommender` \n* `Influencer` \n* `Not involved`"
    }
  },
  "description": "Information about the meeting registrant."
}
object MeetingsAddRegistrantResponse
{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "format": "int64",
      "example": 85746065,
      "description": "The meeting ID."
    },
    "topic": {
      "type": "string",
      "example": "My Meeting",
      "maxLength": 200,
      "description": "The meeting's topic."
    },
    "join_url": {
      "type": "string",
      "example": "https://example.com/j/11111",
      "description": "The URL the registrant can use to join the meeting. \n\nThe API will not return this field if the meeting was [created](https://developers.zoom.us) with the `approval_type` field value of `1` (manual approval)."
    },
    "start_time": {
      "type": "string",
      "format": "date-time",
      "example": "2021-07-13T21:44:51Z",
      "description": "The meeting's start time."
    },
    "occurrences": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "example": "available",
            "description": "Occurrence status."
          },
          "duration": {
            "type": "integer",
            "example": 60,
            "description": "Duration."
          },
          "start_time": {
            "type": "string",
            "format": "date-time",
            "example": "2022-03-25T07:46:00Z",
            "description": "Start time."
          },
          "occurrence_id": {
            "type": "string",
            "example": "1648194360000",
            "description": "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."
          }
        },
        "description": "Occurrence object. This object is only returned for Recurring Webinars."
      },
      "description": "Array of occurrence objects."
    },
    "registrant_id": {
      "type": "string",
      "example": "fdgsfh2ey82fuh",
      "description": "The registrant's ID."
    },
    "participant_pin_code": {
      "type": "integer",
      "format": "int64",
      "example": 380303,
      "description": "The participant PIN code is used to authenticate audio participants before they join the meeting."
    }
  }
}
object MeetingsBatchRegistrantsCreateRequest
{
  "type": "object",
  "properties": {
    "registrants": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "email",
          "first_name"
        ],
        "properties": {
          "email": {
            "type": "string",
            "format": "email",
            "example": "jchill@example.com",
            "description": "Email address of the registrant."
          },
          "last_name": {
            "type": "string",
            "example": "Chill",
            "description": "Last name of the registrant."
          },
          "first_name": {
            "type": "string",
            "example": "Jill",
            "description": "First name of the registrant."
          }
        }
      }
    },
    "auto_approve": {
      "type": "boolean",
      "example": true,
      "description": "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`. \n\nYou **cannot** use this field to change approval setting for a meeting  that was originally scheduled with approval_type `0` (automatic approval)."
    },
    "registrants_confirmation_email": {
      "type": "boolean",
      "example": true,
      "description": "Send confirmation Email to Registrants"
    }
  }
}
object MeetingsBatchRegistrantsCreateResponse
{
  "type": "object",
  "properties": {
    "registrants": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "example": "jchill@example.com",
            "description": "Email address of the registrant."
          },
          "join_url": {
            "type": "string",
            "example": "https://example.com/j/11111",
            "description": "Unique URL using which registrant can join the meeting."
          },
          "registrant_id": {
            "type": "string",
            "example": "9tboDiHUQAeOnbmudzWa5g",
            "description": "Unique identifier of the registrant."
          },
          "participant_pin_code": {
            "type": "integer",
            "format": "int64",
            "example": 380303,
            "description": "The participant PIN code is used to authenticate audio participants before they join the meeting."
          }
        }
      }
    }
  }
}
object MeetingsControlInMeetingFeaturesRequest
{
  "type": "object",
  "properties": {
    "method": {
      "type": "string",
      "example": "recording.start",
      "description": "The in-meeting method to control: \n* `recording.start` &mdash; Start the recording. \n* `recording.stop` &mdash; Stop the recording. \n* `recording.pause` &mdash; Pause the recording. \n* `recording.resume` &mdash; Resume a paused recording. \n* `participant.invite` &mdash; Invite a participant to the meeting. \n* `participant.invite.callout` &mdash; Invite a participant to the meeting through [call out (phone)](https://support.zoom.us/hc/en-us/articles/4404535651085-Inviting-others-by-phone-call-out). \n* `participant.invite.room_system_callout` &mdash; Invite a participant to the meeting through [call out (room system)]."
    },
    "params": {
      "type": "object",
      "properties": {
        "contacts": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "example": "30R7kT7bTIKSNUFEuH_Qlg",
                "description": "The user's ID."
              },
              "email": {
                "type": "string",
                "example": "jchill@example.com",
                "description": "The user's email address. Use this value if you do not have the user's ID. \n\nIf you pass the `id` value, the API ignores this query parameter."
              }
            }
          },
          "maximum": 10,
          "description": "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."
        },
        "call_type": {
          "type": "string",
          "example": "h323",
          "description": "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."
        },
        "device_ip": {
          "type": "string",
          "example": "10.100.111.237",
          "description": "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."
        },
        "sip_headers": {
          "type": "object",
          "properties": {
            "from_uri": {
              "type": "string",
              "example": "sip:username@domain.company.org",
              "maxLength": 256,
              "description": "Custom URI that will be used within the SIP Header. The URI must start with 'sip:' or 'sips:' as a valid URI based on parameters defined by the platform."
            },
            "to_display_name": {
              "type": "string",
              "example": "display name",
              "maxLength": 64,
              "description": "Custom remote name that will be used within the meeting."
            },
            "from_display_name": {
              "type": "string",
              "example": "display name",
              "maxLength": 64,
              "description": "Custom name that will be used within the SIP Header."
            },
            "additional_headers": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "key": {
                    "type": "string",
                    "example": "X-Header1",
                    "maxLength": 32,
                    "description": "Additional custom SIP header's key."
                  },
                  "value": {
                    "type": "string",
                    "example": "X-body1",
                    "maxLength": 256,
                    "description": "Additional custom SIP header's value."
                  }
                }
              },
              "maximum": 10,
              "description": "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."
            }
          },
          "description": "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."
        },
        "h323_headers": {
          "type": "object",
          "properties": {
            "to_display_name": {
              "type": "string",
              "example": "display name",
              "maxLength": 64,
              "description": "Custom remote name that will be used within the meeting."
            },
            "from_display_name": {
              "type": "string",
              "example": "display name",
              "maxLength": 64,
              "description": "Custom name that will be used within the h323 Header."
            }
          },
          "description": "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."
        },
        "invitee_name": {
          "type": "string",
          "example": "Jill Chill",
          "description": "The user's name to display in the meeting. Use this field if you pass the `participant.invite.callout` value for the `method` field."
        },
        "phone_number": {
          "type": "string",
          "example": "5550100",
          "description": "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."
        },
        "invite_options": {
          "type": "object",
          "properties": {
            "require_greeting": {
              "type": "boolean",
              "default": true,
              "example": true,
              "description": "Whether to require a greeting before being connected. Use this field if you pass the `participant.invite.callout` value for the `method` field."
            },
            "require_pressing_one": {
              "type": "boolean",
              "default": true,
              "example": true,
              "description": "Whether to require pressing 1 before being connected. Use this field if you pass the `participant.invite.callout` value for the `method` field."
            }
          },
          "description": "Information about the `participant.invite.callout` settings."
        }
      },
      "description": "The in-meeting parameters."
    }
  }
}
object MeetingsCreateBatchPollsRequest
{
  "type": "object",
  "properties": {
    "polls": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "example": "Learn something new",
            "maxLength": 64,
            "description": "The poll's title, up to 64 characters."
          },
          "anonymous": {
            "type": "boolean",
            "default": false,
            "example": false,
            "description": "Whether to allow meeting participants to answer poll questions anonymously: \n* `true` &mdash; Anonymous polls enabled. \n* `false` &mdash; Participants cannot answer poll questions anonymously. \n\nThis value defaults to `false`."
          },
          "poll_type": {
            "enum": [
              1,
              2,
              3
            ],
            "type": "integer",
            "default": 1,
            "example": 2,
            "description": "The type of poll: \n* `1` &mdash; Poll. \n* `2` &mdash; Advanced Poll. This feature must be enabled in your Zoom account. \n* `3` &mdash; Quiz. This feature must be enabled in your Zoom account. \n\n This value defaults to `1`."
          },
          "questions": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string",
                  "example": "How useful was this meeting?",
                  "maxLength": 255,
                  "description": "The poll question's title, up to 255 characters. \n\nFor `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."
                },
                "type": {
                  "enum": [
                    "single",
                    "multiple",
                    "matching",
                    "rank_order",
                    "short_answer",
                    "long_answer",
                    "fill_in_the_blank",
                    "rating_scale"
                  ],
                  "type": "string",
                  "example": "single",
                  "extensions": {
                    "x-enum-descriptions": [
                      "Single choice",
                      "Multiple choice",
                      "Matching",
                      "Rank order",
                      "Short answer",
                      "Long answer",
                      "Fill in the blank",
                      "Rating scale"
                    ]
                  },
                  "description": "The poll's question and answer type: \n* `single` &mdash; Single choice. \n* `multiple` &mdash; Multiple choice. \n* `matching` &mdash; Matching. \n* `rank_order` &mdash; Rank order. \n* `short_answer` &mdash; Short answer. \n* `long_answer` &mdash; Long answer. \n* `fill_in_the_blank` &mdash; Fill in the blank. \n* `rating_scale` &mdash; Rating scale."
                },
                "answers": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "example": "Extremely useful"
                  },
                  "minItems": 2,
                  "description": "The poll question's available answers. This field requires a **minimum** of two answers. \n\n* For `single` and `multiple` polls, you can only provide a maximum of 10 answers. \n* For `matching` polls, you can only provide a maximum of 16 answers. \n* For `rank_order` polls, you can only provide a maximum of seven answers."
                },
                "prompts": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "prompt_question": {
                        "type": "string",
                        "example": "How are you?",
                        "description": "The question prompt's title."
                      },
                      "prompt_right_answers": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "example": "Good"
                        },
                        "description": "The question prompt's correct answers: \n* For `matching` polls, you must provide a minimum of two correct answers, up to a maximum of 10 correct answers. \n* For `rank_order` polls, you can only provide one correct answer."
                      }
                    }
                  },
                  "description": "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."
                },
                "right_answers": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "example": "Good"
                  },
                  "minItems": 1,
                  "description": "The poll question's correct answer(s). This field is **required** if the poll's `type` value is `3` (Quiz). \n\n For `single` and `matching` polls, this field only accepts one answer."
                },
                "case_sensitive": {
                  "type": "boolean",
                  "default": false,
                  "example": false,
                  "description": "Whether the correct answer is case sensitive. This field only applies to `fill_in_the_blank` polls: \n* `true` &mdash; The answer is case-sensitive. \n* `false` &mdash; The answer is not case-sensitive. \n\nThis value defaults to `false`."
                },
                "answer_required": {
                  "type": "boolean",
                  "default": false,
                  "example": false,
                  "description": "Whether participants must answer the question: \n* `true` &mdash; The participant must answer the question. \n* `false` &mdash; The participant does not need to answer the question. \n\n**Note:** \n* When the poll's `type` value is `1` (Poll), this value defaults to `true`. \n* When the poll's `type` value is the `2` (Advanced Poll) or `3` (Quiz) values, this value defaults to `false`."
                },
                "rating_max_label": {
                  "type": "string",
                  "example": "Extremely Likely",
                  "description": "The high score label used for the `rating_max_value` field. \n\nThis field only applies to the `rating_scale` poll."
                },
                "rating_max_value": {
                  "type": "integer",
                  "example": 4,
                  "maximum": 10,
                  "description": "The rating scale's maximum value, up to a maximum value of 10. \n\nThis field only applies to the `rating_scale` poll."
                },
                "rating_min_label": {
                  "type": "string",
                  "example": "Not likely",
                  "description": "The low score label used for the `rating_min_value` field. \n\nThis field only applies to the `rating_scale` poll."
                },
                "rating_min_value": {
                  "type": "integer",
                  "example": 1,
                  "minimum": 1,
                  "description": "The rating scale's minimum value. This value cannot be less than zero. \n\nThis field only applies to the `rating_scale` poll."
                },
                "show_as_dropdown": {
                  "type": "boolean",
                  "default": false,
                  "example": false,
                  "description": "Whether to display the radio selection as a drop-down box: \n* `true` &mdash; Show as a drop-down box. \n* `false` &mdash; Do not show as a drop-down box. \n\nThis value defaults to `false`."
                },
                "answer_max_character": {
                  "type": "integer",
                  "example": 200,
                  "description": "The allowed maximum number of characters. This field only applies to `short_answer` and `long_answer` polls: \n* For `short_answer` polls, a maximum of 500 characters. \n* For `long_answer` polls, a maximum of 2,000 characters."
                },
                "answer_min_character": {
                  "type": "integer",
                  "example": 1,
                  "minimum": 1,
                  "description": "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."
                }
              }
            },
            "required": [
              "name",
              "type"
            ],
            "minLength": 1,
            "description": "Information about the poll's questions."
          }
        }
      },
      "maxItems": 25,
      "minItems": 1,
      "description": "Information about the meeting's polls."
    }
  }
}
object MeetingsCreateBatchPollsResponse
{
  "type": "object",
  "properties": {
    "polls": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "QalIoKWLTJehBJ8e1xRrbQ",
            "description": "Meeting Poll ID"
          },
          "title": {
            "type": "string",
            "example": "Learn something new",
            "description": "Title for the Poll"
          },
          "status": {
            "enum": [
              "notstart",
              "started",
              "ended",
              "sharing"
            ],
            "type": "string",
            "example": "notstart",
            "extensions": {
              "x-enum-descriptions": [
                "Poll not start",
                "Poll started",
                "Poll ended",
                "Poll is sharing"
              ]
            },
            "description": "Status of the Meeting Poll:  \n `notstart` - Poll not started  \n `started` - Poll started  \n `ended` - Poll ended  \n `sharing` - Sharing poll results"
          },
          "anonymous": {
            "type": "boolean",
            "example": true,
            "description": "Whether to allow meeting participants to answer poll questions anonymously: \n* `true` &mdash; Anonymous polls enabled. \n* `false` &mdash; Participants cannot answer poll questions anonymously."
          },
          "poll_type": {
            "enum": [
              1,
              2,
              3
            ],
            "type": "integer",
            "example": 2,
            "description": "The type of poll: \n* `1` &mdash; Poll. \n* `2` &mdash; Advanced Poll. This feature must be enabled in your Zoom account. \n* `3` &mdash; Quiz. This feature must be enabled in your Zoom account."
          },
          "questions": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string",
                  "example": "How useful was this meeting?",
                  "description": "The poll question's title. For `fill_in_the_blank` polls, this field is the poll's question."
                },
                "type": {
                  "enum": [
                    "single",
                    "multiple",
                    "matching",
                    "rank_order",
                    "short_answer",
                    "long_answer",
                    "fill_in_the_blank",
                    "rating_scale"
                  ],
                  "type": "string",
                  "example": "single",
                  "extensions": {
                    "x-enum-descriptions": [
                      "Single choice",
                      "Multiple choice",
                      "Matching",
                      "Rank order",
                      "Short answer",
                      "Long answer",
                      "Fill in the blank",
                      "Rating scale"
                    ]
                  },
                  "description": "The poll's question and answer type: \n* `single` &mdash; Single choice. \n* `multiple` &mdash; Multiple choice. \n* `matching` &mdash; Matching. \n* `rank_order` &mdash; Rank order. \n* `short_answer` &mdash; Short answer. \n* `long_answer` &mdash; Long answer. \n* `fill_in_the_blank` &mdash; Fill in the blank. \n* `rating_scale` &mdash; Rating scale."
                },
                "answers": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "example": "Extremely useful"
                  },
                  "description": "The poll question's available answers."
                },
                "prompts": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "prompt_question": {
                        "type": "string",
                        "example": "How are you?",
                        "description": "The question prompt's title."
                      },
                      "prompt_right_answers": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "example": "Good"
                        },
                        "description": "The question prompt's correct answers."
                      }
                    }
                  },
                  "description": "Information about the prompt questions. This object only returns for `matching` and `rank_order` polls."
                },
                "right_answers": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "example": "Good"
                  },
                  "description": "The poll question's correct answer(s)."
                },
                "case_sensitive": {
                  "type": "boolean",
                  "default": false,
                  "example": false,
                  "description": "Whether the correct answer is case sensitive. This field only returns for `fill_in_the_blank` polls: \n* `true` &mdash; The answer is case-sensitive. \n* `false` &mdash; The answer is not case-sensitive."
                },
                "answer_required": {
                  "type": "boolean",
                  "example": false,
                  "description": "Whether participants must answer the question: \n* `true` &mdash; The participant must answer the question. \n* `false` &mdash; The participant does not need to answer the question."
                },
                "rating_max_label": {
                  "type": "string",
                  "example": "Extremely Likely",
                  "description": "The high score label used for the `rating_max_value` field. This field only returns for `rating_scale` polls."
                },
                "rating_max_value": {
                  "type": "integer",
                  "example": 4,
                  "maximum": 10,
                  "description": "The rating scale's maximum value. This field only returns for `rating_scale` polls."
                },
                "rating_min_label": {
                  "type": "string",
                  "example": "Not likely",
                  "description": "The low score label used for the `rating_min_value` field. This field only returns for `rating_scale` polls."
                },
                "rating_min_value": {
                  "type": "integer",
                  "example": 0,
                  "description": "The rating scale's minimum value. This field only returns for `rating_scale` polls."
                },
                "show_as_dropdown": {
                  "type": "boolean",
                  "example": false,
                  "description": "Whether to display the radio selection as a drop-down box: \n* `true` &mdash; Show as a drop-down box. \n* `false` &mdash; Do not show as a drop-down box."
                },
                "answer_max_character": {
                  "type": "integer",
                  "example": 200,
                  "description": "The allowed maximum number of characters. This field only returns for `short_answer` and `long_answer` polls."
                },
                "answer_min_character": {
                  "type": "integer",
                  "example": 1,
                  "description": "The allowed minimum number of characters. This field only returns for `short_answer` and `long_answer` polls."
                }
              }
            },
            "description": "Information about the poll's questions."
          }
        }
      }
    }
  }
}
object MeetingsCreateInviteLinksRequest
{
  "type": "object",
  "title": "Invite Links",
  "properties": {
    "ttl": {
      "type": "integer",
      "format": "int64",
      "default": 7200,
      "example": 1000,
      "maximum": 7776000,
      "minimum": 0,
      "description": "The invite link's expiration time, in seconds. \n\nThis value defaults to `7200`."
    },
    "attendees": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string",
            "example": "Jill Chill",
            "maxLength": 64,
            "description": "User display name."
          }
        }
      },
      "maxItems": 500,
      "minItems": 1,
      "description": "The attendees list."
    }
  },
  "description": "Invite Links"
}
object MeetingsCreateInviteLinksResponse
{
  "type": "object",
  "title": "Invite Links",
  "properties": {
    "attendees": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "example": "Jill Chill",
            "description": "The user's display name."
          },
          "join_url": {
            "type": "string",
            "example": "https://example.com/j/11111",
            "description": "The URL to join the meeting."
          }
        }
      },
      "description": "The attendee list."
    }
  },
  "description": "Invite links response."
}
object MeetingsCreateMeetingRequest
{
  "type": "object",
  "properties": {
    "type": {
      "enum": [
        1,
        2,
        3,
        8
      ],
      "type": "integer",
      "default": 2,
      "example": 2,
      "extensions": {
        "x-enum-descriptions": [
          "Instant meeting.",
          "Scheduled meeting.",
          "Recurring meeting with no fixed time.",
          "Recurring meeting with fixed time."
        ]
      },
      "description": "The type of meeting.\n* `1` - An instant meeting. \n* `2` - A scheduled meeting. \n* `3` - A recurring meeting with no fixed time. \n* `8` - A recurring meeting with fixed time."
    },
    "topic": {
      "type": "string",
      "example": "My Meeting",
      "maxLength": 200,
      "description": "The meeting's topic."
    },
    "agenda": {
      "type": "string",
      "example": "My Meeting",
      "maxLength": 2000,
      "description": "The meeting's agenda. This value has a maximum length of 2,000 characters."
    },
    "duration": {
      "type": "integer",
      "example": 60,
      "description": "The meeting's scheduled duration, in minutes. This field is only used for scheduled meetings (`2`)."
    },
    "password": {
      "type": "string",
      "example": "123456",
      "maxLength": 10,
      "description": "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. \n* 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. \n* If passcode requirements are enabled, use the [**Get user settings**](https://developers.zoom.us/docs/api-reference/zoom-api/methods#operation/userSettings) API or the [**Get account settings**](https://developers.zoom.us/docs/api-reference/zoom-api/ma#operation/accountSettings) API to get the requirements."
    },
    "settings": {
      "type": "object",
      "properties": {
        "audio": {
          "enum": [
            "both",
            "telephony",
            "voip",
            "thirdParty"
          ],
          "type": "string",
          "default": "both",
          "example": "telephony",
          "extensions": {
            "x-enum-descriptions": [
              "Telephony and VoIP.",
              "Telephony only.",
              "VoIP only.",
              "Third party audio conference."
            ]
          },
          "description": "How participants join the audio portion of the meeting.\n* `both` - Both telephony and VoIP. \n* `telephony` - Telephony only. \n* `voip` - VoIP only. \n* `thirdParty` - Third party audio conference."
        },
        "use_pmi": {
          "type": "boolean",
          "default": false,
          "example": false,
          "description": "Whether to use a [Personal Meeting ID (PMI)](https://developers.zoom.us/docs/api/rest/using-zoom-apis/#understanding-personal-meeting-id-pmi) instead of a generated meeting ID. This field is only used for scheduled meetings (`2`), instant meetings (`1`), or recurring meetings with no fixed time (`3`). This value defaults to `false`."
        },
        "jbh_time": {
          "enum": [
            0,
            5,
            10
          ],
          "type": "integer",
          "example": 0,
          "description": "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.\n\n* `0` - Allow the participant to join the meeting at anytime.\n* `5` - Allow the participant to join 5 minutes before the meeting's start time.\n* `10` - Allow the participant to join 10 minutes before the meeting's start time."
        },
        "resources": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "resource_id": {
                "type": "string",
                "example": "X4Hy02w3QUOdskKofgb9Jg",
                "description": "The resource ID."
              },
              "resource_type": {
                "enum": [
                  "whiteboard"
                ],
                "type": "string",
                "example": "whiteboard",
                "description": "The resource type."
              },
              "permission_level": {
                "enum": [
                  "editor",
                  "commenter",
                  "viewer"
                ],
                "type": "string",
                "default": "editor",
                "example": "editor",
                "description": "The permission levels for users to access the whiteboard. \n* `editor` - Users with link access can edit the board. \n* `commenter` - Users with link access can comment on the board. \n* `viewer` - Users with link access can view the board."
              }
            }
          },
          "description": "The meeting's resources."
        },
        "watermark": {
          "type": "boolean",
          "default": false,
          "example": false,
          "description": "Whether to add a watermark when viewing a shared screen."
        },
        "cn_meeting": {
          "type": "boolean",
          "default": false,
          "example": false,
          "deprecated": true,
          "description": "Whether to host the meeting in China (CN). This value defaults to `false`."
        },
        "focus_mode": {
          "type": "boolean",
          "example": true,
          "description": "Whether to enable the [**Focus Mode** feature](https://support.zoom.us/hc/en-us/articles/360061113751-Using-focus-mode) when the meeting starts."
        },
        "host_video": {
          "type": "boolean",
          "example": true,
          "description": "Whether to start meetings with the host video on."
        },
        "in_meeting": {
          "type": "boolean",
          "default": false,
          "example": false,
          "deprecated": true,
          "description": "Whether to host the meeting in India (IN). This value defaults to `false`."
        },
        "contact_name": {
          "type": "string",
          "example": "Jill Chill",
          "description": "The contact name for meeting registration."
        },
        "waiting_room": {
          "type": "boolean",
          "example": false,
          "description": "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."
        },
        "approval_type": {
          "enum": [
            0,
            1,
            2
          ],
          "type": "integer",
          "default": 2,
          "example": 2,
          "extensions": {
            "x-enum-descriptions": [
              "Automatically approve registration.",
              "Manually approve registration.",
              "No registration required."
            ]
          },
          "description": "Enable meeting registration approval.\n* `0` - Automatically approve registration.\n* `1` - Manually approve registration.\n* `2` - No registration required.\n\nThis value defaults to `2`."
        },
        "breakout_room": {
          "type": "object",
          "properties": {
            "rooms": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "example": "room1",
                    "description": "The breakout room's name."
                  },
                  "participants": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "example": "jchill@example.com"
                    },
                    "description": "The email addresses of the participants to assign to the breakout room."
                  }
                }
              },
              "description": "Information about the breakout rooms."
            },
            "enable": {
              "type": "boolean",
              "example": true,
              "description": "Whether to enable the [**Breakout Room pre-assign**](https://support.zoom.us/hc/en-us/articles/360032752671-Pre-assigning-participants-to-breakout-rooms) option."
            }
          },
          "description": "The [pre-assigned breakout rooms](https://support.zoom.us/hc/en-us/articles/360032752671-Pre-assigning-participants-to-breakout-rooms) settings."
        },
        "calendar_type": {
          "enum": [
            1,
            2
          ],
          "type": "integer",
          "example": 1,
          "extensions": {
            "x-enum-descriptions": [
              "Outlook",
              "Google Calendar"
            ]
          },
          "description": "Indicates the type of calendar integration used to schedule the meeting.\n* `1` - [Zoom Outlook add-in](https://support.zoom.us/hc/en-us/articles/360031592971-Getting-started-with-Outlook-plugin-and-add-in) \n* `2` - [Zoom for Google Workspace add-on](https://support.zoom.us/hc/en-us/articles/360020187492-Using-the-Zoom-for-Google-Workspace-add-on)\n\nWorks with the `private_meeting` field to determine whether to share details of meetings or not."
        },
        "contact_email": {
          "type": "string",
          "example": "jchill@example.com",
          "description": "The contact email address for meeting registration."
        },
        "auto_recording": {
          "enum": [
            "local",
            "cloud",
            "none"
          ],
          "type": "string",
          "default": "none",
          "example": "cloud",
          "extensions": {
            "x-enum-descriptions": [
              "Record the meeting locally.",
              "Record the meeting to the cloud.",
              "Auto-recording disabled."
            ]
          },
          "description": "The automatic recording settings. \n* `local` - Record the meeting locally. \n* `cloud` - Record the meeting to the cloud. \n* `none` - Auto-recording disabled.\n\nThis value defaults to `none`."
        },
        "encryption_type": {
          "enum": [
            "enhanced_encryption",
            "e2ee"
          ],
          "type": "string",
          "example": "enhanced_encryption",
          "description": "The type of [end-to-end (E2EE) encryption](https://support.zoom.us/hc/en-us/articles/360048660871) to use for the meeting. \n* `enhanced_encryption` - Enhanced encryption. Encryption is stored in the cloud when you enable this option. \n* `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**."
        },
        "mute_upon_entry": {
          "type": "boolean",
          "default": false,
          "example": false,
          "description": "Whether to mute participants upon entry."
        },
        "private_meeting": {
          "type": "boolean",
          "example": false,
          "description": "Whether to set the meeting as private."
        },
        "internal_meeting": {
          "type": "boolean",
          "default": false,
          "example": false,
          "description": "Whether to set the meeting as an internal meeting."
        },
        "join_before_host": {
          "type": "boolean",
          "default": false,
          "example": false,
          "description": "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`.\n\nIf the [**Waiting Room** feature](https://support.zoom.us/hc/en-us/articles/115000332726-Waiting-Room) is enabled, this setting is **disabled**."
        },
        "meeting_invitees": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "email": {
                "type": "string",
                "format": "email",
                "example": "jchill@example.com",
                "description": "The invitee's email address."
              }
            }
          },
          "description": "A list of the meeting's invitees."
        },
        "alternative_hosts": {
          "type": "string",
          "example": "jchill@example.com;thill@example.com",
          "description": "A semicolon-separated list of the meeting's alternative hosts' email addresses or IDs."
        },
        "participant_video": {
          "type": "boolean",
          "example": false,
          "description": "Whether to start meetings with the participant video on."
        },
        "registration_type": {
          "enum": [
            1,
            2,
            3
          ],
          "type": "integer",
          "default": 1,
          "example": 1,
          "extensions": {
            "x-enum-descriptions": [
              "Attendees register once and can attend any meeting occurrence.",
              "Attendees must register for each meeting occurrence.",
              "Attendees register once and can select one or more meeting occurrences to attend."
            ]
          },
          "description": "The meeting's registration type. \n* `1` - Attendees register once and can attend any meeting occurrence. \n* `2` - Attendees must register for each meeting occurrence. \n* `3` - Attendees register once and can select one or more meeting occurrences to attend.\n\nThis field is only for recurring meetings with fixed times (`8`). This value defaults to `1`."
        },
        "show_share_button": {
          "type": "boolean",
          "example": true,
          "description": "Whether to include social media sharing buttons on the meeting's registration page. This setting is only applied to meetings with registration enabled."
        },
        "close_registration": {
          "type": "boolean",
          "default": false,
          "example": false,
          "description": "Whether to close registration after the event date. This value defaults to `false`."
        },
        "email_notification": {
          "type": "boolean",
          "default": true,
          "example": true,
          "description": "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`."
        },
        "audio_conference_info": {
          "type": "string",
          "example": "test",
          "maxLength": 2048,
          "description": "Third party audio conference info."
        },
        "authentication_option": {
          "type": "string",
          "example": "signIn_D8cJuqWVQ623CI4Q8yQK0Q",
          "description": "If the `meeting_authentication` value is `true`, the type of authentication required for users to join a meeting.\n\nTo get this value, use the `authentication_options` array's `id` value in the [**Get user settings**](https://developers.zoom.us/docs/api-reference/zoom-api/methods#operation/userSettings) API response."
        },
        "host_save_video_order": {
          "type": "boolean",
          "example": true,
          "description": "Whether the **Allow host to save video order** feature is enabled."
        },
        "allow_multiple_devices": {
          "type": "boolean",
          "example": true,
          "description": "Whether to allow attendees to join a meeting from multiple devices. This setting is only applied to meetings with registration enabled."
        },
        "authentication_domains": {
          "type": "string",
          "example": "example.com",
          "description": "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."
        },
        "meeting_authentication": {
          "type": "boolean",
          "example": true,
          "description": "If true, only [authenticated](https://support.zoom.us/hc/en-us/articles/360037117472-Authentication-Profiles-for-Meetings-and-Webinars) users can join the meeting."
        },
        "continuous_meeting_chat": {
          "type": "object",
          "properties": {
            "enable": {
              "type": "boolean",
              "example": true,
              "description": "Whether to enable the **Enable continuous meeting chat** setting."
            },
            "auto_add_invited_external_users": {
              "type": "boolean",
              "example": true,
              "description": "Whether to enable the **Automatically add invited external users** setting."
            }
          },
          "description": "Information about the **Enable continuous meeting chat** feature."
        },
        "language_interpretation": {
          "type": "object",
          "properties": {
            "enable": {
              "type": "boolean",
              "example": true,
              "description": "Whether to enable [language interpretation](https://support.zoom.us/hc/en-us/articles/360034919791-Language-interpretation-in-meetings-and-webinars) for the meeting."
            },
            "interpreters": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "email": {
                    "type": "string",
                    "format": "email",
                    "example": "interpreter@example.com",
                    "description": "The interpreter's email address."
                  },
                  "languages": {
                    "type": "string",
                    "example": "US,FR",
                    "description": "A comma-separated list of the interpreter's languages. The string must contain two [country IDs](https://developers.zoom.us/docs/api/rest/other-references/abbreviation-lists/#countries). \n\nFor example, if the interpreter will translate from English to Chinese, then this value will be `US,CN`."
                  }
                }
              },
              "description": "Information about the meeting's language interpreters."
            }
          },
          "description": "The meeting's [language interpretation settings](https://support.zoom.us/hc/en-us/articles/360034919791-Language-interpretation-in-meetings-and-webinars). Make sure to add the language in the web portal in order to use it in the API. See link for details. \n\n**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."
        },
        "push_change_to_calendar": {
          "type": "boolean",
          "default": false,
          "example": false,
          "description": "Whether to push meeting changes to the calendar. \n\n 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.\n* `true` - Push meeting changes to the calendar.\n* `false` - Do not push meeting changes to the calendar."
        },
        "authentication_exception": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "example": "Jill Chill",
                "description": "The participant's name."
              },
              "email": {
                "type": "string",
                "format": "email",
                "example": "jchill@example.com",
                "description": "The participant's email address."
              }
            }
          },
          "description": "A list of participants that can bypass meeting authentication. These participants will receive a unique meeting invite."
        },
        "global_dial_in_countries": {
          "type": "array",
          "items": {
            "type": "string",
            "example": "US"
          },
          "description": "A list of available global dial-in countries."
        },
        "auto_start_meeting_summary": {
          "type": "boolean",
          "default": false,
          "example": false,
          "description": "Whether to automatically start a meeting summary."
        },
        "participant_focused_meeting": {
          "type": "boolean",
          "default": false,
          "example": false,
          "description": "Whether to set the meeting as a participant focused meeting."
        },
        "sign_language_interpretation": {
          "type": "object",
          "properties": {
            "enable": {
              "type": "boolean",
              "example": true,
              "description": "Whether to enable [sign language interpretation](https://support.zoom.us/hc/en-us/articles/9644962487309-Using-sign-language-interpretation-in-a-meeting-or-webinar) for the meeting."
            },
            "interpreters": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "email": {
                    "type": "string",
                    "format": "email",
                    "example": "interpreter@example.com",
                    "description": "The interpreter's email address."
                  },
                  "sign_language": {
                    "type": "string",
                    "example": "American",
                    "description": "The interpreter's sign language. \n\n 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."
                  }
                }
              },
              "maximum": 20,
              "description": "Information about the meeting's sign language interpreters."
            }
          },
          "description": "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. \n\n**Note:** If this feature is not enabled on the host's account, this setting will **not** be applied to the meeting."
        },
        "alternative_host_update_polls": {
          "type": "boolean",
          "example": true,
          "description": "Whether the **Allow alternative hosts to add or edit polls** feature is enabled. This requires Zoom version 5.8.0 or higher."
        },
        "additional_data_center_regions": {
          "type": "array",
          "items": {
            "type": "string",
            "example": "TY"
          },
          "description": "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](https://developers.zoom.us/docs/api/rest/other-references/abbreviation-lists/#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).\n\nFor 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.\n\nTo include `India` and `Japan` as additional data centers, use the `[IN, TY]` value for this field."
        },
        "registrants_confirmation_email": {
          "type": "boolean",
          "example": true,
          "description": "Whether to send registrants an email confirmation. \n* `true` - Send a confirmation email. \n* `false` - Do not send a confirmation email."
        },
        "registrants_email_notification": {
          "type": "boolean",
          "example": true,
          "description": "Whether to send registrants email notifications about their registration approval, cancellation, or rejection.\n\n* `true` - Send an email notification.\n* `false` - Do not send an email notification.\n\n Set this value to `true` to also use the `registrants_confirmation_email` parameter."
        },
        "auto_start_ai_companion_questions": {
          "type": "boolean",
          "default": false,
          "example": false,
          "description": "Whether to automatically start AI Companion questions."
        },
        "alternative_hosts_email_notification": {
          "type": "boolean",
          "default": true,
          "example": true,
          "description": "Whether to send email notifications to alternative hosts. This value defaults to `true`."
        },
        "approved_or_denied_countries_or_regions": {
          "type": "object",
          "properties": {
            "enable": {
              "type": "boolean",
              "example": true,
              "description": "Whether to enable the [**Approve or block entry for users from specific countries/regions**](https://support.zoom.us/hc/en-us/articles/360060086231-Approve-or-block-entry-for-users-from-specific-countries-regions) setting."
            },
            "method": {
              "enum": [
                "approve",
                "deny"
              ],
              "type": "string",
              "example": "approve",
              "description": "Whether to allow or block users from specific countries or regions.\n* `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. \n* `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."
            },
            "denied_list": {
              "type": "array",
              "items": {
                "type": "string",
                "example": "CA"
              },
              "description": "The list of blocked countries or regions."
            },
            "approved_list": {
              "type": "array",
              "items": {
                "type": "string",
                "example": "CX"
              },
              "description": "The list of approved countries or regions."
            }
          },
          "description": "The list of approved or blocked users from specific countries or regions who can join the meeting."
        }
      },
      "description": "Information about the meeting's settings."
    },
    "timezone": {
      "type": "string",
      "example": "America/Los_Angeles",
      "description": "The timezone to assign to the `start_time` value. This field is only used for scheduled or recurring meetings with a fixed time.\n\nFor a list of supported timezones and their formats, see our [timezone list](https://developers.zoom.us/docs/api/rest/other-references/abbreviation-lists/#timezones)."
    },
    "recurrence": {
      "type": "object",
      "required": [
        "type"
      ],
      "properties": {
        "type": {
          "enum": [
            1,
            2,
            3
          ],
          "type": "integer",
          "example": 1,
          "extensions": {
            "x-enum-descriptions": [
              "Daily",
              "Weekly",
              "Monthly"
            ]
          },
          "description": "Recurrence meeting types.\n `1` - Daily.  \n `2` - Weekly.  \n `3` - Monthly."
        },
        "end_times": {
          "type": "integer",
          "default": 1,
          "example": 7,
          "maximum": 60,
          "description": "Select how many times the meeting should recur before it is canceled. If `end_times` is set to 0, it means there is no end time. The maximum number of recurring is 60. Cannot be used with `end_date_time`."
        },
        "monthly_day": {
          "type": "integer",
          "default": 1,
          "example": 1,
          "description": "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.\n\nFor 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, 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`."
        },
        "weekly_days": {
          "enum": [
            "1",
            "2",
            "3",
            "4",
            "5",
            "6",
            "7"
          ],
          "type": "string",
          "default": "1",
          "example": "1",
          "description": "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. \n  \n  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.  \n   \n  **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.\n\n   \n `1` - Sunday.   \n `2` - Monday.  \n `3` - Tuesday.  \n `4` -  Wednesday.  \n `5` -  Thursday.  \n `6` - Friday.  \n `7` - Saturday."
        },
        "monthly_week": {
          "enum": [
            -1,
            1,
            2,
            3,
            4
          ],
          "type": "integer",
          "example": 1,
          "extensions": {
            "x-enum-descriptions": [
              "Last week",
              "First week",
              "Second week",
              "Third week",
              "Fourth week"
            ]
          },
          "description": "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.   \n `-1` - Last week of the month.  \n `1` - First week of the month.  \n `2` - Second week of the month.  \n `3` - Third week of the month.  \n `4` - Fourth week of the month."
        },
        "end_date_time": {
          "type": "string",
          "format": "date-time",
          "example": "2022-04-02T15:59:00Z",
          "description": "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`."
        },
        "repeat_interval": {
          "type": "integer",
          "example": 1,
          "description": "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 value of the `type` parameter as `3`. \n\nFor 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.\n\n"
        },
        "monthly_week_day": {
          "enum": [
            1,
            2,
            3,
            4,
            5,
            6,
            7
          ],
          "type": "integer",
          "example": 1,
          "extensions": {
            "x-enum-descriptions": [
              "Sunday",
              "Monday",
              "Tuesday",
              "Wednesday",
              "Thursday",
              "Friday",
              "Saturday"
            ]
          },
          "description": "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. \n\n  \n `1` - Sunday.  \n `2` - Monday.  \n `3` - Tuesday.  \n `4` -  Wednesday.  \n `5` - Thursday.  \n `6` - Friday.  \n `7` - Saturday."
        }
      },
      "description": "Recurrence object. Use this object only for a meeting with type `8`, a recurring meeting with a fixed time. "
    },
    "start_time": {
      "type": "string",
      "format": "date-time",
      "example": "2022-03-25T07:32:55Z",
      "description": "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. \n* To set a meeting's start time in GMT, use the `yyyy-MM-ddTHH:mm:ssZ` date-time format. For example, `2020-03-31T12:02:00Z`. \n* 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](https://developers.zoom.us/docs/api/rest/other-references/abbreviation-lists/#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.\n**Note:** If no `start_time` is set for a scheduled meeting, the `start_time` is set at the current time and the meeting type changes to an instant meeting, which expires after 30 days."
    },
    "template_id": {
      "type": "string",
      "example": "Dv4YdINdTk+Z5RToadh5ug==",
      "description": "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**](https://developers.zoom.us/docs/api-reference/zoom-api/methods#operation/listMeetingTemplates) API. \n* At this time, this field **only** accepts account admin meeting template IDs. \n* To enable the account admin meeting templates feature, [contact Zoom support](https://support.zoom.us/hc/en-us)."
    },
    "pre_schedule": {
      "type": "boolean",
      "default": false,
      "example": false,
      "description": "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). \n* `true` - Create a prescheduled meeting. \n* `false` - Create a regular meeting."
    },
    "schedule_for": {
      "type": "string",
      "example": "jchill@example.com",
      "description": "The email address or user ID of the user to schedule a meeting for."
    },
    "tracking_fields": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "field"
        ],
        "properties": {
          "field": {
            "type": "string",
            "example": "field1",
            "description": "The tracking field's label."
          },
          "value": {
            "type": "string",
            "example": "value1",
            "description": "The tracking field's value."
          }
        }
      },
      "description": "Information about the meeting's tracking fields."
    },
    "default_password": {
      "type": "boolean",
      "default": false,
      "example": false,
      "description": "Whether to generate a default passcode using the user's settings. This value defaults to `false`. \n\nIf this value is `true` and the user has the PMI setting enabled with a passcode, then the user's meetings will use the PMI passcode. It will **not** use a default passcode."
    }
  },
  "description": "The base meeting object."
}
object MeetingsCreateMeetingResponse
{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "format": "int64",
      "example": 92674392836,
      "description": "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."
    },
    "pmi": {
      "type": "string",
      "example": "97891943927",
      "description": "[Personal meeting ID (PMI)](https://developers.zoom.us/docs/api/rest/using-zoom-apis/#understanding-personal-meeting-id-pmi). Only used for scheduled meetings and recurring meetings with no fixed time."
    },
    "type": {
      "enum": [
        1,
        2,
        3,
        8
      ],
      "type": "integer",
      "default": 2,
      "example": 2,
      "extensions": {
        "x-enum-descriptions": [
          "Instant Meeting",
          "Scheduled Meeting",
          "Recurring Meeting with no fixed time",
          "Recurring Meeting with fixed time"
        ]
      },
      "description": "Meeting type."
    },
    "topic": {
      "type": "string",
      "example": "My Meeting",
      "maxLength": 200,
      "description": "Meeting topic."
    },
    "agenda": {
      "type": "string",
      "example": "My Meeting",
      "description": "Agenda"
    },
    "duration": {
      "type": "integer",
      "example": 60,
      "description": "The meeting duration."
    },
    "join_url": {
      "type": "string",
      "example": "https://example.com/j/11111",
      "description": "URL for participants to join the meeting. This URL should only be shared with users that you would like to invite for the meeting."
    },
    "password": {
      "type": "string",
      "example": "123456",
      "description": "The meeting passcode. This passcode may only contain these characters: `[a-z A-Z 0-9 @ - _ * !]`\n\nIf **Require a passcode when scheduling new meetings** 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 in the response even if it is not provided in the API request. \n\n\n"
    },
    "settings": {
      "type": "object",
      "properties": {
        "audio": {
          "enum": [
            "both",
            "telephony",
            "voip",
            "thirdParty"
          ],
          "type": "string",
          "default": "both",
          "example": "telephony",
          "extensions": {
            "x-enum-descriptions": [
              "Both Telephony and VoIP",
              "Telephony only",
              "VoIP only",
              "Third party audio conference"
            ]
          },
          "description": "Determine how participants can join the audio portion of the meeting.  \n `both` - Both Telephony and VoIP.  \n `telephony` - Telephony only.  \n `voip` - VoIP only.  \n `thirdParty` - Third party audio conference."
        },
        "use_pmi": {
          "type": "boolean",
          "default": false,
          "example": false,
          "description": "Use a [personal meeting ID (PMI)](https://developers.zoom.us/docs/api/rest/using-zoom-apis/#understanding-personal-meeting-id-pmi). Only used for scheduled meetings and recurring meetings with no fixed time."
        },
        "jbh_time": {
          "enum": [
            0,
            5,
            10
          ],
          "type": "integer",
          "example": 0,
          "description": "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.\n\n*  `0` - Allow participant to join anytime.\n*  `5`- Allow participant to join 5 minutes before meeting start time.\n * `10` - Allow participant to join 10 minutes before meeting start time."
        },
        "resources": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "resource_id": {
                "type": "string",
                "example": "X4Hy02w3QUOdskKofgb9Jg",
                "description": "The resource ID."
              },
              "resource_type": {
                "enum": [
                  "whiteboard"
                ],
                "type": "string",
                "example": "whiteboard",
                "description": "The resource type."
              },
              "permission_level": {
                "enum": [
                  "editor",
                  "commenter",
                  "viewer"
                ],
                "type": "string",
                "default": "editor",
                "example": "editor",
                "description": "The permission levels for users to access the whiteboard. \n* `editor` - Users with link access can edit the board. \n* `commenter` - Users with link access can comment on the board. \n* `viewer` - Users with link access can view the board."
              }
            }
          },
          "description": "The meeting's resources."
        },
        "watermark": {
          "type": "boolean",
          "default": false,
          "example": false,
          "description": "Add a watermark when viewing a shared screen."
        },
        "cn_meeting": {
          "type": "boolean",
          "default": false,
          "example": false,
          "deprecated": true,
          "description": "Host meeting in China."
        },
        "focus_mode": {
          "type": "boolean",
          "example": true,
          "description": "Whether the [**Focus Mode** feature](https://support.zoom.us/hc/en-us/articles/360061113751-Using-focus-mode) is enabled when the meeting starts."
        },
        "host_video": {
          "type": "boolean",
          "example": true,
          "description": "Start video when the host joins the meeting."
        },
        "in_meeting": {
          "type": "boolean",
          "default": false,
          "example": false,
          "deprecated": true,
          "description": "Host meeting in India."
        },
        "custom_keys": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "key": {
                "type": "string",
                "example": "key1",
                "maxLength": 64,
                "description": "Custom key associated with the user."
              },
              "value": {
                "type": "string",
                "example": "value1",
                "maxLength": 256,
                "description": "Value of the custom key associated with the user."
              }
            }
          },
          "maxItems": 10,
          "description": "Custom keys and values assigned to the meeting."
        },
        "contact_name": {
          "type": "string",
          "example": "Jill Chill",
          "description": "Contact name for registration"
        },
        "waiting_room": {
          "type": "boolean",
          "default": false,
          "example": false,
          "description": "Enable the waiting room."
        },
        "approval_type": {
          "enum": [
            0,
            1,
            2
          ],
          "type": "integer",
          "default": 2,
          "example": 0,
          "extensions": {
            "x-enum-descriptions": [
              "Automatically Approve",
              "Manually Approve",
              "No Registration Required"
            ]
          },
          "description": "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.**   \n   \n \n\n`0` - Automatically approve.  \n `1` - Manually approve.  \n `2` - No registration required."
        },
        "breakout_room": {
          "type": "object",
          "properties": {
            "rooms": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "example": "room1",
                    "description": "The breakout room's name."
                  },
                  "participants": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "example": "jchill@example.com"
                    },
                    "description": "Email addresses of the participants who are to be assigned to the breakout room."
                  }
                }
              },
              "description": "Create a room or rooms."
            },
            "enable": {
              "type": "boolean",
              "example": true,
              "description": "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."
            }
          },
          "description": "Setting to [pre-assign breakout rooms](https://support.zoom.us/hc/en-us/articles/360032752671-Pre-assigning-participants-to-breakout-rooms#h_36f71353-4190-48a2-b999-ca129861c1f4)."
        },
        "calendar_type": {
          "enum": [
            1,
            2
          ],
          "type": "integer",
          "example": 1,
          "extensions": {
            "x-enum-descriptions": [
              "Outlook",
              "Google Calendar"
            ]
          },
          "description": "The type of calendar integration used to schedule the meeting. \n* `1` - [Zoom Outlook add-in](https://support.zoom.us/hc/en-us/articles/360031592971-Getting-started-with-Outlook-plugin-and-add-in) \n* `2` - [Zoom for Google Workspace add-on](https://support.zoom.us/hc/en-us/articles/360020187492-Using-the-Zoom-for-Google-Workspace-add-on)\n\nWorks with the `private_meeting` field to determine whether to share details of meetings or not."
        },
        "contact_email": {
          "type": "string",
          "example": "jchill@example.com",
          "description": "Contact email for registration"
        },
        "enforce_login": {
          "type": "boolean",
          "example": true,
          "deprecated": true,
          "description": "Only signed in users can join this meeting.\n\n**This field is deprecated and will not be supported in the future.**    \n   \n 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."
        },
        "auto_recording": {
          "enum": [
            "local",
            "cloud",
            "none"
          ],
          "type": "string",
          "default": "none",
          "example": "cloud",
          "extensions": {
            "x-enum-descriptions": [
              "Record to local device",
              "Record to cloud",
              "No Recording"
            ]
          },
          "description": "Automatic recording.\n `local` - Record on local.  \n `cloud` -  Record on cloud.  \n `none` - Disabled."
        },
        "encryption_type": {
          "enum": [
            "enhanced_encryption",
            "e2ee"
          ],
          "type": "string",
          "example": "enhanced_encryption",
          "description": "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**.\n \n`enhanced_encryption` - Enhanced encryption. Encryption is stored in the cloud if you enable this option.   \n \n\n`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."
        },
        "mute_upon_entry": {
          "type": "boolean",
          "default": false,
          "example": false,
          "description": "Mute participants upon entry."
        },
        "private_meeting": {
          "type": "boolean",
          "example": false,
          "description": "Whether the meeting is set as private."
        },
        "internal_meeting": {
          "type": "boolean",
          "default": false,
          "example": false,
          "description": "Whether to set the meeting as an internal meeting."
        },
        "join_before_host": {
          "type": "boolean",
          "default": false,
          "example": true,
          "description": "Allow participants to join the meeting before the host starts the meeting. Only used for scheduled or recurring meetings."
        },
        "alternative_hosts": {
          "type": "string",
          "example": "jchill@example.com;thill@example.com",
          "description": "A semicolon-separated list of the meeting's alternative hosts' email addresses or IDs."
        },
        "participant_video": {
          "type": "boolean",
          "example": false,
          "description": "Start video when participants join the meeting."
        },
        "registration_type": {
          "enum": [
            1,
            2,
            3
          ],
          "type": "integer",
          "default": 1,
          "example": 1,
          "extensions": {
            "x-enum-descriptions": [
              "Attendees register once and can attend any of the occurrences",
              "Attendees need to register for each occurrence to attend",
              "Attendees register once and can choose one or more occurrences to attend"
            ]
          },
          "description": "Registration type. Used for recurring meeting with fixed time only. \n `1` - Attendees register once and can attend any of the occurrences.  \n `2` - Attendees need to register for each occurrence to attend.  \n `3` - Attendees register once and can choose one or more occurrences to attend."
        },
        "show_share_button": {
          "type": "boolean",
          "example": true,
          "description": "Show social share buttons on the meeting registration page.\nThis setting only works for meetings that require [registration](https://support.zoom.us/hc/en-us/articles/211579443-Setting-up-registration-for-a-meeting)."
        },
        "close_registration": {
          "type": "boolean",
          "default": false,
          "example": false,
          "description": "Close registration after event date."
        },
        "email_notification": {
          "type": "boolean",
          "default": true,
          "example": true,
          "description": "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`."
        },
        "authentication_name": {
          "type": "string",
          "example": "Sign in to Zoom",
          "description": "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)."
        },
        "audio_conference_info": {
          "type": "string",
          "example": "test",
          "maxLength": 2048,
          "description": "Third party audio conference info."
        },
        "authentication_option": {
          "type": "string",
          "example": "signIn_D8cJuqWVQ623CI4Q8yQK0Q",
          "description": "Meeting authentication option ID."
        },
        "enforce_login_domains": {
          "type": "string",
          "example": "example.com",
          "deprecated": true,
          "description": "Only signed in users with specified domains can join meetings.\n\n**This field is deprecated and will not be supported in the future.**    \n   \n 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."
        },
        "host_save_video_order": {
          "type": "boolean",
          "example": true,
          "description": "Whether the **Allow host to save video order** feature is enabled."
        },
        "allow_multiple_devices": {
          "type": "boolean",
          "example": true,
          "description": "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)."
        },
        "authentication_domains": {
          "type": "string",
          "example": "example.com",
          "description": "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."
        },
        "global_dial_in_numbers": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "city": {
                "type": "string",
                "example": "New York",
                "description": "City of the number, such as Chicago."
              },
              "type": {
                "enum": [
                  "toll",
                  "tollfree"
                ],
                "type": "string",
                "example": "toll",
                "description": "Type of number."
              },
              "number": {
                "type": "string",
                "example": "+1 1000200200",
                "description": "A phone number, such as +1 2332357613."
              },
              "country": {
                "type": "string",
                "example": "US",
                "description": "The country code, such as BR."
              },
              "country_name": {
                "type": "string",
                "example": "US",
                "description": "Full name of country, such as Brazil."
              }
            }
          },
          "description": "Global dial-in countries or regions."
        },
        "meeting_authentication": {
          "type": "boolean",
          "example": true,
          "description": "`true` - Only authenticated users can join meetings."
        },
        "continuous_meeting_chat": {
          "type": "object",
          "properties": {
            "enable": {
              "type": "boolean",
              "example": true,
              "description": "Whether to enable the **Enable continuous meeting chat** setting."
            },
            "channel_id": {
              "type": "string",
              "example": "cabc1234567defghijkl01234",
              "description": "The channel's ID."
            },
            "auto_add_invited_external_users": {
              "type": "boolean",
              "example": true,
              "description": "Whether to enable the **Automatically add invited external users** setting."
            }
          },
          "description": "Information about the **Enable continuous meeting chat** feature."
        },
        "language_interpretation": {
          "type": "object",
          "properties": {
            "enable": {
              "type": "boolean",
              "example": true,
              "description": "Whether to enable [language interpretation](https://support.zoom.us/hc/en-us/articles/360034919791-Language-interpretation-in-meetings-and-webinars) for the meeting."
            },
            "interpreters": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "email": {
                    "type": "string",
                    "format": "email",
                    "example": "interpreter@example.com",
                    "description": "The interpreter's email address."
                  },
                  "languages": {
                    "type": "string",
                    "example": "US,FR",
                    "description": "A comma-separated list of the interpreter's languages. The string must contain two [country IDs](https://developers.zoom.us/docs/api/rest/other-references/abbreviation-lists/#countries). \n\nFor example, if the interpreter will translate from English to Chinese, then this value will be `US,CN`."
                  }
                }
              },
              "description": "Information about the meeting's language interpreters."
            }
          },
          "description": "The meeting's [language interpretation settings](https://support.zoom.us/hc/en-us/articles/360034919791-Language-interpretation-in-meetings-and-webinars). Make sure to add the language in the web portal in order to use it in the API. See link for details. \n\n**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."
        },
        "push_change_to_calendar": {
          "type": "boolean",
          "default": false,
          "example": false,
          "description": "Whether to push meeting changes to the calendar. \n\n 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.\n* `true` - Push meeting changes to the calendar.\n* `false` - Do not push meeting changes to the calendar."
        },
        "authentication_exception": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "example": "Jill Chill",
                "description": "The participant's name."
              },
              "email": {
                "type": "string",
                "format": "email",
                "example": "jchill@example.com",
                "description": "The participant's email address."
              },
              "join_url": {
                "type": "string",
                "example": "https://example.com/s/11111",
                "description": "URL for participants to join the meeting."
              }
            }
          },
          "description": "The participants added here will receive unique meeting invite links and bypass authentication."
        },
        "global_dial_in_countries": {
          "type": "array",
          "items": {
            "type": "string",
            "example": "US"
          },
          "description": "List of global dial-in countries."
        },
        "auto_start_meeting_summary": {
          "type": "boolean",
          "default": false,
          "example": false,
          "description": "Whether to automatically start a meeting summary."
        },
        "participant_focused_meeting": {
          "type": "boolean",
          "default": false,
          "example": false,
          "description": "Whether to set the meeting as a participant focused meeting."
        },
        "sign_language_interpretation": {
          "type": "object",
          "properties": {
            "enable": {
              "type": "boolean",
              "example": true,
              "description": "Whether to enable [sign language interpretation](https://support.zoom.us/hc/en-us/articles/9644962487309-Using-sign-language-interpretation-in-a-meeting-or-webinar) for the meeting."
            },
            "interpreters": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "email": {
                    "type": "string",
                    "format": "email",
                    "example": "interpreter@example.com",
                    "description": "The interpreter's email address."
                  },
                  "sign_language": {
                    "type": "string",
                    "example": "American",
                    "description": "The interpreter's sign language. \n\n 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."
                  }
                }
              },
              "maximum": 20,
              "description": "Information about the meeting's sign language interpreters."
            }
          },
          "description": "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. \n\n**Note:** If this feature is not enabled on the host's account, this setting will **not** be applied to the meeting."
        },
        "alternative_host_update_polls": {
          "type": "boolean",
          "example": true,
          "description": "Whether the **Allow alternative hosts to add or edit polls** feature is enabled. This requires Zoom version 5.8.0 or higher."
        },
        "registrants_confirmation_email": {
          "type": "boolean",
          "example": true,
          "description": "Whether to send registrants an email confirmation.\n* `true` - Send a confirmation email.\n* `false` - Do not send a confirmation email."
        },
        "registrants_email_notification": {
          "type": "boolean",
          "example": true,
          "description": "Whether to send registrants email notifications about their registration approval, cancellation, or rejection.\n\n* `true` - Send an email notification.\n* `false` - Do not send an email notification.\n\n Set this value to `true` to also use the `registrants_confirmation_email` parameter."
        },
        "auto_start_ai_companion_questions": {
          "type": "boolean",
          "default": false,
          "example": false,
          "description": "Whether to automatically start AI Companion questions."
        },
        "alternative_hosts_email_notification": {
          "type": "boolean",
          "default": true,
          "example": true,
          "description": "Flag to determine whether to send email notifications to alternative hosts, default value is true."
        },
        "approved_or_denied_countries_or_regions": {
          "type": "object",
          "properties": {
            "enable": {
              "type": "boolean",
              "example": true,
              "description": "`true` - Setting enabled to either allow users or block users from specific regions to join your meetings.   \n \n\n`false` - Setting disabled."
            },
            "method": {
              "enum": [
                "approve",
                "deny"
              ],
              "type": "string",
              "example": "approve",
              "description": "Specify whether to allow users from specific regions to join this meeting; or block users from specific regions from joining this meeting.   \n   \n \n`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`.  \n   \n \n`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`"
            },
            "denied_list": {
              "type": "array",
              "items": {
                "type": "string",
                "example": "CA"
              },
              "description": "List of countries or regions from where participants can not join this meeting. "
            },
            "approved_list": {
              "type": "array",
              "items": {
                "type": "string",
                "example": "CX"
              },
              "description": "List of countries or regions from where participants can join this meeting. "
            }
          },
          "description": "Approve or block users from specific regions or countries from joining this meeting. \n"
        }
      },
      "description": "Meeting settings."
    },
    "timezone": {
      "type": "string",
      "example": "America/Los_Angeles",
      "description": "Timezone to format `start_time`."
    },
    "start_url": {
      "type": "string",
      "example": "https://example.com/s/11111",
      "description": "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."
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "example": "2022-03-25T07:29:29Z",
      "description": "The date and time when this meeting was created."
    },
    "host_email": {
      "type": "string",
      "format": "email",
      "example": "jchill@example.com",
      "description": "The meeting host's email address."
    },
    "recurrence": {
      "type": "object",
      "required": [
        "type"
      ],
      "properties": {
        "type": {
          "enum": [
            1,
            2,
            3
          ],
          "type": "integer",
          "example": 1,
          "extensions": {
            "x-enum-descriptions": [
              "Daily",
              "Weekly",
              "Monthly"
            ]
          },
          "description": "Recurrence meeting types.\n `1` - Daily.  \n `2` - Weekly.  \n `3` - Monthly."
        },
        "end_times": {
          "type": "integer",
          "default": 1,
          "example": 7,
          "maximum": 60,
          "description": "Select how many times the meeting should recur before it is canceled. If `end_times` is set to 0, it means there is no end time. The maximum number of recurring is 60. Cannot be used with `end_date_time`."
        },
        "monthly_day": {
          "type": "integer",
          "default": 1,
          "example": 1,
          "description": "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.\n\nFor 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`."
        },
        "weekly_days": {
          "enum": [
            "1",
            "2",
            "3",
            "4",
            "5",
            "6",
            "7"
          ],
          "type": "string",
          "default": "1",
          "example": "1",
          "description": "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.\n \n  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.  \n   \n  **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.\n\n   \n `1`  - Sunday.   \n `2` - Monday.  \n `3` - Tuesday.  \n `4` -  Wednesday.  \n `5` -  Thursday.  \n `6` - Friday.  \n `7` - Saturday."
        },
        "monthly_week": {
          "enum": [
            -1,
            1,
            2,
            3,
            4
          ],
          "type": "integer",
          "example": 1,
          "extensions": {
            "x-enum-descriptions": [
              "Last week",
              "First week",
              "Second week",
              "Third week",
              "Fourth week"
            ]
          },
          "description": "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.   \n `-1` - Last week of the month.  \n `1` - First week of the month.  \n `2` - Second week of the month.  \n `3` - Third week of the month.  \n `4` - Fourth week of the month."
        },
        "end_date_time": {
          "type": "string",
          "format": "date-time",
          "example": "2022-04-02T15:59:00Z",
          "description": "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`."
        },
        "repeat_interval": {
          "type": "integer",
          "example": 1,
          "description": "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`. \n\nFor 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.\n\n"
        },
        "monthly_week_day": {
          "enum": [
            1,
            2,
            3,
            4,
            5,
            6,
            7
          ],
          "type": "integer",
          "example": 1,
          "extensions": {
            "x-enum-descriptions": [
              "Sunday",
              "Monday",
              "Tuesday",
              "Wednesday",
              "Thursday",
              "Friday",
              "Saturday"
            ]
          },
          "description": "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. \n\n  \n `1` - Sunday.  \n `2` - Monday.  \n `3` - Tuesday.  \n `4` -  Wednesday.  \n `5` - Thursday.  \n `6` - Friday.  \n `7` - Saturday."
        }
      },
      "description": "Recurrence object. Use this object only for a meeting with type `8`, a recurring meeting with fixed time. "
    },
    "start_time": {
      "type": "string",
      "format": "date-time",
      "example": "2022-03-25T07:29:29Z",
      "description": "Meeting start date-time in UTC/GMT, such as `2020-03-31T12:02:00Z`."
    },
    "occurrences": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "status": {
            "enum": [
              "available",
              "deleted"
            ],
            "type": "string",
            "example": "available",
            "description": "Occurrence status. \n `available` - Available occurrence.  \n `deleted` -  Deleted occurrence."
          },
          "duration": {
            "type": "integer",
            "example": 60,
            "description": "Duration."
          },
          "start_time": {
            "type": "string",
            "format": "date-time",
            "example": "2022-03-25T07:46:00Z",
            "description": "Start time."
          },
          "occurrence_id": {
            "type": "string",
            "example": "1648194360000",
            "description": "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."
          }
        },
        "description": "Occurrence object. This object is only returned for recurring webinars."
      },
      "description": "Array of occurrence objects."
    },
    "assistant_id": {
      "type": "string",
      "example": "kFFvsJc-Q1OSxaJQLvaa_A",
      "description": "The ID of the user who scheduled this meeting on behalf of the host."
    },
    "pre_schedule": {
      "type": "boolean",
      "default": false,
      "example": false,
      "description": "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). \n* `true` - A GSuite prescheduled meeting. \n* `false` - A regular meeting."
    },
    "chat_join_url": {
      "type": "string",
      "example": "https://example.com/launch/jc/11111",
      "description": "The URL to join the chat."
    },
    "h323_password": {
      "type": "string",
      "example": "123456",
      "description": "H.323/SIP room system passcode"
    },
    "tracking_fields": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string",
            "example": "field1",
            "description": "The tracking field's label."
          },
          "value": {
            "type": "string",
            "example": "value1",
            "description": "The tracking field's value."
          },
          "visible": {
            "type": "boolean",
            "example": true,
            "description": "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.\n\n`true`: Tracking field is visible.   \n \n\n`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. "
          }
        }
      },
      "description": "Tracking fields."
    },
    "registration_url": {
      "type": "string",
      "example": "https://example.com/meeting/register/7ksAkRCoEpt1Jm0wa-E6lICLur9e7Lde5oW6",
      "description": "The URL that registrants can use to register for a meeting. This field is only returned for meetings that have enabled registration."
    }
  },
  "description": "Meeting object."
}
object MeetingsCreatePollRequest
{
  "type": "object",
  "title": "Meeting and Webinar Polling Object",
  "properties": {
    "title": {
      "type": "string",
      "example": "Learn something new",
      "maxLength": 64,
      "description": "The poll's title, up to 64 characters."
    },
    "anonymous": {
      "type": "boolean",
      "default": false,
      "example": true,
      "description": "Allow meeting participants to answer poll questions anonymously. \n\nThis value defaults to `false`."
    },
    "poll_type": {
      "enum": [
        1,
        2,
        3
      ],
      "type": "integer",
      "example": 2,
      "description": "The type of poll: \n* `1` &mdash; Poll. \n* `2` &mdash; Advanced Poll. This feature must be enabled in your Zoom account. \n* `3` &mdash; Quiz. This feature must be enabled in your Zoom account. \n\n This value defaults to `1`."
    },
    "questions": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "example": "How useful was this meeting?",
            "maxLength": 255,
            "description": "The poll question, up to 255 characters. \n\nFor `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."
          },
          "type": {
            "enum": [
              "single",
              "multiple",
              "matching",
              "rank_order",
              "short_answer",
              "long_answer",
              "fill_in_the_blank",
              "rating_scale"
            ],
            "type": "string",
            "example": "single",
            "extensions": {
              "x-enum-descriptions": [
                "Single choice",
                "Multiple choice",
                "Matching",
                "Rank order",
                "Short answer",
                "Long answer",
                "Fill in the blank",
                "Rating scale"
              ]
            },
            "description": "The poll's question and answer type: \n* `single` &mdash; Single choice. \n* `multiple` &mdash; Multiple choice. \n* `matching` &mdash; Matching. \n* `rank_order` &mdash; Rank order. \n* `short_answer` &mdash; Short answer. \n* `long_answer` &mdash; Long answer. \n* `fill_in_the_blank` &mdash; Fill in the blank. \n* `rating_scale` &mdash; Rating scale."
          },
          "answers": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "Extremely useful"
            },
            "minItems": 2,
            "description": "The poll question's available answers. This field requires a **minimum** of two answers. \n\n* For `single` and `multiple` polls, you can only provide a maximum of 10 answers. \n* For `matching` polls, you can only provide a maximum of 16 answers. \n* For `rank_order` polls, you can only provide a maximum of seven answers."
          },
          "prompts": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "prompt_question": {
                  "type": "string",
                  "example": "How are you?",
                  "description": "The question prompt's title."
                },
                "prompt_right_answers": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "example": "Good"
                  },
                  "description": "The question prompt's correct answers: \n* For `matching` polls, you must provide a minimum of two correct answers, up to a maximum of 10 correct answers. \n* For `rank_order` polls, you can only provide one correct answer."
                }
              }
            },
            "description": "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."
          },
          "right_answers": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "Good"
            },
            "minItems": 1,
            "description": "The poll question's correct answer(s). This field is **required** if the poll's `type` value is `3` (Quiz). \n\n For `single` and `matching` polls, this field only accepts one answer."
          },
          "case_sensitive": {
            "type": "boolean",
            "default": false,
            "example": false,
            "description": "Whether the correct answer is case sensitive. This field only applies to `fill_in_the_blank` polls: \n* `true` &mdash; The answer is case-sensitive. \n* `false` &mdash; The answer is not case-sensitive. \n\nThis value defaults to `false`."
          },
          "answer_required": {
            "type": "boolean",
            "default": false,
            "example": false,
            "description": "Whether participants must answer the question: \n* `true` &mdash; The participant must answer the question. \n* `false` &mdash; The participant does not need to answer the question. \n\n**Note:** \n* When the poll's `type` value is `1` (Poll), this value defaults to `true`. \n* When the poll's `type` value is the `2` (Advanced Poll) or `3` (Quiz) values, this value defaults to `false`."
          },
          "rating_max_label": {
            "type": "string",
            "example": "Extremely Likely",
            "description": "The high score label used for the `rating_max_value` field. \n\nThis field only applies to the `rating_scale` poll."
          },
          "rating_max_value": {
            "type": "integer",
            "example": 4,
            "maximum": 10,
            "description": "The rating scale's maximum value, up to a maximum value of 10. \n\nThis field only applies to the `rating_scale` poll."
          },
          "rating_min_label": {
            "type": "string",
            "example": "Not likely",
            "description": "The low score label used for the `rating_min_value` field. \n\nThis field only applies to the `rating_scale` poll."
          },
          "rating_min_value": {
            "type": "integer",
            "example": 0,
            "minimum": 0,
            "description": "The rating scale's minimum value. This value cannot be less than zero. \n\nThis field only applies to the `rating_scale` poll."
          },
          "show_as_dropdown": {
            "type": "boolean",
            "default": false,
            "example": false,
            "description": "Whether to display the radio selection as a drop-down box: \n* `true` &mdash; Show as a drop-down box. \n* `false` &mdash; Do not show as a drop-down box. \n\nThis value defaults to `false`."
          },
          "answer_max_character": {
            "type": "integer",
            "example": 200,
            "description": "The allowed maximum number of characters. This field only applies to `short_answer` and `long_answer` polls: \n* For `short_answer` polls, a maximum of 500 characters. \n* For `long_answer` polls, a maximum of 2,000 characters."
          },
          "answer_min_character": {
            "type": "integer",
            "example": 1,
            "minimum": 1,
            "description": "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."
          }
        }
      },
      "description": "Information about the poll's questions."
    }
  },
  "description": "Information about meeting and webinar polling."
}
object MeetingsCreatePollResponse
{
  "type": "object",
  "title": "Meeting and Webinar Polling Object",
  "properties": {
    "id": {
      "type": "string",
      "example": "QalIoKWLTJehBJ8e1xRrbQ",
      "description": "Meeting Poll ID"
    },
    "title": {
      "type": "string",
      "example": "Learn something new",
      "maxLength": 64,
      "description": "The poll's title, up to 64 characters."
    },
    "status": {
      "enum": [
        "notstart",
        "started",
        "ended",
        "sharing"
      ],
      "type": "string",
      "example": "notstart",
      "extensions": {
        "x-enum-descriptions": [
          "Poll not start",
          "Poll started",
          "Poll ended",
          "Poll is sharing"
        ]
      },
      "description": "Status of the Meeting Poll:  \n `notstart` - Poll not started  \n `started` - Poll started  \n `ended` - Poll ended  \n `sharing` - Sharing poll results"
    },
    "anonymous": {
      "type": "boolean",
      "default": false,
      "example": true,
      "description": "Allow meeting participants to answer poll questions anonymously. \n\nThis value defaults to `false`."
    },
    "poll_type": {
      "enum": [
        1,
        2,
        3
      ],
      "type": "integer",
      "example": 2,
      "description": "The type of poll: \n* `1` &mdash; Poll. \n* `2` &mdash; Advanced Poll. This feature must be enabled in your Zoom account. \n* `3` &mdash; Quiz. This feature must be enabled in your Zoom account. \n\n This value defaults to `1`."
    },
    "questions": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "example": "How useful was this meeting?",
            "maxLength": 255,
            "description": "The poll question, up to 255 characters. \n\nFor `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."
          },
          "type": {
            "enum": [
              "single",
              "multiple",
              "matching",
              "rank_order",
              "short_answer",
              "long_answer",
              "fill_in_the_blank",
              "rating_scale"
            ],
            "type": "string",
            "example": "single",
            "extensions": {
              "x-enum-descriptions": [
                "Single choice",
                "Multiple choice",
                "Matching",
                "Rank order",
                "Short answer",
                "Long answer",
                "Fill in the blank",
                "Rating scale"
              ]
            },
            "description": "The poll's question and answer type: \n* `single` &mdash; Single choice. \n* `multiple` &mdash; Multiple choice. \n* `matching` &mdash; Matching. \n* `rank_order` &mdash; Rank order. \n* `short_answer` &mdash; Short answer. \n* `long_answer` &mdash; Long answer. \n* `fill_in_the_blank` &mdash; Fill in the blank. \n* `rating_scale` &mdash; Rating scale."
          },
          "answers": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "Extremely useful"
            },
            "minItems": 2,
            "description": "The poll question's available answers. This field requires a **minimum** of two answers. \n\n* For `single` and `multiple` polls, you can only provide a maximum of 10 answers. \n* For `matching` polls, you can only provide a maximum of 16 answers. \n* For `rank_order` polls, you can only provide a maximum of seven answers."
          },
          "prompts": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "prompt_question": {
                  "type": "string",
                  "example": "How are you?",
                  "description": "The question prompt's title."
                },
                "prompt_right_answers": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "example": "Good"
                  },
                  "description": "The question prompt's correct answers: \n* For `matching` polls, you must provide a minimum of two correct answers, up to a maximum of 10 correct answers. \n* For `rank_order` polls, you can only provide one correct answer."
                }
              }
            },
            "description": "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."
          },
          "right_answers": {
            "type": "array",
            "items": {
              "type": "string",
              "example": "Good"
            },
            "minItems": 1,
            "description": "The poll question's correct answer(s). This field is **required** if the poll's `type` value is `3` (Quiz). \n\n For `single` and `matching` polls, this field only accepts one answer."
          },
          "case_sensitive": {
            "type": "boolean",
            "default": false,
            "example": false,
            "description": "Whether the correct answer is case sensitive. This field only applies to `fill_in_the_blank` polls: \n* `true` &mdash; The answer is case-sensitive. \n* `false` &mdash; The answer is not case-sensitive. \n\nThis value defaults to `false`."
          },
          "answer_required": {
            "type": "boolean",
            "default": false,
            "example": false,
            "description": "Whether participants must answer the question: \n* `true` &mdash; The participant must answer the question. \n* `false` &mdash; The participant does not need to answer the question. \n\n**Note:** \n* When the poll's `type` value is `1` (Poll), this value defaults to `true`. \n* When the poll's `type` value is the `2` (Advanced Poll) or `3` (Quiz) values, this value defaults to `false`."
          },
          "rating_max_label": {
            "type": "string",
            "example": "Extremely Likely",
            "description": "The high score label used for the `rating_max_value` field. \n\nThis field only applies to the `rating_scale` poll."
          },
          "rating_max_value": {
            "type": "integer",
            "example": 4,
            "maximum": 10,
            "description": "The rating scale's maximum value, up to a maximum value of 10. \n\nThis field only applies to the `rating_scale` poll."
          },
          "rating_min_label": {
            "type": "string",
            "example": "Not likely",
            "description": "The low score label used for the `rating_min_value` field. \n\nThis field only applies to the `rating_scale` poll."
          },
          "rating_min_value": {
            "type": "integer",
            "example": 0,
            "minimum": 0,
            "description": "The rating scale's minimum value. This value cannot be less than zero. \n\nThis field only applies to the `rating_scale` poll."
          },
          "show_as_dropdown": {
            "type": "boolean",
            "default": false,
            "example": false,
            "description": "Whether to display the radio selection as a drop-down box: \n* `true` &mdash; Show as a drop-down box. \n* `false` &mdash; Do not show as a drop-down box. \n\nThis value defaults to `false`."
          },
          "answer_max_character": {
            "type": "integer",
            "example": 200,
            "description": "The allowed maximum number of characters. This field only applies to `short_answer` and `long_answer` polls: \n* For `short_answer` polls, a maximum of 500 characters. \n* For `long_answer` polls, a maximum of 2,000 characters."
          },
          "answer_min_character": {
            "type": "integer",
            "example": 1,
            "minimum": 1,
            "description": "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."
          }
        }
      },
      "description": "Information about the poll's questions."
    }
  },
  "description": "Information about meeting and webinar polling."
}
object MeetingsCreateTemplateFromMeetingRequest
{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "example": "My Meeting Template",
      "description": "The template name."
    },
    "overwrite": {
      "type": "boolean",
      "default": false,
      "example": false,
      "description": "Overwrite an existing meeting template if the template is created from same existing meeting."
    },
    "meeting_id": {
      "type": "integer",
      "format": "int64",
      "example": 96172769962,
      "description": "The meeting ID aka the meeting number in long (int64) format."
    },
    "save_recurrence": {
      "type": "boolean",
      "default": false,
      "example": false,
      "description": "If the field is set to true, the recurrence meeting template will be saved as the scheduled meeting."
    }
  }
}
object MeetingsCreateTemplateFromMeetingResponse
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "example": "AdxbhxCzKgSiWAw",
      "description": "The template ID."
    },
    "name": {
      "type": "string",
      "example": "My Meeting Template",
      "description": "The template name."
    }
  }
}
object MeetingsGetDetails200Response
{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "format": "int64",
      "example": 5638296721,
      "description": "The [meeting ID](https://support.zoom.us/hc/en-us/articles/201362373-What-is-a-Meeting-ID)."
    },
    "dept": {
      "type": "string",
      "example": "Developers",
      "description": "The meeting host's department."
    },
    "type": {
      "enum": [
        0,
        1,
        2,
        3,
        4,
        7,
        8
      ],
      "type": "integer",
      "example": 1,
      "description": "The meeting type: \n* `0` &mdash; A prescheduled meeting. \n* `1` &mdash; An instant meeting. \n* `2` &mdash; A scheduled meeting. \n* `3` &mdash; A recurring meeting with no fixed time. \n* `4` &mdash; A [personal meeting room](https://support.zoom.us/hc/en-us/articles/201362843). \n* `7` &mdash; A [PAC (Personal Audio Conference)](https://support.zoom.us/hc/en-us/articles/205172455-Hosting-a-Personal-Audio-Conference-PAC-meeting) meeting. \n* `8` &mdash; A recurring meeting with a fixed time."
    },
    "uuid": {
      "type": "string",
      "example": "4444AAAiAAAAAiAiAiiAii==",
      "description": "The meeting's UUID. You **must** [double encode](https://marketplace.zoom.us/docs/api-reference/using-zoom-apis/#meeting-id-and-uuid) this value if the meeting UUID begins with a `/` character or contains the `//` character."
    },
    "topic": {
      "type": "string",
      "example": "My Meeting",
      "description": "The meeting's topic."
    },
    "source": {
      "type": "string",
      "example": "Zoom",
      "description": "Whether the meeting was created directly through Zoom or via an API request: \n* If the meeting was created via an OAuth app, this field returns the OAuth app's name. \n* If the meeting was created via JWT or the Zoom Web Portal, this returns the `Zoom` value."
    },
    "host_id": {
      "type": "string",
      "example": "x1yCzABCDEfg23HiJKl4mN",
      "description": "The host's ID."
    },
    "duration": {
      "type": "integer",
      "example": 60,
      "description": "The meeting's duration, in minutes."
    },
    "end_time": {
      "type": "string",
      "format": "date-time",
      "example": "2021-07-13T23:00:51Z",
      "description": "The meeting's end date and time."
    },
    "user_name": {
      "type": "string",
      "example": "Jill Chill",
      "description": "The user's display name."
    },
    "start_time": {
      "type": "string",
      "format": "date-time",
      "example": "2021-07-13T21:44:51Z",
      "description": "The meeting's start date and time."
    },
    "user_email": {
      "type": "string",
      "format": "email",
      "example": "jchill@example.com",
      "description": "The user's email address."
    },
    "total_minutes": {
      "type": "integer",
      "example": 55,
      "description": "The total number of minutes attended by the meeting's host and participants."
    },
    "participants_count": {
      "type": "integer",
      "example": 2,
      "description": "The number of meeting participants."
    }
  }
}
object MeetingsGetDetailsResponse
{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "format": "int64",
      "example": 97763643886,
      "description": "[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."
    },
    "pmi": {
      "type": "string",
      "example": "97891943927",
      "description": "[Personal meeting ID (PMI)](https://developers.zoom.us/docs/api/rest/using-zoom-apis/#understanding-personal-meeting-id-pmi). Only used for scheduled meetings and recurring meetings with no fixed time."
    },
    "type": {
      "enum": [
        1,
        2,
        3,
        8
      ],
      "type": "integer",
      "default": 2,
      "example": 2,
      "extensions": {
        "x-enum-descriptions": [
          "Instant Meeting",
          "Scheduled Meeting",
          "Recurring Meeting with no fixed time",
          "Recurring Meeting with fixed time"
        ]
      },
      "description": "Meeting types. \n `1` - Instant meeting.  \n `2` - Scheduled meeting.  \n `3` - Recurring meeting with no fixed time.  \n `4` - PMI Meeting  \n \n`8` - Recurring meeting with a fixed time."
    },
    "uuid": {
      "type": "string",
      "example": "aDYlohsHRtCd4ii1uC2+hA==",
      "description": "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**](https://developers.zoom.us/docs/api/rest/reference/zoom-api/methods#operation/pastMeetings) API. [Double encode](https://developers.zoom.us/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.\n"
    },
    "topic": {
      "type": "string",
      "example": "My Meeting",
      "description": "Meeting topic."
    },
    "agenda": {
      "type": "string",
      "example": "My Meeting",
      "maxLength": 2000,
      "description": "The meeting description."
    },
    "status": {
      "enum": [
        "waiting",
        "started"
      ],
      "type": "string",
      "example": "waiting",
      "description": "Meeting status"
    },
    "host_id": {
      "type": "string",
      "example": "30R7kT7bTIKSNUFEuH_Qlg",
      "description": "The ID of the user who is set as the meeting host."
    },
    "duration": {
      "type": "integer",
      "example": 60,
      "description": "The meeting duration."
    },
    "join_url": {
      "type": "string",
      "example": "https://example.com/j/11111",
      "description": "The URL for participants to join the meeting. This URL should only be shared with users invited to the meeting."
    },
    "password": {
      "type": "string",
      "example": "123456",
      "minimum": 8,
      "description": "Meeting passcode."
    },
    "settings": {
      "type": "object",
      "properties": {
        "audio": {
          "enum": [
            "both",
            "telephony",
            "voip",
            "thirdParty"
          ],
          "type": "string",
          "default": "both",
          "example": "telephony",
          "extensions": {
            "x-enum-descriptions": [
              "Both Telephony and VoIP",
              "Telephony only",
              "VoIP only",
              "Third party audio conference"
            ]
          },
          "description": "Determine how participants can join the audio portion of the meeting.  \n `both` - Both Telephony and VoIP.  \n `telephony` - Telephony only.  \n `voip` - VoIP only.  \n `thirdParty` - Third party audio conference."
        },
        "use_pmi": {
          "type": "boolean",
          "default": false,
          "example": false,
          "description": "Use a [personal meeting ID (PMI)](https://developers.zoom.us/docs/api/rest/using-zoom-apis/#understanding-personal-meeting-id-pmi). Only used for scheduled meetings and recurring meetings with no fixed time."
        },
        "jbh_time": {
          "enum": [
            0,
            5,
            10
          ],
          "type": "integer",
          "example": 0,
          "description": "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.\n\n*  `0` - Allow participant to join anytime.\n*  `5` - Allow participant to join 5 minutes before meeting start time.\n * `10` - Allow participant to join 10 minutes before meeting start time."
        },
        "resources": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "resource_id": {
                "type": "string",
                "example": "X4Hy02w3QUOdskKofgb9Jg",
                "description": "The resource ID."
              },
              "resource_type": {
                "enum": [
                  "whiteboard"
                ],
                "type": "string",
                "example": "whiteboard",
                "description": "The resource type."
              },
              "permission_level": {
                "enum": [
                  "editor",
                  "commenter",
                  "viewer"
                ],
                "type": "string",
                "default": "editor",
                "example": "editor",
                "description": "The permission levels for users to access the whiteboard. \n* `editor` - Users with link access can edit the board. \n* `commenter` - Users with link access can comment on the board. \n* `viewer` - Users with link access can view the board."
              }
            }
          },
          "description": "The meeting's resources."
        },
        "watermark": {
          "type": "boolean",
          "default": false,
          "example": false,
          "description": "Add watermark when viewing a shared screen."
        },
        "cn_meeting": {
          "type": "boolean",
          "default": false,
          "example": false,
          "deprecated": true,
          "description": "Host meeting in China."
        },
        "focus_mode": {
          "type": "boolean",
          "example": true,
          "description": "Whether the [**Focus Mode** feature](https://support.zoom.us/hc/en-us/articles/360061113751-Using-focus-mode) is enabled when the meeting starts."
        },
        "host_video": {
          "type": "boolean",
          "example": true,
          "description": "Start video when the host joins the meeting."
        },
        "in_meeting": {
          "type": "boolean",
          "default": false,
          "example": false,
          "deprecated": true,
          "description": "Host meeting in India."
        },
        "custom_keys": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "key": {
                "type": "string",
                "example": "key1",
                "maxLength": 64,
                "description": "Custom key associated with the user."
              },
              "value": {
                "type": "string",
                "example": "value1",
                "maxLength": 256,
                "description": "Value of the custom key associated with the user."
              }
            }
          },
          "maxItems": 10,
          "description": "Custom keys and values assigned to the meeting."
        },
        "contact_name": {
          "type": "string",
          "example": "Jill Chill",
          "description": "Contact name for registration"
        },
        "waiting_room": {
          "type": "boolean",
          "default": false,
          "example": false,
          "description": "Enable waiting room"
        },
        "approval_type": {
          "enum": [
            0,
            1,
            2
          ],
          "type": "integer",
          "default": 2,
          "example": 0,
          "extensions": {
            "x-enum-descriptions": [
              "Automatically Approve",
              "Manually Approve",
              "No Registration Required"
            ]
          },
          "description": "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.**   \n   \n \n\n`0` - Automatically approve.  \n `1` - Manually approve.  \n `2` - No registration required."
        },
        "breakout_room": {
          "type": "object",
          "properties": {
            "rooms": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "example": "room1",
                    "description": "The breakout room's name."
                  },
                  "participants": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "example": "jchill@example.com"
                    },
                    "description": "Email addresses of the participants who are to be assigned to the breakout room."
                  }
                }
              },
              "description": "Create room(s)."
            },
            "enable": {
              "type": "boolean",
              "example": true,
              "description": "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."
            }
          },
          "description": "Setting to [pre-assign breakout rooms](https://support.zoom.us/hc/en-us/articles/360032752671-Pre-assigning-participants-to-breakout-rooms#h_36f71353-4190-48a2-b999-ca129861c1f4)."
        },
        "calendar_type": {
          "enum": [
            1,
            2
          ],
          "type": "integer",
          "example": 1,
          "extensions": {
            "x-enum-descriptions": [
              "Outlook",
              "Google Calendar"
            ]
          },
          "description": "Indicates the type of calendar integration used to schedule the meeting. \n* `1` - [Zoom Outlook add-in](https://support.zoom.us/hc/en-us/articles/360031592971-Getting-started-with-Outlook-plugin-and-add-in) \n* `2` - [Zoom for Google Workspace add-on](https://support.zoom.us/hc/en-us/articles/360020187492-Using-the-Zoom-for-Google-Workspace-add-on)\n\nWorks with the `private_meeting` field to determine whether to share details of meetings or not."
        },
        "contact_email": {
          "type": "string",
          "example": "jchill@example.com",
          "description": "Contact email for registration"
        },
        "enforce_login": {
          "type": "boolean",
          "example": true,
          "deprecated": true,
          "description": "Only signed in users can join this meeting.\n\n**This field is deprecated and will not be supported in the future.**    \n   \n 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."
        },
        "auto_recording": {
          "enum": [
            "local",
            "cloud",
            "none"
          ],
          "type": "string",
          "default": "none",
          "example": "cloud",
          "extensions": {
            "x-enum-descriptions": [
              "Record to local device",
              "Record to cloud",
              "No Recording"
            ]
          },
          "description": "Automatic recording:  \n `local` - Record on local.  \n `cloud` -  Record on cloud.  \n `none` - Disabled."
        },
        "encryption_type": {
          "enum": [
            "enhanced_encryption",
            "e2ee"
          ],
          "type": "string",
          "example": "enhanced_encryption",
          "description": "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**. \n \n`enhanced_encryption` - Enhanced encryption. Encryption is stored in the cloud if you enable this option.   \n \n\n`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."
        },
        "mute_upon_entry": {
          "type": "boolean",
          "default": false,
          "example": false,
          "description": "Mute participants upon entry."
        },
        "private_meeting": {
          "type": "boolean",
          "example": false,
          "description": "Whether the meeting is set as private."
        },
        "internal_meeting": {
          "type": "boolean",
          "default": false,
          "example": false,
          "description": "Whether to set the meeting as an internal meeting."
        },
        "join_before_host": {
          "type": "boolean",
          "default": false,
          "example": true,
          "description": "Allow participants to join the meeting before the host starts the meeting. Only used for scheduled or recurring meetings."
        },
        "alternative_hosts": {
          "type": "string",
          "example": "jchill@example.com;thill@example.com",
          "description": "A semicolon-separated list of the meeting's alternative hosts' email addresses or IDs."
        },
        "participant_video": {
          "type": "boolean",
          "example": false,
          "description": "Start video when participants join the meeting."
        },
        "registration_type": {
          "enum": [
            1,
            2,
            3
          ],
          "type": "integer",
          "default": 1,
          "example": 1,
          "extensions": {
            "x-enum-descriptions": [
              "Attendees register once and can attend any of the occurrences",
              "Attendees need to register for each occurrence to attend",
              "Attendees register once and can choose one or more occurrences to attend"
            ]
          },
          "description": "Registration type. Used for recurring meeting with fixed time only. \n `1` Attendees register once and can attend any of the occurrences.  \n `2` Attendees need to register for each occurrence to attend.  \n `3` Attendees register once and can choose one or more occurrences to attend."
        },
        "show_share_button": {
          "type": "boolean",
          "example": true,
          "description": "Show social share buttons on the meeting registration page.\nThis setting only works for meetings that require [registration](https://support.zoom.us/hc/en-us/articles/211579443-Setting-up-registration-for-a-meeting)."
        },
        "close_registration": {
          "type": "boolean",
          "default": false,
          "example": false,
          "description": "Close registration after event date"
        },
        "email_notification": {
          "type": "boolean",
          "default": true,
          "example": true,
          "description": "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`."
        },
        "authentication_name": {
          "type": "string",
          "example": "Sign in to Zoom",
          "description": "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)."
        },
        "audio_conference_info": {
          "type": "string",
          "example": "test",
          "maxLength": 2048,
          "description": "Third party audio conference info."
        },
        "authentication_option": {
          "type": "string",
          "example": "signIn_D8cJuqWVQ623CI4Q8yQK0Q",
          "description": "Meeting authentication option id."
        },
        "enforce_login_domains": {
          "type": "string",
          "example": "example.com",
          "deprecated": true,
          "description": "Only signed in users with specified domains can join meetings.\n\n**This field is deprecated and will not be supported in the future.**    \n   \n 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."
        },
        "host_save_video_order": {
          "type": "boolean",
          "example": true,
          "description": "Whether the **Allow host to save video order** feature is enabled."
        },
        "allow_multiple_devices": {
          "type": "boolean",
          "example": true,
          "description": "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)."
        },
        "authentication_domains": {
          "type": "string",
          "example": "example.com",
          "description": "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."
        },
        "global_dial_in_numbers": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "city": {
                "type": "string",
                "example": "New York",
                "description": "City of the number, if any. For example, Chicago."
              },
              "type": {
                "enum": [
                  "toll",
                  "tollfree"
                ],
                "type": "string",
                "example": "toll",
                "description": "Type of number. "
              },
              "number": {
                "type": "string",
                "example": "+1 1000200200",
                "description": "Phone number. For example, +1 2332357613."
              },
              "country": {
                "type": "string",
                "example": "US",
                "description": "Country code. For example, BR."
              },
              "country_name": {
                "type": "string",
                "example": "US",
                "description": "Full name of country. For example, Brazil."
              }
            }
          },
          "description": "Global Dial-in Countries/Regions"
        },
        "meeting_authentication": {
          "type": "boolean",
          "example": true,
          "description": "`true` - Only authenticated users can join meetings."
        },
        "continuous_meeting_chat": {
          "type": "object",
          "properties": {
            "enable": {
              "type": "boolean",
              "example": true,
              "description": "Whether to enable the **Enable continuous meeting chat** setting."
            },
            "channel_id": {
              "type": "string",
              "example": "cabc1234567defghijkl01234",
              "description": "The channel's ID."
            },
            "auto_add_invited_external_users": {
              "type": "boolean",
              "example": true,
              "description": "Whether to enable the **Automatically add invited external users** setting."
            }
          },
          "description": "Information about the **Enable continuous meeting chat** feature."
        },
        "language_interpretation": {
          "type": "object",
          "properties": {
            "enable": {
              "type": "boolean",
              "example": true,
              "description": "Whether to enable [language interpretation](https://support.zoom.us/hc/en-us/articles/360034919791-Language-interpretation-in-meetings-and-webinars) for the meeting."
            },
            "interpreters": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "email": {
                    "type": "string",
                    "format": "email",
                    "example": "interpreter@example.com",
                    "description": "The interpreter's email address."
                  },
                  "languages": {
                    "type": "string",
                    "example": "US,FR",
                    "description": "A comma-separated list of the interpreter's languages. The string must contain two [country IDs](https://developers.zoom.us/docs/api/rest/other-references/abbreviation-lists/#countries). \n\nFor example, if the interpreter will translate from English to Chinese, then this value will be `US,CN`."
                  }
                }
              },
              "description": "Information about the meeting's language interpreters."
            }
          },
          "description": "The meeting's [language interpretation settings](https://support.zoom.us/hc/en-us/articles/360034919791-Language-interpretation-in-meetings-and-webinars). Make sure to add the language in the web portal in order to use it in the API. See link for details. \n\n**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."
        },
        "push_change_to_calendar": {
          "type": "boolean",
          "default": false,
          "example": false,
          "description": "Whether to push meeting changes to the calendar. \n\n 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.\n* `true` - Push meeting changes to the calendar.\n* `false` - Do not push meeting changes to the calendar."
        },
        "authentication_exception": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "example": "Jill Chill",
                "description": "Name of the participant."
              },
              "email": {
                "type": "string",
                "format": "email",
                "example": "jchill@example.com",
                "description": "Email address of the participant."
              },
              "join_url": {
                "type": "string",
                "example": "https://example.com/s/11111",
                "description": "URL for participants to join the meeting"
              }
            }
          },
          "description": "The participants added here will receive unique meeting invite links and bypass authentication."
        },
        "global_dial_in_countries": {
          "type": "array",
          "items": {
            "type": "string",
            "example": "US"
          },
          "description": "List of global dial-in countries"
        },
        "auto_start_meeting_summary": {
          "type": "boolean",
          "default": false,
          "example": false,
          "description": "Whether to automatically start a meeting summary."
        },
        "participant_focused_meeting": {
          "type": "boolean",
          "default": false,
          "example": false,
          "description": "Whether to set the meeting as a participant focused meeting."
        },
        "sign_language_interpretation": {
          "type": "object",
          "properties": {
            "enable": {
              "type": "boolean",
              "example": true,
              "description": "Whether to enable [sign language interpretation](https://support.zoom.us/hc/en-us/articles/9644962487309-Using-sign-language-interpretation-in-a-meeting-or-webinar) for the meeting."
            },
            "interpreters": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "email": {
                    "type": "string",
                    "format": "email",
                    "example": "interpreter@example.com",
                    "description": "The interpreter's email address."
                  },
                  "sign_language": {
                    "type": "string",
                    "example": "American",
                    "description": "The interpreter's sign language. \n\n To get this value, use the `sign_language_interpretation` object's `languages` and `custom_languages` values in the [**Get user settings**](https://developers.zoom.us/docs/api/rest/reference/zoom-api/methods#operation/userSettings) API response."
                  }
                }
              },
              "maximum": 20,
              "description": "Information about the meeting's sign language interpreters."
            }
          },
          "description": "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. \n\n**Note:** If this feature is not enabled on the host's account, this setting will **not** be applied to the meeting."
        },
        "alternative_host_update_polls": {
          "type": "boolean",
          "example": true,
          "description": "Whether the **Allow alternative hosts to add or edit polls** feature is enabled. This requires Zoom version 5.8.0 or higher."
        },
        "registrants_confirmation_email": {
          "type": "boolean",
          "example": true,
          "description": "Whether to send registrants an email confirmation.\n* `true` - Send a confirmation email.\n* `false` - Do not send a confirmation email."
        },
        "registrants_email_notification": {
          "type": "boolean",
          "example": true,
          "description": "Whether to send registrants email notifications about their registration approval, cancellation, or rejection.\n\n* `true` - Send an email notification.\n* `false` - Do not send an email notification.\n\n Set this value to `true` to also use the `registrants_confirmation_email` parameter."
        },
        "auto_start_ai_companion_questions": {
          "type": "boolean",
          "default": false,
          "example": false,
          "description": "Whether to automatically start AI Companion questions."
        },
        "alternative_hosts_email_notification": {
          "type": "boolean",
          "default": true,
          "example": true,
          "description": "Flag to determine whether to send email notifications to alternative hosts, default value is true."
        },
        "approved_or_denied_countries_or_regions": {
          "type": "object",
          "properties": {
            "enable": {
              "type": "boolean",
              "example": true,
              "description": "`true`: Setting enabled to either allow users or block users from specific regions to join your meetings.   \n \n\n`false`: Setting disabled."
            },
            "method": {
              "enum": [
                "approve",
                "deny"
              ],
              "type": "string",
              "example": "approve",
              "description": "Specify whether to allow users from specific regions to join this meeting; or block users from specific regions from joining this meeting.   \n   \n \n`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`.  \n   \n \n`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`"
            },
            "denied_list": {
              "type": "array",
              "items": {
                "type": "string",
                "example": "CA"
              },
              "description": "List of countries/regions from where participants can not join this meeting. "
            },
            "approved_list": {
              "type": "array",
              "items": {
                "type": "string",
                "example": "CX"
              },
              "description": "List of countries/regions from where participants can join this meeting. "
            }
          },
          "description": "Approve or block users from specific regions/countries from joining this meeting. \n"
        }
      },
      "description": "Meeting settings."
    },
    "timezone": {
      "type": "string",
      "example": "America/Los_Angeles",
      "description": "The timezone to format the meeting start time."
    },
    "start_url": {
      "type": "string",
      "example": "https://example.com/s/11111",
      "description": "The `start_url` of a meeting is a URL that a host or an alternative host can start the meeting. \n\nThe expiration time for the `start_url` field listed in the response of the [**Create a meeting**](https://developers.zoom.us/docs/api/rest/reference/zoom-api/methods#operation/meetingCreate) API is two hours for all regular users. \n\t\nFor users created using the `custCreate` option via the [**Create users**](https://developers.zoom.us/docs/api/rest/reference/zoom-api/methods#operation/userCreate) API, the expiration time of the `start_url` field is 90 days.\n\t\nFor security reasons, to retrieve the updated value for the `start_url` field programmatically after the expiry time, you must call the [**Get a meeting](https://developers.zoom.us/docs/api/rest/reference/zoom-api/methods#operation/meeting) API and refer to the value of the `start_url` field in the response.  \n 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."
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "example": "2022-03-25T07:29:29Z",
      "description": "The creation time. "
    },
    "host_email": {
      "type": "string",
      "format": "email",
      "example": "jchill@example.com",
      "description": "The meeting host's email address."
    },
    "recurrence": {
      "type": "object",
      "required": [
        "type"
      ],
      "properties": {
        "type": {
          "enum": [
            1,
            2,
            3
          ],
          "type": "integer",
          "example": 1,
          "extensions": {
            "x-enum-descriptions": [
              "Daily",
              "Weekly",
              "Monthly"
            ]
          },
          "description": "Recurrence meeting types:  \n `1` - Daily.  \n `2` - Weekly.  \n `3` - Monthly."
        },
        "end_times": {
          "type": "integer",
          "default": 1,
          "example": 7,
          "maximum": 60,
          "description": "Select how many times the meeting should recur before it is canceled. If `end_times` is set to 0, it means there is no end time. The maximum number of recurrences is 60. Cannot be used with `end_date_time`."
        },
        "monthly_day": {
          "type": "integer",
          "default": 1,
          "example": 1,
          "description": "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.\n\nFor 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`."
        },
        "weekly_days": {
          "enum": [
            "1",
            "2",
            "3",
            "4",
            "5",
            "6",
            "7"
          ],
          "type": "string",
          "default": "1",
          "example": "1",
          "description": "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.   \n    \n  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.  \n   \n  **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.\n\n\n `1`  - Sunday.   \n `2` - Monday.  \n `3` - Tuesday.  \n `4` -  Wednesday.  \n `5` -  Thursday.  \n `6` - Friday.  \n `7` - Saturday."
        },
        "monthly_week": {
          "enum": [
            -1,
            1,
            2,
            3,
            4
          ],
          "type": "integer",
          "example": 1,
          "extensions": {
            "x-enum-descriptions": [
              "Last week",
              "First week",
              "Second week",
              "Third week",
              "Fourth week"
            ]
          },
          "description": "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.**   \n `-1` - Last week of the month.  \n `1` - First week of the month.  \n `2` - Second week of the month.  \n `3` - Third week of the month.  \n `4` - Fourth week of the month."
        },
        "end_date_time": {
          "type": "string",
          "format": "date-time",
          "example": "2022-04-02T15:59:00Z",
          "description": "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`.)"
        },
        "repeat_interval": {
          "type": "integer",
          "example": 1,
          "description": "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`. \n\nFor 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.\n\n"
        },
        "monthly_week_day": {
          "enum": [
            1,
            2,
            3,
            4,
            5,
            6,
            7
          ],
          "type": "integer",
          "example": 1,
          "extensions": {
            "x-enum-descriptions": [
              "Sunday",
              "Monday",
              "Tuesday",
              "Wednesday",
              "Thursday",
              "Friday",
              "Saturday"
            ]
          },
          "description": "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. \n\n  \n `1` - Sunday.  \n `2` - Monday.  \n `3` - Tuesday.  \n `4` -  Wednesday.  \n `5` - Thursday.  \n `6` - Friday.  \n `7` - Saturday."
        }
      },
      "description": "Recurrence object. Use this object only for a meeting with type `8`, a recurring meeting with a fixed time. "
    },
    "start_time": {
      "type": "string",
      "format": "date-time",
      "example": "2022-03-25T07:29:29Z",
      "description": "Meeting start time in GMT or UTC. Start time will not be returned if the meeting is an **instant** meeting. \n"
    },
    "occurrences": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "status": {
            "enum": [
              "available",
              "deleted"
            ],
            "type": "string",
            "example": "available",
            "description": "Occurrence status: \n `available` - Available occurrence.  \n `deleted` -  Deleted occurrence."
          },
          "duration": {
            "type": "integer",
            "example": 60,
            "description": "Duration."
          },
          "start_time": {
            "type": "string",
            "format": "date-time",
            "example": "2022-03-25T07:46:00Z",
            "description": "Start time."
          },
          "occurrence_id": {
            "type": "string",
            "example": "1648194360000",
            "description": "Occurrence ID: Unique Identifier that identifies 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."
          }
        },
        "description": "Occurrence object. This object is only returned for recurring meetings."
      },
      "description": "Array of occurrence objects."
    },
    "assistant_id": {
      "type": "string",
      "example": "kFFvsJc-Q1OSxaJQLvaa_A",
      "description": "The ID of the user who scheduled this meeting on behalf of the host."
    },
    "pre_schedule": {
      "type": "boolean",
      "default": false,
      "example": false,
      "description": "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): \n* `true` - A GSuite prescheduled meeting. \n* `false` - A regular meeting."
    },
    "chat_join_url": {
      "type": "string",
      "example": "https://example.com/launch/jc/11111",
      "description": "The URL to join the chat."
    },
    "h323_password": {
      "type": "string",
      "example": "123456",
      "description": "H.323/SIP room system passcode."
    },
    "tracking_fields": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string",
            "example": "field1",
            "description": "The tracking field's label."
          },
          "value": {
            "type": "string",
            "example": "value1",
            "description": "The tracking field's value."
          },
          "visible": {
            "type": "boolean",
            "example": true,
            "description": "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.\n\n`true`: Tracking field is visible.   \n \n\n`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. "
          }
        }
      },
      "description": "Tracking fields."
    },
    "encrypted_password": {
      "type": "string",
      "example": "8pEkRweVXPV3Ob2KJYgFTRlDtl1gSn.1",
      "description": "Encrypted passcode for third party endpoints (H323/SIP)."
    }
  },
  "description": "Meeting object."
}
object MeetingsGetInvitationNoteResponse
{
  "type": "object",
  "title": "Meeting Invitation",
  "properties": {
    "sip_links": {
      "type": "array",
      "items": {
        "type": "string",
        "example": "5550100@zoomcrc.com"
      },
      "description": "A list of SIP phone addresses."
    },
    "invitation": {
      "type": "string",
      "example": "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",
      "description": "Meeting invitation."
    }
  },
  "description": "Meeting invitation details."
}
object MeetingsGetJoinTokenLocalRecordingResponse
{
  "type": "object",
  "properties": {
    "token": {
      "type": "string",
      "example": "2njt50mj",
      "description": "The join token."
    },
    "expire_in": {
      "enum": [
        120
      ],
      "type": "integer",
      "format": "int64",
      "example": 120,
      "description": "The number of seconds the join token is valid for before it expires. This value always returns `120`."
    }
  },
  "description": "Information about the meeting's local recorder join token."
}