# Events - **OpenAPI Version:** `3.1.1` - **API Version:** `2` The Webinars Plus & Events APIs let developers integrate [Zoom Webinars Plus & Events](https://developers.zoom.us/docs/events/) to create, manage, and customize virtual event experiences in their apps and services. ## Servers - **URL:** `https://api.zoom.us/v2` ## Operations ### List event attendee actions - **Method:** `GET` - **Path:** `/zoom_events/events/{eventId}/attendee_action` - **Tags:** Attendee Actions Retrieves the attendee actions performed by the host for an event. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus / Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_attendee_actions:read`,`zoom_events_attendee_actions:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:read:list_attendee_actions`,`zoom_events:read:list_attendee_actions:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Attendee check-in Information. ###### Content-Type: application/json - **`attendees`** `array` — The list of event attendee actions. **Items:** - **`action`** `string`, possible values: `"check-in"` — The action name. - **`email`** `string` — The email address of the checked-in attendee. - **`source`** `string` — The source of the action. Any information that can be used for tracking the source of this action. - **`next_page_token`** `string` — The next page token. - **`total_records`** `number` — The total number of records in the response. **Example:** ```json { "total_records": 1, "next_page_token": "yqT59YnBSHqvDdNnkeHQsA", "attendees": [ { "email": "email@zoom.us", "source": "Console-1", "action": "Check-in" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request Invalid request. ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2002\` \
Event not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update event attendee actions - **Method:** `PATCH` - **Path:** `/zoom_events/events/{eventId}/attendee_action` - **Tags:** Attendee Actions Retrieves attendee onsite action for an event. You can perform actions such as onsite check-in for a single attendee or up to 300 attendees in a batch operation. In the case of a batch operation, the API response can be a partial success. Any errors are returned in the **errors** object. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus / Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_attendee_actions:write`,`zoom_events_attendee_actions:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:update:batch_attendee_actions`,`zoom_events:update:batch_attendee_actions:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`attendees`** `array` **Items:** - **`action` (required)** `string`, possible values: `"check-in"` — The action name. - **`email` (required)** `string` — The email address of the attendee. - **`source`** `string` — The source of the action. Any information that can be used for tracking the source of this action. **Example:** ```json { "attendees": [ { "email": "email@zoom.us", "action": "check-in" } ], "source": "console-1" } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` Attendee check-in Information. ###### Content-Type: application/json - **`errors`** `array` **Items:** - **`email`** `string` — The email address of the failed checked-in attendee. - **`message`** `string` — Error message. **Example:** ```json { "errors": [ { "email": "email@zoom.us", "message": "User doesn't have an on-site ticket" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request Invalid Request. ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2003\` \
Event Not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List session attendee actions - **Method:** `GET` - **Path:** `/zoom_events/events/{eventId}/sessions/{sessionId}/attendee_action` - **Tags:** Attendee Actions Retrieves the attendee actions performed by the host for an event session. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus / Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_attendee_actions:read`,`zoom_events_attendee_actions:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:read:list_session_attendee_actions`,`zoom_events:read:list_session_attendee_actions:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Attendee check-in Information. ###### Content-Type: application/json - **`attendees`** `array` — The list of session attendee actions. **Items:** - **`action`** `string`, possible values: `"check-in"` — The action name. - **`email`** `string` — The email address of the checked-in attendee. - **`source`** `string` — The source of the action. Any information that can be used for tracking the source of this action. - **`next_page_token`** `string` — The next page token. - **`total_records`** `number` — The total number of records in the response. **Example:** ```json { "total_records": 1, "next_page_token": "yqT59YnBSHqvDdNnkeHQsA", "attendees": [ { "email": "email@zoom.us", "source": "Console-1", "action": "Check-in" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request Invalid Request. ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2002\` \
Event not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update session attendee actions - **Method:** `PATCH` - **Path:** `/zoom_events/events/{eventId}/sessions/{sessionId}/attendee_action` - **Tags:** Attendee Actions Performs attendee onsite action for an event session. You can perform actions such as onsite check-in for a single attendee or up to 300 attendees in a batch operation. In the case of a batch operation, the API response can be a partial success. Any errors are returned in the **errors** object. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus / Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_attendee_actions:write`,`zoom_events_attendee_actions:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:update:batch_session_attendee_actions`,`zoom_events:update:batch_session_attendee_actions:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`attendees`** `array` **Items:** - **`action` (required)** `string`, possible values: `"check-in"` — The action name. - **`email` (required)** `string` — The email address of the attendee. - **`source`** `string` — The source of the action. Any information that can be used for tracking the source of this action. **Example:** ```json { "attendees": [ { "email": "email@zoom.us", "action": "Check-in" } ], "source": "Console-1" } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` Attendee check-in Information. ###### Content-Type: application/json - **`errors`** `array` **Items:** - **`email`** `string` — The email address of the failed checked-in attendee. - **`message`** `string` — The error message. **Example:** ```json { "errors": [ { "email": "email@zoom.us", "message": "User doesn't have an on-site ticket." } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request Invalid request. ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2003\` \
Event not found. \
\*\*Error Code:\*\* \`2005\` \
Session not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List coeditors - **Method:** `GET` - **Path:** `/zoom_events/events/{eventId}/coeditors` - **Tags:** Co Editors Retrieves the list of co-editors and their edit permissions for an event. Co-editors can make changes to the event details. Co-editors have view permission to all sections of the event. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus / Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_coeditors:read`,`zoom_events_coeditors:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:read:list_coeditors`,`zoom_events:read:list_coeditors:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` List of co-editors returned. ###### Content-Type: application/json - **`coeditors`** `array` — Co-editors **Items:** - **`email`** `string` — The co-editor's email address. - **`permission_groups`** `array` — Permission Groups **Items:** `string`, possible values: `"Publish", "EventConfiguration", "EventBranding", "Registration & Join", "Venue", "EventExperience", "EventPlanning", "SpecialRole", "PostEvent", "Analytics", "Email", "Integrations"` — The permissions given for the co-editor to edit particular sections of the event: \* \`Publish\` Event publish access \* \`EventConfiguration\` Event Configuration page \* \`EventBranding\` Event Branding page \* \`Registration & Join\` Registration & Join page \* \`Venue\` Event Experience page \* \`EventExperience\` Event Experience page \* \`EventPlanning\` Event Content page \* \`SpecialRole\` Special Roles page \* \`PostEvent\` Post Event page \* \`Analytics\` Analytics page \* \`Email\` Communications page \* \`Integrations\` Integrations page - **`total_records`** `number` — The total number of records in the response. **Example:** ```json { "total_records": 1, "coeditors": [ { "email": "coeditor@example.com", "permission_groups": [ "EventConfiguration" ] } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2002\` \
Event not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Add or remove event co-editors - **Method:** `PATCH` - **Path:** `/zoom_events/events/{eventId}/coeditors` - **Tags:** Co Editors Adds or removes event co-editor actions. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus / Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_coeditor:write`,`zoom_events_coeditor:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:write:coeditor`,`zoom_events:write:coeditor:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`coeditors`** `array` — Co-Editor information. **Items:** - **`email`** `string` — The co-editor's email address. - **`permission_groups`** `array` — Permission Groups. **Items:** `string`, possible values: `"Publish", "EventConfiguration", "EventBranding", "Registration & Join", "Venue", "EventExperience", "EventPlanning", "SpecialRole", "PostEvent", "Analytics", "Email", "Integrations"` — The permissions given for the co-editor to edit particular sections of the event: \* \`Publish\` Event publish access \* \`EventConfiguration\` Event Configuration page \* \`EventBranding\` Event Branding page \* \`Registration & Join\` Registration & Join page \* \`Venue\` Event Experience page \* \`EventExperience\` Event Experience page \* \`EventPlanning\` Event Content page \* \`SpecialRole\` Special Roles page \* \`PostEvent\` Post Event page \* \`Analytics\` Analytics page \* \`Email\` Communications page \* \`Integrations\` Integrations page - **`operation`** `string`, possible values: `"add", "update", "delete"` — The co-editor actions for the event . \*\`add\` \— add co-editor the event. \n \*\`update\` Update event co-editor permissions \*\`delete\` delete co-editors from the event. **Example:** ```json { "operation": "add", "coeditors": [ { "email": "coeditor@example.com", "permission_groups": [ "EventConfiguration" ] } ] } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` Updates event co-editors. ###### Content-Type: application/json - **`errors`** `array` **Items:** - **`email`** `string` — The email address of the failed co-editor. - **`message`** `string` — Error message. **Example:** ```json { "errors": [ { "email": "email@zoom.us", "message": "User not elgible for co-editor." } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2002\` \
Event not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List event email types - **Method:** `GET` - **Path:** `/zoom_events/events/{eventId}/email_types` - **Tags:** Emails Get the list of email types defined for an event. **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_email:read`,`zoom_events_email:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:read:list_email_types`,`zoom_events:read:list_email_types:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 Email types ###### Content-Type: application/json - **`email_types`** `array` — Email types array. **Items:** - **`email_type`** `string` — The email type name. - **`email_type_id`** `string` — The email type ID. - **`status`** `string`, possible values: `"scheduled", "ongoing", "sent", "deactivated"` — The email delivery status. \* \`scheduled - Scheduled\` \* \`ongoing - ongoing\` \* \`sent - sent - done\` \* \`deactivated - this email is deactivated\` - **`trigger_date`** `string`, format: `date-time` — The trigger date-time of the email. - **`trigger_overview`** `string` — The email trigger information. - **`next_page_token`** `string` — The next page token paginates through a large set 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. - **`total_records`** `number` — The total number of records. **Example:** ```json { "total_records": 15, "next_page_token": "oLVRGBTZXI6Kt7zv0gb8Qy4h8cLNbzK1ig2", "email_types": [ { "email_type": "Free ticket confirmation", "email_type_id": "SLar6n5ATsWSqZ_EZv_9jw", "trigger_overview": "Sent when user is registered", "trigger_date": "2025-08-24T22:30:00Z", "status": "scheduled" } ] } ``` ##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2002\` \
Event not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/). ### List event emails sent status - **Method:** `GET` - **Path:** `/zoom_events/events/{eventId}/email_types/{emailTypeId}/send_status` - **Tags:** Emails Get the list of email sent status for an event email type. **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_email:read`,`zoom_events_email:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:read:list_emails_status`,`zoom_events:read:list_emails_status:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 Email send details. ###### Content-Type: application/json - **`emails`** `array` — Array of emails. **Items:** - **`email`** `string` — The email address of the recipient. - **`failure_reason`** `string`, possible values: `"bounced", "system_error", "blocked", "rate_limited", "unsubscribed"` — The email failure reason. \* \`bounced\` - The email was bounced \* \`system\_error\` - Network error - Please try sending again \* \`blocked\` - This email was blocked and hence not sent \* \`rate\_limited\` - Daily email limit met \* \`unsubscribed\` - This email was unsubscribed from email communications - **`name`** `string` — The recipient name. - **`sent_date`** `string`, format: `date-time` — The actual sent date-time of the email. - **`status`** `string`, possible values: `"scheduled", "pending", "delivered", "failed", "missed_schedule"` — The email delivery status. \* \`scheduled\` - Scheduled to send \* \`pending\` - Pending or ready to send \* \`delivered\` - Email sent successfully \* \`failed\` - Email delivery failed \* \`missed\_schedule\` - Missed the original schedule date-time - **`next_page_token`** `string` — The next page token paginates through a large set of results. The next page token is returned whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes. - **`total_records`** `number` — The total number of records. **Example:** ```json { "total_records": 1, "next_page_token": "oLVRGBTZXI6Kt7zv0gb8Qy4h8cLNbzK1ig2", "emails": [ { "name": "John Doe", "email": "john.doe@test.com", "status": "delivered", "failure_reason": "bounced", "sent_date": "2025-08-24T22:30:00Z" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2002\` \
Event not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/). ### List event access links - **Method:** `GET` - **Path:** `/zoom_events/events/{eventId}/access_links` - **Tags:** Event Access Retrieves a list of all the event's access links associated with the event. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus or Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_access_links:read:admin`,`zoom_events_access_links:read` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:read:list_access_links`,`zoom_events:read:list_access_links:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` List of events access links. ###### Content-Type: application/json - **`access_links`** `array` — The list of event's access links. **Items:** - **`access_link_id`** `string` — The event access link ID. - **`allow_domain_list`** `array` — The registration restricted to these specific domains. This array returns a maximum of 50 domains. **Items:** `string` - **`authentication_method`** `string`, possible values: `"zoom_account", "zoom_account_otp", "corporate_idp", "bypass_auth", "accelerated_auth"` — The event authentication method during registration or during join, depending on the access link type: \* \`zoom\_account\` Zoom account holder \* \`zoom\_account\_otp\` Sign in with Zoom account or with an email OTP \* \`corporate\_idp\` Sign in to external Single Sign-On (SSO) \* \`bypass\_auth\` Bypass authentication \* \`accelerated\_auth\` Authentication through vanity url - **`email_restrict_list`** `array` — The registration restricted to users by email addresses. Only these users are allowed to register and these email addresses will receive an email invitation. **Items:** `string` - **`idp_name`** `string` — The IDP Name configured for the account. - **`is_default`** `boolean` — The default link ensures compatibility with the event links that are used throughout the attendee experience. These existing event links will operate as a registration link or group join link based upon the default setting.. It will be set to false by default. - **`name`** `string` — The name of the access link. - **`recurring_registration_option`** `string`, possible values: `"all_sessions", "single_session", "multiple_sessions"` — The recurring event registration type. This is applicable only for recurring events. \* \`all\_sessions\` One registration for all the sessions. \* \`single\_session\` Registration only for one session at a time. \* \`multiple\_sessions\` Registration allowed one or more sessions. - **`security_at_join`** `object` — The security at join. - **`email_authentication`** `boolean` — Attendees will be required to authenticate with the email that was used at registration when joining. - **`security_code_verification`** `boolean` — Require additional authentication through a security code. - **`ticket_type_id`** `string` — Ticket Type ID. This establishes the access permissions of the user within the event. - **`type`** `string`, possible values: `"registration", "group-join"` — The type of access link of the event. \* \`registration\` - Attendees will be required to authenticate with the email that was used at registration when joining. \* \`group-join\` - The attendee group specified by the chosen authentication will join without registration. - **`url`** `string` — The event access link. **Example:** ```json { "access_links": [ { "access_link_id": "234kjhg23kl4jhlaksjdh3", "name": "Event Access Link 1", "type": "registration", "is_default": true, "url": "https://gobranding.zipow.com/ev/Ar7HuZc3rtKwaVqLz0QdBYN-2jTOMeGGgLe-G7JzOUQZTIBOpBaH~Aq9NeHNgGwwg2eyFH7eEtP4bXRXiiYCM8pDiTuTbrigbqJ1uK2K6Ga-Ghg", "authentication_method": "bypass_auth", "idp_name": "okta", "allow_domain_list": [ "zoom.us" ], "email_restrict_list": [ "example1@email.com" ], "security_at_join": { "email_authentication": true, "security_code_verification": true }, "ticket_type_id": "234kjhg23kl4jhlaksjdh3", "recurring_registration_option": "all_sessions" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request Invalid request. ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2002\` \
Event not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Create event access link - **Method:** `POST` - **Path:** `/zoom_events/events/{eventId}/access_links` - **Tags:** Event Access Creates an access link for an event. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus / Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_access_links:write`,`zoom_events_access_links:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:write:access_links`,`zoom_events:write:access_links:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`authentication_method` (required)** `string`, possible values: `"zoom_account", "zoom_account_otp", "corporate_idp", "bypass_auth", "accelerated_auth"` — The event authentication method during registration or during join, depending on the access link type. \* \`zoom\_account\` - Zoom account holder. \* \`zoom\_account\_otp\` - Sign in with Zoom account or with an email OTP. \* \`corporate\_idp\` - Sign in to external single sign-on (SSO). Configure the Zoom account with a valid one SSO configuration. Accounts with multiple identity providers (IDP) are not supported using the API. \* \`bypass\_auth\` - Bypass authentication. \* \`accelerated\_auth\` - Authentication through vanity URL. - **`name` (required)** `string` — The access link's name. - **`type` (required)** `string`, possible values: `"registration", "group-join"` — The type of access link of the event. \* \`registration\` - Attendees will be required to authenticate with the email that was used at registration when joining. \* \`group-join\` - The attendee group specified by the chosen authentication will join without registration. - **`allow_domain_list`** `array` — The registration restricted to these specific domains. This array returns a maximum of 50 domains. **Items:** `string` - **`email_restrict_list`** `array` — The registration restricted to users by email addresses. Only these users are allowed to register and these email addresses will receive an email invitation. **Items:** `string` - **`idp_name`** `string` — The IDP Name configured for the account. If the authentication type is corporate IDP and Zoom Accounts configured with more than one IDP provider this field is required. - **`is_default`** `boolean` — The default link ensures compatibility with the event links that are used throughout the attendee experience. These existing event links will operate as a registration link or group join link based upon the default setting. It will be set to false by default. Only one link is set to default, at any time. - **`recurring_registration_option`** `string`, possible values: `"all_sessions", "single_session", "multiple_sessions"` — The recurring event registration type. This is applicable only for recurring events. \* \`all\_sessions\` - One registration for all the sessions. \* \`single\_session\` - Registration only for one session at a time. \* \`multiple\_sessions\` - Registration allowed one or more sessions. - **`security_at_join`** `object` — Security at the time of joining. - **`email_authentication`** `boolean` — This field applies only to registration link type. Attendees will be required to authenticate with the email that was used at registration when joining. - **`security_code_verification`** `boolean` — Require additional authentication through a security code. - **`ticket_type_id`** `string` — The ticket type ID. This field applies only to group-join link type. This establishes the access permissions of the user within the event. **Example:** ```json { "name": "Event Access Link 1", "type": "registration", "is_default": false, "authentication_method": "bypass_auth", "idp_name": "okta", "allow_domain_list": [ "zoom.us" ], "email_restrict_list": [ "example1@email.com" ], "security_at_join": { "email_authentication": true, "security_code_verification": true }, "ticket_type_id": "PTYwAknYQXaDStOP7O3ExA", "recurring_registration_option": "all_sessions" } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` \
Event access link created successfully. ###### Content-Type: application/json - **`access_link_id`** `string` — The event access link ID. - **`allow_domain_list`** `array` — The registration restricted to these specific domains. This array returns a maximum of 50 domains. **Items:** `string` - **`authentication_method`** `string`, possible values: `"zoom_account", "zoom_account_otp", "corporate_idp", "bypass_auth", "accelerated_auth"` — The event authentication method during registration or during join, depending on the access link type. \* \`zoom\_account\` - Zoom account holder. \* \`zoom\_account\_otp\` - Sign in with Zoom account or with an email OTP. \* \`corporate\_idp\` - Sign in to external single sign-on (SSO). \* \`bypass\_auth\` - Bypass authentication. \* \`accelerated\_auth\` - Authentication through vanity URL. - **`email_restrict_list`** `array` — The registration restricted to users by email addresses. Only these users are allowed to register and these email addresses will receive an email invitation. **Items:** `string` - **`idp_name`** `string` — The IDP Name configured for the account. If the authentication type is corporate IDP and Zoom Accounts configured with more than one IDP provider this field is required. - **`is_default`** `boolean` — The default link ensures compatibility with the event links that are used throughout the attendee experience. These existing event links will operate as a registration link or group join link based upon the default setting. It will be set to false by default. - **`name`** `string` — The name of the access link. - **`recurring_registration_option`** `string`, possible values: `"all_sessions", "single_session", "multiple_sessions"` — The recurring event registration type. This is applicable only for recurring events. \* \`all\_sessions\` - One registration for all the sessions. \* \`single\_session\` - Registration only for one session at a time. \* \`multiple\_sessions\` - Registration allowed one or more sessions. - **`security_at_join`** `object` — Security at the time of joining. - **`email_authentication`** `boolean` — This field applies only to registration link type. Attendees will be required to authenticate with the email that was used at registration when joining. - **`security_code_verification`** `boolean` — Require additional authentication through a security code. - **`ticket_type_id`** `string` — The ticket type ID. This field applies only to group-join link type. This establishes the access permissions of the user within the event. - **`type`** `string`, possible values: `"registration", "group-join"` — The type of access link of the event. \* \`registration\` - Attendees will be required to authenticate with the email that was used at registration when joining. \* \`group-join\` - The attendee group specified by the chosen authentication will join without registration. **Example:** ```json { "access_link_id": "234kjhg23kl4jhlaksjdh3", "name": "Event Access Link 1", "type": "registration", "is_default": true, "authentication_method": "bypass_auth", "idp_name": "okta", "allow_domain_list": [ "zoom.us" ], "email_restrict_list": [ "example1@example.com" ], "security_at_join": { "email_authentication": true, "security_code_verification": true }, "ticket_type_id": "PTYwAknYQXaDStOP7O3ExA", "recurring_registration_option": "all_sessions" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`261202\` \
The ticket type could not be found. \
\*\*Error Code:\*\* \`261203\` \
Please ensure that each join link has a unique name. ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260200\` \
Event access denied. ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2002\` \
Event not found. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get event access link - **Method:** `GET` - **Path:** `/zoom_events/events/{eventId}/access_links/{accessLinkId}` - **Tags:** Event Access Retrieves event access link information. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus / Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_access_links:read`,`zoom_events_access_links:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:read:access_links`,`zoom_events:read:access_links:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Requested session details. ###### Content-Type: application/json - **`access_link_id`** `string` — The event access link ID. - **`allow_domain_list`** `array` — The registration restricted to these specific domains. This array returns a maximum of 50 domains. **Items:** `string` - **`authentication_method`** `string`, possible values: `"zoom_account", "zoom_account_otp", "corporate_idp", "bypass_auth", "accelerated_auth"` — The event authentication method during registration or during join, depending on the access link type. \* \`zoom\_account\` - Zoom account holder. \* \`zoom\_account\_otp\` - Sign in with Zoom account or with an email OTP. \* \`corporate\_idp\` - Sign in to external single sign-on (SSO). \* \`bypass\_auth\` - Bypass authentication. \* \`accelerated\_auth\` - Authentication through vanity URL. - **`email_restrict_list`** `array` — The registration restricted to users by email addresses. Only these users are allowed to register and these email addresses will receive an email invitation. **Items:** `string` - **`idp_name`** `string` — The IDP Name configured for the account. - **`is_default`** `boolean` — The default link ensures compatibility with the event links that are used throughout the attendee experience. These existing event links will operate as a registration link or group join link based upon the default setting. It will be set to false by default. - **`name`** `string` — The name of the access link. - **`recurring_registration_option`** `string`, possible values: `"all_sessions", "single_session", "multiple_sessions"` — The recurring event registration type. This is applicable only for recurring events. \* \`all\_sessions\` One registration for all the sessions. \* \`single\_session\` Registration only for one session at a time. \* \`multiple\_sessions\` Registration allowed one or more sessions. - **`security_at_join`** `object` — Security at the time of joining. - **`email_authentication`** `boolean` — This field applies only to registration link type. Attendees will be required to authenticate with the email that was used at registration when joining. - **`security_code_verification`** `boolean` — Require additional authentication through a security code. - **`ticket_type_id`** `string` — The ticket type ID. This field applies only to group-join link type. This establishes the access permissions of the user within the event. - **`type`** `string`, possible values: `"registration", "group-join"` — The type of access link of the event. \*\`registration\` - Attendees will be required to authenticate with the email that was used at registration when joining. \*\`group-join\` - The attendee group specified by the chosen authentication will join without registration. **Example:** ```json { "access_link_id": "234kjhg23kl4jhlaksjdh3", "name": "Event Access Link 1", "type": "registration", "is_default": true, "authentication_method": "bypass_auth", "idp_name": "okta", "allow_domain_list": [ "zoom.us" ], "email_restrict_list": [ "example1@example.com" ], "security_at_join": { "email_authentication": true, "security_code_verification": true }, "ticket_type_id": "PTYwAknYQXaDStOP7O3ExA", "recurring_registration_option": "all_sessions" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request Invalid request. ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2002\` \
Event not found. \
\*\*Error Code:\*\* \`261201\` \
Event access link not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Delete event access link - **Method:** `DELETE` - **Path:** `/zoom_events/events/{eventId}/access_links/{accessLinkId}` - **Tags:** Event Access Deletes an event access link. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus or Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_access_links:write`,`zoom_events_access_links:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:delete:access_links`,`zoom_events:delete:access_links:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` Event access deleted successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request Invalid request. ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2002\` \
Event not found. \
\*\*Error Code:\*\* \`261201\` \
Event access link not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update event access - **Method:** `PATCH` - **Path:** `/zoom_events/events/{eventId}/access_links/{accessLinkId}` - **Tags:** Event Access Updates the event access for an event ID. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus / Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_access_links:write`,`zoom_events_access_links:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:update:access_links`,`zoom_events:update:access_links:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`allow_domain_list`** `array` — The registration restricted to these specific domains. This array returns a maximum of 50 domains. **Items:** `string` - **`authentication_method`** `string`, possible values: `"zoom_account", "zoom_account_otp", "corporate_idp", "bypass_auth", "accelerated_auth"` — The event authentication method during registration or during join, depending on the access link type. \* \`zoom\_account\` - Zoom account holder. \* \`zoom\_account\_otp\` - Sign in with Zoom account or with an email OTP. \* \`corporate\_idp\` - Sign in to external single sign-on (SSO). Configure the Zoom account with a valid one SSO configuration. Accounts with multiple identity providers (IDP) are not supported using the API. \* \`bypass\_auth\` - Bypass authentication. \* \`accelerated\_auth\` - Authentication through vanity URL. - **`email_restrict_list`** `array` — The registration restricted to users by email addresses. Only these users are allowed to register and these email addresses will receive an email invitation. **Items:** `string` - **`idp_name`** `string` — The IDP Name configured for the account. If the authentication type is corporate IDP and Zoom Accounts configured with more than one IDP provider this field is required. - **`is_default`** `boolean` — The default link ensures compatibility with the event links that are used throughout the attendee experience. These existing event links will operate as a registration link or group join link based upon the default setting. It will be set to false by default. Only one link is set to default, at any time. On;y \`true\` is considered for update. - **`name`** `string` — The name of the access link. - **`recurring_registration_option`** `string`, possible values: `"all_sessions", "single_session", "multiple_sessions"` — The recurring event registration type. This is applicable only for recurring events. \* \`all\_sessions\` One registration for all the sessions. \* \`single\_session\` Registration only for one session at a time. \* \`multiple\_sessions\` Registration allowed one or more sessions. - **`security_at_join`** `object` — The security at the time of joining. - **`email_authentication`** `boolean` — This field applies only to registration link type. Attendees will be required to authenticate with the email that was used at registration when joining. - **`security_code_verification`** `boolean` — This field requires additional authentication through a security code. - **`ticket_type_id`** `string` — The ticket type ID. This field applies only to group-join link type. This establishes the access permissions of the user within the event. **Example:** ```json { "name": "Event Access Link 1", "is_default": true, "authentication_method": "bypass_auth", "idp_name": "okta", "allow_domain_list": [ "zoom.us" ], "email_restrict_list": [ "example1@email.com" ], "security_at_join": { "email_authentication": true, "security_code_verification": true }, "ticket_type_id": "PTYwAknYQXaDStOP7O3ExA", "recurring_registration_option": "all_sessions" } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` Event access link updated successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`261202\` \
The ticket type could not be found. \
\*\*Error Code:\*\* \`261203\` \
Please ensure that each join link has a unique name.. \
##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2002\` \
Event not found. \
\*\*Error Code:\*\* \`261201\` \
Event access link not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List events - **Method:** `GET` - **Path:** `/zoom_events/events` - **Tags:** Events Retrieves all events associated with the user. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus or Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_basic:read`,`zoom_events_basic:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:read:list_events`,`zoom_events:read:list_events:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` List of requested events. ###### Content-Type: application/json - **`events`** `array` **Items:** - **`access_level`** `string` — The type of \[access level]\(https\://support.zoom.us/hc/en-us/articles/13471207223437-Managing-the-Event-Access-tab): \* \`PUBLIC\` - Public events \* \`PRIVATE\_UNRESTRICTED\` - Private and unrestricted. \* \`PRIVATE\_RESTRICTED\` - Private and restricted. - **`attendance_type`** `string`, possible values: `"virtual", "in-person", "hybrid"` — The type of attendee experience for the event. \* \`virtual\` virtual attendees only \* \`in-person\` in-person attendees only \* \`hybrid\` both in-person and virtual attendees - **`blocked_countries`** `array` **Items:** `string` — The \[country's code]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists/#countries). - **`calendar`** `array` — The start and end time of the calendar invitations in UTC. The format should be \`yyyy-MM-dd\`T\`HH:mm:ssZ **Items:** - **`end_time`** `string`, format: `date-time` - **`start_time`** `string`, format: `date-time` - **`categories`** `array` — The category of the event. \*\*Example:\*\* \* Education and Family. \* Business and Networking. \* Entertainment and Visual Arts. \* Food and Drinks. **Items:** `string` - **`contact_email`** `string` — The contact person's email address for the event. - **`contact_name`** `string` — The contact person's name for the event. - **`description`** `string` — The description of the event. - **`end_time`** `string`, format: `date-time` — The end time of the event in UTC. The format should be \`yyyy-MM-dd\`T\`HH:mm:ssZ - **`event_id`** `string` — The ID of the event. - **`event_type`** `string` — The event types as enum: \* \`CONFERENCE\` - Multi session event \* \`SIMPLE\_EVENT\` - Single session event \* \`RECURRING\` - Recurring session event - **`event_url`** `string` — The defaul event access link. - **`hub_id`** `string` — The ID of the event hub. - **`lobby_end_time`** `string`, format: `date-time` — The end time of the lobby in UTC. The format should be \`yyyy-MM-dd\`T\`HH:mm:ssZ - **`lobby_start_time`** `string`, format: `date-time` — The start time of the lobby in UTC. The format should be \`yyyy-MM-dd\`T\`HH:mm:ssZ - **`meeting_type`** `string` — The type of meeting (for single session and recurring session events): \* \`MEETING\` - Meeting \* \`WEBINAR\` - Webinar. - **`name`** `string` — The name of the event. - **`physical_location`** `string` — The physical location of the event. This field is applicable for Hybrid and in-person events only. - **`recurrence`** `object` — Information about \[recurring sessions]\(https\://marketplace.zoom.us/docs/api-reference/other-references/recurrence-object-definitions). - **`duration`** `integer` — Session duration in minutes. - **`end_date_time`** `string`, format: `date-time` — The recurring session's final ending date and time before it is canceled, in UTC format. - **`end_times`** `integer` — The number of times the recurring session will occur before it is canceled. - **`monthly_days`** `integer` — The day of the month on which the recurring monthly session occurs. The value ranges from 1 to 31. - **`monthly_week`** `integer`, possible values: `-1, 1, 2, 3, 4` — The week of the month on which a recurring session occurs: \* \`-1\` — The last week of the month. \* \`1\` — The first week. \* \`2\` — The second week. \* \`3\` — The third week. \* \`4\` — The fourth week. - **`monthly_week_day`** `integer`, possible values: `1, 2, 3, 4, 5, 6, 7` — The day of the week on which the recurring monthly session is scheduled: \* \`1\` — Sunday \* \`2\` — Monday \* \`3\` — Tuesday \* \`4\` — Wednesday \* \`5\` — Thursday \* \`6\` — Friday \* \`7\` — Saturday - **`repeat_interval`** `integer` — The session's repeat interval: \* For daily intervals, a max of \`90\` days. \* For a weekly interval, a max of \`12\` weeks. \* For monthly intervals, a max of \`3\` months. - **`type`** `integer`, possible values: `1, 2, 3` — The type of recurring session: \* \`1\` — Daily. \* \`2\` — Weekly. \* \`3\` — Monthly. - **`weekly_days`** `string` — A comma-separated list of the days of the week on which the recurring weekly session occurs: \* \`1\` — Sunday \* \`2\` — Monday \* \`3\` — Tuesday \* \`4\` — Wednesday \* \`5\` — Thursday \* \`6\` — Friday \* \`7\` — Saturday - **`start_time`** `string`, format: `date-time` — The start time of the event in UTC. The format should be \`yyyy-MM-dd\`T\`HH:mm:ssZ - **`status`** `string` — The event status: Options: \* \`PUBLISHED\` - Published event \* \`DRAFT\` - Draft event - **`tagline`** `string` — This field displays under the event detail page image. - **`tags`** `array` — The tags for the event. **Items:** `string` - **`timezone`** `string` — The timezone of the event. - **`next_page_token`** `string` — The next page token paginates through a large set 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. - **`total_records`** `number` — The total number of records. **Example:** ```json { "total_records": 1, "next_page_token": "oLVRGBTZXI6Kt7zv0gb8Qy4h8cLNbzK1ig2", "events": [ { "event_id": "234kj2h34kljgh23lkhj3", "name": "OpenAPI Conference Name", "description": "This event was created with the OpenAPI", "timezone": "America/Indianapolis", "event_type": "CONFERENCE", "recurrence": { "type": 1, "repeat_interval": 1, "weekly_days": "", "monthly_days": 1, "monthly_week_day": 1, "end_times": 1, "end_date_time": "", "monthly_week": -1, "duration": 1 }, "access_level": "PRIVATE_RESTRICTED", "meeting_type": "MEETING", "categories": [ "Food and Drinks" ], "tags": [ "Event tag1" ], "calendar": [ { "start_time": "2022-06-03T20:51:00Z", "end_time": "2022-06-03T20:51:00Z" } ], "status": "PUBLISHED", "hub_id": "23asdfasdf3asdf", "start_time": "2022-06-03T20:51:00Z", "end_time": "2022-06-03T20:51:00Z", "contact_name": "user contact name", "contact_email": "user@zoom.us", "lobby_start_time": "2022-06-03T20:51:00Z", "lobby_end_time": "2022-06-03T20:51:00Z", "event_url": "www.example.com/zoomEvents", "blocked_countries": [ "US" ], "attendance_type": "hybrid", "physical_location": "801 Mt Vernon Pl NW, Washington, DC 20001", "tagline": "Unlocking Innovation: Join Us for the Day of Insipiration and Insight!" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request Invalid request. ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Create an event - **Method:** `POST` - **Path:** `/zoom_events/events` - **Tags:** Events Creates an event. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus or Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_basic:write`,`zoom_events_basic:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:write:event`,`zoom_events:write:event:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`access_level` (required)** `string` — \*\`PRIVATE\_UNRESTRICTED\` - Private and unrestricted. \*\`PRIVATE\_RESTRICTED\` - Private and restricted. - **`attendance_type` (required)** `string`, possible values: `"virtual", "in-person", "hybrid"` — The type of attendee experience for the event. \* \`VIRTUAL\` - virtual attendees only. \* \`IN-PERSON\` - in-person attendees only. \* \`HYBRID\` - both in-person and virtual attendees. - **`description` (required)** `string` — The description of the event. - **`event_type` (required)** `string`, possible values: `"SIMPLE_EVENT", "CONFERENCE", "RECURRING"` — The event types as enum: \*\`CONFERENCE\` - Multi session events. \*\`SIMPLE\_EVENT\` - Single session event. \*\`RECURRING\` - Recurring sessions event. - **`hub_id` (required)** `string` — The ID of the event hub. - **`name` (required)** `string` — The name of the event. - **`timezone` (required)** `string` — The timezone of the event. For a list of supported timezones and their formats, see our \[timezone list]\(https\://developers.zoom.us/docs/api/rest/other-references/abbreviation-lists/#timezones). - **`blocked_countries`** `array` — Attendees from the countries listed here will not be allowed to register to the event. **Items:** `string` — The \[country's code]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists/#countries). - **`calendar`** `array` — The start and end time of the event in UTC. The format should be \`yyyy-MM-dd\`T\`HH:mm:ssZ\`. **Items:** - **`end_time` (required)** `string`, format: `date-time` — The start time of the event in UTC. - **`start_time` (required)** `string`, format: `date-time` — The start time of the event in UTC. - **`categories`** `array`, possible values: `"Education & Family", "Business & Networking", "Entertainment & Visual Arts", "Food & Drink", "Fitness & Health", "Home & Lifestyle", "Community & Spirituality", "Other"` — The category of the event. \* Education & Family. \* Business & Networking. \* Entertainment & Visual Arts. \* Food & Drinks. \* Fitness & Health. \* Home & Lifestyle \* Community & Spirituality. \* Other **Items:** `string` - **`contact_name`** `string` — The contact person's name for the event. - **`end_time`** `string`, format: `date-time` — The end time of the event in UTC. The format should be \`yyyy-MM-dd\`T\`HH:mm:ssZ\` this is a read only field. - **`lobby_end_time`** `string`, format: `date-time` — The end time of the lobby in UTC. The format should be \`yyyy-MM-dd\`T\`HH:mm:ssZ\`. - **`lobby_start_time`** `string`, format: `date-time` — The start time of the lobby in UTC. The format should be \`yyyy-MM-dd\`T\`HH:mm:ssZ\`. - **`meeting_type`** `string` — This value is required only for a single session event. \*\`MEETING\` - Meeting. \*\`WEBINAR\` - Webinar. - **`physical_location`** `string` — The physical location of the event. This field is applicable for hybrid and in-person events only. - **`recurrence`** `object` — Information about \[recurring sessions]\(https\://marketplace.zoom.us/docs/api-reference/other-references/recurrence-object-definitions). - **`duration`** `integer` — Session duration in minutes. - **`end_date_time`** `string`, format: `date-time` — The recurring session's final ending date and time before it is canceled, in UTC format. - **`end_times`** `integer` — The number of times the recurring session will occur before it is canceled. - **`monthly_days`** `array` **Items:** `integer` — The day of the month on which the recurring monthly session occurs. The value ranges from 1 to 31. - **`monthly_week`** `integer`, possible values: `-1, 1, 2, 3, 4` — The week of the month on which a recurring session occurs: \* \`-1\` — The last week of the month. \* \`1\` — The first week. \* \`2\` — The second week. \* \`3\` — The third week. \* \`4\` — The fourth week. - **`monthly_week_day`** `integer`, possible values: `1, 2, 3, 4, 5, 6, 7` — The day of the week on which the recurring monthly session is scheduled: \* \`1\` — Sunday \* \`2\` — Monday \* \`3\` — Tuesday \* \`4\` — Wednesday \* \`5\` — Thursday \* \`6\` — Friday \* \`7\` — Saturday - **`repeat_interval`** `integer` — The session's repeat interval: \* For daily intervals, a max of \`90\` days. \* For a weekly interval, a max of \`12\` weeks. \* For monthly intervals, a max of \`3\` months. - **`type`** `integer`, possible values: `1, 2, 3` — The type of recurring session: \* \`1\` — Daily. \* \`2\` — Weekly. \* \`3\` — Monthly. - **`weekly_days`** `array` **Items:** `integer`, possible values: `1, 2, 3, 4, 5, 6, 7` — A list of the days of the week on which the recurring weekly session occurs: \* \`1\` — Sunday \* \`2\` — Monday \* \`3\` — Tuesday \* \`4\` — Wednesday \* \`5\` — Thursday \* \`6\` — Friday \* \`7\` — Saturday - **`start_time`** `string`, format: `date-time` — The start time of the event in UTC. The format should be \`yyyy-MM-dd\`T\`HH:mm:ssZ\` this is read only field. - **`tagline`** `string` — This field displays under the event detail page image. - **`tags`** `array` — The tags for the event. **Items:** `string` **Example:** ```json { "name": "OpenAPI Conference Name", "description": "This event was created with the OpenAPI.", "timezone": "America/Indianapolis", "event_type": "CONFERENCE", "recurrence": { "type": 1, "repeat_interval": 1, "weekly_days": [ 1 ], "monthly_days": [ 1 ], "monthly_week_day": 1, "end_times": 7, "end_date_time": "2022-04-02T15:59:00Z", "monthly_week": 1, "duration": 15 }, "access_level": "PRIVATE_RESTRICTED", "meeting_type": "MEETING", "categories": "Education & Family", "tags": [ "Event tag1" ], "calendar": [ { "start_time": "2024-07-28T13:00:00Z", "end_time": "2024-07-30T13:00:00Z" } ], "hub_id": "23asdfasdf3asdf", "contact_name": "user contact name", "lobby_start_time": "2022-06-03T20:51:00Z", "lobby_end_time": "2022-06-03T20:51:00Z", "blocked_countries": [ "US" ], "attendance_type": "hybrid", "tagline": "Unlocking Innovation: Join Us for the Day of Insipiration and Insight!" } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` Successfully created an event. ###### Content-Type: application/json - **`access_level`** `string` — \* \`PRIVATE\_UNRESTRICTED\` - Private and unrestricted. \* \`PRIVATE\_RESTRICTED\` - Private and restricted. - **`attendance_type`** `string`, possible values: `"virtual", "in-person", "hybrid"` — The type of attendee experience for the event. \*\`VIRTUAL\` - virtual attendees only. \*\`IN-PERSON\` - in-person attendees only. \*\`HYBRID\` - both in-person and virtual attendees. - **`blocked_countries`** `array` **Items:** `string` — The \[country's code]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists/#countries). - **`calendar`** `array` — The start and end time of the calendar invitations in UTC. The format should be \`yyyy-MM-dd\`T\`HH:mm:ssZ\`. **Items:** - **`end_time`** `string`, format: `date-time` - **`start_time`** `string`, format: `date-time` - **`categories`** `array` — The category of the event. \*\*Example:\*\* \* Education and Family. \* Business and Networking. \* Entertainment and Visual Arts. \* Food and Drinks. **Items:** `string` - **`contact_name`** `string` — The contact person's name for the event. - **`description`** `string` — The description of the event. - **`end_time`** `string`, format: `date-time` — The end time of the event in UTC. The format should be \`yyyy-MM-dd\`T\`HH:mm:ssZ\`. - **`event_id`** `string` — The ID of the event. - **`event_type`** `string` — The event types as enum: \*\`CONFERENCE\` - Multi session event. \*\`SIMPLE\_EVENT\` - Single session event. - **`event_url`** `string` — The default event access link. - **`hub_id`** `string` — The ID of the event hub. - **`lobby_end_time`** `string`, format: `date-time` — The end time of the lobby in UTC. The format should be \`yyyy-MM-dd\`T\`HH:mm:ssZ\`. - **`lobby_start_time`** `string`, format: `date-time` — The start time of the lobby in UTC. The format should be \`yyyy-MM-dd\`T\`HH:mm:ssZ\`. - **`meeting_type`** `string` — \*This value is required only for single session Event \`MEETING\` - Meeting. \* \`WEBINAR\` - Webinar. - **`name`** `string` — The name of the event. - **`physical_location`** `string` — The physical location of the event. This field is applicable for hybrid and in-person events only. - **`recurrence`** `object` — Information about \[recurring sessions]\(https\://marketplace.zoom.us/docs/api-reference/other-references/recurrence-object-definitions). - **`duration`** `integer` — Session duration in minutes. - **`end_date_time`** `string`, format: `date-time` — The recurring session's final ending date and time before it is canceled, in UTC format. - **`end_times`** `integer` — The number of times the recurring session will occur before it is canceled. - **`monthly_days`** `array` **Items:** `integer` — The day of the month on which the recurring monthly session occurs. The value ranges from 1 to 31. - **`monthly_week`** `integer`, possible values: `-1, 1, 2, 3, 4` — The week of the month on which a recurring session occurs: \* \`-1\` — The last week of the month. \* \`1\` — The first week. \* \`2\` — The second week. \* \`3\` — The third week. \* \`4\` — The fourth week. - **`monthly_week_day`** `integer`, possible values: `1, 2, 3, 4, 5, 6, 7` — The day of the week on which the recurring monthly session is scheduled: \* \`1\` — Sunday \* \`2\` — Monday \* \`3\` — Tuesday \* \`4\` — Wednesday \* \`5\` — Thursday \* \`6\` — Friday \* \`7\` — Saturday - **`repeat_interval`** `integer` — The session's repeat interval: \* For daily intervals, a max of \`90\` days. \* For a weekly interval, a max of \`12\` weeks. \* For monthly intervals, a max of \`3\` months. - **`type`** `integer`, possible values: `1, 2, 3` — The type of recurring session: \* \`1\` — Daily. \* \`2\` — Weekly. \* \`3\` — Monthly. - **`weekly_days`** `array` **Items:** `integer`, possible values: `1, 2, 3, 4, 5, 6, 7` — A list of the days of the week on which the recurring weekly session occurs: \* \`1\` — Sunday \* \`2\` — Monday \* \`3\` — Tuesday \* \`4\` — Wednesday \* \`5\` — Thursday \* \`6\` — Friday \* \`7\` — Saturday - **`start_time`** `string`, format: `date-time` — The start time of the event in UTC. The format should be \`yyyy-MM-dd\`T\`HH:mm:ssZ\`. - **`status`** `string` — The event status options: \* \`PUBLISHED\` - Published event. \* \`DRAFT\` - Draft event. - **`tagline`** `string` — This field displays under the event detail page image. - **`tags`** `array` — The tags for the event. **Items:** `string` - **`timezone`** `string` — The timezone of the event. **Example:** ```json { "event_id": "234kj2h34kljgh23lkhj3", "name": "OpenAPI Conference Name", "description": "This event was created with the OpenAPI", "timezone": "America/Indianapolis", "event_type": "CONFERENCE", "recurrence": { "type": 1, "repeat_interval": 1, "weekly_days": [ 1 ], "monthly_days": [ 1 ], "monthly_week_day": 1, "end_times": 1, "end_date_time": "", "monthly_week": -1, "duration": 1 }, "access_level": "PRIVATE_RESTRICTED", "meeting_type": "MEETING", "categories": [ "Food and Drinks" ], "tags": [ "Event tag1" ], "calendar": [ { "start_time": "2024-07-28T13:00:00Z", "end_time": "2024-07-30T13:00:00Z" } ], "status": "PUBLISHED", "hub_id": "23asdfasdf3asdf", "start_time": "2022-06-03T20:51:00Z", "end_time": "2022-06-03T20:51:00Z", "contact_name": "user contact name", "lobby_start_time": "2022-06-03T20:51:00Z", "lobby_end_time": "2022-06-03T20:51:00Z", "event_url": "www.example.com/zoomEvents", "blocked_countries": [ "US" ], "attendance_type": "hybrid", "tagline": "Unlocking Innovation: Join Us for the Day of Insipiration and Insight!" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`26202\` \
Event schedule cannot be more than 6 days. \
\*\*Error Code:\*\* \`26203\` \
Event end\_time must be after event start\_time. \
\*\*Error Code:\*\* \`26204\` \
Calender must contains start\_time and end\_time. \
\*\*Error Code:\*\* \`260207\` \
Hub is not supported for conference type events. \
##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`26201\` \
No permission to create the event under the hub ID. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get an event - **Method:** `GET` - **Path:** `/zoom_events/events/{eventId}` - **Tags:** Events Returns information on a specified event. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus or Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_basic:read`,`zoom_events_basic:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:read:event`,`zoom_events:read:event:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Event returned. ###### Content-Type: application/json - **`access_level`** `string` — The type of \[access level]\(https\://support.zoom.us/hc/en-us/articles/13471207223437-Managing-the-Event-Access-tab): \* \`PUBLIC\` - Public events. \* \`PRIVATE\_UNRESTRICTED\` - Private and unrestricted. \* \`PRIVATE\_RESTRICTED\` - Private and restricted. - **`attendance_type`** `string`, possible values: `"virtual", "in-person", "hybrid"` — The type of attendee experience for the event. \* \`VIRTUAL\` - virtual attendees only. \* \`IN-PERSON\` - in-person attendees only. \* \`HYBRID\` - both in-person and virtual attendees. - **`blocked_countries`** `array` **Items:** `string` — The \[country's code]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists/#countries). - **`calendar`** `array` — The start and end time of the calendar invitations in UTC. The format should be \`yyyy-MM-dd\`T\`HH:mm:ssZ\`. **Items:** - **`end_time`** `string`, format: `date-time` - **`start_time`** `string`, format: `date-time` - **`categories`** `array` — The category of the event. \*\*Example:\*\* \* Education and Family. \* Business and Networking. \* Entertainment and Visual Arts. \* Food and Drinks. **Items:** `string` - **`contact_email`** `string` — The contact person's email address for the event. - **`contact_name`** `string` — The contact person's name for the event. - **`description`** `string` — The description of the event. - **`end_time`** `string`, format: `date-time` — The end time of the event in UTC. The format should be \`yyyy-MM-dd\`T\`HH:mm:ssZ\`. - **`event_id`** `string` — The ID of the event. - **`event_type`** `string` — The event types as enum: \* \`CONFERENCE\` - Multi session event. \* \`SIMPLE\_EVENT\` - Single session event. \* \`RECURRING\` - Recurring session event. - **`event_url`** `string` — The default event access link. - **`host_id`** `string` — The event host(creator)'s user ID. - **`hub_id`** `string` — The ID of the event hub. - **`lobby_end_time`** `string`, format: `date-time` — The end time of the lobby in UTC. The format should be \`yyyy-MM-dd\`T\`HH:mm:ssZ\`. - **`lobby_start_time`** `string`, format: `date-time` — The start time of the lobby in UTC. The format should be \`yyyy-MM-dd\`T\`HH:mm:ssZ\`. - **`meeting_type`** `string` — The type of meeting (for single session and recurring session events): \* \`MEETING\` - Meeting. \* \`WEBINAR\` - Webinar. - **`name`** `string` — The name of the event. - **`physical_location`** `string` — The physical location of the event. This field is applicable for hybrid and in-person events only. - **`recurrence`** `object` — Information about \[recurring sessions]\(https\://marketplace.zoom.us/docs/api-reference/other-references/recurrence-object-definitions). - **`duration`** `integer` — Session duration in minutes. - **`end_date_time`** `string`, format: `date-time` — The recurring session's final ending date and time before it is canceled, in UTC format. - **`end_times`** `integer` — The number of times the recurring session will occur before it is canceled. - **`monthly_days`** `integer` — The day of the month on which the recurring monthly session occurs. The value ranges from 1 to 31. - **`monthly_week`** `integer`, possible values: `-1, 1, 2, 3, 4` — The week of the month on which a recurring session occurs: \* \`-1\` — The last week of the month. \* \`1\` — The first week. \* \`2\` — The second week. \* \`3\` — The third week. \* \`4\` — The fourth week. - **`monthly_week_day`** `integer`, possible values: `1, 2, 3, 4, 5, 6, 7` — The day of the week on which the recurring monthly session is scheduled: \* \`1\` — Sunday \* \`2\` — Monday \* \`3\` — Tuesday \* \`4\` — Wednesday \* \`5\` — Thursday \* \`6\` — Friday \* \`7\` — Saturday - **`repeat_interval`** `integer` — The session's repeat interval: \* For daily intervals, a max of \`90\` days. \* For a weekly interval, a max of \`12\` weeks. \* For monthly intervals, a max of \`3\` months. - **`type`** `integer`, possible values: `1, 2, 3` — The type of recurring session: \* \`1\` — Daily. \* \`2\` — Weekly. \* \`3\` — Monthly. - **`weekly_days`** `string` — A comma-separated list of the days of the week on which the recurring weekly session occurs: \* \`1\` — Sunday \* \`2\` — Monday \* \`3\` — Tuesday \* \`4\` — Wednesday \* \`5\` — Thursday \* \`6\` — Friday \* \`7\` — Saturday - **`start_time`** `string`, format: `date-time` — The start time of the event in UTC. The format should be \`yyyy-MM-dd\`T\`HH:mm:ssZ\`. - **`status`** `string` — The event status options: \* \`PUBLISHED\` - Published event. \* \`DRAFT\` - Draft event. - **`tagline`** `string` — This field displays under the event detail page image. - **`tags`** `array` — The tags for the event. **Items:** `string` - **`timezone`** `string` — The timezone of the event. **Example:** ```json { "event_id": "234kj2h34kljgh23lkhj3", "name": "OpenAPI Conference Name", "description": "This event was created with the OpenAPI.", "timezone": "America/Indianapolis", "event_type": "CONFERENCE", "recurrence": { "type": 1, "repeat_interval": 1, "weekly_days": "", "monthly_days": 1, "monthly_week_day": 1, "end_times": 1, "end_date_time": "", "monthly_week": -1, "duration": 1 }, "access_level": "PRIVATE_RESTRICTED", "meeting_type": "MEETING", "categories": [ "Food and Drinks" ], "tags": [ "Event tag1" ], "calendar": [ { "start_time": "2022-06-03T20:51:00Z", "end_time": "2022-06-03T20:51:00Z" } ], "status": "PUBLISHED", "hub_id": "23asdfasdf3asdf", "host_id": "XMgGb1i6Qlah8mn3e5GYMX", "start_time": "2022-06-03T20:51:00Z", "end_time": "2022-06-03T20:51:00Z", "contact_name": "user contact name", "contact_email": "user@zoom.us", "lobby_start_time": "2022-06-03T20:51:00Z", "lobby_end_time": "2022-06-03T20:51:00Z", "event_url": "www.example.com/zoomEvents", "blocked_countries": [ "US" ], "attendance_type": "hybrid", "tagline": "Unlocking Innovation: Join Us for the Day of Insipiration and Insight!" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request Invalid Request. ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2002\` \
Event not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Delete an event - **Method:** `DELETE` - **Path:** `/zoom_events/events/{eventId}` - **Tags:** Events Delete a draft event. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus or Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_basic:write`,`zoom_events_basic:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:delete:event`,`zoom_events:delete:event:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` Event deleted successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request Invalid Request. ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2002\` \
Event not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update an event - **Method:** `PATCH` - **Path:** `/zoom_events/events/{eventId}` - **Tags:** Events Updates an event. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus / Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_basic:write`,`zoom_events_basic:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:update:event`,`zoom_events:update:event:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`access_level`** `string` — The type of access level: \* \`PRIVATE\_UNRESTRICTED\` \— Private and unrestricted. \* \`PRIVATE\_RESTRICTED\` \— Private and restricted. - **`attendance_type`** `string`, possible values: `"virtual", "in-person", "hybrid"` — The type of attendee experience for the event: \* \`VIRTUAL\` \— virtual attendees only. \* \`IN-PERSON\` \— in-person attendees only. \* \`HYBRID\` \— both in-person and virtual attendees. - **`blocked_countries`** `array` **Items:** `string` — The blocked countries for the event. \[country's code]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists/#countries). - **`calendar`** `array` — The start and end time of the event in UTC. The format should be \`yyyy-MM-dd\`T\`HH:mm:ssZ\`. **Items:** - **`end_time`** `string`, format: `date-time` — The start time of the event in UTC. - **`start_time`** `string`, format: `date-time` — The start time of the event in UTC. - **`categories`** `array` — The category of the event. \*\*Example:\*\* \* Education and Family. \* Business and Networking. \* Entertainment and Visual Arts. \* Food and Drinks. **Items:** `string` - **`contact_name`** `string` — The contact name for the event. - **`description`** `string` — The description of the event. - **`end_time`** `string`, format: `date-time` — The end time of the event in UTC. The format should be \`yyyy-MM-dd\`T\`HH:mm:ssZ\` this is a read only field. - **`event_type`** `string`, possible values: `"SIMPLE_EVENT", "CONFERENCE", "RECURRING"` — The event types as enum: \* \`CONFERENCE\` \— Multi session events. \* \`SIMPLE\_EVENT\` \— Single session event. \* \`RECURRING\` \— Recurring Sessions event. - **`hub_id`** `string` — The ID of the Event Hub. - **`lobby_end_time`** `string`, format: `date-time` — The end time of the lobby in UTC. The format should be \`yyyy-MM-dd\`T\`HH:mm:ssZ\`. - **`lobby_start_time`** `string`, format: `date-time` — The start time of the lobby in UTC. The format should be \`yyyy-MM-dd\`T\`HH:mm:ssZ\`. - **`meeting_type`** `string` — \*This value is required only for single session event: \`MEETING\`. \* \`WEBINAR\` - Webinar. Use session API to update the meeting type. - **`name`** `string` — The name of the event. - **`physical_location`** `string` — The physical location of the event. This field is applicable for hybrid and in-person events only. - **`recurrence`** `object` — The information about \[recurring sessions]\(https\://marketplace.zoom.us/docs/api-reference/other-references/recurrence-object-definitions). - **`duration`** `integer` — Session duration in minutes. - **`end_date_time`** `string`, format: `date-time` — The recurring session's final ending date and time before it is canceled, in UTC format. - **`end_times`** `integer` — The number of times the recurring session will occur before it is canceled. - **`monthly_days`** `integer` — The day of the month on which the recurring monthly session occurs. The value ranges from 1 to 31. - **`monthly_week`** `integer`, possible values: `-1, 1, 2, 3, 4` — The week of the month on which a recurring session occurs: \* \`-1\` — The last week of the month. \* \`1\` — The first week. \* \`2\` — The second week. \* \`3\` — The third week. \* \`4\` — The fourth week. - **`monthly_week_day`** `integer`, possible values: `1, 2, 3, 4, 5, 6, 7` — The day of the week on which the recurring monthly session is scheduled: \* \`1\` — Sunday \* \`2\` — Monday \* \`3\` — Tuesday \* \`4\` — Wednesday \* \`5\` — Thursday \* \`6\` — Friday \* \`7\` — Saturday - **`repeat_interval`** `integer` — The session's repeat interval: \* For daily intervals, a max of \`90\` days. \* For a weekly interval, a max of \`12\` weeks. \* For monthly intervals, a max of \`3\` months. - **`type`** `integer`, possible values: `1, 2, 3` — The type of recurring session: \* \`1\` — Daily. \* \`2\` — Weekly. \* \`3\` — Monthly. - **`weekly_days`** `string` — A comma-separated list of the days of the week on which the recurring weekly session occurs: \* \`1\` — Sunday \* \`2\` — Monday \* \`3\` — Tuesday \* \`4\` — Wednesday \* \`5\` — Thursday \* \`6\` — Friday \* \`7\` — Saturday - **`start_time`** `string`, format: `date-time` — The start time of the event in UTC. The format should be \`yyyy-MM-dd\`T\`HH:mm:ssZ\` this is a read only field. - **`tagline`** `string` — This field displays under the event detail page image. - **`tags`** `array` — The tags for the event. **Items:** `string` - **`timezone`** `string` — The timezone of the event. For a list of supported timezones and their formats, see our \[timezone list]\(https\://developers.zoom.us/docs/api/rest/other-references/abbreviation-lists/#timezones). **Example:** ```json { "name": "OpenAPI Conference Name", "description": "This event was created with the OpenAPI", "timezone": "America/Indianapolis", "event_type": "CONFERENCE", "recurrence": { "type": 3, "repeat_interval": 2, "weekly_days": "2", "monthly_days": 3, "monthly_week_day": 1, "end_times": 3, "end_date_time": "2022-06-03T20:51:00Z", "monthly_week": 3, "duration": 30 }, "access_level": "PRIVATE_RESTRICTED", "categories": [ "Food and Drinks" ], "tags": [ "Event tag1" ], "calendar": [ { "start_time": "2022-06-28T20:00:00Z", "end_time": "2022-06-30T20:00:00Z" } ], "hub_id": "23asdfasdf3asdf", "contact_name": "user contact name", "lobby_start_time": "2022-06-03T20:51:00Z", "lobby_end_time": "2022-06-03T20:51:00Z", "blocked_countries": [ "US" ], "attendance_type": "hybrid", "tagline": "Unlocking Innovation: Join Us for the Day of Insipiration and Insight!" } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` Event updated successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request Invalid request. \*\*Error Code:\*\* \`260210\` \
Past and cancelled events not editable. \
\*\*Error Code:\*\* \`260210\` \
Past and cancelled events not editable. \
##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2002\` \
Event not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Event actions - **Method:** `POST` - **Path:** `/zoom_events/events/{eventId}/event_actions` - **Tags:** Events Updates the event actions that the host performs for an event. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus / Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_basic:write`,`zoom_events_basic:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:write:event`,`zoom_events:write:event:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`cancel_message`** `string` — The cancellation message. This field is mandatory if the event has any registrants. - **`duplicate_event`** `object` — This field contains duplicated event configuration. It is only required when the operation is duplicate. - **`name`** `string` — The name of event that have duplicate events. - **`start_time`** `string`, format: `date-time` — The start time of the duplicated event in UTC. - **`timezone`** `string` — The timezone of the duplicated event. For a list of supported timezones and their formats, see our \[timezone list]\(https\://developers.zoom.us/docs/api/rest/other-references/abbreviation-lists/#timezones). - **`operation`** `string`, possible values: `"publish", "duplicate", "cancel"` — The host actions for the event. \* \`Publish\` \— Publish the event. \* \`Duplicate\` \— Duplicate existing event. \* \`Cancel\` \— Cancel the published event. **Example:** ```json { "operation": "publish", "cancel_message": "This event is canceled due to conflict with other events.", "duplicate_event": { "name": "OpenAPI Conference Name", "start_time": "2024-07-28T13:00:00Z", "timezone": "America/Indianapolis" } } ``` #### Responses ##### Status: 201 The event operation processed successfully. ###### Content-Type: application/json - **`event_id`** `string` — The ID of the event will return a new duplicated event ID, if the operation is a duplicate event. - **`status`** `string`, possible values: `"duplicated", "published", "cancelled"` — Status of the event operation. \*\`Duplicated\` \— Duplicated the event from source event. \*\`Published\` \— Event successfully published. \*\`Cancelled\` \— Event successfully cancelled. **Example:** ```json { "status": "Duplicated", "event_id": "kNqLPC6hSFiZ9NpgjA549w" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`1001\` \
Invalid event ID. \
\*\*Error Code:\*\* \`1002\` \
Invalid duplicated event name. \
\*\*Error Code:\*\* \`1002\` \
Invalid duplicated event start time. \
\*\*Error Code:\*\* \`1003\` \
Invalid duplicate event timezone. \
##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2002\` \
Event not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List exhibitors - **Method:** `GET` - **Path:** `/zoom_events/events/{eventId}/exhibitors` - **Tags:** Exhibitors Lists all exhibitors associated with an event. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus or Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_exhibitors:read:admin`,`zoom_events_exhibitors:read` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:read:list_exhibitors`,`zoom_events:read:list_exhibitors:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` A list of exhibitors. ###### Content-Type: application/json - **`exhibitors`** `array` — The list of exhibitors for the event. **Items:** - **`associated_sessions`** `array` — The sessions associated with the exhibitor or sponsor. The value is an array of sessionIds. **Items:** `string` - **`contact_email`** `string` — The contact's email address. - **`contact_name`** `string` — The contact's full name. - **`description`** `string` — The exhibitor's description. - **`exhibitor_id`** `string` — The exhibitors's ID. - **`facebook_url`** `string` — The link to the Facebook page. - **`instagram_url`** `string` — The link to the Instagram profile. - **`is_sponsor`** `boolean` — The sponsorer's flag. It will be set to true by default. - **`linkedin_url`** `string` — The link to the LinkedIn profile. - **`name`** `string` — The exhibitors's name. - **`privacy_policy`** `string` — The privacy policy link. - **`tier_id`** `string` — The sponsor tier ID for a particular event. This field only applies to a sponsor. - **`twitter_url`** `string` — The link to the Twitter profile. - **`website`** `string` — The website URL. - **`youtube_url`** `string` — The link to the YouTube profile. - **`total_records`** `number` — The total number of records. **Example:** ```json { "total_records": 1, "exhibitors": [ { "exhibitor_id": "kNqLPC6hSFiZ9NpgjA549w", "name": "Fletchie Doe", "is_sponsor": true, "tier_id": "4fgRIOXjQGmoH6raAzJf8g", "description": "", "associated_sessions": [ "[QnjbUW7ORu2sjvjNfjf_zQ, iERy5vUPRW259kk9l0zNbQ]" ], "contact_name": "John Doe", "contact_email": "abc.def@email.com", "website": "https://mywebsite.com/example", "privacy_policy": "https://mywebsite.com/example", "linkedin_url": "https://linkedin.com/example", "twitter_url": "https://twitter.com/example", "youtube_url": "https://youtube.com/example", "instagram_url": "https://instagram.com/profile", "facebook_url": "https://facebook.com/profile" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`1006\` \
Operation is not supported for this event type. \
##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`3011\` \
User is not a host. \
\*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/). ### Create an exhibitor - **Method:** `POST` - **Path:** `/zoom_events/events/{eventId}/exhibitors` - **Tags:** Exhibitors Creates an exhibitor for a multi-session and conference-type event. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus / Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_exhibitors:write`,`zoom_events_exhibitors:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:write:exhibitor`,`zoom_events:write:exhibitor:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`contact_email` (required)** `string` — The contact's email address. - **`contact_name` (required)** `string` — The contact's full name. - **`is_sponsor` (required)** `boolean` — The sponsorer's flag. It will be set to true by default. - **`name` (required)** `string` — The exhibitors's name. - **`tier_id` (required)** `string` — The sponsor tier ID for a particular event. This field only applies to a sponsor. - **`associated_sessions`** `array` — The sessions associated with the exhibitor or sponsor. The value is an array of \`sessionIds\`. **Items:** `string` - **`description`** `string` — The exhibitor's description. - **`facebook_url`** `string` — The link to the Facebook page. - **`instagram_url`** `string` — The link to the Instagram profile. - **`linkedin_url`** `string` — The link to the LinkedIn profile. - **`privacy_policy`** `string` — The privacy policy link. - **`twitter_url`** `string` — The link to the Twitter profile. - **`website`** `string` — The website's URL. - **`youtube_url`** `string` — The link to the YouTube profile. **Example:** ```json { "name": "Fletchie Doe", "is_sponsor": true, "tier_id": "4fgRIOXjQGmoH6raAzJf8g", "description": "", "associated_sessions": [ "[QnjbUW7ORu2sjvjNfjf_zQ, iERy5vUPRW259kk9l0zNbQ]" ], "contact_name": "John Doe", "contact_email": "abc.def@email.com", "website": "https://mywebsite.com/example", "privacy_policy": "https://mywebsite.com/example", "linkedin_url": "https://linkedin.com/example", "twitter_url": "https://twitter.com/example", "youtube_url": "https://youtube.com/example", "instagram_url": "https://instagram.com/profile", "facebook_url": "https://facebook.com/profile" } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` Speakers returned. ###### Content-Type: application/json - **`associated_sessions`** `array` — The sessions associated with the exhibitor or sponsor. The value is an array of sessionIds. **Items:** `string` - **`contact_email`** `string` — The contact's email address. - **`contact_name`** `string` — The contact's full name. - **`description`** `string` — The exhibitor's description. - **`exhibitor_id`** `string` — The exhibitors's ID. - **`facebook_url`** `string` — The link to the Facebook page. - **`instagram_url`** `string` — The link to the Instagram profile. - **`is_sponsor`** `boolean` — The sponsorer's flag. It will be set to true by default. - **`linkedin_url`** `string` — The link to the LinkedIn profile. - **`name`** `string` — The exhibitors's name. - **`privacy_policy`** `string` — The privacy policy link. - **`tier_id`** `string` — The sponsor tier ID for a particular event. This field only applies to a sponsor. - **`twitter_url`** `string` — The link to the Twitter profile. - **`website`** `string` — The website's URL. - **`youtube_url`** `string` — The link to the YouTube profile. **Example:** ```json { "exhibitor_id": "kNqLPC6hSFiZ9NpgjA549w", "name": "John Doe", "is_sponsor": true, "tier_id": "4fgRIOXjQGmoH6raAzJf8g", "description": "", "associated_sessions": [ "[QnjbUW7ORu2sjvjNfjf_zQ, iERy5vUPRW259kk9l0zNbQ]" ], "contact_name": "John Doe", "contact_email": "abc.def@email.com", "website": "https://mywebsite.com/example", "privacy_policy": "https://mywebsite.com/example", "linkedin_url": "https://linkedin.com/example", "twitter_url": "https://twitter.com/example", "youtube_url": "https://youtube.com/example", "instagram_url": "https://instagram.com/profile", "facebook_url": "https://facebook.com/profile" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`1006\` \
Operation is not supported for this event type. \
\*\*Error Code:\*\* \`1020\` \
Exhibitor ID is invalid. \
##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`3011\` \
User is not a host. \
\*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2006\` \
Exhibitor not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/). ### Get an exhibitor - **Method:** `GET` - **Path:** `/zoom_events/events/{eventId}/exhibitors/{exhibitorId}` - **Tags:** Exhibitors Returns the exhibitor information of a specified event. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus or Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_exhibitors:read`,`zoom_events_exhibitors:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:read:exhibitor`,`zoom_events:read:exhibitor:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Event returned. ###### Content-Type: application/json - **`associated_sessions`** `array` — The sessions associated with the exhibitor or sponsor. The value is an array of \`sessionIds\`. **Items:** `string` - **`contact_email`** `string` — The contact's email address. - **`contact_name`** `string` — The contact's full name. - **`description`** `string` — The exhibitor's description. - **`exhibitor_id`** `string` — The exhibitors's ID. - **`facebook_url`** `string` — The link to the Facebook page. - **`instagram_url`** `string` — The link to the Instagram profile. - **`is_sponsor`** `boolean` — A sponsorer's flag. It will be set to true by default. - **`linkedin_url`** `string` — The link to the LinkedIn profile. - **`name`** `string` — The exhibitors's name. - **`privacy_policy`** `string` — The privacy policy link. - **`tier_id`** `string` — The sponsor tier ID for a particular event. This field only applies to a sponsor. - **`twitter_url`** `string` — The link to the Twitter profile. - **`website`** `string` — The website's URL. - **`youtube_url`** `string` — The link to the YouTube profile. **Example:** ```json { "exhibitor_id": "kNqLPC6hSFiZ9NpgjA549w", "name": "Fletchie Doe", "is_sponsor": true, "tier_id": "4fgRIOXjQGmoH6raAzJf8g", "description": "", "associated_sessions": [ "[QnjbUW7ORu2sjvjNfjf_zQ, iERy5vUPRW259kk9l0zNbQ]" ], "contact_name": "John Doe", "contact_email": "abc.def@email.com", "website": "https://mywebsite.com/example", "privacy_policy": "https://mywebsite.com/example", "linkedin_url": "https://linkedin.com/example", "twitter_url": "https://twitter.com/example", "youtube_url": "https://youtube.com/example", "instagram_url": "https://instagram.com/profile", "facebook_url": "https://facebook.com/profile" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`1006\` \
Operation is not supported for this event type. \
\*\*Error Code:\*\* \`1020\` \
Exhibitor ID is invalid. \
##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`3011\` \
User is not a host. \
\*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2006\` \
Exhibitor not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/). ### Delete an exhibitor - **Method:** `DELETE` - **Path:** `/zoom_events/events/{eventId}/exhibitors/{exhibitorId}` - **Tags:** Exhibitors Deletes an exhibitor. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus / Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_exhibitors:write`,`zoom_events_exhibitors:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:delete:exhibitor`,`zoom_events:delete:exhibitor:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` Exhibitor deleted successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`1006\` \
Operation is not supported for this event type. \
\*\*Error Code:\*\* \`1020\` \
Exhibitor ID is invalid. \
##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`3011\` \
User is not a host. \
\*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2006\` \
Exhibitor not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update exhibitor for an event - **Method:** `PATCH` - **Path:** `/zoom_events/events/{eventId}/exhibitors/{exhibitorId}` - **Tags:** Exhibitors Updates the exhibitor for an event ID. This operation is only allowed for a multi-session event type. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus or Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_exhibitors:write`,`zoom_events_exhibitors:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:update:exhibitor`,`zoom_events:update:exhibitor:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`associated_sessions`** `array` — The sessions associated the exhibitor or sponsorer. The value is an array of \`sessionIds\`. **Items:** `string` - **`contact_email`** `string` — The contact email address. - **`contact_name`** `string` — The full name of the contact. - **`description`** `string` — The exhibitor's description. - **`facebook_url`** `string` — The link to the Facebook page. - **`instagram_url`** `string` — The link to the Instagram profile. - **`is_sponsor`** `boolean` — The sponsor's flag. It will be set to true by default. - **`linkedin_url`** `string` — The link to the LinkedIn profile. - **`name`** `string` — The exhibitors's name. - **`privacy_policy`** `string` — The privacy policy link. - **`sponsor_tier`** `string` — The sponsor tier ID for a particular event. This field only applies to sponsor. - **`twitter_url`** `string` — The link to the Twitter profile. - **`website`** `string` — The website URL. - **`youtube_url`** `string` — The link to the YouTube profile. **Example:** ```json { "name": "Exhibitor name", "is_sponsor": true, "sponsor_tier": "4fgRIOXjQGmoH6raAzJf8g", "description": "", "associated_sessions": [ "[QnjbUW7ORu2sjvjNfjf_zQ,iERy5vUPRW259kk9l0zNbQ]" ], "contact_name": "John Doe", "contact_email": "abc.def@email.com", "website": "https://mywebsite.com/example", "privacy_policy": "https://mywebsite.com/example", "linkedin_url": "https://linkedin.com/example", "twitter_url": "https://twitter.com/example", "youtube_url": "https://youtube.com/example", "instagram_url": "https://instagram.com/profile", "facebook_url": "https://facebook.com/profile" } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` Successfully updated the exhibitor. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`1006\` \
Operation is not supported for this event type. \
\*\*Error Code:\*\* \`1020\` \
Exhibitor ID is invalid. \
##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`3011\` \
User is not a host. \
\*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2006\` \
Exhibitor not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/). ### List sponsor tiers - **Method:** `GET` - **Path:** `/zoom_events/events/{eventId}/sponsor_tiers` - **Tags:** Exhibitors Lists all sponsor tiers associated with an event. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus or Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_exhibitors:read:admin`,`zoom_events_exhibitors:read` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:read:list_sponsor_tiers`,`zoom_events:read:list_sponsor_tiers:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` A list of sponsor\_tiers. ###### Content-Type: application/json - **`sponsor_tiers`** `array` — The list of sponsor tiers for the event. **Items:** - **`description`** `string` — The sponsor tier description. - **`name`** `string` — The sponsor tier name after update. - **`tier_id`** `string` — The sponsor tier ID. - **`total_records`** `number` — The total number of records. **Example:** ```json { "total_records": 1, "sponsor_tiers": [ { "tier_id": "CvY9Azb0QwGid19eI1IlyQ", "name": "Updated Sponsor Tier name", "description": "Platinum Sponsor Tier" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`1006\` \
Operation is not supported for this event type. \
##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`3011\` \
User is not a host. \
\*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/). ### Upload events file - **Method:** `POST` - **Path:** `/zoom_events/files` - **Tags:** Files Uploads files to Zoom Webinars Plus & Events. Use this API to upload video recordings and supporting assets for Zoom Events Video Management (ZE VOD). When `file_type=recording`, the file is uploaded as a video in a single step and a `video_id` is returned. For other `file_type` values, the API uploads supporting files (e.g., captions, thumbnails, metadata) and returns a `file_id`. These files must be attached to a video in a second step using the [Update Video Metadata API](/docs/api/events/#tag/videos/patch/zoom_events/videos/%7BvideoId%7D/metadata). **Note:** - These file upload Open APIs are currently limited to supporting video recordings and their associated metadata files only (supported formats: `.vtt`, `.jpeg/jpg`, `.png`, `.pdf`, `.txt`, `.ppt`, `.doc`, `.csv`, `xls`). They do not support the ZE content library or other file upload use cases on the ZE platform at this time, though support for additional use cases may be added in the future. - Base URL: `https://fileapi.zoom.us/v2/`. - The caller must support HTTP 30x redirects. - The caller must retain the Authorization header when redirected to a different hostname. - Supported video formats: `.mp4`, `.webm`. - Supported transcription/captioning file formats: `.vtt`. - When your object size reaches 2 GB, you should use multipart uploads instead of uploading the object in a single operation. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus / Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_file:write`,`zoom_events_file:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:write:file_upload`,`zoom_events:write:file_upload:admin` #### Request Body ##### Content-Type: multipart/form-data - **`file` (required)** `string` — The upload file, in binary format. You can only send a maximum of two gigabytes. - **`file_type`** `string`, possible values: `"recording", "video", "other"` — Specifies the category of file being uploaded. If no value is provided then it defaults to \`recording\` type. \* \`recording\` — Recording video content file used for on-demand video channels content in Zoom Events video management feature (e.g., .mp4, .webm). \* \`video\` — Regular video file used in contexts such as speaker biography or event logo etc (e.g., .mp4, .mov, .mkv). \* \`other\` - Any other uncategorized file type (catch-all). - **`hub_id`** `string` — The hub ID. This is needed when uploading \`recording\` video files for Zoom Events video management feature (ZE VOD) **Example:** ```json { "file": "wetrqwetqwertsadfasdgsfdgdfgsdfgsdfgdsf...", "hub_id": "kUoe5oPTRvGTbcfJmNwsnw", "file_type": "recording" } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` File successfully uploaded. ###### Content-Type: application/json - **`file_id`** `string` — The unique identifier for the uploaded file. This is a temporary ID, valid for 7 days from the time of upload. It is primarily used as a reference in other APIs, such as the Video Metadata API, where a file\_id is required to associate files (e.g., thumbnails, transcripts, or resources) with a video. - **`video_id`** `string` — Video recording ID. If the uploaded file is of type \`recording\` then this field is returned. **Example:** ```json { "file_id": "xBvggqyjQUal6TecwMlYwE", "video_id": "xBvggqyjQUal6TecwMlYwE" } ``` ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/). ### Upload events multipart files - **Method:** `POST` - **Path:** `/zoom_events/files/multipart` - **Tags:** Files Uploads a multipart file. **Note:** - The base URL for this API is `https://fileapi.zoom.us/v2/`. - The caller must support HTTP 30x redirects. - The caller must retain the authorization header when redirected to a different hostname. - Once initiated, the multipart upload must complete within 7 days. - In general, when your object size reaches 2 GB, you should use multipart uploads instead of uploading the object in a single operation. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus / Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_file:write:admin`,`zoom_events_file:write` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:write:file_upload`,`zoom_events:write:file_upload:admin` #### Request Body ##### Content-Type: multipart/form-data - **`file` (required)** `string` — The upload file, in binary format. Each part must be at most 100 MB in size, and at least 5 MB in size, except the last part. **Example:** ```json { "file": "Vm0wd2QyUXlVWGxWV0d4V1YwZDRWMVl3WkRSV01WbDNXa1JTVjAxV2JETlhhMUpUVmpBeFYySkVUbGhoTVVwVVZtcEJlRll5U2tWVWJHaG9UVlZ3VlZadGNFSmxSbGw1VTJ0V1ZXSkhhRzlVVmxaM1ZsWmFkR05GU214U2JHdzFWVEowVjFaWFNraGhSemxWVm14YU0xWnNXbUZrUjA1R1UyMTRVMkpIZHpGV1ZFb3dWakZhV0ZOcmFHaFNlbXhXVm0xNFlVMHhXbk5YYlVacVZtdGFNRlZ0ZUZOVWJVcEdZMFZ3VjJKVVJYZFpWRVpyVTBaT2NscEhjRk5XUjNob1ZtMXdUMVV4U1hoalJscFlZbFZhY2xWcVFURlNNVlY1VFZSU1ZrMXJjRWxhU0hCSFZqRmFSbUl6WkZkaGExcG9WakJhVDJOdFJraGhSazVzWWxob1dGWnRNWGRVTVZGM1RVaG9hbEpzY0ZsWmJGWmhZMnhXY1ZGVVJsTk5XRUpIVmpKNFQxWlhTa2RqUm14aFUwaENTRlpxUm1GU2JVbDZXa1prYUdFeGNHOVdha0poVkRKT2RGSnJhR2hTYXpWeldXeG9iMWRHV25STlNHUnNVakJzTkZVeWRHdFhSMHBJVld4c1dtSkdXbWhaTW5oWFkxWktkRkpzVWxOaVIzY3hWa1phVTFVeFduSk5XRXBxVWxkNGFGVXdhRU5UUmxweFUydGFiRlpzV2xwWGExcDNZa2RGZWxGcmJGaFhTRUpJVmtSS1UxWXhXblZWYldoVFlYcFdlbGRYZUc5aU1XUkhWMjVTVGxkSFVsWlVWbHBIVFRGU1ZtRkhPV2hpUlhCNldUQmFjMWR0U2tkWGJXaGFUVzVvV0ZreFdrZFdWa3B6VkdzMVYwMVZiekZXYlhCTFRrWlJlRmRzYUZSaVJuQlpWbXRXZDFZeGJISlhhM1JVVW14d2VGVnRNVWRWTWtwV1lrUmFXR0V4Y0hKWlZXUkdaVWRPU0U5V1pHaGhNSEJ2Vm10U1MxUXlVa2RUYmtwb1VqSm9WRmxZY0ZkbGJHUllaVWM1YVUxWFVraFdNalZUVkd4a1NGVnNXbFZXYkhCSVZGUkdVMVp0UmtoUFYyaHBVbGhDTmxkVVFtRmpNV1IwVTJ0a1dHSlhhR0ZVVnpWdlYwWnJlRmRyWkZkV2EzQjZWa2R6TVZZd01WWmlla1pYWWxoQ1MxUldaRVpsUm1SWldrVTFWMVpzY0ZWWFZsSkhaREZaZUdKSVNsaGhNMUpWVlcxNGQyVkdWblJOVldSV1RXdHdWMWxyVW1GWFIwVjRZMGhLV2xaWFVrZGFWV1JQVTBVNVYxcEhhR2hOU0VKMlZtMTBVMU14VVhsVmEyUlVZbXR3YjFWcVNtOVdSbXhaWTBaa2JHSkhVbGxhVldNMVlWVXhXRlZyYUZkTmFsWlVWa2Q0VDFOSFJrZFJiRnBwVmtWVmQxWnRjRWRWTVZwMFVtdG9VRlp0YUZSVVZXaERUbFphU0dWSFJtcE5WMUl3VlRKMGExZEhTbGhoUjBaVlZteHdNMWxWV25kU2JIQkhWR3hTVTJFelFqVldSM2hoVkRKR1YxTnVVbEJXUlRWWVZGYzFiMWRHWkZkWGJFcHNVbTFTZWxsVldsTmhWa3AxVVc1b1YxWXphSEpXVkVaelZqRldjMWRzYUdsV1ZuQlFWa1phWVdReVZrZFdXR3hyVWtWS1dGUldXbmRsVm10M1YyNWtXRkl3VmpSWk1HaExWMnhhV0ZWclpHRldWMUpRVldwS1MxSXlSa2hoUlRWWFltdEtNbFp0TVRCVk1VMTRWVmhzVm1FeVVsWlpiWFIzWVVaV2RHVkZkR3BTYkhCNFZUSXdOV0pIU2toVmJHeGhWbGROTVZsV1ZYaFhSbFp5WVVaa1RtRnNXbFZXYTJRMFdWWktjMVJ1VG1oU2JGcFlXV3RhV2sxR1draGtSMFphVm0xU1NWWlhkRzloTVVwMFZXczVWMkZyV2t4Vk1uaHJWakZhZEZKdGNFNVdNVWwzVmxSS01HSXlSa2RUYms1VVlrZG9WbFpzV25kTk1WcHlWMjFHYWxack5YbFhhMXBQWVZaS2NtTkVXbGRoTWs0MFdYcEdWbVZXVG5WVGJGSnBWbFp3V1ZaR1l6RmlNV1JIWWtoR1ZHRXhjSE5WYlRGVFYyeGtjbFpVUmxkTlZuQjZXVEJhVjFkR1duTlRhMmhoVWtWYVlWcFZaRXRUVms1ellVZG9UazFWY0ZaV2JHTjRUa2RSZVZaclpGZGlSMUp2Vlc1d2MySXhVbGRYYm1Sc1lrWnNOVmt3Vm10V01ERkZVbXBHV2xaWGFFeFdNbmhoVjBaV2NscEhSbGROTW1oSlYxUkplRk14U1hsU2EyUm9VbXhLVkZac2FFTlRNVnAwVFZSQ1ZrMVZNVFJXYkdodlYwWmtTR0ZHYkZwaVdHaG9WbXBHYzJNeGNFaFBWbVJUWWxob1lWZFVRbUZoTWtwSVUydG9WbUpIZUdoV2JHUk9UVlpzVjFaWWFGaFNiRnA1V1ZWYWExUnRSbk5YYkZaWFlUSlJNRmxVUms5U01WcDFWR3hvYVZKc2NGbFhWM1J2VVRGT1YxZHJaRlpoTWxKWFZGWmFkMDFHVm5Sa1J6bFdVbXhzTlZsVmFFTldiVXBJWVVWU1ZXSllhSEpXYkZwSFpFWktkR05GTlZkTlZXd3pWbXhTUzAxSFJYaGFSV2hVWWtkb2IxVnFRbUZXYkZwMVkwWmthMkpHYkROV01qVkxZa1pLZEZWdWJGaGhNWEJ5Vm1wS1JtVnNSbkZYYkdSb1RXeEpNbFpHV21GWGJWRjNUVlprV0dKWGVITlpWRVozVjFaa1dHVkhPVkpOVmtwSVZsYzFTMWRIU2taalNFNVdZbFJHVkZwWGVITldiR1J6Vkcxb1YyRXpRWGhXVm1NeFlqRlplRmRZY0doVFJYQllWbXRXWVdWc1duRlNiR1JxVFZkU2VsbFZaSE5XTVZwMVVXeEdWMkV4Y0doWFZtUlNaVlphY2xwR1pGaFNNMmg1VmxkMFYxTXhaRWRWYkdSWVltMVNjMVp0TVRCTk1WbDVUbGQwV0ZKcmJETldiWEJUVjJzeFNHRkZlRmROYm1ob1ZqQmFWMk5zY0VoU2JHUlhUVlZ3VWxac1pIZFRNVTE0VTFoc1UyRXlhRzlWYkZKWFYwWnNkR1JGZEU1aVJuQXdWRlpTUTFack1WWk5WRkpYVm0xb2VsWnNXbXRUUjFaSFYyeHdWMUpXYjNwWFZsWmhWakpPVjFSdVVsQldiVkpVV1d0V2QxZHNXa2hsUjNCUFZqQldOVlV5ZEd0aGJFcFlZVVpvV21KR1NrTlVWbHBoVjBkTmVtRkdhRk5pUm5BMlYxWldZV0V4VW5OWFdHeG9Va1Z3V0ZSV1duZGhSbFkyVW10d2JGSnNTakZXYlhoTFlWWktjMk5HYkZkU2JFcElWWHBCTVdNeFpISmFSbHBvVFd4S1dGWkdXbUZrTURGSFZtNVNhMUo2YkZkVmJYaDNUVVpzVmxkc1RsZFdiSEJaV1ZWV1UxWnJNWFZoUjJoYVpXdGFNMVZzV2xka1IwNUdUbFprVGxaWGQzcFdiWGhUVXpBeFNGTlliRk5oTWxKVldXMXpNVlpXYkhKYVJ6bFhZa1p3ZWxZeU5XdFVhekZYWTBoc1YwMXFSa2haVjNoaFkyMU9SVkZ0UmxOV01VWXpWbTF3UzFNeVRuTlVia3BvVW0xU1ZGUlVTbTlpTVZweVZXdDBVMDFXYkRSV1J6VlhWbTFLUmxOc2FGWmlSa3BZVmpGYVlWSXhiRFpTYld4T1ZqRktTVll5ZEdGaE1XUklVMnRhYWxORk5WZFpiRkpIVmtad1dHVklUbGRpUjFKNlZrY3hiMVl5UlhwUldHaFhWbTFSTUZwRVJscGxWazV6WWtaYWFWSXlhRzlXVjNSWFdWWnNWMk5HV21GU1dGSlZWbTF6TVdWc2JGWmFSemxWWVhwR1Yxa3dXbUZXTWtwSVZHcFNWV0V5VWxOYVZscGhZMnh3UjFwSGJGTk5WWEF5Vm14ak1XUXlUWGxUV0doV1lrZFNXVmx0TVZOak1XeHlWMjVPVDFadGRETldiVEV3VmpBeFJWSnJXbFppV0VKSVZqSjRZVmRIUmtabFJtUk9ZbTFvYjFacVFtRldNazV6WTBWb1UySkhVazlVVnpGdlUyeFplRlZyY0d4U2F6RTBWVEZvYjJGc1NsaFZiV2hXWWtaS1dGWkVSbGRqTWtaR1ZHeFNUbFp1UVhkV1JscFRVVEZhY2sxV1drNVdSa3BZV1d0a2IyUnNXWGRYYlhSVVVqQmFTRmxWV25kaFZtUklZVWM1VjJKWVFraFpla3BPWlZaS2NsZHNWbWxTTVVwVlYxZDRiMkl4YkZkYVJsWlNZbFZhYjFSWGRGZE5NVkpYVjIxMGFHSkZjRWRWTWpGSFZsWmFWMk5IUm1GU1JWcDZWbXBHWVZkWFJrZGhSazVwVW01Qk1WWXhXbGRaVjBWNFZXNVNVMkpyTlZsWmExcGhWMFpzVlZOc1NrNVNiVkpZVmpKME1HRnJNVmRUYWtaWFVucEdkbFpVU2t0U01rNUhZa1prVTJKRmNFMVhWM0JIVkRGWmVGcElTbWhTTTJoVVZGVmFkMkZHV25STlNHaFdUVlZzTkZaWE5VOVhSMHBXVjJ4a1ZtSllhSHBVYkZwelZteGtkRTlXYUdsU01VcExWbFprTkdJeFduSk5WV1JxVWpKb1lWUldXbmRWUm10NFYyeGthazFYVW5sVWJGcHJWR3hhV0dRemNGZGlXR2hVVlhwQmVGTkdTbGxoUjBaVFZqSm9WbGRYZEd0aU1rbDRWbTVHVW1KVldsaFphMXAzVFVad1ZtRkhkRlZoZWtaWVdUQm9jMVl3TVhGU2EyaGFWak5vYUZreU1VOVNWa1owVW14T1YwMVZXWHBXYlRGM1V6Rk5lVlJ1VGxWaWEzQnZWVzB4VTFaR1VsVlRiVGxwVFZad2VWWlhkREJWTURGWFlrUlNWMUo2VmxoV2JURkxVbXhPYzJGR1dtbFNhM0JaVm1wR1lWbFdTWGhpUkZwVFlsZDRUMVpxUmt0VFZtUllaRWRHVjAxV1ducFhhMVp2WVVaS2MxTnNXbGRpVkVaVVZtdGFkMWRIVmtsVWJHUnBVakZLTmxaclkzaGlNVlY0VjJ0YVdHRnNjRmhXYTFaeVpVWnNjVkpzY0d4U2JWSmFXVEJhWVdGV1NYbGhSbkJYWWxSRk1GcEVSbk5XTWs1SFYyeG9hVmRHU25sV2JURXdaREpXYzFkdVVrNVhSVFZZVkZaV2MwNXNiRlpWYkdSWFRVUkdXVlpXYUd0WFJscDBWV3hPWVZac2NHaFpNbmgzVWpGd1NHSkhiRk5YUlVreFZtMTRhMDFHV1hoVVdHeFVWMGRvY0ZWdE1UUmpWbFp6V2taT2FrMVdjREJhVlZZd1lrZEtSMk5FUWxWV1ZrcFlWakJhU21ReVRrWmhSbkJPVW01Q01sWnFTbnBsUms1SVVtdGFiRkp0VWs5WmJURnZZakZhY1ZGdFJsZE5helY2V1RCV2IxVXlTa2hWYXpsVlZucEdkbFV5ZUZwbFJsWnlZMGQ0VTJGNlJUQldWRVp2WWpKR2MxTnNhRlppVjJoWFdXeG9UbVZHV1hkWGJIQnJUVlp3ZVZwRlZURmhWa3AxVVZoa1dGWkZTbGhaVkVacll6RmtXVnBHWkdoaVJYQlpWMWQwYTJJeVVuTlhXR1JZWWxoU1ZWVnFRbUZUUmxsNVpVaGthRlp0VWtsWlZXTTFWakpLVlZKVVFscGxhM0JRV1hwR2QxTldUblJrUms1T1RVVndWbFl4WkRCWlYxRjNUbFZrV0dKSGFFOVdhMVpMVkRGV2RHVklUazlTYkd3MVZHeFZOV0ZIU2taalJteGFWbFp3ZGxacVNrZGphelZYVld4a1UxWnVRalpXYlhoaFVqRmtXRkpyWkZWaVIxSnZWRlJDU2sxc1duUmtSM1JQVW0xNFdGWnNhSE5XUjBWNFkwWnNWMDFIYUVSV01GcGhZekZrZFZwR1RrNVdhMWt3Vm1wS01GUXhXblJUYTFwVVlrWndWbFpzV2tkTk1WWkhVbFJzVVZWVU1Eaz0=" } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201 or 204\` Multipart file part uploaded successfully. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/). ### Initiate and complete the multipart file upload - **Method:** `POST` - **Path:** `/zoom_events/files/multipart/upload` - **Tags:** Files Uploads files to Zoom Events using a multipart API Use this API when the file is large, typically when the size reaches 2 GB. Use this API to upload video recordings and supporting assets for Zoom Events Video Management (ZE VOD). When `file_type=recording`, the file is uploaded as a video in a single step and a `video_id` is returned. For other `file_type` values, the API uploads supporting files (e.g., captions, thumbnails, metadata) and returns a `file_id`. These files must be attached to a video in a second step using the [Update Video Metadata API](/docs/api/events/#tag/videos/patch/zoom_events/videos/%7BvideoId%7D/metadata). **Note:** - These file upload Open APIs are currently limited to supporting video recordings and their associated metadata files only (supported formats: `.vtt`, `.jpeg/jpg`, `.png`, `.pdf`, `.txt`, `.ppt`, `.doc`, `.csv`, `xls`). They do not support the ZE content library or other file upload use cases on the ZE platform at this time, though support for additional use cases may be added in the future. - The base URL for this API is `https://fileapi.zoom.us/v2/`. - The caller must support HTTP 30x redirects. - The caller must retain the authorization header when redirected to a different hostname. - Once initiated, the multipart upload must complete within 7 days. - Supported video formats: `.mp4`, `.webm`. - Supported transcription/captioning file formats: `.vtt`. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus / Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_file:write:admin`,`zoom_events_file:write` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:write:file_upload`,`zoom_events:write:file_upload:admin` #### Request Body ##### Content-Type: application/json **One of:** - **`file_name` (required)** `string` — The file name. - **`length` (required)** `integer` — The file size in bytes. - **`method` (required)** `string`, possible values: `"CreateMultipartUpload"` — The method to upload events: \* \`CreateMultipartUpload\` — Create a multipart upload. - **`file_type`** `string`, possible values: `"recording", "video", "other"` — Specifies the category of file being uploaded. If no value is provided then it defaults to \`recording\` type. \* \`recording\` — Recording video content file used for on-demand video channels content in Zoom Events video management feature (e.g., .mp4, .webm). \* \`video\` — Regular video file used in contexts such as speaker biography or event logo etc (e.g., .mp4, .mov, .mkv). \* \`other\` - Any other uncategorized file type (catch-all). - **`hub_id`** `string` — The hub ID. This is needed when uploading \`recording\` video files for Zoom Events video management feature (ZE VOD) * **`method` (required)** `string`, possible values: `"CompleteMultipartUpload"` — The method to upload events: \`CompleteMultipartUpload\` — complete a multipart upload. * **`part_count` (required)** `integer` — The total number of parts. * **`upload_id` (required)** `string` — The file upload ID. **Example:** ```json { "method": "CreateMultipartUpload", "file_name": "File name", "length": 1001, "hub_id": "kUoe5oPTRvGTbcfJmNwsnw", "file_type": "recording" } ``` #### Responses ##### Status: 200 \*\*Status Code:\*\* \`200\` Multipart upload initiated or completed successfully. ###### Content-Type: application/json **One of:** - **`upload_id`** `string` — The upload ID. Return this field if you pass the \`CreateMultipartUpload\` value for the \`method\` field. \*\*Note:\*\* Use this upload ID to associate all of the parts in the specific multipart upload. You specify this upload ID in each of your subsequent upload part requests. You also include this upload ID in the final request to complete the multipart upload request. * **`file_id`** `string` — The unique identifier for the uploaded file. This is a temporary ID, valid for 7 days from the time of upload. It is primarily used as a reference in other APIs, such as the Video Metadata API, where a file\_id is required to associate files (e.g., thumbnails, transcripts, or resources) with a video. Returns this field if you pass the \`CompleteMultipartUpload\` value for the \`method\` field. * **`video_id`** `string` — Video recording ID. If the uploaded file is of type \`recording\` then this field is returned. **Example:** ```json { "upload_id": "noNpr2pkBEv4_fTxYWDEHBsSs3pl8keRx4fPZmnyNDe.SPdodJp.3UZDaCI2xRVzkRh0xeEV6RuOrXZpJQBPutWCS424c2YnHVxVh8b9.4DNwd4VErRuD98jeJBwRCgz6rC3I4NQg5zXAtCqPFoC0g--" } ``` ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/). ### List hubs - **Method:** `GET` - **Path:** `/zoom_events/hubs` - **Tags:** Hubs Retrieves a list of event hubs. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus or Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_hubs:read`,`zoom_events_hubs:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:read:list_hubs`,`zoom_events:read:list_hubs:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` A list of hubs. ###### Content-Type: application/json - **`hubs`** `array` **Items:** - **`access_level`** `string`, possible values: `"INTERNAL", "PUBLIC"` — The access level of the hub. \* \`INTERNAL\` - internal organization \* \`PUBLIC\` - the public hub - **`auto_list_events`** `boolean` — A list of submitted hub events. - **`description`** `string` — The description of the hub. - **`hidden_hub`** `boolean` — This hub will be hidden from the Zoom Events details page and from the hub listings view for attendees. - **`hub_active`** `boolean` — This hub will be active to create the Zoom Events. - **`hub_id`** `string` — The ID of the hub. - **`landing_hub`** `boolean` — Whether this Hub is the landing Hub - **`name`** `string` — The name of the hub. - **`public_url`** `string` — The public URL of the hub. - **`total_records`** `number` — The total number of records. **Example:** ```json { "total_records": 1, "hubs": [ { "hub_id": "4uzfv3JwTeyR5QpC3PXwMg", "access_level": "PUBLIC", "name": "Example Hub Name", "description": "Test hub", "public_url": "https://example.zoom.us/myhub", "hidden_hub": true, "hub_active": true, "auto_list_events": true, "landing_hub": true } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request Invalid request. ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found Hub not found. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List hub Hosts - **Method:** `GET` - **Path:** `/zoom_events/hubs/{hubId}/hosts` - **Tags:** Hubs Retrieves a list of hub hosts. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus/Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_hubs:read:admin`,`zoom_events_hubs:read` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:read:list_hub_hosts`,`zoom_events:read:list_hub_hosts:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` A list of hub hosts. ###### Content-Type: application/json - **`hosts`** `array` **Items:** - **`email`** `string` — The email address of the hub host. - **`host_user_id`** `string` — The user ID of the hub host. - **`next_page_token`** `string` — The next page token. - **`total_records`** `number` — The total number of records. **Example:** ```json { "total_records": 1, "next_page_token": "yqT59YnBSHqvDdNnkeHQsA", "hosts": [ { "host_user_id": "4uzfv3JwTeyR5QpC3PXwMg", "email": "host@example.com" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2001\` \
Hub not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Creates a new hub host - **Method:** `POST` - **Path:** `/zoom_events/hubs/{hubId}/hosts` - **Tags:** Hubs Add a host to the hub. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus or Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_hub:write`,`zoom_events_hub:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:write:hub_host`,`zoom_events:write:hub_host:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`email`** `string` — The email address of the host. **Example:** ```json { "email": "email@example.com" } ``` #### Responses ##### Status: 201 The hub host created successfully. ###### Content-Type: application/json - **`host_user_id`** `string` — The hub host ID. **Example:** ```json { "host_user_id": "di78aUD6RwmuRQY3WlK6VA" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2001\` \
Hub not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Remove hub host - **Method:** `DELETE` - **Path:** `/zoom_events/hubs/{hubId}/hosts/{hostUserId}` - **Tags:** Hubs Delete a host from the hub. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus or Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_hub:write`,`zoom_events_hub:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:delete:hub_host`,`zoom_events:delete:hub_host:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` The hub host deleted successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2001\` \
Hub not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List hub videos - **Method:** `GET` - **Path:** `/zoom_events/hubs/{hubId}/videos` - **Tags:** Hubs Lists the video/recording resources of a hub. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus or Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_hubs:read`,`zoom_events_hubs:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:read:list_hub_videos`,`zoom_events:read:list_hub_videos:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Hub video information. ###### Content-Type: application/json - **`next_page_token`** `string` — The next page token. - **`total_records`** `number` — The total number of records in this page. - **`videos`** `array` — Hub videos. **Items:** **All of:** - **`duration`** `integer` — The video duration in minutes - **`name`** `string` — The name of the video resource. - **`play_link`** `string` — Video Play Link - **`source_event_id`** `string` — The ID of the Zoom Event, this video belongs to. If this is not associated to any Zoom Event then it is blank. - **`source_type`** `string`, possible values: `"RECORDING", "UPLOAD", "FOLDER"` — The video source type: Options: \* \`RECORDING\` - Recording file. \* \`UPLOAD\` - Manually uploaded file. \* \`FOLDER\` - This is a folder for organizing videos. - **`status`** `string`, possible values: `"processing", "done", "unknown"` — The video status: Options: \* \`processing\` - Video is in processing status and not available for viewing yet. \* \`done\` - Processing complete and available for viewing. \* \`unknown\` - Processing status is unknown. - **`video_id`** `string` — The Video ID. **Example:** ```json { "total_records": 1, "next_page_token": "yqT59YnBSHqvDdNnkeHQsA", "videos": [ { "video_id": "iso9Dllddp39dagjLj9j", "name": "My Recording1", "source_type": "RECORDING", "source_event_id": "eabco9Dllddp39dagjLj9j", "status": "processing", "play_link": "https://abc/recording/unehd6TtTLuTN40owCOqqK", "duration": 30 } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2001\` \
Hub not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get attendee engagement data - **Method:** `GET` - **Path:** `/zoom_events/hubs/{hubId}/attendee_insights/engagement` - **Tags:** Insights Retrieves engagement data for a specific attendee in a Zoom Events hub. **Scoping** - Omit `event_id` → hub-scoped (aggregated across all events in the hub) - Provide `event_id` → event-scoped (single event within the hub) **Engagement types** - `Certification` — Certification completion status and progress **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus or Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_insights:read`,`zoom_events_insights:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:read:attendee_engagement`,`zoom_events:read:attendee_engagement:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 Engagement data retrieved successfully. ###### Content-Type: application/json - **`data`** `array` — Array of certification engagement objects. **Items:** - **`certification_status`** `string`, possible values: `"completed", "in_progress", "not_started"` — The certification status. - **`certification_time`** `string`, format: `date-time` — The timestamp when the certification was earned, in UTC format (\`yyyy-MM-dd'T'HH:mm:ss'Z'\`). Returns \`null\` if not yet completed. - **`certification_type`** `string`, possible values: `"full_credit", "partial_credit"` — The certification model. \`full\_credit\` requires all criteria to be met; \`partial\_credit\` awards incremental levels. - **`content_downloads`** `integer` — The actual number of content downloads. - **`content_downloads_required`** `integer` — The required number of content downloads for certification. - **`credits_earned`** `number`, format: `float` — The number of credits or CEUs earned. - **`current_level`** `integer` — The current completion level for partial credit certifications. - **`event_id`** `string` — The event ID. - **`event_name`** `string` — The event name. - **`meeting_seconds`** `integer` — The actual meeting attendance duration in seconds. - **`minutes_watched`** `integer` — The actual number of minutes the attendee watched. - **`minutes_watched_required`** `integer` — The required number of minutes to earn certification. - **`polls_answered`** `integer` — The actual number of polls answered. - **`polls_answered_required`** `integer` — The required number of polls answered for certification. - **`session_id`** `string` — The session ID. - **`session_name`** `string` — The session name. - **`total_levels`** `integer` — The total number of levels required for full certification. - **`next_page_token`** `string` — The next page token paginates through a large set 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. - **`total_records`** `number` — The total number of records. **Example:** ```json { "total_records": 15, "next_page_token": "oLVRGBTZXI6Kt7zv0gb8Qy4h8cLNbzK1ig2", "data": [ { "event_id": "JNB2TQDLQLycFjdf9MIicQ", "event_name": "Event ABC", "session_id": "asdfTQDLQLycFjdf9MIicQ", "session_name": "Session A", "certification_type": "full_credit", "certification_status": "completed", "certification_time": "2026-02-27T19:05:00Z", "current_level": 3, "total_levels": 3, "credits_earned": 1.5, "minutes_watched": 45, "minutes_watched_required": 40, "polls_answered": 3, "polls_answered_required": 2, "content_downloads": 2, "content_downloads_required": 1, "meeting_seconds": 3517 } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2001\` \
Hub not found. \
\*\*Error Code:\*\* \`2002\` \
Event not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/). ### List registrants - **Method:** `GET` - **Path:** `/zoom_events/events/{eventId}/registrants` - **Tags:** Registrants Retrieves event registrants. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus / Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_registrants:read`,`zoom_events_registrants:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:read:list_registrants`,`zoom_events:read:list_registrants:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` List of event registrants. ###### Content-Type: application/json - **`next_page_token`** `string` — The next page token paginates through a set of large results. A next page token is returned whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes. - **`registrants`** `array` — Registrants **Items:** - **`email`** `string` — The email address of the registrant. - **`registration_status`** `string`, possible values: `"REGISTERED", "INVITED", "GIFTED", "DIRECT_JOIN", "PRE_REGISTERED", "PRE_REGISTER_INVITED"` — Registration status. - **`tickets`** `array` — Tickets list. **Items:** - **`authentication_method`** `string`, possible values: `"zoom_account", "zoom_account_otp", "corporate_idp", "no_auth", "email_opt", "zoom_account_otp_at_join"` — The event authentication method for the ticket: \* \`zoom\_account\` Zoom account holder \* \`zoom\_account\_otp\` Zoom account holder with OTP \* \`corporate\_idp\` Corporate IDP \* \`no\_auth\` No authentication\* \`email\_opt\` registration using email OTP verification\* \`zoom\_account\_otp\_at\_join\` pre-registration using email OTP verification - **`qr_code_url`** `string` — The URL generated after scanning the e-badge QR code image. This field is applicable only for hybrid or in-person event types. - **`role`** `string`, possible values: `"ATTENDEE", "SPEAKER", "ALTERNATIVE_HOST", "PANELIST", "INTERPRETER", "SPONSOR", "EXPO_BOOTH_OWNER", "MODERATOR", "GUEST", "ORIGINAL_HOST"` — Ticket Role. - **`ticket_id`** `string` — Ticket ID. - **`total_records`** `number` — The total number of registrants. **Example:** ```json { "total_records": 1, "next_page_token": "oLVRGBTZXI6Kt7zv0gb8Qy4h8cLNbzK1ig2", "registrants": [ { "email": "email@zoom.us", "registration_status": "INVITED", "tickets": [ { "ticket_id": "1234567", "role": "INTERPRETER", "authentication_method": "no_auth", "qr_code_url": "https://zoom.us/qr?t=9&ein=AkhZhct94cUqiDfRumcpPf0loI-QAOt5T9yh_vGRn2-BkPDmjfze~AyTxY2Fs9Nw6ADEk-edYyZIyGIzxVAI_v-Mci1S-KeyRhbZOG3-4kWVpYqSxJK-2Uls-j_GSHh9L7Ku_zZta-MDu2NCA1Rg" } ] } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request Invalid request. ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2002\` \
Event not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List session attendees - **Method:** `GET` - **Path:** `/zoom_events/events/{eventId}/sessions/{sessionId}/attendees` - **Tags:** Registrants Retrieves session attendees. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus / Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_registrants:read`,`zoom_events_registrants:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:read:list_session_attendees`,`zoom_events:read:list_session_attendees:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` List of requested session attendees. ###### Content-Type: application/json - **`attendees`** `array` — Attendees **Items:** - **`authentication_method`** `string`, possible values: `"zoom_account", "zoom_account_otp", "corporate_idp", "no_auth", "email_opt", "zoom_account_otp_at_join"` — The event authentication method for the ticket: \* \`zoom\_account\` Zoom account holder \* \`zoom\_account\_otp\` Zoom account holder with OTP \* \`corporate\_idp\` Corporate IDP \* \`no\_auth\` No authentication\* \`email\_opt\` registration using email OTP verification\* \`zoom\_account\_otp\_at\_join\` pre-registration using email OTP verification - **`email`** `string` — The email address of the attendee. - **`next_page_token`** `string` — The next page token paginates through a set of large results. A next page token is returned whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes. - **`total_records`** `number` — The total number of attendees. **Example:** ```json { "total_records": 1, "next_page_token": "oLVRGBTZXI6Kt7zv0gb8Qy4h8cLNbzK1ig2", "attendees": [ { "email": "email@zoom.us", "authentication_method": "no_auth" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request Invalid request. ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2002\` \
Event not found. \
\*\*Error Code:\*\* \`2003\` \
Session not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get chat transcripts report - **Method:** `GET` - **Path:** `/zoom_events/events/{eventId}/reports/chat_transcripts` - **Tags:** Reports Retrieves the chat transcripts report for an event.\ At present, this API returns data only for users who have enabled the [meeting and webinar cloud archiving feature](https://support.zoom.us/hc/en-us/articles/360061037572-Configuring-archival-settings-for-meetings-and-webinars).\ The meeting and webinar cloud archiving feature determines whether users can download in-meeting, private 1:1, and private group chats.\ Below, chat-type data is returned based on the event type and the archiving feature. - `If cloud archiving is enabled`:\ **For multi-session events** - Lobby Chat, Private Lobby Chat, Event Staff Chat, Exhibitor Chat, Expo Booth Chat, Private 1: 1 Chat, Private Group Chat, In-meeting and webinar Chat .\ **For single session & recurring events** - In-meeting or webinar chat. - `If cloud archiving is not enabled` : **For multi-session events** - Lobby Chat, Private Lobby Chat, Event Staff Chat, Exhibitor Chat, Expo Booth Chat.\ **For single session & recurring events** - None. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus / Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_reports:read`,`zoom_events_reports:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:read:chat_transcripts`,`zoom_events:read:chat_transcripts:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `HEAVY` #### Responses ##### Status: 200 Chat transcription. ###### Content-Type: application/json - **`chat_transcripts`** `array` — The chat transcripts array. **Items:** - **`chat_channel_id`** `string` — Chat channel ID - **`chat_name`** `string` — The name of the chat. - **`chat_type`** `string`, possible values: `"Lobby Chat", "Private Lobby Chat", "Event Staff Chat", "Exhibitor Chat", "Expo Booth Chat", "Private 1:1 Chat", "Private Group Chat", "In-meeting/webinar Chat"` — The type of the chat. \* \`Lobby Chat\` \* \`Private Lobby Chat\` \* \`Event Staff Chat\` \* \`Exhibitor Chat\` \* \`Expo Booth Chat\` \* \`Private 1:1 Chat\` \* \`Private Group Chat\` \* \`In-meeting/webinar Chat\` - **`message`** `string` — The content of the message. - **`message_id`** `string` — Message ID: Unique Identifier of the chat message. - **`message_time`** `string` — The message sent time in UTC time. The format should be \`yyyy-MM-dd\`T\`HH:mm:ssZ\` - **`reset_by_whom`** `string` — The name of the user who did the chat reset. A host can reset/clear the chat. - **`reset_time`** `string` — The chat reset time in UTC time. A host can reset/clear the chat. The format should be \`yyyy-MM-dd\`T\`HH:mm:ssZ\` - **`sender`** `string` — The name of the message sender. - **`sender_email`** `string` — The email of the message sender. - **`next_page_token`** `string` — Use the next page token to paginate through a set of large results. A next page token returns whenever the set of available results exceeds the current page size. This token's expiration period is 15 minutes. - **`total_records`** `number` — The total number of records in the response. **Example:** ```json { "total_records": 1, "next_page_token": "oLVRGBTZXI6Kt7zv0gb8Qy4h8cLNbzK1ig2", "chat_transcripts": [ { "chat_type": "Lobby Chat", "chat_name": "Lobby Chat - 1", "sender": "James Brown", "sender_email": "james.brown@zoomtest.us", "message_time": "2023-08-22T02:58:56Z", "message": "Hi, How are you doing?", "reset_time": "2023-08-22T02:58:56Z", "reset_by_whom": "Tom Brown", "chat_channel_id": "asfasdfasdf12312", "message_id": "d1231241sfdsdfs" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request Invalid Request. ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2002\` \
Event not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ##### Status: 500 \*\*HTTP Status Code:\*\* \`500\` \
Internal Server Error \*\*Error Code:\*\* \`5001\` \
Chat messages are not available for download now. Please try again later. \
### Get custom report - **Method:** `GET` - **Path:** `/zoom_events/events/{eventId}/reports/custom_reports/{customReportId}` - **Tags:** Reports Retrieves data for the custom report for the given report ID. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus / Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_reports:read`,`zoom_events_reports:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:read:custom_report`,`zoom_events:read:custom_report:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `HEAVY` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\`\
List of requested event registration details. ###### Content-Type: application/json - **`next_page_token`** `string` — The next page token paginates through a large set of results. It returns whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes. - **`registrants`** `array` — Registrants array. **Items:** - **`country`** `string` — The country/region of the attendee. - **`display_name`** `string` — The registrant display name. - **`email`** `string` — The email address of the registrant. - **`event_attendance`** `string`, possible values: `"attended", "absent"` — The registrant's event attendance (Live or lobby) status. \* \`attended - Attended\` \* \`absent - Not attended \` - **`first_name`** `string` — The registrant first name. - **`last_name`** `string` — The registrant last name. - **`lobby_attendance`** `string`, possible values: `"attended", "absent"` — The registrant's lobby attendance status. \* \`attended - Attended\` \* \`absent - Not attended \` - **`opt_in_marketing`** `integer`, possible values: `1, 0` — The marketing opt in flag. \* \`1. Opted for marketing\` \* \`0 - Not opted for marketing\` - **`polls_count`** `integer` — The total number of polls taken. - **`registration_date`** `string`, format: `date-time` — The registrantion date in UTC. The format should be \`yyyy-MM-dd\`T\`HH:mm:ssZ - **`resource_link_engagement`** `array` — The call to action (CTA) resource link engagement details. **Items:** - **`file_id`** `string` — The CTA resource ID. - **`name`** `string` — The CTA resource name. - **`sessions`** `array` — The user's session engagement details. **Items:** - **`bookmarked`** `boolean` — The session bookmarked status. \* true \* false - **`duration_in_session`** `number` — The number of minutes spent in the session. - **`in_session_resource_download`** `array` — The resources downloaded during the session, under resources. **Items:** - **`file_id`** `string` — The resource fileID. - **`name`** `string` — The resource file name. - **`live_streaming_view`** `boolean` — The live stream view status. \* true \* false - **`live_streaming_view_duration`** `number` — The live streaming view duration in minutes. - **`material_download`** `array` — The session materials downloaded from the event lobby. **Items:** - **`file_id`** `string` — The material fileID. - **`name`** `string` — The material file name. - **`recording_view`** `boolean` — The recording view status. \* true \* false - **`recording_view_duration`** `number` — The recording view duration in minutes. - **`session_attendance`** `string`, possible values: `"absent", "attended"` — The session attendance status. \* attended \* absent - **`session_id`** `string` — The session ID. - **`session_name`** `string` — The session name. - **`surveys_count`** `integer` — The total number of surveys taken. - **`tickets`** `array` — The ticket details. **Items:** - **`authentication_method`** `string`, possible values: `"zoom_account", "zoom_account_otp", "corporate_idp", "no_auth", "email_opt", "zoom_account_otp_at_join"` — The event authentication method for the ticket: \* \`zoom\_account\` Zoom account holder \* \`zoom\_account\_otp\` Zoom account holder with OTP \* \`corporate\_idp\` Corporate IDP \* \`no\_auth\` No authentication\* \`email\_opt\` registration using email OTP verification\* \`zoom\_account\_otp\_at\_join\` pre-registration using email OTP verification - **`questions`** `array` — The question and answer array. **Items:** - **`answer`** `string` — The question answer. - **`title`** `string` — The question title. - **`registration_method`** `string`, possible values: `"self-registration", "self-registration_account", "pre_registration", "group_join_link", "other"` — The registration method. \* \`self-registration\` self registration with email \* \`self-registration\_account\` self registration with zoom account \`pre\_registration\` Host pre-registration \* \`group\_join\_link\` Registration with group join link \* \`Other\` - **`registration_source`** `string` — The source of registration or the source tracking information. - **`ticket_id`** `string` — The ticket ID. - **`ticket_type_id`** `string` — The ticket type ID. - **`ticket_type_name`** `string` — The ticket type name. - **`total_records`** `integer` — The total number of records. **Example:** ```json { "total_records": 1, "next_page_token": "oLVRGBTZXI6Kt7zv0gb8Qy4h8cLNbzK1ig2", "registrants": [ { "display_name": "First Last", "first_name": "First", "last_name": "Last", "email": "email@zoom.us", "opt_in_marketing": 1, "registration_date": "2025-03-24T22:30:00Z", "event_attendance": "attended", "country": "US", "lobby_attendance": "attended", "surveys_count": 0, "polls_count": 0, "resource_link_engagement": [ { "file_id": "Pn9rBZgJQzi6RXUABmWcqB", "name": "resource link A" } ], "sessions": [ { "session_id": "Pn9rBZgJQzi6RXUABmWcqB", "session_name": "Session one", "session_attendance": "attended", "duration_in_session": 20, "bookmarked": true, "material_download": [ { "file_id": "Pn9rBZgJQzi6RXUABmWcqB", "name": "session-file.pdf" } ], "in_session_resource_download": [ { "file_id": "Pn9rBZgJQzi6RXUABmWcqB", "name": "in-session-file.pdf" } ], "recording_view": false, "recording_view_duration": 20, "live_streaming_view": false, "live_streaming_view_duration": 30 } ], "tickets": [ { "ticket_type_name": "General Ticket", "ticket_type_id": "Fn2rBZgJQzi6VIU--uWqnA", "ticket_id": "Fn2rBZgJQzi6VIUABuWcqB", "registration_source": "Pardot", "registration_method": "self-registration", "authentication_method": "no_auth", "questions": [ { "title": "First Name", "answer": "Michael" } ] } ] } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request Invalid request. ##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2002\` \
Event not found. \
\*\*Error Code:\*\* \`260801\` \
Custom report template not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests For more information, see \[rate limits]\(/docs/api/rate-limits/). ### Get event attendance (Live or Lobby) report - **Method:** `GET` - **Path:** `/zoom_events/events/{eventId}/reports/event_attendance` - **Tags:** Reports Retrieves the event attendance (live or lobby) report for the event. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus / Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_reports:read`,`zoom_events_reports:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:read:event_attendance`,`zoom_events:read:event_attendance:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `HEAVY` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\`\
List of requested event attendees. ###### Content-Type: application/json - **`attendees`** `array` — Attendee array. **Items:** - **`attendance_type`** `array` — The attendee's attendance type array. **Items:** `string`, possible values: `"hybrid", "virtual", "in_person"` — The registrant's attendance type. \* \`hybrid\` - Hybrid attendance \* \`virtual\` - Virtual attendance \* \`in\_person\` - In-person attendance - **`connection_made`** `number` — The number of networking connections made. - **`display_name`** `string` — The registrant's display name. - **`email`** `string` — The email address of the attendee. - **`event_attendance`** `string`, possible values: `"attended", "absent"` — The registrant's event attendance (live or lobby) status. \* \`attended\` - Attended \* \`absent\` - Not attended - **`first_name`** `string` — The registrant's first name. - **`last_modified_date`** `string`, format: `date-time` — The last modified date of the attendee report data. - **`last_name`** `string` — The registrant's last name. - **`lobby_attendance`** `string`, possible values: `"attended", "absent"` — The registrant's lobby attendance status. \* \`attended\` - Attended \* \`absent\` - Not attended - **`lobby_chat_sent`** `number` — The number of lobby chat messages sent. - **`marketing_consent_prechecked`** `number`, possible values: `1, 0, -1` — Whether the marketing consent is pre-checked. \* \`1\` - Pre-checked \* \`0\` - Not pre-checked \* \`-1\` - Not available - **`number_of_tickets`** `number` — The total number of tickets. - **`opt_in_marketing`** `number`, possible values: `1, 0` — The marketing opt-in flag. \* \`1\` - Opted for marketing \* \`0\` - Not opted for marketing - **`personal_chats`** `number` — The number of personal chats. - **`profile_created`** `boolean` — Whether the attendee profile was created. \* \`true\` - Created \* \`false\` - Not created - **`role`** `string` — The attendee's role. - **`session_attendance`** `array` — The user session attendance status array. **Items:** - **`chat_messages_sent`** `number` — The number of chat messages sent. - **`duration_spent_in_session`** `number` — The number of minutes spent in the session. - **`live_streaming_view`** `boolean` — The live stream view status. \* \`true\` - Viewed \* \`false\` - Not viewed - **`live_streaming_view_duration`** `number` — The live streaming view duration in minutes. - **`material_download`** `boolean` — The material download status. \* \`true\` - Downloaded \* \`false\` - Not downloaded - **`recording_view`** `boolean` — The recording view status. \* \`true\` - Viewed \* \`false\` - Not viewed - **`recording_view_duration`** `number` — The recording view duration in minutes. - **`session_attendance`** `string`, possible values: `"absent", "attended"` — The session attendance status. \* \`attended\` - Attended \* \`absent\` - Absent - **`session_bookmarked`** `boolean` — Whether the user bookmarked the session. \* \`true\` - Bookmarked \* \`false\` - Not bookmarked - **`session_exit_time`** `string`, format: `date-time` — The participant's exit time from the session. - **`session_id`** `string` — The session identifier. - **`session_join_time`** `string`, format: `date-time` — The participant's join time for the session. - **`session_name`** `string` — The session name. - **`session_reserved`** `boolean` — Whether the user reserved the session. \* \`true\` - Reserved \* \`false\` - Not reserved - **`survey_taken`** `number` — The number of surveys taken. - **`tickets`** `array` — The attendee's tickets. **Items:** - **`authentication_method`** `string`, possible values: `"zoom_account", "zoom_account_otp", "corporate_idp", "no_auth", "email_opt", "zoom_account_otp_at_join", "fast_join", "vanity_url"` — The event authentication method for the ticket: \* \`zoom\_account\` - Zoom account holder \* \`zoom\_account\_otp\` - Zoom account holder with OTP \* \`corporate\_idp\` - Corporate IDP \* \`no\_auth\` - No authentication \* \`email\_opt\` - Registration using email OTP verification \* \`zoom\_account\_otp\_at\_join\` - Pre-registration using email OTP verification \* \`fast\_join\` - Fast join without upfront authentication \* \`vanity\_url\` - Join with vanity URL - **`external_ticket_id`** `string` — A set of unique alphanumeric characters that references the external ticket ID. - **`questions`** `array` — The question and answer array. **Items:** - **`answer`** `string` — The question answer. - **`title`** `string` — The question title. - **`ticket_id`** `string` — The ticket's identifier. - **`ticket_type_id`** `string` — The ticket type's identifier. - **`ticket_type_name`** `string` — The ticket type's name. - **`total_sessions_joined`** `number` — The total number of sessions joined. - **`next_page_token`** `string` — The next page token paginates through a large set of results. It returns whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes. - **`total_records`** `number` — The total number of records. **Example:** ```json { "total_records": 1, "next_page_token": "oLVRGBTZXI6Kt7zv0gb8Qy4h8cLNbzK1ig2", "attendees": [ { "display_name": "First Last", "first_name": "First", "last_name": "Last", "email": "email@zoom.us", "opt_in_marketing": 1, "marketing_consent_prechecked": 1, "event_attendance": "attended", "attendance_type": [ "hybrid" ], "lobby_attendance": "attended", "lobby_chat_sent": 2, "survey_taken": 0, "total_sessions_joined": 0, "number_of_tickets": 0, "role": "General", "tickets": [ { "ticket_type_name": "General Ticket", "ticket_type_id": "Fn2rBZgJQzi6VIU--uWqnA", "external_ticket_id": "iso9Djldop39dagjLj3j", "ticket_id": "Fn2rBZgJQzi6VIUABuWcqB", "authentication_method": "no_auth", "questions": [ { "title": "First Name", "answer": "Michael" } ] } ], "session_attendance": [ { "session_id": "Pn9rBZgJQzi6RXUABmWcqB", "session_name": "Session one", "session_attendance": "attended", "duration_spent_in_session": 20, "chat_messages_sent": 20, "material_download": true, "recording_view": false, "live_streaming_view": false, "recording_view_duration": 20, "live_streaming_view_duration": 30, "session_join_time": "2022-03-24T22:30:00Z", "session_exit_time": "2022-03-24T22:30:00Z", "session_reserved": false, "session_bookmarked": false } ], "profile_created": false, "personal_chats": 0, "connection_made": 20, "last_modified_date": "2025-08-24T22:30:00Z" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request Invalid Request. ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/). ### Get session attendance report - **Method:** `GET` - **Path:** `/zoom_events/events/{eventId}/reports/sessions/{sessionId}/attendance` - **Tags:** Reports Retrieves a session attendance report. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus / Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_reports:read`,`zoom_events_reports:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:read:session_attendance`,`zoom_events:read:session_attendance:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\`\
List of requested session attendees. ###### Content-Type: application/json - **`attendees`** `array` — Attendee array. **Items:** - **`attendance_type`** `string`, possible values: `"hybrid", "virtual", "qr_code_scan"` — The event attendance type - **`authentication_method`** `string`, possible values: `"zoom_account", "zoom_account_otp", "corporate_idp", "no_auth", "email_opt", "zoom_account_otp_at_join"` — The event authentication method for the ticket: \* \`zoom\_account\` Zoom account holder \* \`zoom\_account\_otp\` Zoom account holder with OTP \* \`corporate\_idp\` Corporate IDP \* \`no\_auth\` No authentication\* \`email\_opt\` registration using email OTP verification\* \`zoom\_account\_otp\_at\_join\` pre-registration using email OTP verification - **`chat_messages_sent`** `number` — The number of chat messages sent. - **`check_in_method`** `string`, possible values: `"self check-in (virtual)", "api", "manual", "host_manual", "ebadge_scanning", "virtual"` — The Check-in Method for the session - **`display_name`** `string` — The attendee's display name. - **`duration_spent_in_session`** `number` — The number of minutes spent in the session. - **`email`** `string` — The email address of the attendee. - **`end_time`** `string`, format: `date-time` — The user session joined time - **`first_name`** `string` — The attendee's first name. - **`last_name`** `string` — The attendee's last name. - **`live_streaming_view`** `boolean` — The live stream view status. \* true \* false - **`live_streaming_view_duration`** `number` — The live streaming view duration in minutes. - **`marketing_consent_prechecked`** `number`, possible values: `1, 0, -1` — Whether the marketing consent is pre-checked. \* \`1 - pre-checked\` \* \`0 - Not pre-checked \` \* \`-1 - Not available \` - **`material_download`** `boolean` — The material downloaded status. \* true \* false - **`opt_in_marketing`** `number`, possible values: `1, 0` — The marketing opt-in flag. \* \`1. Opted for marketing\` \* \`0 - Not opted for marketing\` - **`recording_view`** `boolean` — The recording view status. \* true \* false - **`recording_view_duration`** `number` — The recording view duration in minutes. - **`role_name`** `string` — The attendee's role. - **`session_attendance`** `string`, possible values: `"yes", "no"` — The user attended the session or not - **`session_id`** `string` — The Session ID. - **`start_time`** `string`, format: `date-time` — The user session joined time - **`tickets`** `array` — The attendee's tickets. **Items:** - **`questions`** `array` — The question and answer array. **Items:** - **`answer`** `string` — The question answer. - **`title`** `string` — The question title. - **`ticket_id`** `string` — The ticket's identifier. - **`ticket_type_name`** `string` — The ticket type's name. - **`next_page_token`** `string` — The next page token paginates through a large set of results. It returns whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes. - **`total_records`** `number` — The total number of records. **Example:** ```json { "total_records": 1, "next_page_token": "oLVRGBTZXI6Kt7zv0gb8Qy4h8cLNbzK1ig2", "attendees": [ { "session_id": "IAfJX3jsOLW7w3dokmFl84zOa0MAVGyMEB2", "first_name": "First", "last_name": "Last", "email": "email@zoom.us", "display_name": "First Last", "authentication_method": "no_auth", "marketing_consent_prechecked": 1, "opt_in_marketing": 1, "check_in_method": "self check-in (virtual)", "attendance_type": "hybrid", "session_attendance": "yes", "start_time": "2024-07-28T13:00:00Z", "end_time": "2024-07-28T13:00:00Z", "duration_spent_in_session": 20, "chat_messages_sent": 20, "material_download": true, "recording_view": false, "live_streaming_view": false, "recording_view_duration": 20, "live_streaming_view_duration": 30, "role_name": "General", "tickets": [ { "ticket_type_name": "General Ticket", "ticket_id": "Fn2rBZgJQzi6VIUABuWcqB", "questions": [ { "title": "First Name", "answer": "Michael" } ] } ] } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2002\` \
Event not found. \
\*\*Error Code:\*\* \`2003\` \
Session not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(/docs/api/rate-limits/). ### Get event survey report - **Method:** `GET` - **Path:** `/zoom_events/events/{eventId}/reports/survey` - **Tags:** Reports Retrieve event and session survey information. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus / Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_reports:read`,`zoom_events_reports:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:read:list_session_surveys`,`zoom_events:read:list_session_surveys:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `HEAVY` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` List of event survey information. ###### Content-Type: application/json - **`next_page_token`** `string` — Use the next page token to paginate through a set of large 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. - **`surveys`** `array` — Survey responses **Items:** - **`email`** `string` — The email address of the person who took the survey. The email will not show if the survey taken as anonymous user. - **`question_and_answers`** `array` — Question and answers array. **Items:** - **`answer`** `string` — The survey answer. - **`question`** `string` — The question title. - **`session_id`** `string` — The ID of the session - both session ID and session name is not present, these surveys questions belongs to event. - **`session_name`** `string` — The name of the session - both session ID and session name is not present, these surveys questions belongs to event. - **`total_records`** `number` — The total number of records in the current response. **Example:** ```json { "total_records": 1, "next_page_token": "oLVRGBTZXI6Kt7zv0gb8Qy4h8cLNbzK1ig2", "surveys": [ { "session_name": "Introduction", "session_id": "ZALMy1b8RRiK810bVL-wFg", "email": "ZALMy1b8RRiK810bVL-wFg", "question_and_answers": [ { "question": "What is your favorite type of ice cream flavor?", "answer": "Chocolate" } ] } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`400 \` \
Invalid \`page\_size\` or \`event\_id/next\_page\_token\`. \
##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`404\` \
Event not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(/docs/api/rate-limits/). ### Get event registrations report - **Method:** `GET` - **Path:** `/zoom_events/events/{eventId}/reports/ticket_registration` - **Tags:** Reports Retrieves event ticket registrations. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus / Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_reports:read`,`zoom_events_reports:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:read:event_registration`,`zoom_events:read:event_registration:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `HEAVY` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\`\
List of event ticket registrations. ###### Content-Type: application/json - **`next_page_token`** `string` — Use the next page token to paginate through a set of large results. A next page token is returned whenever the set of available results exceeds in the current request. This token's expiration period is 15 minutes. - **`registrations`** `array` — The event registrations. **Items:** - **`attendance_type`** `array` — The registrant event attendance type. **Items:** `string`, possible values: `"hybrid", "virtual", "in_person"` — The registrant attendance type. \* hybrid|virtual|in\_person - **`display_name`** `string` — The registrant's display name. - **`email`** `string` — The email address of the attendee. - **`event_attendance`** `string`, possible values: `"attended", "absent"` — The registrant attendance status. \* \`attended - Attended\` \* \`absent - Not attended \` - **`first_name`** `string` — The registrant's first name. - **`last_name`** `string` — The registrant's last name. - **`marketing_consent_prechecked`** `number`, possible values: `1, 0, -1` — The marketing opt in flag. \* \`1. Opted for marketing\` \* \`0 - Not opted for marketing\` \`-1 not available\` - **`opt_in_marketing`** `number`, possible values: `1, 0` — Marketing opt in. \* \`1. Opted for marketing\` \* \`0 - Not opted for marketing\` - **`register_date`** `string`, format: `date-time` — The registrant date in UTC. The format should be \`yyyy-MM-dd\`T\`HH:mm:ssZ - **`registered_session_ids`** `array` — The session IDs for which the user has registered. **Items:** `string` — The Session ID. - **`registration_method`** `string`, possible values: `"self-registration", "self-registration_account", "pre_registration", "group_join_link", "other"` — The registration method. \* \`self-registration\` self registration with email \* \`self-registration\_account\` self registration with zoom account \`pre\_registration\` Host pre-registration \* \`group\_join\_link\` Registration with group join link \* \`Other\` - **`registration_source`** `string` — The source of registration or the source tracking information. - **`tickets`** `array` — The user tickets for the event. **Items:** - **`authentication_method`** `string`, possible values: `"zoom_account", "zoom_account_otp", "corporate_idp", "no_auth", "email_opt", "zoom_account_otp_at_join", "fast_join", "vanity_url"` — The event authentication method for the ticket: \* \`zoom\_account\` Zoom account holder \* \`zoom\_account\_otp\` Zoom account holder with OTP \* \`corporate\_idp\` Corporate IDP \* \`no\_auth\` No authentication \* \`email\_opt\` registration using email OTP verification \* \`zoom\_account\_otp\_at\_join\` pre-registration using email OTP verification \* \`fast\_Join\` Fast join without upfront authentication \* \`vanity\_url\` join with vanity url - **`external_ticket_id`** `string` — A set of unique alphanumeric characters that references the external ticket ID. - **`questions`** `array` — The user provided question and answers provided at the time of registration. **Items:** - **`answer`** `string` — The question answer. - **`title`** `string` — The question title. - **`ticket_id`** `string` — The ticket identifier. - **`ticket_type_id`** `string` — The ticket type identifier. - **`ticket_type_name`** `string` — The ticket type name. - **`total_records`** `number` — The total number of records. **Example:** ```json { "total_records": 1, "next_page_token": "oLVRGBTZXI6Kt7zv0gb8Qy4h8cLNbzK1ig2", "registrations": [ { "display_name": "First Last", "first_name": "First", "last_name": "Last", "email": "email@zoom.us", "opt_in_marketing": 0, "marketing_consent_prechecked": 0, "register_date": "2022-03-24T22:30:00Z", "event_attendance": "attended", "registered_session_ids": [ "UoARddSoTN2gPKIXxVPbCQ" ], "attendance_type": [ "hybrid" ], "registration_method": "Self-registration", "registration_source": "Pardot", "tickets": [ { "ticket_type_name": "General Ticket", "ticket_type_id": "Fn2rBZgJQzi6VIU--uWqnA", "external_ticket_id": "iso9Djldop39dagjLj3j", "ticket_id": "Fn2rBZgJQzi6VIUABuWcqB", "authentication_method": "no_auth", "questions": [ { "title": "First Name", "answer": "Michael" } ] } ] } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request Invalid request. ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260200\` \
Event access denied \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2002\` \
Event not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(/docs/api/rate-limits/). ### Get VOD channel registration report - **Method:** `GET` - **Path:** `/zoom_events/hubs/{hubId}/vod_channels/{channelId}/reports/registrations` - **Tags:** Reports Retrieves VOD channel registrations and view duration information. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus / Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_vod_reports:read`,`zoom_events_vod_reports:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:read:vod_registrations`,`zoom_events:read:vod_registrations:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `HEAVY` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` List of event survey information. ###### Content-Type: application/json - **`next_page_token`** `string` — Use the next page token to paginate through a set of large 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. - **`registrations`** `array` — The VOD channel registrations. **Items:** - **`authentication_method`** `string`, possible values: `"zoom_account", "email_opt", "no_auth"` — The VOD channel authentication method \* \`zoom\_account\` Zoom account holder \* \`no\_auth\` No authentication\* \`email\_opt\` registration using email OTP verification\* - **`email`** `string` — The email address of the registrant. - **`first_name`** `string` — The registrant's first name. - **`last_name`** `string` — The registrant's last name. - **`questions`** `array` **Items:** - **`answer`** `string` — The question answer. - **`title`** `string` — The question title. - **`video_watch_duration`** `array` **Items:** - **`duration`** `number` — The registrant watched video duration. - **`video_id`** `string` — The registrant watched video ID. - **`video_name`** `string` — The registrant watched video name. - **`total_records`** `number` — The total number of records in the current response. **Example:** ```json { "total_records": 1, "next_page_token": "oLVRGBTZXI6Kt7zv0gb8Qy4h8cLNbzK1ig2", "registrations": [ { "email": "xyz@example.com", "first_name": "First", "last_name": "Last", "video_watch_duration": [ { "video_id": "LVRGBTZXI6Kt7zv0g", "video_name": "tutorial one", "duration": 10 } ], "authentication_method": "no_auth", "questions": [ { "title": "First Name", "answer": "Michael" } ] } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260101\` \
Hub access denied. \
\*\*Error Code:\*\* \`261103\` \
Video channel access denied. \
\*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2001\` \
Hub not found. \
\*\*Error Code:\*\* \`261101\` \
VOD channel not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/). ### List sessions - **Method:** `GET` - **Path:** `/zoom_events/events/{eventId}/sessions` - **Tags:** Sessions Retrieves the sessions in an event. Event hosts and special-role ticket users, such as speakers and co-hosts, can access this API. Users will not need to provide any special query parameters. The API internally identifies based on the user role and provides the session information for the event. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus / Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_sessions:read`,`zoom_events_sessions:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:read:list_sessions`,`zoom_events:read:list_sessions:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` List of requested sessions. ###### Content-Type: application/json - **`sessions`** `array` — The list of sessions for the event. **Items:** **All of:** - **`meeting_id`** `integer`, format: `int64` — The \[meeting ID]\(https\://support.zoom.us/hc/en-us/articles/201362373-What-is-a-Meeting-ID-) in \*\*long\*\* format(represented as int64 data type in JSON), also known as the meeting number. Applicable, if the session type is of meeting ( i.e type = 0). This id is null for an unpublished event. - **`timezone`** `string` — The timezone of the event. - **`type`** `integer`, format: `int32`, possible values: `0, 2, 4` — The type of session: \* \`0\`- Meeting \* \`2\`- Webinar \* \`4\`- No webinar or meeting - **`webinar_id`** `integer`, format: `int64` — The webinar ID in \*\*long\*\* format(represented as int64 data type in JSON), also known as the webinar number. Applicable, if the session type is of webinar ( i.e type = 2). This id is null for an unpublished event. * **`alternative_host`** `array` — The list of alternative hosts. Alternative hosts can start the session on the host\’s behalf. The \"Alternative Host\" ticket is auto-assigned to alternative hosts. **Items:** `string` — The email address of the alternative host. * **`attendance_type`** `string`, possible values: `"virtual", "in-person", "hybrid"` — The type of attendee experience for the event. \* \`virtual\` virtual attendees only \* \`in-person\` in-person attendees only \* \`hybrid\` both in-person and virtual attendees * **`audience_labels`** `array` — The list of audience type tags for the session. **Items:** `string` * **`chat_channel`** `boolean` — Whether session chat in lobby is enabled. Attendees need to have Zoom Chat enabled by their Account Admin to view and participate in the conference chat. * **`description`** `string` — This is a description of the session. * **`end_time`** `string`, format: `date-time` — The end time of the session in UTC. The format should be \`yyyy-MM-dd\`T\`HH:mm:ssZ\` * **`featured`** `boolean` — Whether the session is featured. * **`featured_in_lobby`** `boolean` — Whether the session is featured in the event lobby. * **`interpreter_languages`** `array` — The languages available for interpretations. **Items:** - **`language_display_name`** `string` — The name of the language. - **`language_id`** `string` — The language ID for translation. * **`is_simulive`** `boolean` — Whether the webinar is \`simulive\`. * **`led_by_sponsor`** `boolean` — Whether the session is led by a sponsor. * **`level`** `array` — The list of level type tags for the session. **Items:** `string` * **`name`** `string` — The name of the session. * **`panelist`** `array` — The speaker joins session as an attendee in a meeting session and as a panelist in a webinar session. Panelist can mute or unmute themselves, start or stop their own video, view and respond to all questions and answers. **Items:** `string` — The email address of the panelist. * **`physical_location`** `string` — The physical location of the event. This field is applicable for Hybrid and in-person events only. * **`product_labels`** `array` — The list of product type tags for the session. **Items:** `string` * **`record_file_id`** `string` — The previously recorded file's ID for \`simulive\`. * **`session_id`** `string` — The ID of the session. * **`session_reservation`** `object` — Information about the session reservation option. This option is supported for multi-session type events only. - **`allow_reservations`** `boolean` — Whether the session reservations are enabled. This option is supported for multi-session type events only. - **`max_capacity`** `integer` — The maximum number of session reservations allowed. * **`session_speakers`** `array` — The speakers join as attendees in a meeting session and as panelists in a webinar session. **Items:** - **`access_to_edit_session`** `boolean` — Whether the speaker has access to edit the session information. - **`company`** `string` — The company name of the speaker. - **`has_alternative_host_permission`** `boolean` — Whether the speaker can act as an alternative host for the session. - **`meeting_role`** `integer`, format: `int32`, possible values: `0, 1, 2` — The role of the speaker in a meeting: \* \`0\` ALTERNATIVE\_HOST \* \`1\` ATTENDEE \* \`2\` PANELIST - **`name`** `string` — The name of the speaker. - **`show_in_session_detail`** `boolean` — Whether to show the speaker information under session details. - **`speaker_id`** `string` — The ID of the session speaker. - **`title`** `string` — The job title of the speaker. * **`sign_interpreter_languages`** `array` — The available sign interpretation languages. **Items:** - **`language_display_name`** `string` — The name of the language. - **`language_id`** `string` — The language ID for translation. * **`start_time`** `string`, format: `date-time` — The start time of the session in UTC. The format should be \`yyyy-MM-dd\`T\`HH:mm:ssZ\` * **`track_labels`** `array` — The track or classification that separates events into different categories. Tickets for these tracks link to specific sessions. Only ticket holders can join these sessions. **Items:** `string` * **`visible_in_landing_page`** `boolean` — Whether the session is visible in landing page. * **`visible_in_lobby`** `boolean` — Whether the session is visible in event lobby. - **`total_records`** `number` — The total number of sessions. **Example:** ```json { "total_records": 1, "sessions": [ { "timezone": "America/New_York", "type": 2, "meeting_id": 97763643886, "webinar_id": 97871060099, "session_id": "4uzfv3JwTeyR5QpC3PXwMg", "name": "Session 1", "description": "Educational Session on ZoomEvents", "start_time": "2022-05-31T13:00:00Z", "end_time": "2022-05-31T13:00:00Z", "session_speakers": [ { "speaker_id": "4uzfv3JwTeyR5QpC3PXwMg", "access_to_edit_session": true, "show_in_session_detail": true, "has_alternative_host_permission": true, "meeting_role": 2, "name": "Speaker-1", "company": "Zoom", "title": "Product Lead" } ], "featured": true, "visible_in_landing_page": true, "featured_in_lobby": false, "visible_in_lobby": true, "is_simulive": true, "record_file_id": "f09340e1-cdc3-4eae-9a74-98f9777ed908", "chat_channel": true, "led_by_sponsor": false, "track_labels": [ "Technical Track" ], "audience_labels": [ "Family" ], "product_labels": [ "zoomMeeting" ], "level": [ "Level-1" ], "alternative_host": [ "abc.cd@email.com" ], "panelist": [ "abc.cd@email.com" ], "interpreter_languages": [ { "language_id": "EN", "language_display_name": "English" } ], "sign_interpreter_languages": [ { "language_id": "EN", "language_display_name": "English" } ], "attendance_type": "hybrid", "physical_location": "801 Mt Vernon Pl NW, Washington, DC 20001", "session_reservation": { "allow_reservations": true, "max_capacity": 20 } } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request Invalid request. ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2002\` \
Event not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(/docs/api/rate-limits/). ### Create a session - **Method:** `POST` - **Path:** `/zoom_events/events/{eventId}/sessions` - **Tags:** Sessions Creates a session. This operation is not available for a single session event type. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus / Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_sessions:write:admin`,`zoom_events_sessions:write` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:write:session`,`zoom_events:write:session:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`end_time` (required)** `string`, format: `date-time` — The end time of the session in UTC. The format should be \`yyyy-MM-dd\`T\`HH:mm:ssZ\`. - **`name` (required)** `string` — The name of the session. - **`start_time` (required)** `string`, format: `date-time` — The start time of the session in UTC. The format should be \`yyyy-MM-dd\`T\`HH:mm:ssZ\`. - **`timezone` (required)** `string` — The timezone of the event. For a list of supported timezones and their formats, see our \[timezone list]\(https\://developers.zoom.us/docs/api/rest/other-references/abbreviation-lists/#timezones). - **`type` (required)** `integer`, format: `int32`, possible values: `0, 2, 4` — The type of session: \*\`0\`- Meeting. \*\`2\`- Webinar. \*\`4\`- No webinar or meeting. - **`alternative_host`** `array` — The list of alternative hosts. Alternative hosts can start the session on the hosts behalf. The \"Alternative Host\" ticket is auto-assigned to alternative hosts. **Items:** `string` — The email address of the alternative host. - **`attendance_type`** `string`, possible values: `"virtual", "in-person", "hybrid"` — The type of attendee experience for the event. \* \`Virtual\` \— virtual attendees only. \* \`In-person\` \— in-person attendees only. \* \`Hybrid\` \— both in-person and virtual attendees. - **`audience_labels`** `array` — The list of audience type tags for the session. **Items:** `string` - **`chat_channel`** `boolean` — Whether the session chat in the lobby is enabled. \*Attendees need to have Zoom Chat enabled by their account admin to view and participate in the conference chat. - **`description`** `string` — This is a description of the session. This field does not support the richtext description field in the UI. - **`featured`** `boolean` — Whether the session is featured. - **`featured_in_lobby`** `boolean` — Whether the session is marked as featured in the event lobby. - **`is_simulive`** `boolean` — Whether the webinar is \`simulive\`. - **`led_by_sponsor`** `boolean` — Whether the session is hosted by a sponsor. - **`level`** `array` — The list of level type tags for the session. **Items:** `string` - **`panelist`** `array` — The speaker joins session as an attendee in a meeting session and as a panelist in a webinar session. Panelist can mute or unmute themselves, start or stop their own video, view and respond to all questions and answers. **Items:** `string` — The email address of the panelist. - **`physical_location`** `string` — The physical location of the event. This field is applicable for hybrid and in-person events only. - **`product_labels`** `array` — The list of product type tags for the session. **Items:** `string` - **`record_file_id`** `string` — The previously recorded file's ID for \`simulive\`. - **`session_reservation`** `object` — Information about the session reservation option. This option is supported for multi-session type events only. - **`allow_reservations`** `boolean` — Whether the session reservations are enabled. This option is supported for multi-session type events only. - **`max_capacity`** `integer` — The maximum number of session reservations allowed. - **`session_speakers`** `array` — The speakers joins a session as an attendee in a meeting session and as panelists in a webinar session. **Items:** - **`access_to_edit_session`** `boolean` — Whether the speaker has access to edit the session information. - **`has_alternative_host_permission`** `boolean` — Whether the speaker can act as an alternative host for the session. - **`show_in_session_detail`** `boolean` — Whether to show the speaker information under session details. - **`speaker_id`** `string` — The ID of the session speaker. - **`track_labels`** `array` — The track or classification that separates events into different categories. Tickets for these tracks link to specific sessions. Only ticket holders can join these sessions. **Items:** `string` - **`visible_in_landing_page`** `boolean`, default: `true` — Whether the session is visible in landing page. - **`visible_in_lobby`** `boolean`, default: `true` — Whether the session is visible in event lobby. **Example:** ```json { "name": "Session 1", "description": "Educational Session on ZoomEvents", "start_time": "2022-05-31T13:00:00Z", "end_time": "2022-05-31T13:00:00Z", "timezone": "America/New_York", "type": 2, "session_speakers": [ { "speaker_id": "4uzfv3JwTeyR5QpC3PXwMg", "access_to_edit_session": true, "show_in_session_detail": true, "has_alternative_host_permission": true } ], "featured": true, "visible_in_landing_page": true, "featured_in_lobby": false, "visible_in_lobby": true, "is_simulive": true, "record_file_id": "f09340e1-cdc3-4eae-9a74-98f9777ed908", "chat_channel": true, "led_by_sponsor": false, "track_labels": [ "Technical Track" ], "audience_labels": [ "Family" ], "product_labels": [ "zoomMeeting" ], "level": [ "Level-1" ], "alternative_host": [ "abc.cd@email.com" ], "panelist": [ "abc.cd@email.com" ], "attendance_type": "hybrid", "physical_location": "801 Mt Vernon Pl NW, Washington, DC 20001", "session_reservation": { "allow_reservations": true, "max_capacity": 20 } } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` Session created successfully. ###### Content-Type: application/json **All of:** - **`timezone`** `string` — The timezone of the event. - **`type`** `integer`, format: `int32`, possible values: `0, 2, 4` — The type of session: Enum: \* \`0\` - Meeting. \* \`2\`- Webinar. \* \`4\` No webinar or meeting * **`alternative_host`** `array` — The list of alternative hosts. Alternative hosts can start the session on the host\’s behalf. The \"Alternative Host\" ticket is auto-assigned to alternative hosts. **Items:** `string` — The email address of the alternative host. * **`attendance_type`** `string`, possible values: `"virtual", "in-person", "hybrid"` — The type of attendee experience for the event. \* \`virtual\` virtual attendees only \* \`in-person\` in-person attendees only \* \`hybrid\` both in-person and virtual attendees * **`audience_labels`** `array` — The list of audience type tags for the session. **Items:** `string` * **`chat_channel`** `boolean` — Whether session chat in lobby is enabled. Attendees need to have Zoom Chat enabled by their Account Admin to view and participate in the conference chat. * **`description`** `string` — The description of the session.This is a description of the session. This field does NOT support the Richtext Description field in the UI. * **`end_time`** `string`, format: `date-time` — The end time of the session in UTC. The format should be \`yyyy-MM-dd\`T\`HH:mm:ssZ\` * **`featured`** `boolean` — Whether the session is featured. * **`featured_in_lobby`** `boolean` — Whether the session is featured in the event lobby. * **`is_simulive`** `boolean` — Whether the webinar is \`simulive\`. * **`led_by_sponsor`** `boolean` — Whether the session is led by a sponsor. * **`level`** `array` — The list of level type tags for the session. **Items:** `string` * **`name`** `string` — The name of the session. * **`panelist`** `array` — The speaker joins session as an attendee in a meeting session and as a panelist in a webinar session. Panelist can mute or unmute themselves, start or stop their own video, view and respond to all questions and answers. **Items:** `string` — The email address of the panelist. * **`physical_location`** `string` — The physical location of the event. This field is applicable for Hybrid and in-person events only. * **`product_labels`** `array` — The list of product type tags for the session. **Items:** `string` * **`record_file_id`** `string` — The previously recorded file's ID for \`simulive\`. * **`session_id`** `string` — The ID of the session. * **`session_reservation`** `object` — Information about the session reservation option. This option is supported for multi-session type events only. - **`allow_reservations`** `boolean` — Whether the session reservations are enabled. This option is supported for multi-session type events only. - **`max_capacity`** `integer` — The maximum number of session reservations allowed. * **`session_speakers`** `array` — The speakers join as attendees in a meeting session and as panelists in a webinar session. **Items:** - **`access_to_edit_session`** `boolean` — Whether the speaker has access to edit the session information. - **`company`** `string` — The company name of the speaker. - **`has_alternative_host_permission`** `boolean` — Whether the speaker can act as an alternative host for the session. - **`meeting_role`** `integer`, format: `int32`, possible values: `0, 1, 2` — The role of the speaker in a meeting: Enum: \* \`0\` ALTERNATIVE\_HOST \* \`1\` ATTENDEE \* \`2\` PANELIST - **`name`** `string` — The name of the speaker. - **`show_in_session_detail`** `boolean` — Whether to show the speaker information under session details. - **`speaker_id`** `string` — The ID of the session speaker. - **`title`** `string` — The job title of the speaker. * **`start_time`** `string`, format: `date-time` — The start time of the session in UTC. The format should be \`yyyy-MM-dd\`T\`HH:mm:ssZ\` * **`track_labels`** `array` — The track or classification that separates events into different categories. Tickets for these tracks link to specific sessions. Only ticket holders can join these sessions. **Items:** `string` * **`visible_in_landing_page`** `boolean` — Whether the session is visible in the landing page. * **`visible_in_lobby`** `boolean` — Whether the session is visible in event lobby. **Example:** ```json { "timezone": "America/New_York", "type": 2, "session_id": "4uzfv3JwTeyR5QpC3PXwMg", "name": "Session 1", "description": "Educational Session on ZoomEvents", "start_time": "2022-05-31T13:00:00Z", "end_time": "2022-05-31T13:00:00Z", "session_speakers": [ { "speaker_id": "4uzfv3JwTeyR5QpC3PXwMg", "access_to_edit_session": true, "show_in_session_detail": true, "has_alternative_host_permission": true, "meeting_role": 2, "name": "Speaker-1", "company": "Zoom", "title": "Product Lead" } ], "featured": true, "visible_in_landing_page": true, "featured_in_lobby": false, "visible_in_lobby": true, "is_simulive": true, "record_file_id": "f09340e1-cdc3-4eae-9a74-98f9777ed908", "chat_channel": true, "led_by_sponsor": false, "track_labels": [ "Technical Track" ], "audience_labels": [ "Family" ], "product_labels": [ "zoomMeeting" ], "level": [ "Level-1" ], "alternative_host": [ "abc.cd@email.com" ], "panelist": [ "abc.cd@email.com" ], "attendance_type": "hybrid", "physical_location": "801 Mt Vernon Pl NW, Washington, DC 20001", "session_reservation": { "allow_reservations": true, "max_capacity": 20 } } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`26402\` \
One or more session IDs are invalid. \
##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(/docs/api/rate-limits/). ### Get the session information - **Method:** `GET` - **Path:** `/zoom_events/events/{eventId}/sessions/{sessionId}` - **Tags:** Sessions Returns the session information. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus / Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_sessions:read`,`zoom_events_sessions:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:read:session`,`zoom_events:read:session:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Requested session details. ###### Content-Type: application/json **All of:** - **`meeting_id`** `integer`, format: `int64` — The \[meeting ID]\(https\://support.zoom.us/hc/en-us/articles/201362373-What-is-a-Meeting-ID-) in \*\*long\*\* format (represented as int64 data type in JSON), also known as the meeting number. Applicable, if the session type is of meeting ( i.e type = 0). This ID is null for an unpublished event. - **`timezone`** `string` — The timezone of the event. - **`type`** `integer`, format: `int32`, possible values: `0, 2, 4` — The type of session: \* \`0\`- Meeting \* \`2\`- Webinar. \* \`4\`- No webinar or meeting. - **`webinar_id`** `integer`, format: `int64` — The webinar ID in \*\*long\*\* format (represented as int64 data type in JSON), also known as the webinar number. Applicable, if the session type is of webinar ( i.e type = 2). This ID is null for an unpublished event. * **`alternative_host`** `array` — The list of alternative hosts. Alternative hosts can start the session on the host\’s behalf. The \"Alternative Host\" ticket is auto-assigned to alternative hosts. **Items:** `string` — The email address of the alternative host. * **`attendance_type`** `string`, possible values: `"virtual", "in-person", "hybrid"` — The type of attendee experience for the event. \* \`virtual\` virtual attendees only \* \`in-person\` in-person attendees only \* \`hybrid\` both in-person and virtual attendees * **`audience_labels`** `array` — The list of audience type tags for the session. **Items:** `string` * **`chat_channel`** `boolean` — Whether session chat in lobby is enabled. Attendees need to have Zoom Chat enabled by their Account Admin to view and participate in the conference chat. * **`description`** `string` — This is a description of the session. * **`end_time`** `string`, format: `date-time` — The end time of the session in UTC. The format should be \`yyyy-MM-dd\`T\`HH:mm:ssZ\` * **`featured`** `boolean` — Whether the session is featured. * **`featured_in_lobby`** `boolean` — Whether the session is featured in the event lobby. * **`interpreter_languages`** `array` — The languages available for interpretations. **Items:** - **`language_display_name`** `string` — The name of the language. - **`language_id`** `string` — The language ID for translation. * **`is_simulive`** `boolean` — Whether the webinar is \`simulive\`. * **`led_by_sponsor`** `boolean` — Whether the session is led by a sponsor. * **`level`** `array` — The list of level type tags for the session. **Items:** `string` * **`name`** `string` — The name of the session. * **`panelist`** `array` — The speaker joins session as an attendee in a meeting session and as a panelist in a webinar session. Panelist can mute or unmute themselves, start or stop their own video, view and respond to all questions and answers. **Items:** `string` — The email address of the panelist. * **`physical_location`** `string` — The physical location of the event. This field is applicable for Hybrid and in-person events only. * **`product_labels`** `array` — The list of product type tags for the session. **Items:** `string` * **`record_file_id`** `string` — The previously recorded file's ID for \`simulive\`. * **`session_id`** `string` — The ID of the session. * **`session_reservation`** `object` — Information about the session reservation option. This option is supported for multi-session type events only. - **`allow_reservations`** `boolean` — Whether the session reservations are enabled. This option is supported for multi-session type events only. - **`max_capacity`** `integer` — The maximum number of session reservations allowed. * **`session_speakers`** `array` — The speakers join as attendees in a meeting session and as panelists in a webinar session. **Items:** - **`access_to_edit_session`** `boolean` — Whether the speaker has access to edit the session information. - **`company`** `string` — The company name of the speaker. - **`has_alternative_host_permission`** `boolean` — Whether the speaker can act as an alternative host for the session. - **`meeting_role`** `integer`, format: `int32`, possible values: `0, 1, 2` — The role of the speaker in a meeting: \* \`0\` ALTERNATIVE\_HOST \* \`1\` ATTENDEE \* \`2\` PANELIST - **`name`** `string` — The name of the speaker. - **`show_in_session_detail`** `boolean` — Whether to show the speaker information under session details. - **`speaker_id`** `string` — The ID of the session speaker. - **`title`** `string` — The job title of the speaker. * **`sign_interpreter_languages`** `array` — The sign interpretation languages that are available. **Items:** - **`language_display_name`** `string` — The name of the language. - **`language_id`** `string` — The language ID for translation. * **`start_time`** `string`, format: `date-time` — The start time of the session in UTC. The format should be \`yyyy-MM-dd\`T\`HH:mm:ssZ\` * **`track_labels`** `array` — The track or classification that separates events into different categories. Tickets for these tracks link to specific sessions. Only ticket holders can join these sessions. **Items:** `string` * **`visible_in_landing_page`** `boolean`, default: `true` — Whether the session is visible in the landing page. * **`visible_in_lobby`** `boolean`, default: `true` — Whether the session is visible in event lobby. **Example:** ```json { "timezone": "America/New_York", "type": 2, "meeting_id": 97763643886, "webinar_id": 97871060099, "session_id": "4uzfv3JwTeyR5QpC3PXwMg", "name": "Session 1", "description": "Educational Session on ZoomEvents", "start_time": "2022-05-31T13:00:00Z", "end_time": "2022-05-31T13:00:00Z", "session_speakers": [ { "speaker_id": "4uzfv3JwTeyR5QpC3PXwMg", "access_to_edit_session": true, "show_in_session_detail": true, "has_alternative_host_permission": true, "meeting_role": 2, "name": "Speaker-1", "company": "Zoom", "title": "Product Lead" } ], "featured": true, "visible_in_landing_page": true, "featured_in_lobby": false, "visible_in_lobby": true, "is_simulive": true, "record_file_id": "f09340e1-cdc3-4eae-9a74-98f9777ed908", "chat_channel": true, "led_by_sponsor": false, "track_labels": [ "Technical Track" ], "audience_labels": [ "Family" ], "product_labels": [ "zoomMeeting" ], "level": [ "Level-1" ], "alternative_host": [ "abc.cd@email.com" ], "panelist": [ "abc.cd@email.com" ], "interpreter_languages": [ { "language_id": "EN", "language_display_name": "English" } ], "sign_interpreter_languages": [ { "language_id": "EN", "language_display_name": "English" } ], "attendance_type": "hybrid", "physical_location": "801 Mt Vernon Pl NW, Washington, DC 20001", "session_reservation": { "allow_reservations": true, "max_capacity": 20 } } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request Invalid request. ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/). ### Delete a session - **Method:** `DELETE` - **Path:** `/zoom_events/events/{eventId}/sessions/{sessionId}` - **Tags:** Sessions Deletes a session. Not allowed for a single session event type. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus / Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_sessions:write`,`zoom_events_sessions:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:delete:session`,`zoom_events:delete:session:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` Session deleted successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2002\` \
Event not found. \
\*\*Error Code:\*\* \`2003\` \
Session not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update a session - **Method:** `PATCH` - **Path:** `/zoom_events/events/{eventId}/sessions/{sessionId}` - **Tags:** Sessions Updates an existing session in an event. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus / Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_sessions:write`,`zoom_events_sessions:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:update:session`,`zoom_events:update:session:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`alternative_host`** `array` — The list of alternative hosts. Alternative hosts can start the session on the hosts behalf. The \"Alternative Host\" ticket is auto-assigned to alternative hosts. **Items:** `string` — The email address of the alternative host. - **`attendance_type`** `string`, possible values: `"virtual", "in-person", "hybrid"` — The type of attendee experience for the event: \* \`Virtual\` \— virtual attendees only \* \`In-person\` \— in-person attendees only \* \`Hybrid\` \— both in-person and virtual attendees. \*In case of single session event type, It inherits event's attendance type. - **`audience_labels`** `array` — The list of audience type tags for the session. This is not applicable for single session event type. **Items:** `string` - **`chat_channel`** `boolean` — Whether session chat in lobby is enabled. \*Attendees need to have Zoom Chat enabled by their account admin to view and participate in the conference chat. This is not applicable for single session event type. - **`description`** `string` — This is a description of the session.This field does NOT support the Richtext Description field in the UI. Updating session description is only allowed for multi-session and recurring type event. - **`end_time`** `string`, format: `date-time` — The end time of the session in UTC. The format should be \`yyyy-MM-dd\`T\`HH:mm:ssZ\`. In case of Single Session Event Type, It inherits the event's end time. - **`featured`** `boolean` — Whether the session is featured. This is not applicable for single session event type. - **`featured_in_lobby`** `boolean` — Whether the session is featured in the event lobby. Session controls not supported for single session event type. - **`is_simulive`** `boolean` — Whether the webinar is \`simulive\`. - **`led_by_sponsor`** `boolean` — Whether the session is hosted by a sponsor. This is not applicable for single session event type. - **`level`** `array` — The list of level type tags for the session. This is not applicable for single session event type. **Items:** `string` - **`name`** `string` — The name of the session. In case of single session event type, it inherits the event's name. - **`panelist`** `array` — The speaker joins session as an attendee in a meeting session and as a panelist in a webinar session. Panelist can mute or unmute themselves, start or stop their own video, view and respond to all questions and answers. This is not applicable for single session event type. **Items:** `string` — The email address of the panelist. - **`physical_location`** `string` — The physical location of the event. This field is applicable for hybrid and in-person events only. - **`product_labels`** `array` — The list of product type tags for the session. This is not applicable for single session event type. **Items:** `string` - **`record_file_id`** `string` — The previously recorded file's ID for \`simulive\`. - **`session_reservation`** `object` — Information about the session reservation option. This option is supported for multi-session type events only. - **`allow_reservations`** `boolean` — Whether the session reservations are enabled. This option is supported for multi-session type events only. - **`max_capacity`** `integer` — The maximum number of session reservations allowed. - **`session_speakers`** `array` — The speakers join as attendees in a meeting session and as panelists in a webinar session. **Items:** - **`access_to_edit_session`** `boolean` — Whether the speaker has access to edit the session information. - **`has_alternative_host_permission`** `boolean` — Whether the speaker can act as an alternative host for the session. - **`show_in_session_detail`** `boolean` — Whether to show the speaker information under the session details. - **`speaker_id`** `string` — The ID of the session speaker. - **`start_time`** `string`, format: `date-time` — The start time of the session in UTC. The format should be \`yyyy-MM-dd\`T\`HH:mm:ssZ\`. In case of single session event type, It inherits the event's start time. - **`track_labels`** `array` — The track or classification that separates events into different categories. Tickets for these tracks link to specific sessions. Only ticket holders can join these sessions. This is not applicable for single session event type. **Items:** `string` - **`type`** `integer`, format: `int32`, possible values: `0, 2, 4` — The type of session: \* \`0\`- Meeting. \* \`2\`- Webinar. \* \`4\`- No webinar or meeting. - **`visible_in_landing_page`** `boolean`, default: `true` — Whether the session is visible in the landing page. Session controls not supported for single session event type. - **`visible_in_lobby`** `boolean`, default: `true` — Whether the session is visible in the event lobby. Session controls not supported for single session event type. **Example:** ```json { "name": "Session 1", "description": "Educational Session on ZoomEvents", "start_time": "2022-05-31T13:00:00Z", "end_time": "2022-05-31T13:00:00Z", "type": 2, "session_speakers": [ { "speaker_id": "4uzfv3JwTeyR5QpC3PXwMg", "access_to_edit_session": true, "show_in_session_detail": true, "has_alternative_host_permission": true } ], "featured": true, "visible_in_landing_page": true, "featured_in_lobby": false, "visible_in_lobby": true, "is_simulive": false, "record_file_id": "f09340e1-cdc3-4eae-9a74-98f9777ed908", "chat_channel": true, "led_by_sponsor": false, "track_labels": [ "Technical Track" ], "audience_labels": [ "Family" ], "product_labels": [ "zoomMeeting" ], "level": [ "Level-1" ], "alternative_host": [ "abc.cd@email.com" ], "panelist": [ "abc.cd@email.com" ], "attendance_type": "hybrid", "physical_location": "801 Mt Vernon Pl NW, Washington, DC 20001", "session_reservation": { "allow_reservations": true, "max_capacity": 20 } } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` Session updated successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request Invalid request. ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260200\` \
Event access denied. \
\*\*Error Code:\*\* \`260209\` \
Event is not editable. \
\*\*Error Code:\*\* \`260210\` \
Past and cancelled events are not editable. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(/docs/api/rate-limits/). ### List session interpreters - **Method:** `GET` - **Path:** `/zoom_events/events/{eventId}/sessions/{sessionId}/interpreters` - **Tags:** Sessions Retrieves interpreters in a session. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus /Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_sessions:read`,`zoom_events_sessions:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:read:list_session_interpreters`,`zoom_events:read:list_session_interpreters:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` List of interpreters. ###### Content-Type: application/json - **`interpreters`** `array` **Items:** - **`email`** `string` — The email address of the interpreter. - **`source_language_display_name`** `string` — The name of the source language. - **`source_language_id`** `object` - **`target_language_display_name`** `object` - **`target_language_id`** `object` - **`type`** `integer`, format: `int32`, possible values: `1, 2` — The interpreter type: Enum: \* \`1\` language\_interpreter \* \`2\` sign\_language\_interpreter - **`total_records`** `number` — The total number of interpreters. **Example:** ```json { "total_records": 1, "interpreters": [ { "email": "abc.def@email.com", "type": 1, "source_language_id": "US", "source_language_display_name": "English", "target_language_id": "JP", "target_language_display_name": null } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request Invalid request. ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2003\` \
Session not found. \
\*\*Error Code:\*\* \`2002\` \
Event not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(/docs/api/rate-limits/). ### Create or update session interpreters - **Method:** `PUT` - **Path:** `/zoom_events/events/{eventId}/sessions/{sessionId}/interpreters` - **Tags:** Sessions Creates or updates the list of interpreters for the session. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus / Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_sessions:write`,`zoom_events_sessions:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:update:session_interpreter`,`zoom_events:update:session_interpreter:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`interpreters`** `array` **Items:** - **`email`** `string` — The email address of the interpreter. - **`source_language_id`** `string`, possible values: `"US", "CN", "JP", "DE", "FR", "RU", "PT", "ES", "KR"` — The language ID for translation. Valid for language\_interpreter type: Enum: \* \`US\` English \* \`CN\` Chinese \* \`JP\` Japanese \* \`DE\` German \* \`FR\` French \* \`RU\` Russian \* \`PT\` Portuguese \* \`ES\` Spanish \* \`KR\` Korean - **`target_language_id`** `object` - **`type`** `integer`, format: `int32`, possible values: `1, 2` — The interpreter type: Enum: \* \`1\` language\_interpreter \* \`2\` sign\_language\_interpreter **Example:** ```json { "interpreters": [ { "email": "abc.def@example.com", "type": 1, "source_language_id": "US", "target_language_id": "JP" } ] } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` Interpreters updated successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request Invalid request. ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(/docs/api/rate-limits/). ### Get ticket session join token by Event ID and Session ID - **Method:** `GET` - **Path:** `/zoom_events/events/{eventId}/sessions/{sessionId}/join_token` - **Tags:** Sessions Retrieves the join token to join an event session. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus / Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_sessions:read`,`zoom_events_sessions:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:read:session_token`,`zoom_events:read:session_token:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` The join token for the session. ###### Content-Type: application/json - **`code`** `integer`, format: `int32`, possible values: `0, 1120, 1130, 1140, 1150` — The join token error code: Enum: \* \`0\` \— SUCCESS \* \`1120\` \— BAD\_REQUEST \* \`1130\` \— ERROR\_TICKET\_NOT\_FOUND \* \`1140\` \— INTERNAL\_SERVER\_ERROR \* \`1150\` \— ERROR\_CODE\_TICKET\_REVOKE - **`error_message`** `string` — The join token error message. - **`join_token`** `string` — The join token of the session. **Example:** ```json { "code": 0, "error_message": "success", "join_token": "OIgzlUv99nloE1vFMFssJVZuhFSstmSNd_Pi4WEBUNy0hWK2L6TtrRWscn" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request Invalid request. ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(/docs/api/rate-limits/). ### Get session livestream configuration - **Method:** `GET` - **Path:** `/zoom_events/events/{eventId}/sessions/{sessionId}/livestream` - **Tags:** Sessions List the livestream configuration for the given session. RTMP Incoming livestream will only work for webinar sessions (not meetings). Please check [RTMP livesteam](https://support.zoom.com/hc/en/article?id=zm_kb\&sysparm_article=KB0077038) for the feature details. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus / Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_sessions:read`,`zoom_events_sessions:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:read:session_livestream_config`,`zoom_events:read:session_livestream_config:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Session livestream details. ###### Content-Type: application/json - **`incoming_config`** `object` — The incoming livestream configuration. - **`effective_time`** `string`, format: `date-time` — The effective time of the stream key when it is valid, in UTC. The format is \`yyyy-MM-dd\`T\`HH:mm:ssZ\` - **`expiration_time`** `string`, format: `date-time` — The expiration time of the stream key in UTC. After this time, the stream key doesn't work anymore. The format is \`yyyy-MM-dd\`T\`HH:mm:ssZ\` - **`stream_backup_url`** `string` — The stream backup url. - **`stream_key`** `string` — The stream key. - **`stream_key_description`** `string` — The stream key description. - **`stream_key_id`** `string` — The stream key ID. - **`stream_key_name`** `string` — The stream key name. - **`stream_key_type`** `string`, possible values: `"SAVED", "GENERATED"` — The type of stream key: \* \`SAVED\`- Saved. A saved stream key can be re-used for different sessions scheduled for different times. \* \`GENERATED\`- Generated key, specific to a session. - **`stream_url`** `string` — The stream url. - **`incoming_enabled`** `boolean` — The incoming livestream enabled or not. **Example:** ```json { "incoming_enabled": true, "incoming_config": { "stream_key_id": "YwG21kyxkyRO7SOkuwPf7S8B", "stream_key_name": "Stream key 2", "stream_key_description": "Stream key 2 description", "stream_key_type": "SAVED", "stream_key": "ZAEUMvRcI1eq_SRMg3iQBz-U", "stream_url": "rtmp://10.100.125.159:1956/live", "stream_backup_url": "rtmp://10.100.125.159:1976/live?backup=1", "effective_time": "2022-05-31T13:00:00Z", "expiration_time": "2022-05-31T13:00:00Z" } } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2002\` \
Event not found. \
\*\*Error Code:\*\* \`2003\` \
Session not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(/docs/api/rate-limits/). ### Update session livestream configuration - **Method:** `PATCH` - **Path:** `/zoom_events/events/{eventId}/sessions/{sessionId}/livestream` - **Tags:** Sessions Update the livestream configuration for the given session. RTMP Incoming livestream will only work for webinar sessions (not meetings). Please check [RTMP livestream](https://support.zoom.com/hc/en/article?id=zm_kb\&sysparm_article=KB0077038) for the feature details. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus / Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_sessions:write`,`zoom_events_sessions:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:update:session_livestream_config`,`zoom_events:update:session_livestream_config:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`incoming_enabled` (required)** `boolean` — The incoming livestream enabled or not. RTMP Incoming livestream will only work for webinar sessions (not meetings). - **`incoming_config`** `object` — The incoming livestream configuration. - **`stream_key_type`** `string`, possible values: `"GENERATED"` — The type of stream key: \* \`GENERATED\`- Generated key, specific to a session. If a generated key already exist for this sessionId, then it is reused. This is the only type supported as of now and this is a mandatory field when the incoming\_enabled field is set to \`true\`. **Example:** ```json { "incoming_enabled": true, "incoming_config": { "stream_key_type": "GENERATED" } } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` Successfully updated the livestream configuration. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`26303\` \
Incoming livestream is supported only for webinar meeting\_type sessions. \
\*\*Error Code:\*\* \`26304\` \
Incoming livestream configuration is missing. \
\*\*Error Code:\*\* \`26305\` \
Incoming livestream key type is invalid. This type is not supported for update. \
##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2002\` \
Event not found. \
\*\*Error Code:\*\* \`2003\` \
Session not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(/docs/api/rate-limits/). ### List session polls - **Method:** `GET` - **Path:** `/zoom_events/events/{eventId}/sessions/{sessionId}/polls` - **Tags:** Sessions List all the polls of a session. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus / Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_sessions:read`,`zoom_events_sessions:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:read:list_session_polls`,`zoom_events:read:list_session_polls:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` List of polls returned. ###### Content-Type: application/json - **`polls`** `array` **Items:** - **`anonymous` (required)** `boolean` — Allow session participants to answer poll questions anonymously. - **`poll_type` (required)** `integer`, possible values: `1, 2, 3` — The type of poll. \* \`1\` \— Basic Poll. Only single and multiple choice questions are allowed. \* \`2\` \— Advanced Poll. This feature must be enabled in your Zoom account. \* \`3\` \— Quiz. This feature must be enabled in your Zoom account. - **`title` (required)** `string` — The poll's title, up to 64 characters. - **`id`** `string` — Session Poll ID. Required for updating an existing poll. - **`questions`** `array` — Information about the poll's questions. **Items:** - **`name` (required)** `string` — The poll question, up to 255 characters. For \`fill\_in\_the\_blank\` polls, this field is the poll's question. For each value that the user must fill in, ensure that there are the same number of \`right\_answers\` values. - **`type` (required)** `string`, possible values: `"single", "multiple", "matching", "rank_order", "short_answer", "long_answer", "fill_in_the_blank", "rating_scale"` — The poll's question and answer type. \* \`single\` \— Single choice. \* \`multiple\` \— Multiple choice. \* \`matching\` \— Matching. \* \`rank\_order\` \— Rank order. \* \`short\_answer\` \— Short answer. \* \`long\_answer\` \— Long answer. \* \`fill\_in\_the\_blank\` \— Fill in the blank. \* \`rating\_scale\` \— Rating scale. - **`answer_max_character`** `integer` — The allowed maximum number of characters. This field only applies to \`short\_answer\` and \`long\_answer\` polls. \* For \`short\_answer\` polls, a maximum of 500 characters. \* For \`long\_answer\` polls, a maximum of 2,000 characters. - **`answer_min_character`** `integer` — The allowed minimum number of characters. This field only applies to \`short\_answer\` and \`long\_answer\` polls. You must provide at least a \*\*one\*\* character minimum value. - **`answer_required`** `boolean`, default: `false` — Whether participants must answer the question. \* \`true\` \— The participant must answer the question. \* \`false\` \— The participant does not need to answer the question. \*\*Note:\*\* \* When the poll's \`type\` value is \`1\` (Poll), this value defaults to \`true\`. \* When the poll's \`type\` value is the \`2\` (Advanced Poll) or \`3\` (Quiz) values, this value defaults to \`false\`. - **`answers`** `array` — The poll question's available answers. This field requires a \*\*minimum\*\* of two answers. \* For \`single\` and \`multiple\` polls, you can only provide a maximum of 10 answers. \* For \`matching\` polls, you can only provide a maximum of 16 answers. \* For \`rank\_order\` polls, you can only provide a maximum of seven answers. **Items:** `string` - **`case_sensitive`** `boolean`, default: `false` — Whether the correct answer is case sensitive. This field only applies to \`fill\_in\_the\_blank\` polls. \* \`true\` \— The answer is case-sensitive. \* \`false\` \— The answer is not case-sensitive. This value defaults to \`false\`. - **`prompt_right_answers`** `array` — The question prompt's correct answers. \* For \`matching\` polls, you must provide a minimum of two correct answers, up to a maximum of 10 correct answers. \* For \`rank\_order\` polls, you can only provide one correct answer. **Items:** `string` - **`prompts`** `array` — Information about the prompt questions. The question prompt's title. This field only applies to \`matching\` and \`rank\_order\` polls. You \*\*must\*\* provide a minimum of two prompts, up to a maximum of 10 prompts. **Items:** `string` - **`rating_max_label`** `string` — The high score label used for the \`rating\_max\_value\` field. This field only applies to the \`rating\_scale\` poll. - **`rating_max_value`** `integer` — The rating scale's maximum value, up to a maximum value of 10. This field only applies to the \`rating\_scale\` poll. - **`rating_min_label`** `string` — The low score label used for the \`rating\_min\_value\` field. This field only applies to the \`rating\_scale\` poll. - **`rating_min_value`** `integer` — The rating scale's minimum value. This value cannot be less than zero. This field only applies to the \`rating\_scale\` poll. - **`right_answers`** `array` — The poll question's correct answer(s). This field is \*\*required\*\* if the poll's \`type\` value is \`3\` (Quiz). For \`single\` and \`matching\` polls, this field only accepts one answer. **Items:** `string` - **`show_as_dropdown`** `boolean`, default: `false` — Whether to display the radio selection as a drop-down box. \* \`true\` \— Show as a drop-down box. \* \`false\` \— Do not show as a drop-down box. This value defaults to \`false\`. - **`status`** `string`, possible values: `"active", "inactive"` — Status of the Session Poll: \`active\` - Poll is active \`inactive\` - Poll is deactivated - **`total_records`** `number` — The total number of polls. **Example:** ```json { "total_records": 1, "polls": [ { "id": "QalIoKWLTJehBJ8e1xRrbQ", "status": "active", "anonymous": false, "poll_type": 2, "questions": [ { "answer_max_character": 200, "answer_min_character": 1, "answer_required": false, "answers": [ "Extremely useful" ], "case_sensitive": false, "name": "How useful was this meeting?", "prompts": [ "How are you?" ], "prompt_right_answers": [ "Good" ], "rating_max_label": "Extremely Likely", "rating_max_value": 4, "rating_min_label": "Not likely", "rating_min_value": 0, "right_answers": [ "Good" ], "show_as_dropdown": false, "type": "single" } ], "title": "Learn something new" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request Invalid request. ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2002\` \
Event not found. \
\*\*Error Code:\*\* \`2003\` \
Session not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(/docs/api/rate-limits/). ### Create or update session polls - **Method:** `PUT` - **Path:** `/zoom_events/events/{eventId}/sessions/{sessionId}/polls` - **Tags:** Sessions Create or update the list of polls for the session. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus / Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_sessions:write`,`zoom_events_sessions:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:update:session_poll`,`zoom_events:update:session_poll:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`polls`** `array` **Items:** - **`anonymous` (required)** `boolean` — Allow session participants to answer poll questions anonymously. - **`poll_type` (required)** `integer`, possible values: `1, 2, 3` — The type of poll. \* \`1\` \— Basic Poll. Only single and multiple choice questions are allowed. \* \`2\` \— Advanced Poll. This feature must be enabled in your Zoom account. \* \`3\` \— Quiz. This feature must be enabled in your Zoom account. - **`title` (required)** `string` — The poll's title, up to 64 characters. - **`id`** `string` — Session Poll ID. Required for updating an existing poll. - **`questions`** `array` — Information about the poll's questions. **Items:** - **`name` (required)** `string` — The poll question, up to 255 characters. For \`fill\_in\_the\_blank\` question, this field is the question text with placeholders for blanks (ex: \`This is a \ and is another \\`. For each value that the user must fill in, ensure that there are the same number of \`answers\` values. - **`type` (required)** `string`, possible values: `"single", "multiple", "matching", "rank_order", "short_answer", "long_answer", "fill_in_the_blank", "rating_scale"` — The poll's question and answer type. \* \`single\` \— Single choice. \* \`multiple\` \— Multiple choice. \* \`matching\` \— Matching. \* \`rank\_order\` \— Rank order. \* \`short\_answer\` \— Short answer. \* \`long\_answer\` \— Long answer. \* \`fill\_in\_the\_blank\` \— Fill in the blank. \* \`rating\_scale\` \— Rating scale. - **`answer_max_character`** `integer` — The allowed maximum number of characters. This field only applies to \`short\_answer\` and \`long\_answer\` polls. \* For \`short\_answer\` polls, a maximum of 500 characters. \* For \`long\_answer\` polls, a maximum of 2,000 characters. - **`answer_min_character`** `integer` — The allowed minimum number of characters. This field only applies to \`short\_answer\` and \`long\_answer\` polls. You must provide at least a \*\*one\*\* character minimum value. - **`answer_required`** `boolean`, default: `false` — Whether participants must answer the question. \* \`true\` \— The participant must answer the question. \* \`false\` \— The participant does not need to answer the question. \*\*Note:\*\* \* When the poll's \`type\` value is \`1\` (Poll), this value defaults to \`true\`. \* When the poll's \`type\` value is the \`2\` (Advanced Poll) or \`3\` (Quiz) values, this value defaults to \`false\`. - **`answers`** `array` — The poll question's available answers. This field requires a \*\*minimum\*\* of two answers. \* For \`single\` and \`multiple\` polls, you can only provide a maximum of 10 answers. \* For \`matching\` polls, you can only provide a maximum of 16 answers. \* For \`rank\_order\` polls, you can only provide a maximum of seven answers. **Items:** `string` - **`case_sensitive`** `boolean`, default: `false` — Whether the correct answer is case sensitive. This field only applies to \`fill\_in\_the\_blank\` polls. \* \`true\` \— The answer is case-sensitive. \* \`false\` \— The answer is not case-sensitive. This value defaults to \`false\`. - **`prompt_right_answers`** `array` — The question prompt's correct answers. \* For \`matching\` polls, you must provide a minimum of two correct answers, up to a maximum of 10 correct answers. \* For \`rank\_order\` polls, you can only provide one correct answer. **Items:** `string` - **`prompts`** `array` — Information about the prompt questions. The question prompt's title. This field only applies to \`matching\` and \`rank\_order\` polls. You \*\*must\*\* provide a minimum of two prompts, up to a maximum of 10 prompts. **Items:** `string` - **`rating_max_label`** `string` — The high score label used for the \`rating\_max\_value\` field. This field only applies to the \`rating\_scale\` poll. - **`rating_max_value`** `integer` — The rating scale's maximum value, up to a maximum value of 10. This field only applies to the \`rating\_scale\` poll. - **`rating_min_label`** `string` — The low score label used for the \`rating\_min\_value\` field. This field only applies to the \`rating\_scale\` poll. - **`rating_min_value`** `integer` — The rating scale's minimum value. This value cannot be less than zero. This field only applies to the \`rating\_scale\` poll. - **`right_answers`** `array` — The poll question's correct answer(s). This field is \*\*required\*\* if the poll's \`type\` value is \`3\` (Quiz). For \`single\` and \`matching\` polls, this field only accepts one answer. **Items:** `string` - **`show_as_dropdown`** `boolean`, default: `false` — Whether to display the radio selection as a drop-down box. \* \`true\` \— Show as a drop-down box. \* \`false\` \— Do not show as a drop-down box. This value defaults to \`false\`. - **`status`** `string`, possible values: `"active", "inactive"` — Status of the Session Poll: \`active\` - Poll is active \`inactive\` - Poll is deactivated **Example:** ```json { "polls": [ { "id": "QalIoKWLTJehBJ8e1xRrbQ", "status": "active", "anonymous": false, "poll_type": 2, "questions": [ { "answer_max_character": 200, "answer_min_character": 1, "answer_required": false, "answers": [ "Extremely useful" ], "case_sensitive": false, "name": "How useful was this meeting?", "prompts": [ "How are you?" ], "prompt_right_answers": [ "Good" ], "rating_max_label": "Extremely Likely", "rating_max_value": 4, "rating_min_label": "Not likely", "rating_min_value": 0, "right_answers": [ "Good" ], "show_as_dropdown": false, "type": "single" } ], "title": "Learn something new" } ] } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` Polls updated successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request Invalid request. ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(/docs/api/rate-limits/). ### List session reservations - **Method:** `GET` - **Path:** `/zoom_events/events/{eventId}/sessions/{sessionId}/reservations` - **Tags:** Sessions Retrieves the list of reservations made by registrants for the session. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus / Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_sessions:read`,`zoom_events_sessions:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:read:list_session_reservations`,`zoom_events:read:list_session_reservations:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` List of session reservations. ###### Content-Type: application/json - **`next_page_token`** `string` — The next page token paginates through a set of large results. A next page token is returned whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes. - **`reservations`** `array` — Reservations **Items:** - **`email`** `string` — The email address of the registrant. - **`first_name`** `string` — The registrant's first name. - **`last_name`** `string` — The registrant's last name. - **`total_records`** `number` — The total number of reservations per page. **Example:** ```json { "total_records": 1, "next_page_token": "oLVRGBTZXI6Kt7zv0gb8Qy4h8cLNbzK1ig2", "reservations": [ { "first_name": "First", "last_name": "Last", "email": "email@zoom.us" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`26302\` \
The time range is overlapping or you have reached the maximum number of sessions on the same day. \
##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2002\` \
Event not found. \
\*\*Error Code:\*\* \`2003\` \
Session not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(/docs/api/rate-limits/). ### Add session reservations - **Method:** `POST` - **Path:** `/zoom_events/events/{eventId}/sessions/{sessionId}/reservations` - **Tags:** Sessions Reserve a spot for a user in the given session. As a host, reserve registrants for a particular session. Session reservation needs to be enabled before using this API. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus / Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_sessions:write`,`zoom_events_sessions:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:write:session_reservations`,`zoom_events:write:session_reservations:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`email` (required)** `string` — The email address of the registrant. **Example:** ```json { "email": "email@zoom.us" } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` Reservation added successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`26306\` \
No reservations available. Maximum capacity reached. \
\*\*Error Code:\*\* \`26307\` \
Session reservation is disabled. \
\*\*Error Code:\*\* \`26308\` \
Host session reservation is disabled. \
\*\*Error Code:\*\* \`26309\` \
User does not have access to this session. \
\*\*Error Code:\*\* \`26310\` \
Reservations are not required for users with special roles. \
##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2002\` \
Event not found. \
\*\*Error Code:\*\* \`2003\` \
Session not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(/docs/api/rate-limits/). ### Delete session reservations - **Method:** `DELETE` - **Path:** `/zoom_events/events/{eventId}/sessions/{sessionId}/reservations` - **Tags:** Sessions This tool removes a user's reservation spot for a given session. As a host, you can use it to remove reservations of registrants for a particular session. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus / Events license. **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_sessions:write`,`zoom_events_sessions:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:delete:session_reservations`,`zoom_events:delete:session_reservations:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`email` (required)** `string` — The email address of the registrant. **Example:** ```json { "email": "email@zoom.us" } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` Reservation deleted successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`26311\` \
Session reservation not found. \
##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2002\` \
Event not found. \
\*\*Error Code:\*\* \`2003\` \
Session not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List speakers - **Method:** `GET` - **Path:** `/zoom_events/events/{eventId}/speakers` - **Tags:** Speakers Retrieves a list of speakers for an event. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus or Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_speakers:read`,`zoom_events_speakers:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:read:list_speakers`,`zoom_events:read:list_speakers:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` List of speakers returned. ###### Content-Type: application/json - **`speakers`** `array` **Items:** - **`biography`** `string` — The speaker's biography. - **`company_name`** `string` — The name of the speaker's company. - **`company_website`** `string` — The speaker's company website. - **`email`** `string` — The speaker's email address. - **`featured_in_event_detail_page`** `boolean` — Whether the speaker is featured in the event detail page. - **`featured_in_lobby`** `boolean` — Whether the speaker is featured in the event lobby. - **`job_title`** `string` — The speaker's job title. - **`linkedin_url`** `string` — The LinkedIn URL. - **`name`** `string` — The speaker's name. - **`speaker_id`** `string` — The speaker ID. - **`twitter_url`** `string` — The Twitter URL. - **`visible_in_event_detail_page`** `boolean`, default: `true` — Whether the speaker is visible in the event detail page. - **`visible_in_lobby`** `boolean`, default: `true` — Whether the speaker is visible in the event lobby. - **`youtube_url`** `string` — The YouTube URL. - **`total_records`** `number` — The total number of speakers. **Example:** ```json { "total_records": 1, "speakers": [ { "speaker_id": "3935Ug73Sp6S-7K1BHk7qw", "name": "John Joseph Dev", "email": "email@example.com", "job_title": "Product Manager", "biography": "Provide a brief introduction of the speaker.", "company_name": "zoom", "company_website": "https://www.example.com", "linkedin_url": "https://linkedin.com/example", "twitter_url": "https://twitter.com/example", "youtube_url": "https://youtube.com/example", "featured_in_event_detail_page": true, "visible_in_event_detail_page": true, "featured_in_lobby": false, "visible_in_lobby": true } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request Invalid request. ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2002\` \
Event not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/). ### Create a speaker - **Method:** `POST` - **Path:** `/zoom_events/events/{eventId}/speakers` - **Tags:** Speakers Creates a speaker for an event. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus / Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_speakers:write`,`zoom_events_speakers:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:write:speaker`,`zoom_events:write:speaker:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`name` (required)** `string` — The speaker's name. - **`biography`** `string` — The speaker's biography. - **`company_name`** `string` — The name of the speaker's comapny. - **`company_website`** `string` — The speaker's company website. - **`email`** `string` — The speaker's email address. - **`featured_in_event_detail_page`** `boolean` — Whether the speaker is featured in the event detail page. - **`featured_in_lobby`** `boolean` — Whether the speaker is featured in the event lobby. - **`job_title`** `string` — The speaker's job title. - **`linkedin_url`** `string` — The LinkedIn URL. - **`twitter_url`** `string` — The Twitter URL. - **`visible_in_event_detail_page`** `boolean`, default: `true` — Whether the speaker is visible in the event detail page. - **`visible_in_lobby`** `boolean`, default: `true` — Whether the speaker is visible in the event lobby. - **`youtube_url`** `string` — The Youtube URL. **Example:** ```json { "name": "John Joseph Dev", "email": "email@example.com", "job_title": "Product Manager", "biography": "Provide a brief introduction of the speaker.", "company_name": "zoom", "company_website": "https://www.example.com", "linkedin_url": "https://linkedin.com/example", "twitter_url": "https://twitter.com/example", "youtube_url": "https://youtube.com/example", "featured_in_event_detail_page": true, "visible_in_event_detail_page": true, "featured_in_lobby": false, "visible_in_lobby": true } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` Speakers returned. ###### Content-Type: application/json - **`biography`** `string` — The speaker's biography. - **`company_name`** `string` — The name of the speaker's comapny. - **`company_website`** `string` — The speaker's company website. - **`email`** `string` — The speaker's email address. - **`featured_in_event_detail_page`** `boolean` — Whether the speaker is featured in the event detail page. - **`featured_in_lobby`** `boolean` — Whether the speaker is featured in the event lobby. - **`job_title`** `string` — The speaker's job title. - **`linkedin_url`** `string` — The LinkedIn URL. - **`name`** `string` — The speaker's name. - **`speaker_id`** `string` — The speaker ID. - **`twitter_url`** `string` — The Twitter URL. - **`visible_in_event_detail_page`** `boolean`, default: `true` — Whether the speaker is visible in the event detail page. - **`visible_in_lobby`** `boolean`, default: `true` — Whether the speaker is visible in the event lobby. - **`youtube_url`** `string` — The YouTube URL. **Example:** ```json { "speaker_id": "3935Ug73Sp6S-7K1BHk7qw", "name": "John Joseph Dev", "email": "email@example.com", "job_title": "Product Manager", "biography": "Provide a brief introduction of the speaker.", "company_name": "zoom", "company_website": "https://www.example.com", "linkedin_url": "https://linkedin.com/example", "twitter_url": "https://twitter.com/example", "youtube_url": "https://youtube.com/example", "featured_in_event_detail_page": true, "visible_in_event_detail_page": true, "featured_in_lobby": false, "visible_in_lobby": true } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`1001\` \
Content moderation check failed. \
\*\*Error Code:\*\* \`1003\` \
The email address has already been used by another speaker. \
##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`3002\` \
You have exceeded the maximum speaker capacity. \
\*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2002\` \
Event not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/). ### Get a speaker - **Method:** `GET` - **Path:** `/zoom_events/events/{eventId}/speakers/{speakerId}` - **Tags:** Speakers Returns information on a specific speaker. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus / Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_speakers:read`,`zoom_events_speakers:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:read:speaker`,`zoom_events:read:speaker:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Speaker returned. ###### Content-Type: application/json - **`biography`** `string` — The speaker's biography. - **`company_name`** `string` — The name of the speaker's comapny. - **`company_website`** `string` — The speaker's company website. - **`email`** `string` — The speaker's email address. - **`featured_in_event_detail_page`** `boolean` — Whether the speaker is featured in the event detail page. - **`featured_in_lobby`** `boolean` — Whether the speaker is featured in the event lobby. - **`job_title`** `string` — The speaker's job title. - **`linkedin_url`** `string` — The LinkedIn URL. - **`name`** `string` — The speaker's name. - **`speaker_id`** `string` — The speaker ID. - **`twitter_url`** `string` — The Twitter URL. - **`visible_in_event_detail_page`** `boolean`, default: `true` — Whether the speaker is visible in the event detail page. - **`visible_in_lobby`** `boolean`, default: `true` — Whether the speaker is visible in the event lobby. - **`youtube_url`** `string` — The YouTube URL. **Example:** ```json { "speaker_id": "3935Ug73Sp6S-7K1BHk7qw", "name": "John Joseph Dev", "email": "email@example.com", "job_title": "Product Manager", "biography": "Provide a brief introduction of the speaker.", "company_name": "zoom", "company_website": "https://www.example.com", "linkedin_url": "https://linkedin.com/example", "twitter_url": "https://twitter.com/example", "youtube_url": "https://youtube.com/example", "featured_in_event_detail_page": true, "visible_in_event_detail_page": true, "featured_in_lobby": false, "visible_in_lobby": true } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request Invalid request. ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2002\` \
Event not found. \
\*\*Error Code:\*\* \`2005\` \
Speaker not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/). ### Delete a speaker - **Method:** `DELETE` - **Path:** `/zoom_events/events/{eventId}/speakers/{speakerId}` - **Tags:** Speakers Deletes a speaker. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus / Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_speakers:write`,`zoom_events_speakers:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:delete:speaker`,`zoom_events:delete:speaker:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` Speaker deleted successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`2005\` \
Speaker not found. \
\*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2002\` \
Event not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/). ### Update a speaker - **Method:** `PATCH` - **Path:** `/zoom_events/events/{eventId}/speakers/{speakerId}` - **Tags:** Speakers Updates the speaker information. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus / Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_speakers:write`,`zoom_events_speakers:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:update:speaker`,`zoom_events:update:speaker:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`biography`** `string` — The speaker's biography. - **`company_name`** `string` — The name of the speaker's company. - **`company_website`** `string` — The speaker's company website. - **`email`** `string` — The speaker's email address. - **`featured_in_event_detail_page`** `boolean` — Whether the speaker is featured in the event detail page. - **`featured_in_lobby`** `boolean` — Whether the speaker is featured in the event lobby. - **`job_title`** `string` — The speaker's job title. - **`linkedin_url`** `string` — The LinkedIn URL. - **`name`** `string` — The speaker's name. - **`twitter_url`** `string` — The Twitter URL. - **`visible_in_event_detail_page`** `boolean`, default: `true` — Whether the speaker is visible in the event detail page. - **`visible_in_lobby`** `boolean`, default: `true` — Whether the speaker is visible in the event lobby. - **`youtube_url`** `string` — The YouTube URL. **Example:** ```json { "name": "John Joseph Dev", "email": "email@example.com", "job_title": "Product Manager", "biography": "Provide a brief introduction of the speaker.", "company_name": "zoom", "company_website": "https://www.example.com", "linkedin_url": "https://linkedin.com/example", "twitter_url": "https://twitter.com/example", "youtube_url": "https://youtube.com/example", "featured_in_event_detail_page": true, "visible_in_event_detail_page": true, "featured_in_lobby": false, "visible_in_lobby": true } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` Speaker updated successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`1001\` \
Content moderation check failed. \
\*\*Error Code:\*\* \`1003\` \
The email address has already been used by another speaker. \
\*\*Error Code:\*\* \`1005\` \
The same person has been assigned multiple roles. A user is not allowed to hold multiple roles in the same session. \
##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`2005\` \
Speaker not found. \
\*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2002\` \
Event not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/). ### List registration questions for an event - **Method:** `GET` - **Path:** `/zoom_events/events/{eventId}/questions` - **Tags:** Ticket Types List registration questions and fields that are to be answered by users while registering for an event. These questions are setup during the event level. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus / Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_ticket_types:read`,`zoom_events_ticket_types:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:read:list_registration_questions`,`zoom_events:read:list_registration_questions:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Successfully retrieved registration questions. ###### Content-Type: application/json **All of:** - **`custom_questions`** `array` — Array of Registrant Custom Questions. **Items:** - **`max_length`** `integer` — The maximum length of the custom question answer. This is applicable for short\_answer/long\_answer question types. The max\_length should be greater than or equal min\_length. The allowed max\_length for short\_answer is 500 and for long\_answer is 2000. - **`min_length`** `integer` — The minimum length of the custom question answer. This is applicable for short\_answer/long\_answer question types. If this custom question is required then the min\_length should be atleast 1. - **`options`** `array` — An array of answer choices. Can't be used for short or long answer type. **Items:** `string` - **`question_id`** `string` — The ID of the custom question. - **`required`** `boolean` — State whether or not the custom question is required to be answered by a registrant. - **`title`** `string` — Custom question. - **`type`** `string`, possible values: `"short_answer", "long_answer", "single_radio", "single_dropdown", "multiple_choice"` — The question-answer type. - **`questions`** `array` — Array of registration fields whose values should be provided by registrants during registration. **Items:** - **`field_name`** `string`, possible values: `"first_name", "last_name", "address", "city", "state", "zip", "country", "phone", "industry", "job_title", "organization", "organization_size"` — Field name. - **`question_id`** `string` — The ID of the question. - **`required`** `boolean` — State whether the selected fields are required or optional. - **`title`** `string` — Title of the question. **Example:** ```json { "questions": [ { "field_name": "last_name", "required": true, "title": "Last Name", "question_id": "Fn2rBZgJQzi6VIU--uWqnA" } ], "custom_questions": [ { "options": [ "Good" ], "required": true, "title": "How are you?", "question_id": "Fn2rBZgJQzi6VIU--uWqnA", "type": "short_answer", "min_length": 500, "max_length": 2000 } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request Invalid request. ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/). ### Update registration questions for an event - **Method:** `PUT` - **Path:** `/zoom_events/events/{eventId}/questions` - **Tags:** Ticket Types Updates registration questions and fields that are to be answered by users while registering for an event. These questions are setup at event level. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus / Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_ticket_types:write`,`zoom_events_ticket_types:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:update:registraion_question`,`zoom_events:update:registraion_question:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`custom_questions`** `array` — Array of registrant custom questions. **Items:** - **`max_length`** `integer` — The maximum length of the custom question answer. This is applicable for short\_answer/long\_answer question types. The max\_length should be greater than or equal min\_length. The allowed max\_length for short\_answer is 500 and for long\_answer is 2000. - **`min_length`** `integer` — The minimum length of the custom question answer. This is applicable for short\_answer/long\_answer question types. If this custom question is required then the min\_length should be atleast 1. - **`options`** `array` — An array of answer choices. Can't be used for short or long answer type. **Items:** `string` - **`question_id`** `string` — The ID of the custom question. - **`required`** `boolean` — State whether or not the custom question is required to be answered by a registrant. - **`title`** `string` — Custom question. - **`type`** `string`, possible values: `"short_answer", "long_answer", "single_radio", "single_dropdown", "multiple_choice"` — The question-answer type. - **`questions`** `array` — Array of registration fields whose values should be provided by registrants during registration. **Items:** - **`field_name`** `string`, possible values: `"first_name", "last_name", "address", "city", "state", "zip", "country", "phone", "industry", "job_title", "organization", "organization_size"` — The field name. - **`question_id`** `string` — The ID of the question. - **`required`** `boolean` — Whether the selected fields are required or optional. - **`title`** `string` — Title of the question. **Example:** ```json { "questions": [ { "field_name": "last_name", "required": true, "title": "Last Name", "question_id": "Fn2rBZgJQzi6VIU--uWqnA" } ], "custom_questions": [ { "options": [ "Good" ], "required": true, "title": "How are you?", "question_id": "Fn2rBZgJQzi6VIU--uWqnA", "type": "short_answer", "min_length": 500, "max_length": 2000 } ] } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` Successfully updated registration questions. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request Invalid request. ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/). ### List ticket types - **Method:** `GET` - **Path:** `/zoom_events/events/{eventId}/ticket_types` - **Tags:** Ticket Types Lists all ticket types associated with an event. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus or Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_ticket_types:read`,`zoom_events_ticket_types:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:read:list_ticket_types`,`zoom_events:read:list_ticket_types:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` A list of ticket types. ###### Content-Type: application/json - **`ticket_types`** `array` — The list of ticket types for the event. **Items:** - **`bookmarked_sessions`** `array` — Pre-bookmark sessions for your attendees. This is list of session IDs to be bookmarked for this ticket type. Its values could be comma seperated session IDs or can have value \*ALL\* . \*ALL\* refer all the sessions in the event. **Items:** `string` - **`currency`** `string` — The currency of the ticket type. - **`description`** `string` — The description of the ticket type. - **`end_time`** `string` — The end time of ticket sales. - **`free`** `boolean` — Whether the ticket is free. - **`name`** `string` — The name of the ticket type. - **`price`** `string` — The price of the ticket type. - **`private_visibility_rules`** `object` — The private visibility settings - **`account_restrict`** `boolean` — Whether the ticket type is restricted to certain Zoom accounts. - **`allow_domain_list`** `array` — The ticket type is restricted to these specific domains. This array returns a maximum of 50 domains. **Items:** `string` - **`attendance_type`** `string`, possible values: `"virtual", "in-person", "hybrid"` — The type of attendee experience for the event. \* \`virtual\` virtual attendees only \* \`in-person\` in-person attendees only \* \`hybrid\` both in-person and virtual attendees. - **`email_restrict_list`** `array` — The registration restricted to users by email addresses. Only these users are allowed to register and these email addresses will receive an email invitation. **Items:** `string` - **`quantity`** `number` — The quantity of the ticket type. - **`sessions`** `array` — The list of session IDs allowed for this ticket type or \*ALL\* \*ALL\* refer all the sessions in the event. **Items:** `string` - **`sold_quantity`** `number` — The total number of tickets sold. - **`start_time`** `string` — The start time of ticket sales. - **`ticket_type_id`** `string` — The ID of the ticket type. - **`total_records`** `number` — The total number of records. **Example:** ```json { "total_records": 1, "ticket_types": [ { "ticket_type_id": "234kjhg23kl4jhlaksjdh3", "name": "General Admission Ticket", "currency": "USD", "free": true, "price": "0", "quantity": 50, "start_time": "2022-03-24T22:30:00Z", "end_time": "2023-01-01T06:30:00Z", "description": "The description of the ticket type.", "sold_quantity": 35, "sessions": [ "ALL" ], "bookmarked_sessions": [ "ALL" ], "private_visibility_rules": { "account_restrict": true, "allow_domain_list": [ "zoom.us" ], "email_restrict_list": [ "example1@email.com" ], "attendance_type": "hybrid" } } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request Invalid request. ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/). ### Create an event ticket type - **Method:** `POST` - **Path:** `/zoom_events/events/{eventId}/ticket_types` - **Tags:** Ticket Types Creates a ticket type for the event ID that is not allowed for single session and recurring event types. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus / Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_ticket_types:write`,`zoom_events_ticket_types:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:write:ticket_type`,`zoom_events:write:ticket_type:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`currency` (required)** `string` — The currency of the ticket type. - **`end_time` (required)** `string` — The end time of ticket sales. - **`name` (required)** `string` — The name of the ticket type. - **`start_time` (required)** `string` — The start time of ticket sales. - **`attendance_type`** `string`, possible values: `"virtual", "in-person", "hybrid"` — The type of attendee experience for the event. \* \`virtual\` virtual attendees only \* \`in-person\` in-person attendees only \* \`hybrid\` both in-person and virtual attendees - **`bookmarked_sessions`** `array` — The list of sessions that display in the main lobby. The value is an array of session IDs or \*ALL\* . \*ALL\* refer all the sessions in the event. **Items:** `string` - **`description`** `string` — The description of the ticket type. - **`free`** `boolean` — Whether the ticket is free. - **`price`** `string` — The price of the ticket type. - **`private_visibility_rules`** `object` — The private visibility settings. - **`account_restrict`** `boolean` — Whether the ticket type is restricted to certain Zoom accounts. - **`allow_domain_list`** `array` — The ticket type is restricted to these specific domains. The maximum domains you can pass in the array is 50. **Items:** `string` — Each domain can have up to 40 characters - **`email_restrict_list`** `array` — The registration restricted to users by email addresses. Only these users are allowed to register and these email addresses will receive an email invitation. **Items:** `string` — Each email can have up to 60 characters - **`quantity`** `number` — The quantity of the ticket type. - **`sessions`** `array` — The list of session IDs allowed for this ticket type or \*ALL\* \*ALL\* refer all the sessions in the event. **Items:** `string` - **`sold_quantity`** `number` — The total number of tickets sold. **Example:** ```json { "name": "General Admission Ticket.", "currency": "USD", "free": true, "price": "0", "quantity": 50, "start_time": "2022-03-24T22:30:00Z", "end_time": "2023-01-01T06:30:00Z", "description": "The description of the ticket type.", "sold_quantity": 35, "sessions": [ "ALL" ], "bookmarked_sessions": [ "ALL" ], "private_visibility_rules": { "account_restrict": true, "allow_domain_list": [ "zoom.us" ], "email_restrict_list": [ "example1@email.com" ] }, "attendance_type": "hybrid" } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` The list of ticket types. ###### Content-Type: application/json - **`ticket_type_id`** `string` — The ID of the ticket type for purchase. **Example:** ```json { "ticket_type_id": "pfalaof9s83lsLJD9u2d" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`26401\` \
The ticket sale dates are invalid. \
##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2002\` \
Event ID not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/). ### Delete a ticket type - **Method:** `DELETE` - **Path:** `/zoom_events/events/{eventId}/ticket_types/{ticketTypeId}` - **Tags:** Ticket Types Deletes a ticket type of an event that is not allowed for a single session event type. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus / Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_ticket_types:write`,`zoom_events_ticket_types:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:delete:ticket_type`,`zoom_events:delete:ticket_type:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` Successfully deleted the ticket type. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2002\` \
Event ID not found. \
\*\*Error Code:\*\* \`26502\` \
The ticket type ID is invalid. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update ticket type for an event - **Method:** `PATCH` - **Path:** `/zoom_events/events/{eventId}/ticket_types/{ticketTypeId}` - **Tags:** Ticket Types Updates the ticket type for an event ID not allowed for a single session event type. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus or Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_ticket_types:write`,`zoom_events_ticket_types:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:update:ticket_type`,`zoom_events:update:ticket_type:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`bookmarked_sessions`** `array` — The list of sessions that display in the main lobby. The value is an array of session IDs or \*ALL\* . \*ALL\* refer all the sessions in the event. **Items:** `string` - **`currency`** `string` — The currency of the ticket type. - **`description`** `string` — The description of the ticket type. - **`end_time`** `string` — The end time of ticket sales. - **`free`** `boolean` — Whether the ticket is free. - **`name`** `string` — The name of the ticket type. - **`price`** `string` — The price of the ticket type. - **`private_visibility_rules`** `object` - **`account_restrict`** `boolean` — Whether the ticket type is restricted to certain Zoom accounts. - **`allow_domain_list`** `array` — The ticket type is restricted to these specific domains. The maximum domains we can pass in the array is 50. **Items:** `string` — Each domain can have up to 40 characters. - **`attendance_type`** `string`, possible values: `"virtual", "in-person", "hybrid"` — The type of attendee experience for the event. \* \`virtual\` virtual attendees only \* \`in-person\` in-person attendees only \* \`hybrid\` both in-person and virtual attendees. - **`email_restrict_list`** `array` — The registration restricted to users by email addresses. Only these users are allowed to register and these email addresses receive an email invitation. **Items:** `string` — Each email can have up to 60 characters. - **`quantity`** `number` — The quantity of the ticket type. - **`sessions`** `array` — The list of session IDs allowed for this ticket type or \*ALL\* \*ALL\* refer all the sessions in the event. **Items:** `string` - **`sold_quantity`** `number` — The total number of tickets sold. - **`start_time`** `string` — The start time of ticket sales. **Example:** ```json { "name": "General Admission Ticket", "currency": "USD", "free": true, "price": "0", "quantity": 50, "start_time": "2022-03-24T22:30:00Z", "end_time": "2023-01-01T06:30:00Z", "description": "The description of the ticket type.", "sold_quantity": 35, "sessions": [ "ALL" ], "bookmarked_sessions": [ "ALL" ], "private_visibility_rules": { "account_restrict": true, "allow_domain_list": [ "zoom.us" ], "email_restrict_list": [ "example1@email.com" ], "attendance_type": "hybrid" } } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` Successfully updated the ticket type. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`26502\` \
The ticket type ID is invalid. \
\*\*Error Code:\*\* \`2002\` \
Event not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/). ### List registration questions for ticket type - **Method:** `GET` - **Path:** `/zoom_events/events/{eventId}/ticket_types/{ticketTypeId}/questions` - **Tags:** Ticket Types List registration questions and fields that are to be answered by users while registering for an event. These questions are setup at ticket\_type level. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus / Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_ticket_types:read`,`zoom_events_ticket_types:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:read:list_registration_questions`,`zoom_events:read:list_registration_questions:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Successfully retrieved registration questions. ###### Content-Type: application/json **All of:** - **`custom_questions`** `array` — Array of Registrant Custom Questions. **Items:** - **`max_length`** `integer` — The maximum length of the custom question answer. This is applicable for short\_answer/long\_answer question types. The max\_length should be greater than or equal min\_length. The allowed max\_length for short\_answer is 500 and for long\_answer is 2000. - **`min_length`** `integer` — The minimum length of the custom question answer. This is applicable for short\_answer/long\_answer question types. If this custom question is required then the min\_length should be atleast 1. - **`options`** `array` — An array of answer choices. Can't be used for short or long answer type. **Items:** `string` - **`question_id`** `string` — The ID of the custom question. - **`required`** `boolean` — State whether or not the custom question is required to be answered by a registrant. - **`title`** `string` — Custom question. - **`type`** `string`, possible values: `"short_answer", "long_answer", "single_radio", "single_dropdown", "multiple_choice"` — The question-answer type. - **`questions`** `array` — Array of registration fields whose values should be provided by registrants during registration. **Items:** - **`field_name`** `string`, possible values: `"first_name", "last_name", "address", "city", "state", "zip", "country", "phone", "industry", "job_title", "organization", "organization_size"` — Field name. - **`question_id`** `string` — The ID of the question. - **`required`** `boolean` — State whether the selected fields are required or optional. - **`title`** `string` — Title of the question. **Example:** ```json { "questions": [ { "field_name": "last_name", "required": true, "title": "Last Name", "question_id": "Fn2rBZgJQzi6VIU--uWqnA" } ], "custom_questions": [ { "options": [ "Good" ], "required": true, "title": "How are you?", "question_id": "Fn2rBZgJQzi6VIU--uWqnA", "type": "short_answer", "min_length": 500, "max_length": 2000 } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request Invalid request. ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/). ### Update registration questions for ticket type - **Method:** `PUT` - **Path:** `/zoom_events/events/{eventId}/ticket_types/{ticketTypeId}/questions` - **Tags:** Ticket Types Updates registration questions and fields that are to be answered by users while registering for an event. These questions are setup at ticket\_type level. This API is not allowed for single session event type. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus / Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_ticket_types:write`,`zoom_events_ticket_types:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:update:registraion_question`,`zoom_events:update:registraion_question:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`custom_questions`** `array` — Array of registrant custom questions. **Items:** - **`max_length`** `integer` — The maximum length of the custom question answer. This is applicable for short\_answer/long\_answer question types. The max\_length should be greater than or equal min\_length. The allowed max\_length for short\_answer is 500 and for long\_answer is 2000. - **`min_length`** `integer` — The minimum length of the custom question answer. This is applicable for short\_answer/long\_answer question types. If this custom question is required then the min\_length should be atleast 1. - **`options`** `array` — An array of answer choices. Can't be used for short or long answer type. **Items:** `string` - **`question_id`** `string` — The ID of the custom question. - **`required`** `boolean` — State whether or not the custom question is required to be answered by a registrant. - **`title`** `string` — Custom question. - **`type`** `string`, possible values: `"short_answer", "long_answer", "single_radio", "single_dropdown", "multiple_choice"` — The question-answer type. - **`questions`** `array` — Array of registration fields whose values should be provided by registrants during registration. **Items:** - **`field_name`** `string`, possible values: `"first_name", "last_name", "address", "city", "state", "zip", "country", "phone", "industry", "job_title", "organization", "organization_size"` — Field name. - **`question_id`** `string` — The ID of the question. - **`required`** `boolean` — Whether the selected fields are required or optional. - **`title`** `string` — The title of the question. **Example:** ```json { "questions": [ { "field_name": "last_name", "required": true, "title": "Last Name", "question_id": "Fn2rBZgJQzi6VIU--uWqnA" } ], "custom_questions": [ { "options": [ "Good" ], "required": true, "title": "How are you?", "question_id": "Fn2rBZgJQzi6VIU--uWqnA", "type": "short_answer", "min_length": 500, "max_length": 2000 } ] } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` Successfully updated registration questions. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request Invalid request. ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/). ### List tickets - **Method:** `GET` - **Path:** `/zoom_events/events/{eventId}/tickets` - **Tags:** Tickets Retrieves the ticket information of an event. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus/ Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_tickets:read`,`zoom_events_tickets:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:read:list_tickets`,`zoom_events:read:list_tickets:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Ticket Information. ###### Content-Type: application/json - **`next_page_token`** `string` — The next page token. - **`tickets`** `array` — Tickets **Items:** **All of:** - **`authentication_method`** `string`, possible values: `"zoom_account", "zoom_account_otp", "corporate_idp", "no_auth", "email_opt", "zoom_account_otp_at_join"` — The event authentication method for the ticket: \* \`zoom\_account\` Zoom account holder \* \`zoom\_account\_otp\` Zoom account holder with OTP \* \`corporate\_idp\` Corporate IDP \* \`no\_auth\` No authentication\* \`email\_opt\` registration using email OTP verification\* \`zoom\_account\_otp\_at\_join\` pre-registration using email OTP verification - **`email`** `string` — The email address used for the registration. - **`event_join_link`** `string` — A unique join link created for the ticket. - **`external_ticket_id`** `string` — A set of unique alphanumeric characters that references the external ticket ID. - **`qr_code_url`** `string` — The URL generated after scanning the e-badge QR code image. This field is applicable only for hybrid or in-person event types. - **`registration_source`** `string` — The source of registration. - **`send_notification`** `boolean` — Whether to receive email notifications. - **`session_id`** `string` — Session ID registered for this ticket.This is applicable only for the tickets created for the recurring session. - **`ticket_id`** `string` — A set of unique alphanumeric characters that references the ticket ID. - **`ticket_role_type`** `string`, possible values: `"normal", "alternative_host", "panelist", "bind_meeting", "speaker", "subscription", "sponsor", "interpreter", "host", "moderator", "expo_booth_owner", "attendee_without_order", "pre_registration", "company_zoom_room", "moderator_allhost", "hub_host", "hub_owner"` — The ticket role type: \* \`normal\` The normal ticket \* \`alternative\_host\` The alternative host ticket \* \`panelist\` The panelist ticket \* \`bind\_meeting\` The bind meeting ticket \* \`speaker\` The speaker ticket \* \`interpreter\` The interpreter ticket \* \`sponsor\` The sponsor ticket \* \`host\` The host ticket \* \`moderator\` The moderator ticket \* \`expo\_booth\_owner\` The expo booth owner ticket \* \`attendee\_without\_order\` The attendee without order ticket \* \`pre\_registration\` The pre-registration ticket \* \`company\_zoom\_room\` The company zoom room ticket \* \`moderator\_allhost\` The moderator all host ticket \* \`hub\_host\` The hub host ticket \* \`hub\_owner\` The hub owner ticket \", \* \`subscription\` The subscription ticket \" - **`ticket_type_id`** `string` — The ID of the ticket type for purchase. * **`address`** `string` — The registrant's address. * **`city`** `string` — The registrant's city. * **`comments`** `string` — The registrant's questions and comments. * **`country`** `string` — The registrant's two-letter \[country code]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#countries). * **`first_name`** `string` — The registrant's first name. * **`industry`** `string` — The registrant's industry. * **`job_title`** `string` — The registrant's job title. * **`last_name`** `string` — The registrant's last name. * **`organization`** `string` — The registrant's organization. * **`organization_size`** `string` — The registrant's number of employees. * **`phone`** `string` — The registrant's phone number. * **`state`** `string` — The registrant's state or province. * **`zip`** `string` — The registrant's ZIP or postal code. - **`custom_questions`** `array` — Information about custom questions. **Items:** - **`answer`** `string` — The custom question's response value. - **`title`** `string` — The title of the custom question. - **`total_records`** `number` — The total number of tickets. **Example:** ```json { "total_records": 1, "next_page_token": "yqT59YnBSHqvDdNnkeHQsA", "tickets": [ { "ticket_id": "iso9Dllddp39dagjLj9j", "ticket_type_id": "pfalaof9s83lsLJD9u2d", "external_ticket_id": "iso9Djldop39dagjLj3j", "event_join_link": "https://events.zoom.us/ejl/xyz", "send_notification": false, "email": "email@zoom.us", "ticket_role_type": "normal", "registration_source": "Pardot", "session_id": "iso9Djldop39dagjLj3j", "authentication_method": "no_auth", "qr_code_url": "https://zoom.us/qr?t=9&ein=AkhZhct94cUqiDfRumcpPf0loI-QAOt5T9yh_vGRn2-BkPDmjfze~AyTxY2Fs9Nw6ADEk-edYyZIyGIzxVAI_v-Mci1S-KeyRhbZOG3-4kWVpYqSxJK-2Uls-j_GSHh9L7Ku_zZta-MDu2NCA1Rg", "first_name": "Jill", "last_name": "Chill", "address": "1800 Amphibious Blvd", "city": "Mountain View", "state": "CA", "zip": "94045", "country": "US", "phone": "5550100", "industry": "Food", "job_title": "Chef", "organization": "ABC Ltd.", "organization_size": "150", "comments": "Looking forward to the discussion.", "custom_questions": [ { "title": "What do you hope to learn from this?", "answer": "Look forward to learning how you come up with new recipes and what other services you offer." } ] } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2002\` \
Event not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Create tickets - **Method:** `POST` - **Path:** `/zoom_events/events/{eventId}/tickets` - **Tags:** Tickets Creates tickets for an event. You can add a single ticket or up to 30 tickets in a batch operation. Please note that this request uses the [`pre-registration`](https://support.zoom.us/hc/en-us/articles/13475985512973-Pre-registering-Zoom-Events-guests) flow. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus or Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_tickets:write`,`zoom_events_tickets:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:write:ticket`,`zoom_events:write:ticket:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`registration_source`** `string` — The source of registration. - **`tickets`** `array` — List of tickets that needs to be created. **Items:** **All of:** - **`email` (required)** `string`, format: `email` — The email address used for the registration. - **`external_ticket_id`** `string` — A set of unique alphanumeric characters that references the external ticket ID. - **`fast_join`** `boolean` — Whether to support guest join i.e. Non-Zoom users (Fast join without upfront authentication). If true then the \`registration\_needed\` flag should not be set to true as it is an invalid combination. - **`registration_needed`** `boolean` — Whether registrant needs to fill an online registration form. If \*\*true\*\* then the registration questions fields such as first\_name, last\_name, and address are not needed in the request body and are ignored if present. Also, if \*\*true\*\* then event\_registration\_link is returned instead of event\_join\_link in the response. - **`send_notification`** `boolean` — Whether to receive email notifications. - **`session_ids`** `array` — The list of session ID’s users want to register for the event. This is applicable only for recurring events with session level registration enabled. **Items:** `string` - **`ticket_type_id`** `string` — The ID of the ticket type for purchase. If the ticket type ID is not provided, it will pick the event default ticket type. If the default ticket type ID is deleted, this field is mandatory. * **`address`** `string` — The registrant's address. * **`city`** `string` — The registrant's city. * **`comments`** `string` — The registrant's questions and comments. * **`country`** `string` — The registrant's two-letter \[country code]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#countries). * **`first_name`** `string` — The registrant's first name. * **`industry`** `string` — The registrant's industry. * **`job_title`** `string` — The registrant's job title. * **`last_name`** `string` — The registrant's last name. * **`organization`** `string` — The registrant's organization. * **`organization_size`** `string` — The registrant's number of employees. * **`phone`** `string` — The registrant's phone number. * **`state`** `string` — The registrant's state or province. * **`zip`** `string` — The registrant's ZIP or postal code. - **`custom_questions`** `array` — The information about custom questions. **Items:** - **`answer`** `string` — The custom question's response value. - **`title`** `string` — The title of the custom question. **Example:** ```json { "registration_source": "Pardot", "tickets": [ { "email": "email@example.com", "ticket_type_id": "pfalaof9s83lsLJD9u2d", "external_ticket_id": "iso9Djldop39dagjLj3j", "send_notification": false, "fast_join": false, "registration_needed": false, "session_ids": [ "iso9Djldop39dagjLj3j" ], "first_name": "Jill", "last_name": "Chill", "address": "1800 Amphibious Blvd", "city": "Mountain View", "state": "CA", "zip": "94045", "country": "US", "phone": "5550100", "industry": "Food", "job_title": "Chef", "organization": "ABC Ltd.", "organization_size": "150", "comments": "Looking forward to the discussion.", "custom_questions": [ { "title": "What do you hope to learn from this?", "answer": "Look forward to learning how you come up with new recipes and what other services you offer." } ] } ] } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` The list of tickets. ###### Content-Type: application/json - **`errors`** `array` — The list of failure. If this list is empty all requests are successful. All failure records contains an entry in the error block. **Items:** - **`email`** `string` — The email address used for the registration. - **`error_code`** `string`, possible values: `"email_not_found", "ticket_type_notfound", "stock_not_exist", "invalid_sale_time", "invalid_api_registration_questions_answers", "ticket_generated_failed", "fast_join_with_registrationNeeded", "tickets_duplicate_custom_questions"` — The error code for the failure reason \* email\_not\_found - \`invalid or missing email\` \* ticket\_type\_notfound - \`ticket type not found\` \* stock\_not\_exist - \`stock not exist\` \* invalid\_sale\_time - \`invalid sale date for the ticket type ID\` \* invalid\_api\_registration\_questions\_answers - \`invalid question and answers\` \* ticket\_generated\_failed - \`ticket not generated\` \* fast\_join\_with\_registrationNeeded - \`fast join with registration needed not supported\` \* missing\_required\_questions - \`missing required questions\` \* non\_configured\_questions \`request contains non configured questions\` - **`message`** `string` — The email address used for the registration. - **`tickets`** `array` **Items:** - **`email` (required)** `string` — The email address used for the registration. - **`event_join_link`** `string` — A unique join link created for the ticket. - **`event_registration_link`** `string` — A unique registration link created for the registrant to register for the event. - **`external_ticket_id`** `string` — A set of unique alphanumeric characters that references the external ticket ID. - **`qr_code_url`** `string` — he URL for the 800x800 thumbnail image of the e-badge QR code. This field is applicable only for hybrid or in-person event types. - **`ticket_id`** `string` — A set of unique alphanumeric characters that references the ticket ID. **Example:** ```json { "errors": [ { "email": "email@zoom.us", "error_code": "fast_join_with_registrationNeeded", "message": "fast_join should not be true when when registration needed flag is true." } ], "tickets": [ { "ticket_id": "iso9Dllddp39dagjLj9j", "external_ticket_id": "iso9Djldop39dagjLj3j", "event_join_link": "https://events.zoom.us/ejl/xyz", "event_registration_link": "https://events.zoom.us/etr/xyz123", "qr_code_url": "https://zoom.us/qr?t=5&ein=Ak61AAOitRj1r8MYQ70-u-Bho-KJvIEC7eEfb_lDBksIfKuA6Ax7~A8bIXPJw8mO01a2", "email": "email@zoom.us" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`26502\` \
The ticket type ID is invalid. \
\*\*Error Code:\*\* \`26501\` \
Event is not published yet. \
\*\*Error Code:\*\* \`26401\` \
The ticket sale dates are invalid. \
\*\*Error Code:\*\* \`260503\` \
Nonconfigured fields - \["email", "phone", "Foo,Bar", "Foo\\"Bar"]. \
\*\*Error Code:\*\* \`260504\` \
Missing required fields - \["email", "phone", "Foo,Bar", "Foo\\"Bar"]. \
##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2002\` \
Event not found. \
\*\*Error Code:\*\* \`2007\` \
Not enough stock or invalid \`ticket\_type\_id\`. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/). ### Get a ticket - **Method:** `GET` - **Path:** `/zoom_events/events/{eventId}/tickets/{ticketId}` - **Tags:** Tickets Retrieves information on a specific ticket. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus or Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_tickets:read`,`zoom_events_tickets:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:read:ticket`,`zoom_events:read:ticket:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Ticket Information. ###### Content-Type: application/json **All of:** - **`authentication_method`** `string`, possible values: `"zoom_account", "zoom_account_otp", "corporate_idp", "no_auth", "email_opt", "zoom_account_otp_at_join"` — The event authentication method for the ticket: \* \`zoom\_account\` Zoom account holder \* \`zoom\_account\_otp\` Zoom account holder with OTP \* \`corporate\_idp\` Corporate IDP \* \`no\_auth\` No authentication \* \`email\_opt\` registration using email OTP verification\* \`zoom\_account\_otp\_at\_join\` pre-registration using email OTP verification - **`email`** `string` — The email address used for the registration. - **`event_join_link`** `string` — A unique join link created for the ticket. - **`external_ticket_id`** `string` — A set of unique alphanumeric characters that references the external ticket ID. - **`qr_code_url`** `string` — The URL generated after scanning the e-badge QR code image. This field is applicable only for hybrid or in-person event types. - **`registration_source`** `string` — The source of registration. - **`send_notification`** `boolean` — Whether to receive email notifications. - **`session_id`** `string` — Session ID registered for this ticket.This is applicable only for the tickets created for the recurring session. - **`ticket_id`** `string` — A set of unique alphanumeric characters that references the ticket ID. - **`ticket_role_type`** `string`, possible values: `"normal", "alternative_host", "panelist", "bind_meeting", "speaker", "subscription", "sponsor", "interpreter", "host", "moderator", "expo_booth_owner", "attendee_without_order", "pre_registration", "company_zoom_room", "moderator_allhost", "hub_host", "hub_owner"` — The ticket role type: \* \`normal\` The normal ticket \* \`alternative\_host\` The alternative host ticket \* \`panelist\` The panelist ticket \* \`bind\_meeting\` The bind meeting ticket \* \`speaker\` The speaker ticket \* \`interpreter\` The interpreter ticket \* \`sponsor\` The sponsor ticket \* \`host\` The host ticket \* \`moderator\` The moderator ticket \* \`expo\_booth\_owner\` The expo booth owner ticket \* \`attendee\_without\_order\` The attendee without order ticket \* \`pre\_registration\` The pre-registration ticket \* \`company\_zoom\_room\` The company Zoom Room ticket \* \`moderator\_allhost\` The moderator all host ticket \* \`hub\_host\` The hub host ticket \* \`hub\_owner\` The hub owner ticket \* \`subscription\` The subscription ticket - **`ticket_type_id`** `string` — The ID of the ticket type for purchase. * **`address`** `string` — The registrant's address. * **`city`** `string` — The registrant's city. * **`comments`** `string` — The registrant's questions and comments. * **`country`** `string` — The registrant's two-letter \[country code]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#countries). * **`first_name`** `string` — The registrant's first name. * **`industry`** `string` — The registrant's industry. * **`job_title`** `string` — The registrant's job title. * **`last_name`** `string` — The registrant's last name. * **`organization`** `string` — The registrant's organization. * **`organization_size`** `string` — The registrant's number of employees. * **`phone`** `string` — The registrant's phone number. * **`state`** `string` — The registrant's state or province. * **`zip`** `string` — The registrant's ZIP or postal code. - **`custom_questions`** `array` — Information about custom questions. **Items:** - **`answer`** `string` — The custom question's response value. - **`title`** `string` — The title of the custom question. **Example:** ```json { "ticket_id": "iso9Dllddp39dagjLj9j", "ticket_type_id": "pfalaof9s83lsLJD9u2d", "external_ticket_id": "iso9Djldop39dagjLj3j", "event_join_link": "https://events.zoom.us/ejl/xyz", "send_notification": false, "email": "email@zoom.us", "ticket_role_type": "normal", "qr_code_url": "https://zoom.us/qr?t=9&ein=AkhZhct94cUqiDfRumcpPf0loI-QAOt5T9yh_vGRn2-BkPDmjfze~AyTxY2Fs9Nw6ADEk-edYyZIyGIzxVAI_v-Mci1S-KeyRhbZOG3-4kWVpYqSxJK-2Uls-j_GSHh9L7Ku_zZta-MDu2NCA1Rg", "registration_source": "Pardot", "session_id": "iso9Djldop39dagjLj3j", "authentication_method": "no_auth", "first_name": "Jill", "last_name": "Chill", "address": "1800 Amphibious Blvd", "city": "Mountain View", "state": "CA", "zip": "94045", "country": "US", "phone": "5550100", "industry": "Food", "job_title": "Chef", "organization": "ABC Ltd.", "organization_size": "150", "comments": "Looking forward to the discussion.", "custom_questions": [ { "title": "What do you hope to learn from this?", "answer": "Look forward to learning how you come up with new recipes and what other services you offer." } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request Invalid request. ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2002\` \
Event not found. \
\*\*Error Code:\*\* \`26503\` \
Ticket not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Delete a ticket - **Method:** `DELETE` - **Path:** `/zoom_events/events/{eventId}/tickets/{ticketId}` - **Tags:** Tickets Deletes a ticket. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus or Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_tickets:write`,`zoom_events_tickets:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:delete:ticket`,`zoom_events:delete:ticket:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` Ticket deleted successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden Invalid request. \*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`26503\` \
Ticket not found. \
\*\*Error Code:\*\* \`2002\` \
Event ID not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update ticket - **Method:** `PATCH` - **Path:** `/zoom_events/events/{eventId}/tickets/{ticketId}` - **Tags:** Tickets Updates ticket questions for the given ticket ID and event ID. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus / Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_tickets:write`,`zoom_events_tickets:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:write:ticket`,`zoom_events:write:ticket:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`address`** `string` — The registrant's address. - **`city`** `string` — The registrant's city. - **`comments`** `string` — The registrant's questions and comments. - **`country`** `string` — The registrant's two-letter \[country code]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#countries). - **`custom_questions`** `array` — Information about custom questions. **Items:** - **`answer`** `string` — The custom question's response value. - **`title`** `string` — The title of the custom question. - **`external_ticket_id`** `string` — A set of unique alphanumeric characters that references the external ticket ID. - **`first_name`** `string` — The registrant's first name. - **`industry`** `string` — The registrant's industry. - **`job_title`** `string` — The registrant's job title. - **`last_name`** `string` — The registrant's last name. - **`organization`** `string` — The registrant's organization. - **`organization_size`** `string` — The registrant's number of employees. - **`phone`** `string` — The registrant's phone number. - **`state`** `string` — The registrant's state or province. - **`zip`** `string` — The registrant's ZIP or postal code. **Example:** ```json { "first_name": "Jill", "last_name": "Chill", "address": "1800 Amphibious Blvd", "city": "Mountain View", "state": "CA", "zip": "94045", "country": "US", "phone": "5550100", "industry": "Food", "job_title": "Chef", "organization": "ABC Ltd.", "organization_size": "150", "comments": "Looking forward to the discussion.", "custom_questions": [ { "title": "What do you hope to learn from this?", "answer": "Look forward to learning how you come up with new recipes and what other services you offer." } ], "external_ticket_id": "iso9Djldop39dagjLj3j" } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` Successfully updated the ticket questions. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`1063\` \
Ticket ID can not updated. \
##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260200\` \
Event access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`26503\` \
Ticket not found. \
\*\*Error Code:\*\* \`2002\` \
Event ID not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List channels - **Method:** `GET` - **Path:** `/zoom_events/hubs/{hubId}/vod_channels` - **Tags:** Video On-Demand Retrieves the channel information for a hub. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus or Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_vod_channels:read`,`zoom_events_vod_channels:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:read:list_all_vod_channels`,`zoom_events:read:list_all_vod_channels:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Channel Information. ###### Content-Type: application/json - **`next_page_token`** `string` — The next page token. - **`total_records`** `number` — The total number of VOD channels. - **`vod_channels`** `array` — Channels **Items:** **All of:** - **`channel_id`** `string` — A set of unique alphanumeric characters that references the VOD channel ID. - **`is_published_to_hub`** `boolean` — This field only applies to \`VIDEO\_LIST\_HUB\` type channel. This flag determines whether the content is visible on attendee facing hub profile page. - **`name`** `string` — The name of the channel. - **`status`** `string` — The VOD channel status: Options: \* \`PUBLISHED\` - Published channel. \* \`DRAFT\` - Draft channel. - **`type`** `string`, possible values: `"VIDEO_LIST_HUB", "MULTI_VIDEO_EMBEDDED", "SINGLE_VIDEO_EMBEDDED"` — The channel type: \* \`VIDEO\_LIST\_HUB\` - The channel content hosted on the Zoom Events platform. \* \`MULTI\_VIDEO\_EMBEDDED\` - The embedded video channel. The video channel ( with multiple videos) can be embedded on a third-party website. \* \`SINGLE\_VIDEO\_EMBEDDED\` - The single video embedded channel. A single video can be embedded on a third-party website. **Example:** ```json { "total_records": 1, "next_page_token": "yqT59YnBSHqvDdNnkeHQsA", "vod_channels": [ { "channel_id": "iso9Dllddp39dagjLj9j", "name": "My Channel", "status": "PUBLISHED", "is_published_to_hub": true, "type": "VIDEO_LIST_HUB" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260101\` \
Hub access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2001\` \
Hub not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Create VOD channel - **Method:** `POST` - **Path:** `/zoom_events/hubs/{hubId}/vod_channels` - **Tags:** Video On-Demand Creates a channel for managing hub videos. Please check this support page for details about a [video channel](https://support.zoom.com/hc/en/article?id=zm_kb\&sysparm_article=KB0057579#h_01HBVW2WZ06MFH7KHGPSJC9YKG). **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus / Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_vod_channels:write`,`zoom_events_vod_channels:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:write:vod_channel`,`zoom_events:write:vod_channel:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`name` (required)** `string` — The name of the channel. - **`type` (required)** `string`, possible values: `"VIDEO_LIST_HUB", "MULTI_VIDEO_EMBEDDED", "SINGLE_VIDEO_EMBEDDED"` — The channel type: \* \`VIDEO\_LIST\_HUB\` - The channel content hosted on the Zoom Events platform. \* \`MULTI\_VIDEO\_EMBEDDED\` - The embedded video channel. The video channel ( with multiple videos) can be embedded on a third-party website. \* \`SINGLE\_VIDEO\_EMBEDDED\` - The single video embedded channel. A single video can be embedded on a third-party website. - **`description`** `string` — Channel description. **Example:** ```json { "name": "FoodieFlicks", "description": "A cinematic journey through the world of cuisine!.", "type": "VIDEO_LIST_HUB" } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` VOD channel returned. ###### Content-Type: application/json - **`channel_id`** `string` — The VOD channel ID. - **`description`** `string` — Channel description. - **`is_published_to_hub`** `boolean` — This field only applies to \`VIDEO\_LIST\_HUB\` type channel. This flag determines whether the content is visible on attendee facing hub profile page. - **`name`** `string` — The name of the channel. - **`status`** `string`, possible values: `"PUBLISHED", "DRAFT"` — The VOD channel status. Embed type channels are published by default: \* \`PUBLISHED\` - Published channel. \* \`DRAFT\` - Draft channel. - **`type`** `string`, possible values: `"VIDEO_LIST_HUB", "MULTI_VIDEO_EMBEDDED", "SINGLE_VIDEO_EMBEDDED"` — The channel type: \* \`VIDEO\_LIST\_HUB\` - The channel content hosted on the Zoom Events platform. \* \`MULTI\_VIDEO\_EMBEDDED\` - The embedded video channel. The video channel (with multiple videos) can be embedded on a third-party website. \* \`SINGLE\_VIDEO\_EMBEDDED\` - The single video embedded channel. A single video can be embedded on a third-party website. **Example:** ```json { "channel_id": "iso9Dllddp39dagjLj9j", "name": "FoodieFlicks", "description": "A cinematic journey through th world of cuisine!.", "type": "VIDEO_LIST_HUB", "status": "PUBLISHED", "is_published_to_hub": true } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request Bad request. ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260101\` \
Hub access denied. \
\*\*Error Code:\*\* \`261104\` \
Video channel creation denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2001\` \
Hub not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get VOD channel details - **Method:** `GET` - **Path:** `/zoom_events/hubs/{hubId}/vod_channels/{channelId}` - **Tags:** Video On-Demand Returns VOD channel details. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus or Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_vod_channels:read`,`zoom_events_vod_channels:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:read:vod_channel`,`zoom_events:read:vod_channel:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` VOD channel details retrieved successfully. ###### Content-Type: application/json - **`channel_id`** `string` — The VOD channel ID. - **`channel_link`** `string` — This field only applies to \`VIDEO\_LIST\_HUB\` type channels and the channel needs to be in \`PUBLISHED\` status. Attendees will access the channel details page via this \[link]\(https\://developers.zoom.us/docs/api/events/#tag/hubs/GET/zoom\_events/hubs/{hubId}/videos). - **`description`** `string` — The description of the channel. - **`embed_script`** `string` — This field only applies to \`SINGLE\_VIDEO\_EMBEDDED\` and \`MULTI\_VIDEO\_EMBEDDED\` type channels. The channel content needs to be added and the script needs to be generated from the Zoom Events UI first. This script can be used to embed the VOD channel content in a third-party website. Please review the \[documentation]\(https\://developers.zoom.us/docs/zoom-events/vod-guide) for details on embeddable VOD channels. - **`is_published_to_hub`** `boolean` — This field only applies to \`VIDEO\_LIST\_HUB\` type channels. This flag determines whether the content is visible on the attendee-facing hub profile page. - **`name`** `string` — The name of the channel. - **`settings`** `object` — The channel settings - **`allow_domain_list`** `array` — The VOD channel registration is restricted to these specific domains. Enabling the allow list makes this channel private. Users must pass authentication to access the channel. Not applicable when the authentication method is \`bypass\_auth\`. **Items:** `string` — Each domain can have up to 40 characters. - **`allow_email_list`** `array` — The VOD channel registration is restricted to users by email addresses. Enabling the allow list makes this channel private. Users must pass authentication to access the channel. Not applicable when the authentication method is \`bypass\_auth\`. **Items:** `string` — Each email can have up to 60 characters. - **`authentication_method`** `string`, possible values: `"zoom_account", "email_otp", "bypass_auth"` — The authentication method to restrict content access to qualified users. This field only applies to \`VIDEO\_LIST\_HUB\` type channels. \* \`zoom\_account\` - Zoom account holder. \* \`email\_otp\` - Sign in with an email OTP. \* \`bypass\_auth\` - Bypass authentication. - **`status`** `string`, possible values: `"PUBLISHED", "DRAFT"` — The VOD channel status. Embed type channels are published by default: \* \`PUBLISHED\` - Published channel. \* \`DRAFT\` - Draft channel. - **`type`** `string`, possible values: `"VIDEO_LIST_HUB", "MULTI_VIDEO_EMBEDDED", "SINGLE_VIDEO_EMBEDDED"` — The channel type: \* \`VIDEO\_LIST\_HUB\` - The channel content hosted on the Zoom Events platform. \* \`MULTI\_VIDEO\_EMBEDDED\` - The embedded video channel. The video channel (with multiple videos) can be embedded on a third-party website. \* \`SINGLE\_VIDEO\_EMBEDDED\` - The single video embedded channel. A single video can be embedded on a third-party website. **Example:** ```json { "channel_id": "iso9Dllddp39dagjLj9j", "name": "FoodieFlicks", "description": "A cinematic journey through the world of cuisine!.", "status": "PUBLISHED", "is_published_to_hub": true, "type": "VIDEO_LIST_HUB", "embed_script": "
", "channel_link": "https://events.zoom.us/ej/AqXm3Kdn61-zHknD9faMn5TFBVAXx4zwQOeMbJkkI63GDBVz6znZ~A1dLQvAML0MYNyUw-UnzDCKI_Sw", "settings": { "authentication_method": "bypass_auth", "allow_domain_list": [ "zoom.us" ], "allow_email_list": [ "example1@email.com" ] } } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found Channel Not Found. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/). ### Delete VOD Channel - **Method:** `DELETE` - **Path:** `/zoom_events/hubs/{hubId}/vod_channels/{channelId}` - **Tags:** Video On-Demand Deletes a video channel. Please check this support page for details about a [video channel](https://support.zoom.com/hc/en/article?id=zm_kb\&sysparm_article=KB0057579#h_01HBVW2WZ06MFH7KHGPSJC9YKG). **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus / Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_vod_channels:write`,`zoom_events_vod_channels:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:delete:vod_channel`,`zoom_events:delete:vod_channel:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` Channel deleted successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request Invalid Request. ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260101\` \
Hub access denied. \
\*\*Error Code:\*\* \`261103\` \
Video channel access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2001\` \
Hub not found. \
\*\*Error Code:\*\* \`261101\` \
VOD channel not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Update VOD channel - **Method:** `PATCH` - **Path:** `/zoom_events/hubs/{hubId}/vod_channels/{channelId}` - **Tags:** Video On-Demand Updates a hub video channel. Please check this support page for details about a [video channel](https://support.zoom.com/hc/en/article?id=zm_kb\&sysparm_article=KB0057579#h_01HBVW2WZ06MFH7KHGPSJC9YKG). **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus or Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_vod_channels:write`,`zoom_events_vod_channels:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:update:vod_channel`,`zoom_events:update:vod_channel:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`description`** `string` — Channel description. - **`name`** `string` — The name of the channel. - **`settings`** `object` — The channel settings. - **`allow_domain_list`** `array` — The VOD channel registration is restricted to these specific domains. Enabling allow list makes this channel private. Users must pass authentication to access the channel. Not applicable when the authentication method is 'bypass\_auth'. **Items:** `string` — Each domain can have up to 40 characters. - **`allow_email_list`** `array` — The VOD channel registration restricted to users by email addresses. Enabling allow list makes this channel private. Users must pass authentication to access the channel. Not applicable when the authentication method is 'bypass\_auth'. **Items:** `string` — Each email can have up to 60 characters. - **`authentication_method`** `string`, possible values: `"zoom_account", "email_otp", "bypass_auth"` — The authentication method to restrict content access to qualified users. This field only applies to \`VIDEO\_LIST\_HUB\` type channel. \* \`zoom\_account\` - Zoom account holder. \* \`email\_otp\` - Sign in with an email OTP. \* \`bypass\_auth\` - Bypass authentication. **Example:** ```json { "name": "FoodieFlicks", "description": "A cinematic journey through the world of cuisine!.", "settings": { "authentication_method": "bypass_auth", "allow_domain_list": [ "zoom.us" ], "allow_email_list": [ "example1@email.com" ] } } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` Channel updated successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request Invalid Request. ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/). ### VOD channel actions - **Method:** `POST` - **Path:** `/zoom_events/hubs/{hubId}/vod_channels/{channelId}/actions` - **Tags:** Video On-Demand Returns VOD channel action result. **Prerequisites**: - A Pro or higher account plan. - A Zoom Webinars Plus or Events license. **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_vod_channels:write`,`zoom_events_vod_channels:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:update:vod_channel`,`zoom_events:update:vod_channel:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`operation`** `string`, possible values: `"publish"` — The host actions for the VOD channel. \* \`Publish\` \— Publish the VOD Channel. **Example:** ```json { "operation": "publish" } ``` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` VOD Channel status returned. ###### Content-Type: application/json - **`status`** `string`, possible values: `"published"` — The status of the channel operation. **Example:** ```json { "status": "published" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260101\` \
Hub access denied. \
\*\*Error Code:\*\* \`261103\` \
Video channel access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2001\` \
Hub not found. \
\*\*Error Code:\*\* \`261101\` \
VOD Channel not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List VOD channel videos - **Method:** `GET` - **Path:** `/zoom_events/hubs/{hubId}/vod_channels/{channelId}/videos` - **Tags:** Video On-Demand Lists VOD channel videos. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus or Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_vod_channels:read`,`zoom_events_vod_channels:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:read:list_vod_channel_videos`,`zoom_events:read:list_vod_channel_videos:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Channel Video Information. ###### Content-Type: application/json - **`next_page_token`** `string` — The next page token. - **`total_records`** `number` — The total number of records in this page. - **`videos`** `array` — Channel Videos **Items:** **All of:** - **`duration`** `integer` — The video duration in minutes. - **`name`** `string` — The name of the video resource. - **`play_link`** `string` — Video Play Link. - **`status`** `string`, possible values: `"processing", "done", "unknown"` — The video status: Options: \* \`processing\` - Video is in processing status and not available for viewing yet. \* \`done\` - Processing complete and available for viewing. \* \`unknown\` - Processing status is unknown. - **`video_id`** `string` — The Video ID. **Example:** ```json { "total_records": 1, "next_page_token": "yqT59YnBSHqvDdNnkeHQsA", "videos": [ { "video_id": "iso9Dllddp39dagjLj9j", "name": "My Recording1", "status": "processing", "play_link": "https://abc/recording/unehd6TtTLuTN40owCOqqK", "duration": 30 } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260101\` \
Hub access denied. \
\*\*Error Code:\*\* \`261103\` \
Video channel access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2001\` \
Hub not found. \
\*\*Error Code:\*\* \`261101\` \
VOD channel not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Add VOD channel videos - **Method:** `POST` - **Path:** `/zoom_events/hubs/{hubId}/vod_channels/{channelId}/videos` - **Tags:** Video On-Demand Adds videos to the VOD channel. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus / Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_vod_channels:write`,`zoom_events_vod_channels:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:write:vod_channel_videos`,`zoom_events:write:vod_channel_videos:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`video_ids`** `array` **Items:** `string` — The video ID. Please check \[List hub videos API]\(https\://developers.zoom.us/docs/zoom-events/api/#operation/getHubList) for the ID. **Example:** ```json { "video_ids": [ "iso9Dllddp39dagjLj9j" ] } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` Videos added successfully. ###### Content-Type: application/json - **`errors`** `array` **Items:** - **`message`** `string` — Error message. - **`video_id`** `string` — The ID of the video that failed. **Example:** ```json { "errors": [ { "video_id": "asdsf232354sta23423234", "message": "Not able to add this video." } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260101\` \
Hub access denied. \
\*\*Error Code:\*\* \`261103\` \
Video channel access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2001\` \
Hub not found. \
\*\*Error Code:\*\* \`261101\` \
VOD channel not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Delete VOD channel video - **Method:** `DELETE` - **Path:** `/zoom_events/hubs/{hubId}/vod_channels/{channelId}/videos/{videoId}` - **Tags:** Video On-Demand Removes video from the VOD channel. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus or Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_vod_channels:write`,`zoom_events_vod_channels:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:delete:vod_channel_videos`,`zoom_events:delete:vod_channel_videos:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` Videos deleted successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260101\` \
Hub access denied. \
\*\*Error Code:\*\* \`261103\` \
Video channel access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2001\` \
Hub not found. \
\*\*Error Code:\*\* \`261101\` \
VOD Channel not found. \
\*\*Error Code:\*\* \`261102\` \
Video not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get VOD Registration Questions - **Method:** `GET` - **Path:** `/zoom_events/hubs/{hubId}/vod_channels/{channelId}/registration_questions` - **Tags:** Video On-Demand Registrations List registration questions and fields that are to be answered by users while registering for a vod channel. These questions are configured for the VOD channel after or before publishing the channel. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus or Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_vod_registration:read`,`zoom_events_vod_registration:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:read:vod_registration_questions`,`zoom_events:read:vod_registration_questions:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Successfully retrieved registration questions. ###### Content-Type: application/json **All of:** - **`custom_questions`** `array` — An array of registrant custom questions. **Items:** - **`answers`** `array` — An array of answer choices. It can't be used for short or long answer type. **Items:** `string` - **`max_length`** `integer` — The maximum length of the custom question answer. This is applicable for short\_answer/long\_answer question types. The max\_length should be greater than or equal min\_length. The allowed max\_length for short\_answer is 500 and for long\_answer is 2000. - **`min_length`** `integer` — The minimum length of the custom question answer. This is applicable for short\_answer/long\_answer question types. If this custom question is required then the min\_length should be atleast 1. - **`question_id`** `string` — The ID of the custom question. - **`required`** `boolean` — Whether or not the custom question is required to be answered by a registrant. - **`title`** `string` — The custom question. - **`type`** `string`, possible values: `"short_answer", "long_answer", "single_radio", "single_dropdown", "multiple_choice"` — The question-answer type. - **`questions`** `array` — Array of registration fields whose values should be provided by registrants during registration. **Items:** - **`field_name`** `string`, possible values: `"first_name", "last_name", "address", "city", "state", "zip", "country", "phone", "industry", "job_title", "organization", "organization_size"` — The field name. - **`question_id`** `string` — The ID of the question. - **`required`** `boolean` — Whether the selected fields are required or optional. - **`title`** `string` — The title of the question. **Example:** ```json { "questions": [ { "field_name": "last_name", "required": true, "title": "Last Name", "question_id": "Fn2rBZgJQzi6VIU--uWqnA" } ], "custom_questions": [ { "answers": [ "Good" ], "required": true, "title": "How are you?", "question_id": "Fn2rBZgJQzi6VIU--uWqnA", "type": "short_answer", "min_length": 500, "max_length": 2000 } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260101\` \
Hub access denied. \
\*\*Error Code:\*\* \`261103\` \
Video channel access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2001\` \
Hub not found. \
\*\*Error Code:\*\* \`261101\` \
VOD Channel not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### update VOD channel registration questions - **Method:** `PUT` - **Path:** `/zoom_events/hubs/{hubId}/vod_channels/{channelId}/registration_questions` - **Tags:** Video On-Demand Registrations Updates registration questions and fields that are to be answered by users while registering for a VOD channel. These questions are setup at VOD channel level. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus or Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_vod_registration:write`,`zoom_events_vod_registration:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:update:vod_registration_questions`,`zoom_events:update:vod_registration_questions:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`custom_questions`** `array` — Array of registrant custom questions. **Items:** - **`answers`** `array` — An array of answer choices. Can't be used for short or long answer type. **Items:** `string` - **`max_length`** `integer` — The maximum length of the custom question answer. This is applicable for short\_answer/long\_answer question types. The max\_length should be greater than or equal min\_length. The allowed max\_length for short\_answer is 500 and for long\_answer is 2000. - **`min_length`** `integer` — The minimum length of the custom question answer. This is applicable for short\_answer/long\_answer question types. If this custom question is required then the min\_length should be atleast 1. - **`required`** `boolean` — State whether or not the custom question is required to be answered by a registrant. - **`title`** `string` — Custom question. - **`type`** `string`, possible values: `"short_answer", "long_answer", "single_radio", "single_dropdown", "multiple_choice"` — The question-answer type. - **`questions`** `array` — Array of registration fields whose values should be provided by registrants during registration. **Items:** - **`field_name`** `string`, possible values: `"first_name", "last_name", "address", "city", "state", "zip", "country", "phone", "industry", "job_title", "organization", "organization_size"` — The field name. - **`required`** `boolean` — Whether the selected fields are required or optional. - **`title`** `string` — Title of the question. **Example:** ```json { "questions": [ { "field_name": "last_name", "required": true, "title": "Last Name" } ], "custom_questions": [ { "answers": [ "Good" ], "required": true, "title": "How are you?", "type": "short_answer", "min_length": 500, "max_length": 2000 } ] } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` Successfully updated registration questions. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260101\` \
Hub access denied. \
\*\*Error Code:\*\* \`261103\` \
Video channel access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`261101\` \
VOD channel not found. \
\*\*Error Code:\*\* \`2001\` \
Hub not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### List VOD Registration - **Method:** `GET` - **Path:** `/zoom_events/hubs/{hubId}/vod_channels/{channelId}/registrations` - **Tags:** Video On-Demand Registrations Retrieves the VOD registration information of a channel. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus or Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_vod_registration:read`,`zoom_events_vod_registration:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:read:vod_registrations`,`zoom_events:read:vod_registrations:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Registration Information. ###### Content-Type: application/json - **`next_page_token`** `string` — The next page token. - **`registrations`** `array` — Registrations **Items:** **All of:** - **`authentication_method`** `string`, possible values: `"zoom_account", "zoom_account_otp", "corporate_idp", "no_auth", "email_opt", "zoom_account_otp_at_join"` — The event authentication method for the registration: \* \`zoom\_account\` Zoom account holder \* \`zoom\_account\_otp\` Zoom account holder with OTP \* \`corporate\_idp\` Corporate IDP \* \`no\_auth\` No authentication\* \`email\_opt\` registration using email OTP verification\* \`zoom\_account\_otp\_at\_join\` pre-registration using email OTP verification - **`email`** `string` — The email address of the registrant - **`join_link`** `string` — The unique join link for the vod registratnt. - **`registration_id`** `string` — The unique registration ID. * **`address`** `string` — The registrant's address. * **`city`** `string` — The registrant's city. * **`comments`** `string` — The registrant's questions and comments. * **`country`** `string` — The registrant's two-letter \[country code]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#countries). * **`first_name`** `string` — The registrant's first name. * **`industry`** `string` — The registrant's industry. * **`job_title`** `string` — The registrant's job title. * **`last_name`** `string` — The registrant's last name. * **`organization`** `string` — The registrant's organization. * **`organization_size`** `string` — The registrant's number of employees. * **`phone`** `string` — The registrant's phone number. * **`state`** `string` — The registrant's state or province. * **`zip`** `string` — The registrant's ZIP or postal code. - **`custom_questions`** `array` — Information about custom questions. **Items:** - **`answer`** `string` — The custom question's response value. - **`title`** `string` — The title of the custom question. - **`total_records`** `number` — The total number of registrations. **Example:** ```json { "total_records": 1, "next_page_token": "yqT59YnBSHqvDdNnkeHQsA", "registrations": [ { "registration_id": "iso9Dllddp39dagjLj9j", "email": "email@zoom.us", "join_link": "https://events.zoom.us/ejl/xyz", "authentication_method": "no_auth", "first_name": "Jill", "last_name": "Chill", "address": "1800 Amphibious Blvd", "city": "Mountain View", "state": "CA", "zip": "94045", "country": "US", "phone": "5550100", "industry": "Food", "job_title": "Chef", "organization": "ABC Ltd.", "organization_size": "150", "comments": "Looking forward to the discussion.", "custom_questions": [ { "title": "What do you hope to learn from this?", "answer": "Look forward to learning how you come up with new recipes and what other services you offer." } ] } ] } ``` ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260101\` \
Hub access denied. \
\*\*Error Code:\*\* \`261103\` \
Video channel access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`2001\` \
Hub not found. \
\*\*Error Code:\*\* \`261101\` \
VOD Channel not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/). ### VOD channel registration - **Method:** `POST` - **Path:** `/zoom_events/hubs/{hubId}/vod_channels/{channelId}/registrations` - **Tags:** Video On-Demand Registrations Creates registrations for a VOD channel. You can add a single registrant or up to 30 registrants in a batch operation. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus or Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_vod_registration:write`,`zoom_events_vod_registration:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:write:vod_registration`,`zoom_events:write:vod_registration:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`registrations`** `array` — The registrant information. **Items:** - **`email` (required)** `string`, format: `email` — The email address used for the registration. - **`address`** `string` — The registrant's address. - **`city`** `string` — The registrant's city. - **`country`** `string` — The registrant's two-letter \[country code]\(https\://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists#countries). - **`custom_questions`** `array` — The information about custom questions. **Items:** - **`answer`** `string` — The custom question's response value. - **`title`** `string` — The title of the custom question. - **`first_name`** `string` — The registrant's first name. - **`industry`** `string` — The registrant's industry. - **`job_title`** `string` — The registrant's job title. - **`last_name`** `string` — The registrant's last name. - **`organization`** `string` — The registrant's organization. - **`organization_size`** `string` — The registrant's number of employees. - **`phone`** `string` — The registrant's phone number. - **`state`** `string` — The registrant's state or province. - **`zip`** `string` — The registrant's ZIP or postal code. **Example:** ```json { "registrations": [ { "email": "email@zoom.us", "first_name": "Jill", "last_name": "Chill", "address": "1800 Amphibious Blvd", "city": "Mountain View", "state": "CA", "zip": "94045", "country": "US", "phone": "5550100", "industry": "Food", "job_title": "Chef", "organization": "ABC Ltd.", "organization_size": "150", "custom_questions": [ { "title": "What do you hope to learn from this?", "answer": "Look forward to learning how you come up with new recipes and what other services you offer." } ] } ] } ``` #### Responses ##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` The list of tickets. ###### Content-Type: application/json - **`registrations`** `array` **Items:** - **`email`** `string` — The email address of the registrant - **`join_link`** `string` — The unique join link for the vod registratnt. - **`registration_id`** `string` — The unique registration ID. **Example:** ```json { "registrations": [ { "registration_id": "iso9Dllddp39dagjLj9j", "email": "email@zoom.us", "join_link": "https://events.zoom.us/ejl/xyz" } ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`260101\` \
Hub access denied. \
\*\*Error Code:\*\* \`261103\` \
Video channel access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found Channel not found. \*\*Error Code:\*\* \`2001\` \
Hub not found. \
\*\*Error Code:\*\* \`261101\` \
VOD Channel not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/). ### Get metadata for a specific video - **Method:** `GET` - **Path:** `/zoom_events/videos/{videoId}/metadata` - **Tags:** Videos Retrieves metadata for a specific video, including title, description, duration, creation time, last updated time, and associated tags. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus or Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_videos:read`,`zoom_events_videos:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:read:video_metadata`,`zoom_events:read:video_metadata:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \
OK Video metadata retrieved successfully. ###### Content-Type: application/json - **`categories`** `array` — A list of hierarchical categories that classify the video. Each category can include multiple subcategories. **Items:** - **`name` (required)** `string` — The name of the main category. - **`sub_categories`** `array` — A list of subcategories related to this main category, used for more granular classification and filtering. **Items:** `string` - **`custom_fields`** `object` — A flexible key-value structure for additional custom metadata fields. This object supports arbitrary nesting for dynamic JSON structures, with a recommended maximum depth of 5 levels. - **`description`** `string` — A detailed description or summary of the video content. - **`duration`** `integer`, format: `int64` — The length of the video in seconds. - **`external_media_id`** `string` — This field links the Migrated Media ID from an external system. - **`external_source_name`** `string` — The name of the external source system from which this data was migrated. - **`resources`** `array` — Supporting resource documents associated with the video (e.g., PDFs, DOCX, TXT). **Items:** - **`file_id`** `string` — The unique file reference ID from the file upload API. - **`file_name`** `string` — The display name of the file. - **`file_url`** `string`, format: `uri` — The downloadable URL for the resource file. - **`scheduling`** `object` — This field defines when the video becomes available and/or unavailable based on optional start and end times. Both timestamps are in UTC (ISO 8601). - **`end_time`** `string`, format: `date-time` — The end time (UTC) when the video stops being available. When \`end\_time\` is provided, the video becomes unavailable after this time. If \`start\_time\` is not provided, the video is available immediately until this time. - **`start_time`** `string`, format: `date-time` — The start time (UTC) when the video becomes available. When \`start\_time\` is provided, the video becomes available only after this time. If \`end\_time\` is not provided, the video remains available indefinitely after this time. - **`speakers`** `array` — A list of speakers associated with this video. **Items:** - **`name` (required)** `string` — The speaker's full name. - **`biography`** `string` — The speaker's biography. - **`company_name`** `string` — The speaker's company name. - **`company_website`** `string`, format: `uri` — The speaker's company website. - **`email`** `string`, format: `email` — The speaker's email address. - **`job_title`** `string` — The speaker's job title. - **`tags`** `array` — A list of tags or keywords associated with the video. **Items:** `string` - **`thumbnails`** `array` — A list of thumbnail images associated with this video. **Items:** - **`file_id`** `string` — The file reference ID for the thumbnail image. - **`file_url`** `string`, format: `uri` — A public or pre-signed URL to download or view the thumbnail. - **`is_default`** `boolean` — Indicates whether this thumbnail is set as the default. - **`title`** `string` — The name or title of the video. - **`transcripts`** `array` — A list of transcript files for this video. **Items:** - **`file_url`** `string`, format: `uri` — A public or pre-signed URL to download the transcript file. - **`is_default`** `boolean` — Whether this transcript file is the default caption file. The default transcript is displayed first by the player. When the first transcript file is uploaded, it automatically becomes the default regardless of whether this field is explicitly set. - **`language`** `string` — The language code (ISO 639-1 or BCP47). - **`updated_at`** `string`, format: `date-time` — The timestamp when the video metadata was last updated. - **`video_created_at`** `string`, format: `date-time` — The timestamp when the video was created. **Example:** ```json { "title": "Keynote Session", "description": "Opening keynote for AI Summit 2025", "duration": 3600, "video_created_at": "2025-12-15T10:20:30Z", "updated_at": "2025-12-29T14:45:00Z", "tags": [ "AI", "Keynote", "Conference" ], "categories": [ { "name": "Technology", "sub_categories": [ "AI", "Machine Learning", "Computer Vision" ] }, { "name": "Innovation", "sub_categories": [ "Startups", "Research" ] } ], "external_media_id": "legacy_vid_789", "external_source_name": "LegacyCMS", "thumbnails": [ { "file_id": "thumb123", "file_url": "https://files.zoom.us/thumbnails/thumb123.jpg", "is_default": true }, { "file_id": "thumb124", "file_url": "https://files.zoom.us/thumbnails/thumb124.jpg", "is_default": false } ], "speakers": [ { "name": "John Doe", "email": "abc.xyz@zoomdev.us", "job_title": "Chief Scientist, Zoom AI", "biography": "Dr. Jane Doe leads AI research at Zoom.", "company_name": "Zoom Video Communications", "company_website": "https://zoom.us" } ], "scheduling": { "start_time": "2026-02-20T08:00:00Z", "end_time": "2026-02-28T08:00:00Z" }, "transcripts": [ { "file_url": "https://files.zoom.us/transcripts/transcript_en.vtt", "language": "en-US", "is_default": true }, { "file_url": "https://files.zoom.us/transcripts/transcript_fr.vtt", "language": "fr-FR", "is_default": false } ], "resources": [ { "file_id": "xBvggqyjQUal6TecwMlYwE_001", "file_url": "https://files.zoom.us/resources/res_pdf_001.pdf", "file_name": "AI_Conference_Notes.pdf" }, { "file_id": "xBvggqyjQUal6TecwMlYwE_002", "file_url": "https://files.zoom.us/resources/res_doc_002.docx", "file_name": "Speaker_Bio.docx" } ], "custom_fields": { "session_info": { "target_audience": [ "Students", "Industry Representatives" ], "sponsor": { "name": "ZoomTech", "tier": "Gold" } } } } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`261107\` \
Video access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`261108\` \
Video/recording not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/). ### Update metadata for a specific video. - **Method:** `PATCH` - **Path:** `/zoom_events/videos/{videoId}/metadata` - **Tags:** Videos Updates video metadata. **Prerequisites** - A Pro or higher account plan - A Zoom Webinars Plus or Events license **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events_videos:write`,`zoom_events_videos:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `zoom_events:update:video_metadata`,`zoom_events:update:video_metadata:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`categories`** `array` — List of hierarchical categories that classify the video. Each category can include multiple subcategories. **Items:** - **`name` (required)** `string` — The name of the main category. - **`sub_categories`** `array` — List of subcategories related to this main category. Used for more granular classification and filtering. **Items:** `string` - **`custom_fields`** `object` — Flexible key-value structure for additional custom metadata fields. This object supports arbitrary nesting for dynamic JSON structures, with a maximum depth of 5 levels. - **`description`** `string` — Detailed description or summary of the video content. - **`external_media_id`** `string` — Used to link the Migrated Media ID from an external system. - **`external_source_name`** `string` — Used to track the source of this data in case of migration. - **`resources`** `array` — Supporting resources (e.g., PDFs, DOCX). Each entry references an uploaded file. **Items:** - **`file_id` (required)** `string` — Unique file reference ID from the file upload API or from the get video metadata API. - **`scheduling`** `object` — Defines when the video becomes available and/or unavailable based on optional start and end times. Both timestamps are in UTC (ISO 8601). - **`end_time`** `string`, format: `date-time` — The end time (UTC) when the video stops being available. When 'end\_time' is provided, the video becomes unavailable after this time. If 'start\_time' is not provided, the video is available immediately until this time. - **`start_time`** `string`, format: `date-time` — The start time (UTC) when the video becomes available. When 'start\_time' is provided, the video becomes available only after this time. If 'end\_time' is not provided, the video remains available indefinitely after this time. - **`speakers`** `array` — List of speakers associated with this video. **Items:** - **`name` (required)** `string` — The speaker's full name. - **`biography`** `string` — The speaker's biography. - **`company_name`** `string` — The speaker's company name. - **`company_website`** `string`, format: `uri` — The speaker's company website URL. - **`email`** `string`, format: `email` — The speaker's email address. - **`job_title`** `string` — The speaker's job title. - **`tags`** `array` — List of tags or keywords associated with the video. **Items:** `string` - **`thumbnails`** `array` — Thumbnail metadata updates. Each entry references an uploaded file by file\_id. **Items:** - **`file_id` (required)** `string` — Unique file reference ID from the file upload API or from the get video metadata API. - **`is_default`** `boolean` — Whether this thumbnail should be set as the default. - **`title`** `string` — The name or title of the video. - **`transcripts`** `array` — Transcript file updates. Each entry references a file and includes a language code. **Items:** - **`file_id` (required)** `string` — Unique file reference ID from the file upload API. - **`language` (required)** `string` — Language code (ISO 639-1 or BCP47) - **`is_default`** `boolean` — Indicates whether this transcript file is the default caption file. The default transcript is displayed first by the player. When the first transcript file is uploaded, it automatically becomes the default regardless of whether this field is explicitly set. **Example:** ```json { "title": "Updated Keynote Title", "description": "Updated description text.", "tags": [ "Conference", "AI" ], "categories": [ { "name": "Technology", "sub_categories": [ "AI", "Machine Learning", "Computer Vision" ] }, { "name": "Innovation", "sub_categories": [ "Startups", "Research" ] } ], "external_media_id": "legacy_vid_789", "external_source_name": "LegacyCMS", "thumbnails": [ { "file_id": "xBvggqyjQUal6TecwMlYwE123", "is_default": true }, { "file_id": "xBvggqyjQUal6TecwMlYwE456", "is_default": false } ], "transcripts": [ { "file_id": "xBvggqyjQUal6TecwMlYwE8", "language": "en-US", "is_default": true }, { "file_id": "xBvggqyjQUal6TecwMlYwE7", "language": "fr-FR", "is_default": false } ], "speakers": [ { "name": "John Doe", "email": "abc.xyz@zoomdev.us", "job_title": "Chief Scientist, Zoom AI", "biography": "Dr. Jane Doe leads AI research at Zoom.", "company_name": "Zoom Video Communications", "company_website": "https://zoom.us" } ], "scheduling": { "start_time": "2026-02-20T08:00:00Z", "end_time": "2026-02-28T08:00:00Z" }, "resources": [ { "file_id": "rxBvggqyjQUal6TecwMlYwE001" }, { "file_id": "xBvggqyjQUal6TecwMlYwE002" } ], "custom_fields": { "session_info": { "target_audience": [ "Students", "Industry Representatives" ], "sponsor": { "name": "ZoomTech", "tier": "Gold" } } } } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` Video metadata updated successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`261107\` \
Video access denied. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`261108\` \
Video/recording not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/).