# Video SDK Webhooks - **OpenAPI Version:** `3.1.1` - **API Version:** `1.0.0` **Subscribe to webhook events** \n\nOn your [Video SDK account page on the App Marketplace](/docs/video-sdk/developer-accounts/), under **Add feature**, toggle **Event Subscriptions** to subscribe to events [using webhooks](/docs/api/rest/webhook-reference/).\n\n Configure webhooks to send [Video SDK events](/docs/video-sdk/webhooks/) to your server as HTTP POST requests. This is useful for tracking events or building out business logic. For example, when you receive a Video SDK session ended webhook, you could kick off an email to thank the participants for joining. \n\nSee [Make API requests](/docs/video-sdk/api-request/) for details or our [webhook sample code (Node.js)](https://github.com/zoom/webhook-sample). ## Servers - **URL:** `https://{your-endpoint-url}` ## Operations ### session.user\_phone\_callout\_ringing - **Method:** `POST` - **Path:** `session.user_phone_callout_ringing` - **Tags:** Sessions The **Invited party's phone (call out) ringing** event is triggered every time a user's phone is ringing when they were invited to join a session through phone (call out). Video SDK call out operates in a similar manner as [Zoom meeting call out](https://support.zoom.com/hc/article?id=zm_kb\&sysparm_article=KB0062038). ## Prerequisites - **Event Subscriptions** must be enabled for your app with the following configurations: - A valid **Event Notification Endpoint URL**. - The **Invited party's phone (call out) ringing** subscription enabled under the **Session** event. #### Request Body ##### Content-Type: application/json - **`event` (required)** `string` — The name of the event. - **`event_ts` (required)** `integer`, format: `int64` — A timestamp at which the event occurred. - **`payload` (required)** `object` - **`account_id` (required)** `string` — The account ID of the session host. - **`object` (required)** `object` — Information about the session. - **`host_id` (required)** `string` — The user ID of the session host. - **`participant` (required)** `object` — Information about the invited user. - **`from_number` (required)** `integer`, format: `int64` — The number used to call out to the invited user. - **`invitee_name` (required)** `string` — The user's name to display in the session. - **`phone_number` (required)** `integer`, format: `int64` — The user's phone number. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_key` (required)** `string` — The Video SDK custom session ID. - **`session_name` (required)** `string` — Session name. - **`user_key` (required)** `string` — Another identifier for the inviter. Can be a number or characters. - **`id`** `integer`, format: `int64` — The session ID. - **`uuid`** `string` — The session's universally unique identifier (UUID). Each session instance generates a session UUID. **Example:** ```json { "event": "", "event_ts": 1, "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "user_key": "", "host_id": "", "participant": { "invitee_name": "", "phone_number": 1, "from_number": 1 } } } } ``` #### Responses ##### Status: 200 Successfully received the webhook event. ### session.user\_room\_system\_callout\_ringing - **Method:** `POST` - **Path:** `session.user_room_system_callout_ringing` - **Tags:** Sessions The **Invited party's phone (call out) ringing in Zoom room** event is triggered every time a user's phone is ringing when they were invited to [join a session through phone (call out) from a Zoom room](https://support.zoom.us/hc/en-us/articles/205369035). ## Prerequisites - **Event Subscriptions** must be enabled for your app with the following configurations: - A valid **Event Notification Endpoint URL**. - The **Invited party's phone (call out) ringing in Zoom room** subscription enabled under the **Session** event. #### Request Body ##### Content-Type: application/json - **`event` (required)** `string` — The name of the event. - **`event_ts` (required)** `integer`, format: `int64` — A timestamp at which the event occurred. - **`payload` (required)** `object` - **`account_id` (required)** `string` — The account ID of the session host. - **`object` (required)** `object` — Information about the session. - **`host_id` (required)** `string` — The user ID of the session host. - **`inviter_name` (required)** `string` — The user name of the event's trigger. - **`message_id` (required)** `string` — The request unique identifier (UUID). - **`participant` (required)** `object` — Information about the invited participant. - **`call_type` (required)** `string` — The type of call out. Use a value of \`h323\` or \`sip\`. - **`device_ip` (required)** `string` — The user's device IP address. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_name` (required)** `string` — Session name. - **`id`** `integer`, format: `int64` — The session ID. - **`uuid`** `string` — The session's universally unique identifier (UUID). Each session instance generates a session UUID. **Example:** ```json { "event": "", "event_ts": 1, "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "host_id": "", "message_id": "", "inviter_name": "", "participant": { "call_type": "", "device_ip": "", "additionalProperty": "anything" } } } } ``` #### Responses ##### Status: 200 Successfully received the webhook event. ### session.recording\_started - **Method:** `POST` - **Path:** `session.recording_started` - **Tags:** Cloud Recording *** Event: `session.recording_started` ## Event description The **Session recording started** event is triggered every time a recording is started by one of your app users or account users. Only a session host or co-host can start, pause, resume, or stop a cloud recording. A recording is considered complete **after** the host or co-host ends the session. See [Enable cloud recording](https://developers.zoom.us/docs/video-sdk/account/#enable-cloud-recording) for details. ## Prerequisites - Cloud Recording must be enabled on the Video SDK account. - Event Subscriptions must be enabled for your app with the following configurations: - A valid Event Notification Endpoint URL. - **Session recording started** subscription enabled under the **Recording** event. The tabs below display the complete schema, payload with data types, and an example of the `session.recording_started` event notification: #### Request Body ##### Content-Type: application/json - **`event` (required)** `string`, possible values: `"session.recording_started"` — The event's name. - **`event_ts` (required)** `integer`, format: `int64` — A timestamp, in milliseconds since epoch, at which the event occurred. - **`payload` (required)** `object` - **`account_id` (required)** `string` — The Video SDK account ID. - **`object` (required)** `object` — Information about the session. This object only returns updated properties. - **`recording_file` (required)** `object` - **`recording_end`** `string` — The recording end time. Response in general query. - **`recording_start`** `string` — The recording start time. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_key` (required)** `string` — The Video SDK custom session ID. - **`session_name` (required)** `string` — Session name. - **`start_time` (required)** `string`, format: `date-time` — The time at which the session started. - **`timezone` (required)** `string` — The user's timezone. **Example:** ```json { "event": "session.recording_started", "event_ts": 1, "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "start_time": "", "timezone": "", "recording_file": { "recording_start": "", "recording_end": "" } } } } ``` #### Responses ##### Status: 200 Successfully received the webhook event. ### session.recording\_resumed - **Method:** `POST` - **Path:** `session.recording_resumed` - **Tags:** Cloud Recording *** Event: `session.recording_resumed` ## Event description The **Session recording resumed** event is triggered every time a previously paused recording of a session is resumed. Only a session host or co-host can start, pause, resume, or stop a cloud recording. A recording is considered complete **after** the host or co-host ends the session. See [Enable cloud recording](https://developers.zoom.us/docs/video-sdk/account/#enable-cloud-recording) for details. ## Prerequisites - Cloud Recording must be enabled on the Video SDK account. - Event Subscriptions must be enabled for your app with the following configurations: - A valid Event Notification Endpoint URL. - **Session recording resumed** subscription enabled under the **Recording** event. The tabs below display the complete schema, payload with data types, and an example of the `session.recording_resumed` event notification: #### Request Body ##### Content-Type: application/json - **`event` (required)** `string`, possible values: `"session.recording_resumed"` — The event's name. - **`event_ts` (required)** `integer`, format: `int64` — A timestamp, in milliseconds since epoch, at which the event occurred. - **`payload` (required)** `object` - **`account_id` (required)** `string` — The Video SDK account ID. - **`object` (required)** `object` — Information about the session. This object only returns updated properties. - **`recording_file` (required)** `object` - **`recording_end`** `string` — The recording end time. Response in general query. - **`recording_start`** `string` — The recording start time. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_key` (required)** `string` — The Video SDK custom session ID. - **`session_name` (required)** `string` — Session name. - **`start_time` (required)** `string`, format: `date-time` — The time at which the session started. - **`timezone` (required)** `string` — The user's timezone. **Example:** ```json { "event": "session.recording_resumed", "event_ts": 1, "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "start_time": "", "timezone": "", "recording_file": { "recording_start": "", "recording_end": "" } } } } ``` #### Responses ##### Status: 200 Successfully received the webhook event. ### session.live\_streaming\_stopped - **Method:** `POST` - **Path:** `session.live_streaming_stopped` - **Tags:** Sessions *** The Session Live Streaming Stopped event is triggered every time a user stops a live stream. ## Prerequisites Event Subscriptions must be enabled for your app with the following configurations: - A valid Event Notification Endpoint URL. - **Session Live Streaming Stopped** subscription enabled under the **Video SDK** event. The tabs below display the complete schema, payload with data types, and an example of the `session.live_streaming_stopped` event notification: #### Request Body ##### Content-Type: application/json - **`event` (required)** `string`, possible values: `"session.live_streaming_stopped"` — The name of the event. - **`event_ts` (required)** `integer`, format: `int64` — Timestamp (in milliseconds since epoch) at which the event occurred. The value of this field is returned in long(int64) format. - **`payload` (required)** `object` - **`account_id` (required)** `string` — The Video SDK account ID. - **`object` (required)** `object` — Information about the session. - **`id` (required)** `string` — The session ID. - **`live_streaming` (required)** `object` — Information about the participant. - **`custom_live_streaming_settings` (required)** `object` — The live stream settings. - **`page_url` (required)** `string` — The live stream's page URL. - **`stream_key` (required)** `string` — The stream's Key. - **`stream_url` (required)** `string` — The stream's URL. - **`resolution`** `string` — The number of pixels in each dimension that the video camera can display. - **`date_time` (required)** `string`, format: `date-time` — The live stream's stop time. - **`service` (required)** `string`, possible values: `"Facebook", "Workplace_by_Facebook", "YouTube", "Custom_Live_Streaming_Service"` — The name of the Live Streaming service. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_name` (required)** `string` — Session name. - **`start_time` (required)** `string`, format: `date-time` — The session's start time. - **`session_key`** `string` — The Video SDK custom session ID. **Example:** ```json { "event": "session.live_streaming_stopped", "event_ts": 1, "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "start_time": "", "live_streaming": { "service": "Facebook", "custom_live_streaming_settings": { "stream_url": "", "stream_key": "", "page_url": "", "resolution": "" }, "date_time": "" } } } } ``` #### Responses ##### Status: 200 Successfully received the webhook event. ### session.stream\_ingestion\_stopped - **Method:** `POST` - **Path:** `session.stream_ingestion_stopped` - **Tags:** Sessions Zoom triggers the **Session stream ingestion stopped** event every time a user stops sending live incoming streams. ## Prerequisites - **Event Subscriptions** must be enabled for your app with the following configurations: - A valid **Event Notification Endpoint URL**. - The **Session stream ingestion stopped** subscription enabled under the **Video SDK** event. #### Request Body ##### Content-Type: application/json - **`event` (required)** `string`, possible values: `"session.stream_ingestion_stopped"` — Event name. - **`event_ts` (required)** `integer`, format: `int64` — Timestamp (in milliseconds since epoch) when the event occurred. The value of this field is returned in long (int64) format. - **`payload` (required)** `object` - **`account_id` (required)** `string` — The Video SDK account ID. - **`object` (required)** `object` — Information about the session. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_name` (required)** `string` — Session name. - **`stream_ingestion` (required)** `object` — Information about the stream ingestion. - **`backup_stream_url` (required)** `string` — The backup stream URL. - **`stream_id` (required)** `string` — The stream ingestion ID. - **`stream_key` (required)** `string` — The stream ingestion key. - **`stream_name` (required)** `string` — The stream ingestion name. - **`stream_url` (required)** `string` — The stream URL. - **`stream_description`** `string` — The stream ingestion description. - **`session_key`** `string` — The Video SDK custom session ID. **Example:** ```json { "event": "session.stream_ingestion_stopped", "event_ts": 1, "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "stream_ingestion": { "stream_id": "", "stream_name": "", "stream_description": "", "stream_key": "", "stream_url": "", "backup_stream_url": "" } } } } ``` #### Responses ##### Status: 200 Successfully received the webhook event. ### session.user\_room\_system\_callout\_rejected - **Method:** `POST` - **Path:** `session.user_room_system_callout_rejected` - **Tags:** Sessions The **Invited party rejected a session invitation through phone (call out) via Zoom room** event is triggered every time a user rejects an invitation to [join a session through phone (call out) from a Zoom room](https://support.zoom.us/hc/en-us/articles/205369035). ## Prerequisites - **Event Subscriptions** must be enabled for your app with the following configurations: - A valid **Event Notification Endpoint URL**. - The **Invited party rejected a session invitation through phone (call out) via Zoom room** subscription enabled under the **Session** event. #### Request Body ##### Content-Type: application/json - **`event` (required)** `string` — The name of the event. - **`event_ts` (required)** `integer`, format: `int64` — A timestamp at which the event occurred. - **`payload` (required)** `object` - **`account_id` (required)** `string` — The account ID of the session host. - **`object` (required)** `object` — Information about the session. - **`host_id` (required)** `string` — The user ID of the session host. - **`inviter_name` (required)** `string` — The user name of the event's trigger. - **`message_id` (required)** `string` — The request unique identifier (UUID). - **`participant` (required)** `object` — Information about the invited participant. - **`call_type` (required)** `string` — The type of call out. Use a value of \`h323\` or \`sip\`. - **`device_ip` (required)** `string` — The user's device IP address. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_name` (required)** `string` — Session name. - **`id`** `integer`, format: `int64` — The session ID. - **`uuid`** `string` — The session's universally unique identifier (UUID). Each session instance generates a session UUID. **Example:** ```json { "event": "", "event_ts": 1, "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "host_id": "", "message_id": "", "inviter_name": "", "participant": { "call_type": "", "device_ip": "", "additionalProperty": "anything" } } } } ``` #### Responses ##### Status: 200 Successfully received the webhook event. ### session.alert - **Method:** `POST` - **Path:** `session.alert` - **Tags:** Sessions *** The Session Alert event is triggered every time a service issue is encountered during a session in your account. The following quality metrics can trigger an alert: - Unstable audio quality - Unstable video quality - Unstable screen share quality - High CPU occupation - Call Reconnection ## Prerequisites Event Subscriptions must be enabled for your [Marketplace app](https://marketplace.zoom.us/user/build) with the following configurations: - A valid Event Notification Endpoint URL. - Session Alert subscription enabled under the Video SDK event. The tabs below display the complete schema, payload with data types, and an example of the `session.alert` event notification: #### Request Body ##### Content-Type: application/json - **`event` (required)** `string`, possible values: `"session.alert"` — The event's name. - **`event_ts` (required)** `integer`, format: `int64` — A timestamp, in milliseconds since epoch, at which the event occurred. - **`payload` (required)** `object` - **`account_id` (required)** `string` — The Video SDK account ID. - **`object` (required)** `object` — Information about the session. This object only returns updated properties. - **`id` (required)** `string` — The session ID. - **`issues` (required)** `array` — Issues that occurred during the session. **Items:** `string`, possible values: `"Unstable audio quality", "Unstable video quality", "Unstable screen share quality", "High CPU occupation", "Call Reconnection"` - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_name` (required)** `string` — Session name. - **`session_key`** `string` — The Video SDK custom session ID. **Example:** ```json { "event": "session.alert", "event_ts": 1, "payload": { "account_id": "", "object": { "id": "", "session_id": "", "session_name": "", "session_key": "", "issues": [ "Unstable audio quality" ] } } } ``` #### Responses ##### Status: 200 Successfully received the webhook event. ### session.recording\_summary\_completed - **Method:** `POST` - **Path:** `session.recording_summary_completed` - **Tags:** Cloud Recording *** Event: `session.recording_summary_completed` ## Event description The **Session recording summary completed** event is triggered every time a session's recording summary becomes available to view or download. Only a session host or co-host can start, pause, resume, or stop a cloud recording. A recording is considered complete after the host or co-host ends the session. See [get transcript and summary](/docs/build/cloud-recording/#get-transcript-and-summary) for details. ## Prerequisites - Cloud Recording must be enabled on the Video SDK account. - The video session is started with the JWT setting to enable the cloud recording with transcript and summary option. - Event Subscriptions must be enabled for your app with the following configurations: - A valid Event Notification Endpoint URL. - **Session recording summary completed** subscription enabled under the **Video SDK** event. The tabs below display the complete schema, payload with data types, and an example of the `session.recording_summary_completed` event notification: #### Request Body ##### Content-Type: application/json - **`download_token` (required)** `string` — The URL to download the recording. To download, set your \[Video SDK API JWT]\(https\://developers.zoom.us/docs/video-sdk/api-request/) as a Bearer token in the Authorization header of your HTTP request. For example: \`curl "{download\_url}" --header "authorization: Bearer {access token or JWT}" --header "content-type: application/json"\`. Note: The download\_url may be a redirect. In that case, use \`curl --location "{download\_url}"\` to follow redirects or use another tool, like Postman. - **`event` (required)** `string`, possible values: `"session.recording_summary_completed"` — The event's name. - **`event_ts` (required)** `integer`, format: `int64` — A timestamp, in milliseconds since epoch, when the event occurred. - **`payload` (required)** `object` - **`account_id` (required)** `string` — The Video SDK account ID. - **`object` (required)** `object` — Information about the session. This object only returns updated properties. - **`recording_files` (required)** `array` — List of recording files. **Items:** - **`download_url`** `string` — The URL to download the recording. To download, set your \[Video SDK API JWT]\(https\://developers.zoom.us/docs/video-sdk/api-request/) as a Bearer token in the Authorization header of your HTTP request. For example: \`curl "{download\_url}" --header "authorization: Bearer {access token or JWT}" --header "content-type: application/json"\`. Note: The download\_url may be a redirect. In that case, use \`curl --location "{download\_url}"\` to follow redirects or use another tool, like Postman. - **`file_extension`** `string`, possible values: `"JSON"` — The archived file's file extension. - **`file_name`** `string` — The file name. - **`file_path`** `string` — The file path to the on-premise account recording. \*\*Note:\*\* This API only returns this field for \[Zoom On-Premise accounts]\(https\://support.zoom.us/hc/en-us/articles/360034064852-Zoom-On-Premise-Deployment). It does \*\*not\*\* return the \`download\_url\` field. - **`file_size`** `number` — The recording file size. - **`file_type`** `string`, possible values: `"SUMMARY"` — The recording file type. The value of this field is:\
\`SUMMARY\`: Summary file of the recording in JSON format - **`id`** `string` — The recording file ID. Included in the response of the general query. - **`recording_end`** `string` — The recording end time. Response in the general query. - **`recording_start`** `string` — The recording start time. - **`recording_type`** `string`, possible values: `"summary"` — The recording type. The value of this field is:\
\`summary\` - **`status`** `string`, possible values: `"completed"` — The recording status. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_key` (required)** `string` — The Video SDK custom session ID. - **`session_name` (required)** `string` — Session name. - **`start_time` (required)** `string`, format: `date-time` — The session start time. - **`timezone` (required)** `string` — The user's timezone. **Example:** ```json { "event": "session.recording_summary_completed", "event_ts": 1, "download_token": "", "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "start_time": "", "timezone": "", "recording_files": [ { "id": "", "recording_start": "", "recording_end": "", "file_name": "", "file_path": "", "file_type": "SUMMARY", "file_size": 1, "file_extension": "JSON", "download_url": "", "status": "completed", "recording_type": "summary" } ] } } } ``` #### Responses ##### Status: 200 Successfully received the webhook event. ### session.sharing\_ended - **Method:** `POST` - **Path:** `session.sharing_ended` - **Tags:** Sessions *** The Session Sharing Ended event is triggered every time a user stops sharing the screen during a session. ## Prerequisites Event Subscriptions must be enabled for your [Marketplace app](https://marketplace.zoom.us/user/build) with the following configurations: - A valid Event Notification Endpoint URL. - **Session Sharing Ended** subscription enabled under the **Video SDK** event. The tabs below display the complete schema, payload with data types, and an example of the `session.sharing_ended` event notification: #### Request Body ##### Content-Type: application/json - **`event` (required)** `string`, possible values: `"session.sharing_ended"` — The event's name. - **`event_ts` (required)** `integer`, format: `int64` — A timestamp, in milliseconds since epoch, at which the event occurred. - **`payload` (required)** `object` - **`account_id` (required)** `string` — The Video SDK account ID. - **`object` (required)** `object` — Information about the session. This object only returns updated properties. - **`id` (required)** `string` — The session ID. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_name` (required)** `string` — Session name. - **`user` (required)** `object` — Information about the user. - **`id` (required)** `string` — The user's unique ID. This value is assigned to the user upon joining a session and is only valid for that session. - **`name` (required)** `string` — The user's username. - **`sharing_details` (required)** `object` — Information about the session's screen sharing. - **`content` (required)** `string`, possible values: `"application", "whiteboard", "desktop", "unknown"` — The type of shared content: \* \`application\` — An application. For example, a web browser. \* \`whiteboard\` — The Zoom \[whiteboard]\(https\://support.zoom.us/hc/en-us/articles/205677665-Sharing-a-whiteboard). \* \`desktop\` — A user's desktop. \* \`unknown\` — An unrecognized application, such as a third party app. - **`date_time` (required)** `string`, format: `date-time` — The session's screen sharing date and time. - **`user_key`** `string` — Another identifier for the user. Can be a number or characters. - **`session_key`** `string` — The Video SDK custom session ID. **Example:** ```json { "event": "session.sharing_ended", "event_ts": 1, "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "user": { "id": "", "name": "", "user_key": "", "sharing_details": { "content": "application", "date_time": "" } } } } } ``` #### Responses ##### Status: 200 Successfully received the webhook event. ### session.recording\_paused - **Method:** `POST` - **Path:** `session.recording_paused` - **Tags:** Cloud Recording *** Event: `session.recording_paused` ## Event description The **Session recording paused** event is triggered every time a recording is paused by one of your app or account users. Only a session host or co-host can start, pause, resume, or stop a cloud recording. A recording is considered complete **after** the host or co-host ends the session. See [Enable cloud recording](https://developers.zoom.us/docs/video-sdk/account/#enable-cloud-recording) for details. ## Prerequisites - Cloud Recording must be enabled on the Video SDK account. - Event Subscriptions must be enabled for your app with the following configurations: - A valid Event Notification Endpoint URL. - "**Session recording paused**" subscription enabled under the **Recording** event. The tabs below display the complete schema, payload with data types, and an example of the `session.recording_paused` event notification: #### Request Body ##### Content-Type: application/json - **`event` (required)** `string`, possible values: `"session.recording_paused"` — The event's name. - **`event_ts` (required)** `integer`, format: `int64` — A timestamp, in milliseconds since epoch, at which the event occurred. - **`payload` (required)** `object` - **`account_id` (required)** `string` — The Video SDK account ID. - **`object` (required)** `object` — Information about the session. This object only returns updated properties. - **`recording_file` (required)** `object` - **`recording_end`** `string` — The recording end time. Response in general query. - **`recording_start`** `string` — The recording start time. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_key` (required)** `string` — The Video SDK custom session ID. - **`session_name` (required)** `string` — Session name. - **`start_time` (required)** `string`, format: `date-time` — The time at which the session started. - **`timezone` (required)** `string` — The user's timezone. **Example:** ```json { "event": "session.recording_paused", "event_ts": 1, "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "start_time": "", "timezone": "", "recording_file": { "recording_start": "", "recording_end": "" } } } } ``` #### Responses ##### Status: 200 Successfully received the webhook event. ### session.ended - **Method:** `POST` - **Path:** `session.ended` - **Tags:** Sessions *** The Session Ended event is triggered when the host ends the session, or when all users have left the session. ## Prerequisites Event Subscriptions must be enabled for your app with the following configurations: - A valid Event Notification Endpoint URL. - **Session Ended** subscription enabled under the **Video SDK** event. The tabs below display the complete schema, payload with data types, and an example of the `session.ended` event notification: #### Request Body ##### Content-Type: application/json - **`event` (required)** `string`, possible values: `"session.ended"` — The name of the event. - **`event_ts` (required)** `integer`, format: `int64` — Timestamp at which the event occurred, in milliseconds since epoch. The value of this field is returned in long(int64) format. - **`payload` (required)** `object` - **`account_id` (required)** `string` — The Video SDK account ID. - **`object` (required)** `object` — Information about the session. - **`end_time` (required)** `string`, format: `date-time` — The session's end time. - **`id` (required)** `string` — The session ID. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_name` (required)** `string` — Session name. - **`start_time` (required)** `string`, format: `date-time` — The session's start time. - **`session_key`** `string` — The Video SDK custom session ID. **Example:** ```json { "event": "session.ended", "event_ts": 1, "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "start_time": "", "end_time": "" } } } ``` #### Responses ##### Status: 200 Successfully received the webhook event. ### session.started - **Method:** `POST` - **Path:** `session.started` - **Tags:** Sessions *** The Session Start event is triggered when the first user (including host and co-host) joins. ## Prerequisites Event Subscriptions must be enabled for your app with the following configurations: - A valid Event Notification Endpoint URL. - **Session Started** subscription enabled under the **Video SDK** event. The tabs below display the complete schema, payload with data types, and an example of the `session.started` event notification: #### Request Body ##### Content-Type: application/json - **`event` (required)** `string`, possible values: `"session.started"` — The name of the event. - **`event_ts` (required)** `integer`, format: `int64` — Timestamp (in milliseconds since epoch) at which the event occurred. The value of this field is returned in long(int64) format. - **`payload` (required)** `object` - **`account_id` (required)** `string` — The Video SDK account ID. - **`object` (required)** `object` — Information about the session. - **`id` (required)** `string` — The session's ID. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_name` (required)** `string` — Session name. - **`start_time` (required)** `string`, format: `date-time` — The session's start time. - **`session_key`** `string` — The Video SDK custom session ID. **Example:** ```json { "event": "session.started", "event_ts": 1, "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "start_time": "" } } } ``` #### Responses ##### Status: 200 Successfully received the webhook event. ### session.stream\_ingestion\_unbind - **Method:** `POST` - **Path:** `session.stream_ingestion_unbind` - **Tags:** Sessions Zoom triggers the **Session stream ingestion unbind** event every time a session unbinds a stream key. ## Prerequisites - **Event Subscriptions** must be enabled for your app with the following configurations: - A valid **Event Notification Endpoint URL**. - The **Session stream ingestion unbind** subscription enabled under the **Video SDK** event. #### Request Body ##### Content-Type: application/json - **`event` (required)** `string`, possible values: `"session.stream_ingestion_unbind"` — Event name. - **`event_ts` (required)** `integer`, format: `int64` — Timestamp (in milliseconds since epoch) at which the event occurred. The value of this field is returned in long (int64) format. - **`payload` (required)** `object` - **`account_id` (required)** `string` — The Video SDK account ID. - **`object` (required)** `object` — Information about the session. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_name` (required)** `string` — Session name. - **`stream_ingestion` (required)** `object` — Information about the stream ingestion. - **`backup_stream_url` (required)** `string` — The backup stream URL. - **`stream_id` (required)** `string` — The stream ingestion ID. - **`stream_key` (required)** `string` — The stream ingestion key. - **`stream_name` (required)** `string` — The stream ingestion name. - **`stream_url` (required)** `string` — The stream URL. - **`stream_description`** `string` — The stream ingestion description. - **`session_key`** `string` — The Video SDK custom session ID. **Example:** ```json { "event": "session.stream_ingestion_unbind", "event_ts": 1, "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "stream_ingestion": { "stream_id": "", "stream_name": "", "stream_description": "", "stream_key": "", "stream_url": "", "backup_stream_url": "" } } } } ``` #### Responses ##### Status: 200 Successfully received the webhook event. ### session.live\_streaming\_started - **Method:** `POST` - **Path:** `session.live_streaming_started` - **Tags:** Sessions *** The Session Live Streaming Started event is triggered every time a user starts a live stream. ## Prerequisites Event Subscriptions must be enabled for your app with the following configurations: - A valid Event Notification Endpoint URL. - **Session Live Streaming Started** subscription enabled under the **Video SDK** event. The tabs below display the complete schema, payload with data types, and an example of the `session.live_streaming_started` event notification: #### Request Body ##### Content-Type: application/json - **`event` (required)** `string`, possible values: `"session.live_streaming_started"` — Name of the event. - **`event_ts` (required)** `integer`, format: `int64` — Timestamp (in milliseconds since epoch) at which the event occurred. The value of this field is returned in long(int64) format. - **`payload` (required)** `object` - **`account_id` (required)** `string` — The Video SDK account ID. - **`object` (required)** `object` — Information about the session. - **`id` (required)** `string` — The session ID. - **`live_streaming` (required)** `object` — Information about the participant. - **`custom_live_streaming_settings` (required)** `object` — The live stream settings. - **`page_url` (required)** `string` — The live stream's page URL. - **`stream_key` (required)** `string` — The stream's key. - **`stream_url` (required)** `string` — The stream's URL. - **`resolution`** `string` — The number of pixels in each dimension that the video camera can display. - **`date_time` (required)** `string`, format: `date-time` — The live stream's start time. - **`service` (required)** `string`, possible values: `"Facebook", "Workplace_by_Facebook", "YouTube", "Custom_Live_Streaming_Service"` — The name of the Live Streaming service. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_name` (required)** `string` — Session name. - **`start_time` (required)** `string`, format: `date-time` — The session's start time. - **`session_key`** `string` — The Video SDK custom session ID. **Example:** ```json { "event": "session.live_streaming_started", "event_ts": 1, "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "start_time": "", "live_streaming": { "service": "Facebook", "custom_live_streaming_settings": { "stream_url": "", "stream_key": "", "page_url": "", "resolution": "" }, "date_time": "" } } } } ``` #### Responses ##### Status: 200 Successfully received the webhook event. ### session.user\_room\_system\_callout\_missed - **Method:** `POST` - **Path:** `session.user_room_system_callout_missed` - **Tags:** Sessions The **Invited party missed a session invitation through phone (call out) via Zoom room** event is triggered every time an invitation to [join a session through phone (call out) from a Zoom room](https://support.zoom.us/hc/en-us/articles/205369035) times out. ## Prerequisites - **Event Subscriptions** must be enabled for your app with the following configurations: - A valid **Event Notification Endpoint URL**. - The **Invited party missed a session invitation through phone (call out) via Zoom room** subscription enabled under the **Session** event. #### Request Body ##### Content-Type: application/json - **`event` (required)** `string` — The name of the event. - **`event_ts` (required)** `integer`, format: `int64` — A timestamp at which the event occurred. - **`payload` (required)** `object` - **`account_id` (required)** `string` — The account ID of the session host. - **`object` (required)** `object` — Information about the session. - **`host_id` (required)** `string` — The user ID of the session host. - **`inviter_name` (required)** `string` — The user name of the event's trigger. - **`message_id` (required)** `string` — The request unique identifier (UUID). - **`participant` (required)** `object` — Information about the invited participant. - **`call_type` (required)** `string` — The type of call out. Use a value of \`h323\` or \`sip\`. - **`device_ip` (required)** `string` — The user's device IP address. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_name` (required)** `string` — Session name. - **`id`** `integer`, format: `int64` — The session ID. - **`uuid`** `string` — The session's universally unique identifier (UUID). Each session instance generates a session UUID. **Example:** ```json { "event": "", "event_ts": 1, "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "host_id": "", "message_id": "", "inviter_name": "", "participant": { "call_type": "", "device_ip": "", "additionalProperty": "anything" } } } } ``` #### Responses ##### Status: 200 Successfully received the webhook event. ### session.user\_phone\_callout\_accepted - **Method:** `POST` - **Path:** `session.user_phone_callout_accepted` - **Tags:** Sessions The **Invited party answered a session invitation through phone (call out)** event is triggered every time a user accepts an invitation to join a session through phone (call out). Video SDK call out operates in a similar manner as [Zoom meeting call out](https://support.zoom.com/hc/article?id=zm_kb\&sysparm_article=KB0062038). ## Prerequisites - **Event Subscriptions** must be enabled for your app with the following configurations: - A valid **Event Notification Endpoint URL**. - The **Invited party answered a session invitation through phone (call out)** subscription enabled under the **Session** event. #### Request Body ##### Content-Type: application/json - **`event` (required)** `string` — The name of the event. - **`event_ts` (required)** `integer`, format: `int64` — A timestamp at which the event occurred. - **`payload` (required)** `object` - **`account_id` (required)** `string` — The account ID of the session host. - **`object` (required)** `object` — Information about the session. - **`host_id` (required)** `string` — The user ID of the session host. - **`participant` (required)** `object` — Information about the invited participant. - **`from_number` (required)** `integer`, format: `int64` — The number used to call out to the invited user. - **`invitee_name` (required)** `string` — The user's name to display in the session. - **`phone_number` (required)** `integer`, format: `int64` — The user's phone number. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_key` (required)** `string` — The Video SDK custom session ID. - **`session_name` (required)** `string` — Session name. - **`user_key` (required)** `string` — Another identifier for the inviter. Can be a number or characters. - **`id`** `integer`, format: `int64` — The session ID. - **`uuid`** `string` — The session's universally unique identifier (UUID). Each session instance generates a session UUID. **Example:** ```json { "event": "", "event_ts": 1, "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "user_key": "", "host_id": "", "participant": { "invitee_name": "", "phone_number": 1, "from_number": 1 } } } } ``` #### Responses ##### Status: 200 Successfully received the webhook event. ### session.user\_left - **Method:** `POST` - **Path:** `session.user_left` - **Tags:** Sessions The Session User Left event is triggered every time a user (including host and co-host) leaves a session. ## Prerequisites Event Subscriptions must be enabled for your [Marketplace app](https://marketplace.zoom.us/user/build) with the following configurations: - A valid Event Notification Endpoint URL. - Session User Left subscription enabled under the Video SDK event. #### Request Body ##### Content-Type: application/json - **`event` (required)** `string`, possible values: `"session.user_left"` — The event's name. - **`event_ts` (required)** `integer`, format: `int64` — A timestamp, in milliseconds since epoch, at which the event occurred. - **`payload` (required)** `object` - **`account_id` (required)** `string` — The Video SDK account ID. - **`object` (required)** `object` — Information about the session. This object only returns updated properties. - **`id` (required)** `string` — The session ID. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_name` (required)** `string` — Session name. - **`user` (required)** `object` — Information about the user. - **`id` (required)** `string` — The user's unique ID. This value is assigned to the user upon joining a session and is only valid for that session. - **`leave_time` (required)** `string`, format: `date-time` — The time at which the user left the session. - **`name` (required)** `string` — The user's username. - **`participant_uuid` (required)** `string` — The participant's UUID. This value is assigned to a participant upon joining a session and is only valid for the session's duration. - **`leave_reason`** `string` — The reason why the user left the session, where \`$name\` is the participant's username: \* \`$name left the session.\` \* \`$name got disconnected from the session.\` \* \`Host ended the session.\` \* \`Host closed the session.\` \* \`Host started a new session.\` \* \`Network connection error.\` \* \`Host did not join.\` \* \`Exceeded free session minutes limit.\` \* \`Removed by host.\` \* \`Unknown reason.\` \* \`Leave waiting room.\` \* \`Removed by host from waiting room.\` - **`phone_number`** `string` — Phone number of participant joined via PSTN. - **`user_key`** `string` — Another identifier for the user. Can be a number or characters. - **`session_key`** `string` — The Video SDK custom session ID. **Example:** ```json { "event": "session.user_left", "event_ts": 1, "payload": { "account_id": "", "object": { "id": "", "session_id": "", "session_name": "", "session_key": "", "user": { "id": "", "name": "", "leave_time": "", "leave_reason": "", "user_key": "", "phone_number": "", "participant_uuid": "" } } } } ``` #### Responses ##### Status: 200 Successfully received the webhook event. ### session.sharing\_started - **Method:** `POST` - **Path:** `session.sharing_started` - **Tags:** Sessions The Session Sharing Started event is triggered every time a user starts sharing the screen during a session. ## Prerequisites Event Subscriptions must be enabled for your [Marketplace app](https://marketplace.zoom.us/user/build) with the following configurations: - A valid Event Notification Endpoint URL. - **Session Sharing Started** subscription enabled under the **Video SDK** event. The tabs below display the complete schema, payload with data types, and an example of the `session.sharing_started` event notification: #### Request Body ##### Content-Type: application/json - **`event` (required)** `string`, possible values: `"session.sharing_started"` — The event's name. - **`event_ts` (required)** `integer`, format: `int64` — A timestamp, in milliseconds since epoch, at which the event occurred. - **`payload` (required)** `object` - **`account_id` (required)** `string` — The Video SDK account ID. - **`object` (required)** `object` — Information about the session. This object only returns updated properties. - **`id` (required)** `string` — The session ID. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_name` (required)** `string` — Session name. - **`user` (required)** `object` — Information about the user. - **`id` (required)** `string` — The user's unique ID. This value is assigned to the user upon joining a session and is only valid for that session. - **`name` (required)** `string` — The user's username. - **`sharing_details` (required)** `object` — Information about the session's screen sharing. - **`content` (required)** `string`, possible values: `"application", "whiteboard", "desktop", "unknown"` — The type of shared content: \* \`application\` — An application. For example, a web browser. \* \`whiteboard\` — The Zoom \[whiteboard]\(https\://support.zoom.us/hc/en-us/articles/205677665-Sharing-a-whiteboard). \* \`desktop\` — A user's desktop. \* \`unknown\` — An unrecognized application, such as a third party app. - **`date_time` (required)** `string`, format: `date-time` — The session's screen sharing date and time. - **`user_key`** `string` — Another identifier for the user. Can be a number or characters. - **`session_key`** `string` — The Video SDK custom session ID. **Example:** ```json { "event": "session.sharing_started", "event_ts": 1, "payload": { "account_id": "", "object": { "id": "", "session_id": "", "session_name": "", "session_key": "", "user": { "id": "", "name": "", "user_key": "", "sharing_details": { "content": "application", "date_time": "" } } } } } ``` #### Responses ##### Status: 200 Successfully received the webhook event. ### session.user\_phone\_callout\_canceled - **Method:** `POST` - **Path:** `session.user_phone_callout_canceled` - **Tags:** Sessions The **Invited party's phone (call out) canceled** event is triggered every time the inviter cancels the call out when they were invited to join a session through phone (call out). Video SDK call out operates in a similar manner as [Zoom meeting call out](https://support.zoom.com/hc/article?id=zm_kb\&sysparm_article=KB0062038). ## Prerequisites - **Event Subscriptions** must be enabled for your app with the following configurations: - A valid **Event Notification Endpoint URL**. - The **Invited party's phone (call out) canceled** subscription enabled under the **Session** event. #### Request Body ##### Content-Type: application/json - **`event` (required)** `string` — The name of the event. - **`event_ts` (required)** `integer`, format: `int64` — A timestamp at which the event occurred. - **`payload` (required)** `object` - **`account_id` (required)** `string` — The account ID of the session host. - **`object` (required)** `object` — Information about the session. - **`participant` (required)** `object` — Information about the invited participant. - **`from_number` (required)** `integer`, format: `int64` — The number used to call out to the invited user. - **`invitee_name` (required)** `string` — The user's name to display in the session. - **`phone_number` (required)** `integer`, format: `int64` — The user's phone number. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_key` (required)** `string` — The Video SDK custom session ID. - **`session_name` (required)** `string` — Session name. - **`user_key` (required)** `string` — Another identifier for the inviter. Can be a number or characters. **Example:** ```json { "event": "", "event_ts": 1, "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "user_key": "", "participant": { "invitee_name": "", "phone_number": 1, "from_number": 1 } } } } ``` #### Responses ##### Status: 200 Successfully received the webhook event. ### session.recording\_transcript\_completed - **Method:** `POST` - **Path:** `session.recording_transcript_completed` - **Tags:** Cloud Recording *** Event: `session.recording_transcript_completed` ## Event description The **Session recording transcript completed** event is triggered every time the transcript of the recording of a session becomes available to view or download. Only a session host or co-host can start, pause, resume, or stop a cloud recording. A recording is considered complete after the host or co-host ends the session. See [get transcript and summary](/docs/build/cloud-recording/#get-transcript-and-summary) for details. ## Prerequisites - Cloud Recording must be enabled on the Video SDK account. - Event Subscriptions must be enabled for your app with the following configurations: - A valid Event Notification Endpoint URL. - Session recording transcript completed subscription enabled under the Recording event. The tabs below display the complete schema, payload with data types, and an example of the `session.recording_transcript_completed` event notification: #### Request Body ##### Content-Type: application/json - **`download_token` (required)** `string` — A generated token used to download the recording. The download token only lasts for 24 hours after its creation and you can only download the file within 24 hours of receiving the event notification. You can either pass the \`download\_token\` as a Bearer token in the Authorization header of your HTTP request (recommended) or include it as a query parameter. See the following for examples. \*\*Using an Authorization header (Recommended)\*\* \`\`\` curl --request GET \ --url {download\_url} \ --header 'authorization: Bearer {download\_token} \ --header 'content-type: application/json' \`\`\` \*\*Using a query parameter\*\* \`\`\` {download\_url}/?access\_token={download\_token} \`\`\` For example: \`https\://zoom.us/recording/download/123456?access\_token=abcdefgh\` - **`event` (required)** `string`, possible values: `"session.recording_transcript_completed"` — The event's name. - **`event_ts` (required)** `integer`, format: `int64` — A timestamp, in milliseconds since epoch, at which the event occurred. - **`payload` (required)** `object` - **`account_id` (required)** `string` — The Video SDK account ID. - **`object` (required)** `object` — Information about the session. This object only returns updated properties. - **`recording_files` (required)** `array` — List of recording file. **Items:** - **`download_url`** `string` — The URL at which to download the the recording. To access a private or password-protected cloud recording of a user in your account, use your \[Video SDK API JWT]\(https\://marketplace.zoom.us/docs/guides/build/video-sdk-app/#video-sdk-and-api-credentials). You can either pass the generated JWT as a Bearer token in the Authorization header of your HTTP request (recommended) or include it as a query parameter at the end of the URL. See the following for examples. \*\*Using an Authorization header (Recommended)\*\* \`\`\` curl --request GET \ --url {download\_url} \ --header 'authorization: Bearer {JWT} \ --header 'content-type: application/json' \`\`\` \*\*Using a query parameter\*\* \`\`\` {download\_url}/?access\_token={download\_token} \`\`\` For example: \`https\://{base-domain}/recording/download/{path-to-file-download}?access\_token={JWT}\`. - **`file_extension`** `string`, possible values: `"MP4", "M4A", "TXT", "VTT", "CSV", "JSON", "JPG"` — The archived file's file extension. - **`file_name`** `string` — Name of the file. - **`file_path`** `string` — The file path to the On-Premise account recording. \*\*Note:\*\* This API only returns this field for \[Zoom On-Premise accounts]\(https\://support.zoom.us/hc/en-us/articles/360034064852-Zoom-On-Premise-Deployment). It does \*\*not\*\* return the \`download\_url\` field. - **`file_size`** `number` — The recording file size. - **`file_type`** `string`, possible values: `"MP4", "M4A", "CHAT", "TRANSCRIPT", "CSV", "CC", "TB", "CHAT_MESSAGE", "TIMELINE"` — The recording file type. The value of this field could be one of the following:\
\`MP4\`: Video file of the recording.\
\`M4A\` Audio-only file of the recording.\
\`TIMELINE\`: Timestamp file of the recording in JSON file format. To get a timeline file, the "Add a timestamp to the recording" setting must be enabled in the \[recording settings]\(https\://support.zoom.us/hc/en-us/articles/360060316092). The time will display in the host's timezone, set on their Zoom profile. \
\`TRANSCRIPT\`: Transcription file of the recording in VTT format.\
\`CHAT\`: A TXT file containing in-session chat messages that were sent during the session.\
\`CC\`: File containing closed captions of the recording in VTT file format.\
\`CSV\`: File containing polling data in csv format. \
A recording file object with file type of either \`CC\` or \`TIMELINE\` \*\*does not have\*\* the following properties:\
\`id\`, \`status\`, \`file\_size\`, \`recording\_type\`. - **`id`** `string` — The recording file ID. Included in the response of general query. - **`recording_end`** `string` — The recording end time. Response in general query. - **`recording_start`** `string` — The recording start time. - **`recording_type`** `string`, possible values: `"shared_screen_with_speaker_view(CC)", "shared_screen_with_speaker_view", "shared_screen_with_gallery_view", "gallery_view", "shared_screen", "audio_only", "audio_transcript", "chat_file", "active_speaker", "host_video", "audio_only_each_participant", "cc_transcript", "closed_caption", "poll", "timeline", "thumbnail", "chat_message"` — The recording type. The value of this field can be one of the following:\
\`shared\_screen\_with\_speaker\_view(CC)\`\
\`shared\_screen\_with\_speaker\_view\`\
\`shared\_screen\_with\_gallery\_view\`\
\`speaker\_view\`\
\`gallery\_view\`\
\`shared\_screen\`\
\`audio\_only\`\
\`audio\_transcript\`\
\`chat\_file\`\
\`active\_speaker\`\
\`poll\`\
\`timeline\`\
\`closed\_caption\` - **`status`** `string`, possible values: `"completed"` — The recording status. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_key` (required)** `string` — The Video SDK custom session ID. - **`session_name` (required)** `string` — Session name. - **`start_time` (required)** `string`, format: `date-time` — The time at which the session started. - **`timezone` (required)** `string` — The user's timezone. **Example:** ```json { "event": "session.recording_transcript_completed", "event_ts": 1, "download_token": "", "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "start_time": "", "timezone": "", "recording_files": [ { "id": "", "recording_start": "", "recording_end": "", "file_name": "", "file_path": "", "file_type": "MP4", "file_size": 1, "file_extension": "MP4", "download_url": "", "status": "completed", "recording_type": "shared_screen_with_speaker_view(CC)" } ] } } } ``` #### Responses ##### Status: 200 Successfully received the webhook event. ### session.recording\_deleted - **Method:** `POST` - **Path:** `session.recording_deleted` - **Tags:** Cloud Recording *** Event: `session.recording_deleted` ## Event description The **Session recording permanently deleted** event is triggered every time one of your app users or account users permanently deletes a cloud recording. When a user initially deletes a recording, it is sent to the trash. At this stage, the recording can still be recovered for up to 30 days after deletion. To permanently delete a recording, users must delete it from the trash. Users can permanently delete a recording using: - The [Delete session's recording API](https://developers.zoom.us/docs/api/rest/reference/video-sdk/methods/#operation/recordingDelete) **with the delete query parameter** or - The Zoom web portal. See [Video SDK account](https://developers.zoom.us/docs/video-sdk/account/) for details. ## Prerequisites - Cloud Recording must be enabled on the Video SDK account. - Event Subscriptions must be enabled for your app with the following configurations: - A valid Event Notification Endpoint URL. - "**Session recording permanently deleted**" subscription enabled under the **Recording** event. The tabs below display the complete schema, payload with data types, and an example of the `session.recording_deleted` event notification: #### Request Body ##### Content-Type: application/json - **`event` (required)** `string`, possible values: `"session.recording_deleted"` — The event's name. - **`event_ts` (required)** `integer`, format: `int64` — A timestamp, in milliseconds since epoch, at which the event occurred. - **`payload` (required)** `object` - **`account_id` (required)** `string` — The Video SDK account ID. - **`object` (required)** `object` — Information about the session. This object only returns updated properties. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_key` (required)** `string` — The Video SDK custom session ID. - **`session_name` (required)** `string` — Session name. - **`start_time` (required)** `string`, format: `date-time` — The time at which the session started. - **`timezone` (required)** `string` — The user's timezone. - **`operator` (required)** `string`, format: `email` — The email address of the user who deleted the recording. - **`operator_id` (required)** `string` — The user ID of the user who deleted the recording. **Example:** ```json { "event": "session.recording_deleted", "event_ts": 1, "payload": { "account_id": "", "operator": "", "operator_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "start_time": "", "timezone": "" } } } ``` #### Responses ##### Status: 200 Successfully received the webhook event. ### session.ai\_interpreter\_usage\_summary - **Method:** `POST` - **Path:** `session.ai_interpreter_usage_summary` - **Tags:** AI Interpreter The **Session AI interpreter usage summary** event triggers when a user uses AI interpreter in the session. The collected AI interpreter usage summary metrics for that user are then sent via this event. **Note:** This is a private beta feature. ## Prerequisites - **Event Subscriptions** must be enabled for your [Marketplace app](https://marketplace.zoom.us/user/build) with the following configurations: - A valid **Event Notification Endpoint URL**. - The **Session AI interpreter usage summary** subscription enabled under the **Video SDK** event. #### Request Body ##### Content-Type: application/json - **`event` (required)** `string`, possible values: `"session.ai_interpreter_usage_summary"` — The name of the event. - **`event_ts` (required)** `integer`, format: `int64` — A timestamp, in milliseconds since epoch, at which the event occurred. - **`payload` (required)** `object` - **`account_id` (required)** `string` — The Video SDK account ID. - **`object` (required)** `object` — Information about the session. This object only returns updated properties. - **`end_time` (required)** `string` — The end time of AI interpreter usage. - **`is_host` (required)** `boolean` — Whether the current user is the host of this session. - **`participant_uuid` (required)** `string` — The participant's UUID. This value is assigned to a participant upon joining a session and is only valid for the session's duration. - **`session_id` (required)** `string` — The ID of the session. Each instance of the session will have its own \`session\_id\`. - **`session_name` (required)** `string` — The name of the session. - **`start_time` (required)** `string` — The start time of AI interpreter usage. - **`usage` (required)** `string` — The duration of AI interpreter usage. - **`session_key`** `string` — The ID of the Video SDK custom session. **Example:** ```json { "event": "session.ai_interpreter_usage_summary", "event_ts": 1, "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "participant_uuid": "", "is_host": true, "start_time": "", "end_time": "", "usage": "" } } } ``` #### Responses ##### Status: 200 Successfully received the webhook event. ### session.user\_room\_system\_callout\_failed - **Method:** `POST` - **Path:** `session.user_room_system_callout_failed` - **Tags:** Sessions The **Session invitation through phone (call out) via Zoom room failed** event is triggered every time an invitation to [join a session through phone (call out) from a Zoom room](https://support.zoom.us/hc/en-us/articles/205369035) fails. ## Prerequisites - **Event Subscriptions** must be enabled for your app with the following configurations: - A valid **Event Notification Endpoint URL**. - The **Session invitation through phone (call out) via Zoom room failed** subscription enabled under the **Session** event. #### Request Body ##### Content-Type: application/json - **`event` (required)** `string` — The name of the event. - **`event_ts` (required)** `integer`, format: `int64` — A timestamp at which the event occurred. - **`payload` (required)** `object` - **`account_id` (required)** `string` — The account ID of the session host. - **`object` (required)** `object` — Information about the session. - **`host_id` (required)** `string` — The user ID of the session host. - **`inviter_name` (required)** `string` — The user name of the event's trigger. - **`message_id` (required)** `string` — The request unique identifier (UUID). - **`participant` (required)** `object` — Information about the invited participant. - **`call_type` (required)** `string` — The type of call out. Use a value of \`h323\` or \`sip\`. - **`device_ip` (required)** `string` — The user's device IP address. - **`reason_type` (required)** `integer`, possible values: `0, 1, 2, 3, 4, 7, 8, 9, 10, 11, 12, 13, 14` — reason type for failure: \* \`1\` — Encryption\_Fail. \* \`2\` — Disconnected\_By\_Remote. \* \`3\` — Retry. \* \`4\` — Bad\_Seq. \* \`5\` — Call\_Limit. \* \`6\` — Not\_Registered. \* \`7\` — Timeout. \* \`8\` — Bad\_Addr. \* \`9\` — Unreachable \* \`10\` — Disconnect\_By\_Local \* \`11\` — Server\_Internal\_Error \* \`12\` — Exceed\_Free\_Port \* \`13\` — Connect\_Error \* \`14\` — Proxy\_Connect\_Error \* \`0\` — Other\_Failed\_Reason. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_name` (required)** `string` — Session name. - **`id`** `integer`, format: `int64` — The session ID. - **`uuid`** `string` — The session's universally unique identifier (UUID). Each session instance generates a session UUID. **Example:** ```json { "event": "", "event_ts": 1, "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "host_id": "", "message_id": "", "inviter_name": "", "reason_type": 0, "participant": { "call_type": "", "device_ip": "", "additionalProperty": "anything" } } } } ``` #### Responses ##### Status: 200 Successfully received the webhook event. ### session.recording\_completed - **Method:** `POST` - **Path:** `session.recording_completed` - **Tags:** Cloud Recording *** Event: `session.recording_completed` ## Event description The **Session recording completed** event is triggered every time a recording of a session becomes available to view and/or download. Only a session host or co-host can start, pause, resume, or stop a cloud recording. A recording is considered complete **after** the host or co-host ends the session. See [Enable cloud recording](https://developers.zoom.us/docs/video-sdk/account/#enable-cloud-recording) for details. ## Prerequisites - Cloud Recording must be enabled on the Video SDK account. - Event Subscriptions must be enabled for your app with the following configurations: - A valid Event Notification Endpoint URL. - Session recording completed subscription enabled under the Recording event. The tabs below display the complete schema, payload with data types, and an example of the `session.recording_completed` event notification: #### Request Body ##### Content-Type: application/json - **`download_token` (required)** `string` — A generated token used to download the recording. The download token only lasts for 24 hours after its creation, and you can only download the file within 24 hours of receiving the event notification. Pass the \`download\_token\` as a Bearer token in the Authorization header of your HTTP request. For example: \`\`\` curl --request GET \ --url {download\_url} \ --header 'authorization: Bearer {download\_token} \ --header 'content-type: application/json' \`\`\` - **`event` (required)** `string`, possible values: `"session.recording_completed"` — The event's name. - **`event_ts` (required)** `integer`, format: `int64` — A timestamp, in milliseconds since epoch, at which the event occurred. - **`payload` (required)** `object` - **`account_id` (required)** `string` — The Video SDK account ID. - **`object` (required)** `object` — Information about the session. This object only returns updated properties. - **`recording_files` (required)** `array` — List of recording files. **Items:** - **`download_url`** `string` — The URL at which to download the recording. To access a private or password-protected cloud recording of a user in your account, generate a \[Build account API JWT]\(https\://developers.zoom.us/docs/build/api-request/). Pass the generated JWT as a Bearer token in the Authorization header of your HTTP request. For example: \`\`\` curl --request GET \ --url {download\_url} \ --header 'authorization: Bearer {JWT} \ --header 'content-type: application/json' \`\`\` - **`external_storage_url`** `string` — The URL for the recording file when BYOS is enabled. In BYOS accounts, this field replaces \`download\_url\`. - **`file_extension`** `string`, possible values: `"MP4", "M4A", "TXT", "VTT", "CSV", "JSON", "JPG"` — The archived file's file extension. - **`file_name`** `string` — The name of the file. - **`file_path`** `string` — The file path to the On-Premise account recording. \*\*Note:\*\* This API only returns this field for \[Zoom On-Premise accounts]\(https\://support.zoom.com/hc/en/article?id=zm\_kb\&sysparm\_article=KB0058321). It does \*\*not\*\* return the \`download\_url\` field. - **`file_size`** `number` — The recording file size. - **`file_type`** `string`, possible values: `"MP4", "M4A", "CHAT", "TRANSCRIPT", "CSV", "CC", "TB", "CHAT_MESSAGE"` — The recording file type. The value of this field could be one of the following:\
\`MP4\` - Video file of the recording.\
\`M4A\` - Audio-only file of the recording.\
\`TIMELINE\` - Timestamp file of the recording in JSON file format. To get a timeline file, enable the "Add a timestamp to the recording" setting in the \[recording settings]\(https\://support.zoom.com/hc/en/article?id=zm\_kb\&sysparm\_article=KB0064676). The time displays the host's timezone, as set in their Zoom profile. \
\`TRANSCRIPT\` - Transcription file of the recording in VTT format.\
\`CHAT\` - A TXT file containing in-session chat messages that were sent during the session.\
\`CC\` - File containing closed captions of the recording in VTT file format.\
\`CSV\` - File containing polling data in CSV format. \
A recording file object with file type of either \`CC\` or \`TIMELINE\` \*\*does not have\*\* the following properties:\
\`id\`, \`status\`, \`file\_size\`, \`recording\_type\`. - **`id`** `string` — The recording file ID. Included in the response of a general query. - **`recording_end`** `string` — The recording end time. Returned in a general query. - **`recording_start`** `string` — The recording start time. - **`recording_type`** `string`, possible values: `"shared_screen_with_speaker_view(CC)", "shared_screen_with_speaker_view", "shared_screen_with_gallery_view", "gallery_view", "shared_screen", "audio_only", "audio_transcript", "chat_file", "active_speaker", "host_video", "audio_only_each_participant", "cc_transcript", "closed_caption", "poll", "timeline", "thumbnail", "chat_message"` — The recording type. The value of this field can be one of the following:\
\`shared\_screen\_with\_speaker\_view(CC)\`\
\`shared\_screen\_with\_speaker\_view\`\
\`shared\_screen\_with\_gallery\_view\`\
\`speaker\_view\`\
\`gallery\_view\`\
\`shared\_screen\`\
\`audio\_only\`\
\`audio\_transcript\`\
\`chat\_file\`\
\`active\_speaker\`\
\`poll\`\
\`timeline\`\
\`closed\_caption\` - **`status`** `string`, possible values: `"completed"` — The recording status. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_key` (required)** `string` — The Video SDK custom session ID. - **`session_name` (required)** `string` — Session name. - **`start_time` (required)** `string`, format: `date-time` — The time at which the session started. - **`timezone` (required)** `string` — The user's timezone. - **`participant_audio_files`** `array` — List of recording files. **Items:** - **`download_url`** `string` — The URL at which to download the recording. To access a private or password-protected cloud recording of a user in your account, generate a \[Build account API JWT]\(https\://developers.zoom.us/docs/build/api-request/). Pass the generated JWT as a Bearer token in the Authorization header of your HTTP request. For example: \`\`\` curl --request GET \ --url {download\_url} \ --header 'authorization: Bearer {JWT} \ --header 'content-type: application/json' \`\`\` - **`file_extension`** `string`, possible values: `"MP4", "M4A", "TXT", "VTT", "CSV", "JSON", "JPG"` — The archived file's file extension. - **`file_name`** `string` — The name of the file. - **`file_path`** `string` — The file path to the On-Premise account recording. \*\*Note:\*\* This API only returns this field for \[Zoom On-Premise accounts]\(https\://support.zoom.com/hc/en/article?id=zm\_kb\&sysparm\_article=KB0058321). It does \*\*not\*\* return the \`download\_url\` field. - **`file_size`** `number` — The recording file size. - **`file_type`** `string`, possible values: `"MP4", "M4A", "CHAT", "TRANSCRIPT", "CSV", "CC", "TB", "CHAT_MESSAGE"` — The recording file type. The value of this field could be one of the following:\
\`MP4\` - Video file of the recording.\
\`M4A\` - Audio-only file of the recording.\
\`TIMELINE\` - Timestamp file of the recording in JSON file format. To get a timeline file, enable the "Add a timestamp to the recording" setting in the \[recording settings]\(https\://support.zoom.com/hc/en/article?id=zm\_kb\&sysparm\_article=KB0064676). The time displays in the host's timezone, as set in their Zoom profile. \
\`TRANSCRIPT\` - Transcription file of the recording in VTT format.\
\`CHAT\` - A TXT file containing in-session chat messages that were sent during the session.\
\`CC\` - File containing closed captions of the recording in VTT file format.\
\`CSV\` - File containing polling data in CSV format. \
A recording file object with file type of either \`CC\` or \`TIMELINE\` \*\*does not have\*\* the following properties:\
\`id\`, \`status\`, \`file\_size\`, \`recording\_type\`. - **`id`** `string` — The recording file ID. Included in the response of a general query. - **`recording_end`** `string` — The recording end time. Returned in a general query. - **`recording_start`** `string` — The recording start time. - **`recording_type`** `string`, possible values: `"shared_screen_with_speaker_view(CC)", "shared_screen_with_speaker_view", "shared_screen_with_gallery_view", "gallery_view", "shared_screen", "audio_only", "audio_transcript", "chat_file", "active_speaker", "host_video", "audio_only_each_participant", "cc_transcript", "closed_caption", "poll", "timeline", "thumbnail", "chat_message"` — The recording type. The value of this field can be one of the following:\
\`shared\_screen\_with\_speaker\_view(CC)\`\
\`shared\_screen\_with\_speaker\_view\`\
\`shared\_screen\_with\_gallery\_view\`\
\`speaker\_view\`\
\`gallery\_view\`\
\`shared\_screen\`\
\`audio\_only\`\
\`audio\_transcript\`\
\`chat\_file\`\
\`active\_speaker\`\
\`poll\`\
\`timeline\`\
\`closed\_caption\` - **`status`** `string`, possible values: `"completed"` — The recording status. - **`user_id`** `string` — The participant's session user ID. This value is assigned to a participant upon joining a session and is only valid for the duration of the session. - **`user_key`** `string` — The participant's SDK identifier. Set with the \`user\_identity\` key in the Video SDK JWT payload. This value can be alphanumeric, up to a maximum length of 35 characters. - **`participant_video_files`** `array` — List of recording files. **Items:** - **`download_url`** `string` — The URL at which to download the recording. To access a private or password-protected cloud recording of a user in your account, generate a \[Build account API JWT]\(https\://developers.zoom.us/docs/build/api-request/). Pass the generated JWT as a Bearer token in the Authorization header of your HTTP request. For example: \`\`\` curl --request GET \ --url {download\_url} \ --header 'authorization: Bearer {JWT} \ --header 'content-type: application/json' \`\`\` - **`file_extension`** `string`, possible values: `"MP4"` — The archived file's file extension. - **`file_name`** `string` — The name of the file. - **`file_path`** `string` — The file path to the On-Premise account recording. \*\*Note:\*\* This API only returns this field for \[Zoom On-Premise accounts]\(https\://support.zoom.com/hc/en/article?id=zm\_kb\&sysparm\_article=KB0058321). It does \*\*not\*\* return the \`download\_url\` field. - **`file_size`** `number` — The recording file size. - **`file_type`** `string`, possible values: `"MP4"` — The recording file type. The value of this field could be one of the following:\
\`MP4\`: Video file of the recording. - **`id`** `string` — The recording file ID. Included in the response of a general query. - **`recording_end`** `string` — The recording end time. Returned in a general query. - **`recording_start`** `string` — The recording start time. - **`recording_type`** `string`, possible values: `"individual_user", "individual_shared_screen"` — The recording type. The value of this field can be one of the following:\
\`shared\_screen\_with\_speaker\_view(CC)\`\
\`shared\_screen\_with\_speaker\_view\`\
\`shared\_screen\_with\_gallery\_view\`\
\`speaker\_view\`\
\`gallery\_view\`\
\`shared\_screen\`\
\`audio\_only\`\
\`audio\_transcript\`\
\`chat\_file\`\
\`active\_speaker\`\
\`poll\`\
\`timeline\`\
\`closed\_caption\` - **`status`** `string`, possible values: `"completed"` — The recording status. - **`user_id`** `string` — The participant's session user ID. This value is assigned to a participant upon joining a session and is only valid for the duration of the session. - **`user_key`** `string` — The participant's SDK identifier. Set with the \`user\_identity\` key in the Video SDK JWT payload. This value can be alphanumeric, up to a maximum length of 35 characters. **Example:** ```json { "event": "session.recording_completed", "event_ts": 1, "download_token": "", "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "start_time": "", "timezone": "", "recording_files": [ { "id": "", "recording_start": "", "recording_end": "", "file_name": "", "file_path": "", "file_type": "MP4", "file_size": 1, "file_extension": "MP4", "download_url": "", "external_storage_url": "", "status": "completed", "recording_type": "shared_screen_with_speaker_view(CC)" } ], "participant_audio_files": [ { "id": "", "recording_start": "", "recording_end": "", "file_name": "", "file_path": "", "file_type": "MP4", "file_size": 1, "file_extension": "MP4", "download_url": "", "status": "completed", "recording_type": "shared_screen_with_speaker_view(CC)", "user_id": "", "user_key": "" } ], "participant_video_files": [ { "id": "", "recording_start": "", "recording_end": "", "file_name": "", "file_path": "", "file_type": "MP4", "file_size": 1, "file_extension": "MP4", "download_url": "", "status": "completed", "recording_type": "individual_user", "user_id": "", "user_key": "" } ] } } } ``` #### Responses ##### Status: 200 Successfully received the webhook event. ### session.recording\_transcript\_failed - **Method:** `POST` - **Path:** `session.recording_transcript_failed` - **Tags:** Cloud Recording *** Event: `session.recording_transcript_failed` ## Event description The **Session recording transcript failed** event is triggered every time the transcript of the recording of a session generated failed. Only a session host or co-host can start, pause, resume, or stop a cloud recording. A recording is considered complete after the host or co-host ends the session. See [get transcript and summary](https://developers.zoom.us/docs/build/cloud-recording/#get-transcript-and-summary) for details. ## Prerequisites - Enable Cloud Recording on the Video SDK account. - Enable Event Subscriptions for your app with the following configurations: - A valid Event Notification Endpoint URL. - Enable session recording transcript completed subscription under the Recording event. The tabs below display the complete schema, payload with data types, and an example of the `session.recording_transcript_completed` event notification: #### Request Body ##### Content-Type: application/json - **`event` (required)** `string`, possible values: `"session.recording_transcript_failed"` — The event's name. - **`event_ts` (required)** `integer`, format: `int64` — A timestamp, in milliseconds since epoch, when the event occurred. - **`payload` (required)** `object` - **`account_id` (required)** `string` — The Video SDK account ID. - **`object` (required)** `object` — Information about the session. This object only returns updated properties. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_key` (required)** `string` — The Video SDK custom session ID. - **`session_name` (required)** `string` — Session name. - **`start_time` (required)** `string`, format: `date-time` — The time when the session started. - **`timezone` (required)** `string` — The user's timezone. **Example:** ```json { "event": "session.recording_transcript_failed", "event_ts": 1, "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "start_time": "", "timezone": "" } } } ``` #### Responses ##### Status: 200 Successfully received the webhook event. ### session.recording\_trashed - **Method:** `POST` - **Path:** `session.recording_trashed` - **Tags:** Cloud Recording *** Event: `session.recording_trashed` ## Event description The **Session recording deleted to trash** event is triggered every time one of your app users or account users temporarily delete a cloud recording. When a user initially deletes a recording, it is deleted to the trash. Recordings deleted to the trash can be recovered up to 30 days after deletion. Users can move a recording to the trash using: - The [Delete session's recording](https://developers.zoom.us/docs/api/rest/reference/video-sdk/methods/#operation/recordingDelete) API **with the trash query parameter** or - The Zoom web portal. See [Video SDK account](https://developers.zoom.us/docs/video-sdk/account/) for details. ## Prerequisites - Cloud Recording must be enabled on the Video SDK account. - Event Subscriptions must be enabled for your app with the following configurations: - A valid Event Notification Endpoint URL. - **Session recording deleted to trash** subscription enabled under the **Recording** event. The tabs below display the complete schema, payload with data types, and an example of the `session.recording_trashed` event notification: #### Request Body ##### Content-Type: application/json - **`event` (required)** `string`, possible values: `"session.recording_trashed"` — The event's name. - **`event_ts` (required)** `integer`, format: `int64` — A timestamp, in milliseconds since epoch, at which the event occurred. - **`payload` (required)** `object` - **`account_id` (required)** `string` — The Video SDK account ID. - **`object` (required)** `object` — Information about the session. This object only returns updated properties. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_key` (required)** `string` — The Video SDK custom session ID. - **`session_name` (required)** `string` — Session name. - **`start_time` (required)** `string`, format: `date-time` — The time at which the session started. - **`timezone` (required)** `string` — The user's timezone. - **`operator` (required)** `string`, format: `email` — The email address of the user who deleted the recording. - **`operator_id` (required)** `string` — The user ID of the user who deleted the recording. **Example:** ```json { "event": "session.recording_trashed", "event_ts": 1, "payload": { "account_id": "", "operator": "", "operator_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "start_time": "", "timezone": "" } } } ``` #### Responses ##### Status: 200 Successfully received the webhook event. ### session.user\_joined - **Method:** `POST` - **Path:** `session.user_joined` - **Tags:** Sessions *** The Session User Joined event is triggered every time a user (including host and co-host) joins a session. ## Prerequisites Event Subscriptions must be enabled for your [Marketplace app](https://marketplace.zoom.us/user/build) with the following configurations: - A valid Event Notification Endpoint URL. - Session User Joined subscription enabled under the Video SDK event. The tabs below display the complete schema, payload with data types, and an example of the `session.user_joined` event notification: #### Request Body ##### Content-Type: application/json - **`event` (required)** `string`, possible values: `"session.user_joined"` — The event's name. - **`event_ts` (required)** `integer`, format: `int64` — A timestamp, in milliseconds since epoch, at which the event occurred. - **`payload` (required)** `object` - **`account_id` (required)** `string` — The Video SDK account ID. - **`object` (required)** `object` — Information about the session. This object only returns updated properties. - **`id` (required)** `string` — The session ID. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_name` (required)** `string` — Session name. - **`user` (required)** `object` — Information about the user. - **`id` (required)** `string` — The user's unique ID. This value is assigned to the user upon joining a session and is only valid for that session. - **`join_time` (required)** `string`, format: `date-time` — The time at which the user joined the session. - **`name` (required)** `string` — The user's username. - **`participant_uuid` (required)** `string` — The participant's UUID. This value is assigned to a participant upon joining a session and is only valid for the session's duration. - **`phone_number`** `string` — Phone number of participant joined via PSTN. - **`user_key`** `string` — Another identifier for the user. Can be a number or characters. - **`session_key`** `string` — The Video SDK custom session ID. **Example:** ```json { "event": "session.user_joined", "event_ts": 1, "payload": { "account_id": "", "object": { "id": "", "session_id": "", "session_name": "", "session_key": "", "user": { "id": "", "name": "", "join_time": "", "user_key": "", "phone_number": "", "participant_uuid": "" } } } } ``` #### Responses ##### Status: 200 Successfully received the webhook event. ### session.stream\_ingestion\_started - **Method:** `POST` - **Path:** `session.stream_ingestion_started` - **Tags:** Sessions Zoom triggers the **Session stream ingestion started** event every time a host starts sending an incoming live stream to a session. The session user can subscribe to it to see what's being streamed live into this session. ## Prerequisites - **Event Subscriptions** must be enabled for your app with the following configurations: - A valid **Event Notification Endpoint URL**. - The **Session stream ingestion started** subscription enabled under the **Video SDK** event. #### Request Body ##### Content-Type: application/json - **`event` (required)** `string`, possible values: `"session.stream_ingestion_started"` — Event name. - **`event_ts` (required)** `integer`, format: `int64` — Timestamp (in milliseconds since epoch) when the event occurred. The value of this field is returned in long (int64) format. - **`payload` (required)** `object` - **`account_id` (required)** `string` — The Video SDK account ID. - **`object` (required)** `object` — Information about the session. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_name` (required)** `string` — Session name. - **`stream_ingestion` (required)** `object` — Information about the stream ingestion. - **`backup_stream_url` (required)** `string` — The backup stream URL. - **`stream_id` (required)** `string` — The stream ingestion ID. - **`stream_key` (required)** `string` — The stream ingestion key. - **`stream_name` (required)** `string` — The stream ingestion name. - **`stream_url` (required)** `string` — The stream URL. - **`stream_description`** `string` — The stream ingestion description. - **`session_key`** `string` — The Video SDK custom session ID. **Example:** ```json { "event": "session.stream_ingestion_started", "event_ts": 1, "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "stream_ingestion": { "stream_id": "", "stream_name": "", "stream_description": "", "stream_key": "", "stream_url": "", "backup_stream_url": "" } } } } ``` #### Responses ##### Status: 200 Successfully received the webhook event. ### session.stream\_ingestion\_connected - **Method:** `POST` - **Path:** `session.stream_ingestion_connected` - **Tags:** Sessions Zoom triggers the **Session stream ingestion connected** event every time live streaming software connects to the Zoom Video SDK session. This indicates that the Zoom streaming platform is receiving data from the streaming software, but the received Real-Time Messaging Protocol (RTMP) data is not sent to the session yet. ## Prerequisites - **Event Subscriptions** must be enabled for your app with the following configurations: - A valid **Event Notification Endpoint URL**. - The **Session stream ingestion connected** subscription enabled under the **Video SDK** event. #### Request Body ##### Content-Type: application/json - **`event` (required)** `string`, possible values: `"session.stream_ingestion_connected"` — Name of the event. - **`event_ts` (required)** `integer`, format: `int64` — Timestamp (in milliseconds since epoch) when the event occurred. The value of this field is returned in long (int64) format. - **`payload` (required)** `object` - **`account_id` (required)** `string` — The Video SDK account ID. - **`object` (required)** `object` — Information about the session. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_name` (required)** `string` — Session name. - **`stream_ingestion` (required)** `object` — Information about the stream ingestion. - **`backup_stream_url` (required)** `string` — The backup stream URL. - **`stream_id` (required)** `string` — The stream ingestion ID. - **`stream_key` (required)** `string` — The stream ingestion key. - **`stream_name` (required)** `string` — The stream ingestion name. - **`stream_url` (required)** `string` — The stream URL. - **`stream_description`** `string` — The stream ingestion description. - **`session_key`** `string` — The Video SDK custom session ID. **Example:** ```json { "event": "session.stream_ingestion_connected", "event_ts": 1, "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "stream_ingestion": { "stream_id": "", "stream_name": "", "stream_description": "", "stream_key": "", "stream_url": "", "backup_stream_url": "" } } } } ``` #### Responses ##### Status: 200 Successfully received the webhook event. ### session.stream\_ingestion\_disconnected - **Method:** `POST` - **Path:** `session.stream_ingestion_disconnected` - **Tags:** Sessions Zoom triggers the **Session stream ingestion disconnected** event every time a Real-Time Messaging Protocol (RTMP) software program disconnects. ## Prerequisites - **Event Subscriptions** must be enabled for your app with the following configurations: - A valid **Event Notification Endpoint URL**. - The **Session stream ingestion disconnected** subscription enabled under the **Video SDK** event. #### Request Body ##### Content-Type: application/json - **`event` (required)** `string`, possible values: `"session.stream_ingestion_disconnected"` — Name of the event. - **`event_ts` (required)** `integer`, format: `int64` — Timestamp (in milliseconds since epoch) when the event occurred. The value of this field is returned in long (int64) format. - **`payload` (required)** `object` - **`account_id` (required)** `string` — The Video SDK account ID. - **`object` (required)** `object` — Information about the session. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_name` (required)** `string` — Session name. - **`stream_ingestion` (required)** `object` — Information about the stream ingestion. - **`backup_stream_url` (required)** `string` — The backup stream URL. - **`stream_id` (required)** `string` — The stream ingestion ID. - **`stream_key` (required)** `string` — The stream ingestion key. - **`stream_name` (required)** `string` — The stream ingestion name. - **`stream_url` (required)** `string` — The stream URL. - **`stream_description`** `string` — The stream ingestion description. - **`session_key`** `string` — The Video SDK custom session ID. **Example:** ```json { "event": "session.stream_ingestion_disconnected", "event_ts": 1, "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "stream_ingestion": { "stream_id": "", "stream_name": "", "stream_description": "", "stream_key": "", "stream_url": "", "backup_stream_url": "" } } } } ``` #### Responses ##### Status: 200 Successfully received the webhook event. ### session.recording\_recovered - **Method:** `POST` - **Path:** `session.recording_recovered` - **Tags:** Cloud Recording *** Event: `session.recording_recovered` ## Event description The **Session recording recovered** event is triggered every time one of your app users or account users recover a recording from the trash. Zoom allows users to recover their cloud recordings from trash within 30 days of deletion. You can recover a deleted cloud recording with: - The tab in the Zoom web client. See [Video SDK recordings and reports](https://developers.zoom.us/docs/video-sdk/reports/) for details. - The [Recover a single recording](https://developers.zoom.us/docs/api/rest/reference/video-sdk/methods/#operation/recordingStatusUpdateOne) or [Recover session's recordings](https://developers.zoom.us/docs/api/rest/reference/video-sdk/methods/#operation/recordingStatusUpdate) API. ## Prerequisites - Cloud Recording must be enabled on the Video SDK account. - Event Subscriptions must be enabled for your app with the following configurations: - A valid Event Notification Endpoint URL. - "**Session recording recovered**" subscription enabled under the **Recording** event. The tabs below display the complete schema, payload with data types, and an example of the `session.recording_recovered` event notification: #### Request Body ##### Content-Type: application/json - **`event` (required)** `string`, possible values: `"session.recording_recovered"` — The event's name. - **`event_ts` (required)** `integer`, format: `int64` — A timestamp, in milliseconds since epoch, at which the event occurred. - **`payload` (required)** `object` - **`account_id` (required)** `string` — The Video SDK account ID. - **`object` (required)** `object` — Information about the session. This object only returns updated properties. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_key` (required)** `string` — The Video SDK custom session ID. - **`session_name` (required)** `string` — Session name. - **`start_time` (required)** `string`, format: `date-time` — The time at which the session started. - **`timezone` (required)** `string` — The user's timezone. - **`operator` (required)** `string`, format: `email` — The email address of the user who deleted the recording. - **`operator_id` (required)** `string` — The user ID of the user who deleted the recording. **Example:** ```json { "event": "session.recording_recovered", "event_ts": 1, "payload": { "account_id": "", "operator": "", "operator_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "start_time": "", "timezone": "" } } } ``` #### Responses ##### Status: 200 Successfully received the webhook event. ### session.user\_phone\_callout\_missed - **Method:** `POST` - **Path:** `session.user_phone_callout_missed` - **Tags:** Sessions The **Invited party missed a session invitation through phone (call out)** event is triggered every time an invitation to join a session through phone (call out) times out. Video SDK call out operates in a similar manner as [Zoom meeting call out](https://support.zoom.com/hc/article?id=zm_kb\&sysparm_article=KB0062038). ## Prerequisites - **Event Subscriptions** must be enabled for your app with the following configurations: - A valid **Event Notification Endpoint URL**. - The **Invited party missed a session invitation through phone (call out)** subscription enabled under the **Session** event. #### Request Body ##### Content-Type: application/json - **`event` (required)** `string` — The name of the event. - **`event_ts` (required)** `integer`, format: `int64` — A timestamp at which the event occurred. - **`payload` (required)** `object` - **`account_id` (required)** `string` — The account ID of the session host. - **`object` (required)** `object` — Information about the session. - **`host_id` (required)** `string` — The user ID of the session host. - **`participant` (required)** `object` — Information about the invited user. - **`from_number` (required)** `integer`, format: `int64` — The number used to call out to the invited user. - **`invitee_name` (required)** `string` — The user's name to display in the session. - **`phone_number` (required)** `integer`, format: `int64` — The user's phone number. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_key` (required)** `string` — The Video SDK custom session ID. - **`session_name` (required)** `string` — Session name. - **`user_key` (required)** `string` — Another identifier for the inviter. Can be a number or characters. - **`id`** `integer`, format: `int64` — The session ID. - **`uuid`** `string` — The session's universally unique identifier (UUID). Each session instance generates a session UUID. **Example:** ```json { "event": "", "event_ts": 1, "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "user_key": "", "host_id": "", "participant": { "invitee_name": "", "phone_number": 1, "from_number": 1 } } } } ``` #### Responses ##### Status: 200 Successfully received the webhook event. ### session.user\_phone\_callout\_rejected - **Method:** `POST` - **Path:** `session.user_phone_callout_rejected` - **Tags:** Sessions The **Invited party rejected a session invitation through phone (call out)** event is triggered every time a user rejects an invitation to join a session through phone (call out). Video SDK call out operates in a similar manner as [Zoom meeting call out](https://support.zoom.com/hc/article?id=zm_kb\&sysparm_article=KB0062038). ## Prerequisites - **Event Subscriptions** must be enabled for your app with the following configurations: - A valid **Event Notification Endpoint URL**. - The **Invited party rejected a session invitation through phone (call out)** subscription enabled under the **Session** event. #### Request Body ##### Content-Type: application/json - **`event` (required)** `string` — The name of the event. - **`event_ts` (required)** `integer`, format: `int64` — A timestamp at which the event occurred. - **`payload` (required)** `object` - **`account_id` (required)** `string` — The account ID of the session host. - **`object` (required)** `object` — Information about the session. - **`host_id` (required)** `string` — The user ID of the session host. - **`participant` (required)** `object` — Information about the invited user. - **`from_number` (required)** `integer`, format: `int64` — The number used to call out to the invited user. - **`invitee_name` (required)** `string` — The user's name to display in the session. - **`phone_number` (required)** `integer`, format: `int64` — The user's phone number. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_key` (required)** `string` — The Video SDK custom session ID. - **`session_name` (required)** `string` — Session name. - **`user_key` (required)** `string` — Another identifier for the inviter. Can be a number or characters. - **`id`** `integer`, format: `int64` — The session ID. - **`uuid`** `string` — The session's universally unique identifier (UUID). Each session instance generates a session UUID. **Example:** ```json { "event": "", "event_ts": 1, "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "user_key": "", "host_id": "", "participant": { "invitee_name": "", "phone_number": 1, "from_number": 1 } } } } ``` #### Responses ##### Status: 200 Successfully received the webhook event. ### session.user\_room\_system\_callout\_accepted - **Method:** `POST` - **Path:** `session.user_room_system_callout_accepted` - **Tags:** Sessions The **Invited party answered a session invitation through phone (call out) via Zoom room** event is triggered every time a user [joins a session through phone (call out) from a Zoom room](https://support.zoom.us/hc/en-us/articles/205369035). ## Prerequisites - **Event Subscriptions** must be enabled for your app with the following configurations: - A valid **Event Notification Endpoint URL**. - The **Invited party answered a session invitation through phone (call out) via Zoom room** subscription enabled under the **Session** event. #### Request Body ##### Content-Type: application/json - **`event` (required)** `string` — The name of the event. - **`event_ts` (required)** `integer`, format: `int64` — A timestamp at which the event occurred. - **`payload` (required)** `object` - **`account_id` (required)** `string` — The account ID of the session host. - **`object` (required)** `object` — Information about the session. - **`host_id` (required)** `string` — The user ID of the session host. - **`inviter_name` (required)** `string` — The user name of the event's trigger. - **`message_id` (required)** `string` — The request unique identifier (UUID). - **`participant` (required)** `object` — Information about the invited participant. - **`call_type` (required)** `string` — The type of call out. Use a value of \`h323\` or \`sip\`. - **`device_ip` (required)** `string` — The user's device IP address. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_name` (required)** `string` — Session name. - **`id`** `integer`, format: `int64` — The session ID. - **`uuid`** `string` — The session's universally unique identifier (UUID). Each session instance generates a session UUID. **Example:** ```json { "event": "", "event_ts": 1, "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "host_id": "", "message_id": "", "inviter_name": "", "participant": { "call_type": "", "device_ip": "", "additionalProperty": "anything" } } } } ``` #### Responses ##### Status: 200 Successfully received the webhook event. ### session.recording\_stopped - **Method:** `POST` - **Path:** `session.recording_stopped` - **Tags:** Cloud Recording *** Event: `session.recording_stopped` ## Event description The **Session recording stopped** event is triggered every time a previously paused recording of a session is resumed. Only a session host or co-host can start, pause, resume, or stop a cloud recording. A recording is considered complete **after** the host or co-host ends the session. See [Enable cloud recording](https://developers.zoom.us/docs/video-sdk/account/#enable-cloud-recording) for details. ## Prerequisites - Cloud Recording must be enabled on the Video SDK account. - Event Subscriptions must be enabled for your app with the following configurations: - A valid Event Notification Endpoint URL. - **Session recording stopped** subscription enabled under the **Recording** event. The tabs below display the complete schema, payload with data types, and an example of the `session.recording_stopped` event notification: #### Request Body ##### Content-Type: application/json - **`event` (required)** `string`, possible values: `"session.recording_stopped"` — The event's name. - **`event_ts` (required)** `integer`, format: `int64` — A timestamp, in milliseconds since epoch, at which the event occurred. - **`payload` (required)** `object` - **`account_id` (required)** `string` — The Video SDK account ID. - **`object` (required)** `object` — Information about the session. This object only returns updated properties. - **`recording_file` (required)** `object` - **`recording_end`** `string` — The recording end time. Response in general query. - **`recording_start`** `string` — The recording start time. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_key` (required)** `string` — The Video SDK custom session ID. - **`session_name` (required)** `string` — Session name. - **`start_time` (required)** `string`, format: `date-time` — The time at which the session started. - **`timezone` (required)** `string` — The user's timezone. **Example:** ```json { "event": "session.recording_stopped", "event_ts": 1, "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "start_time": "", "timezone": "", "recording_file": { "recording_start": "", "recording_end": "" } } } } ``` #### Responses ##### Status: 200 Successfully received the webhook event. ## Schemas ### Session.user\_phone\_callout\_ringingEvent - **Type:**`object` * **`event` (required)** `string` — The name of the event. * **`event_ts` (required)** `integer`, format: `int64` — A timestamp at which the event occurred. * **`payload` (required)** `object` - **`account_id` (required)** `string` — The account ID of the session host. - **`object` (required)** `object` — Information about the session. - **`host_id` (required)** `string` — The user ID of the session host. - **`participant` (required)** `object` — Information about the invited user. - **`from_number` (required)** `integer`, format: `int64` — The number used to call out to the invited user. - **`invitee_name` (required)** `string` — The user's name to display in the session. - **`phone_number` (required)** `integer`, format: `int64` — The user's phone number. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_key` (required)** `string` — The Video SDK custom session ID. - **`session_name` (required)** `string` — Session name. - **`user_key` (required)** `string` — Another identifier for the inviter. Can be a number or characters. - **`id`** `integer`, format: `int64` — The session ID. - **`uuid`** `string` — The session's universally unique identifier (UUID). Each session instance generates a session UUID. **Example:** ```json { "event": "", "event_ts": 1, "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "user_key": "", "host_id": "", "participant": { "invitee_name": "", "phone_number": 1, "from_number": 1 } } } } ``` ### Session.user\_room\_system\_callout\_ringingEvent - **Type:**`object` * **`event` (required)** `string` — The name of the event. * **`event_ts` (required)** `integer`, format: `int64` — A timestamp at which the event occurred. * **`payload` (required)** `object` - **`account_id` (required)** `string` — The account ID of the session host. - **`object` (required)** `object` — Information about the session. - **`host_id` (required)** `string` — The user ID of the session host. - **`inviter_name` (required)** `string` — The user name of the event's trigger. - **`message_id` (required)** `string` — The request unique identifier (UUID). - **`participant` (required)** `object` — Information about the invited participant. - **`call_type` (required)** `string` — The type of call out. Use a value of \`h323\` or \`sip\`. - **`device_ip` (required)** `string` — The user's device IP address. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_name` (required)** `string` — Session name. - **`id`** `integer`, format: `int64` — The session ID. - **`uuid`** `string` — The session's universally unique identifier (UUID). Each session instance generates a session UUID. **Example:** ```json { "event": "", "event_ts": 1, "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "host_id": "", "message_id": "", "inviter_name": "", "participant": { "call_type": "", "device_ip": "", "additionalProperty": "anything" } } } } ``` ### Session.recording\_startedEvent - **Type:**`object` * **`event` (required)** `string`, possible values: `"session.recording_started"` — The event's name. * **`event_ts` (required)** `integer`, format: `int64` — A timestamp, in milliseconds since epoch, at which the event occurred. * **`payload` (required)** `object` - **`account_id` (required)** `string` — The Video SDK account ID. - **`object` (required)** `object` — Information about the session. This object only returns updated properties. - **`recording_file` (required)** `object` - **`recording_end`** `string` — The recording end time. Response in general query. - **`recording_start`** `string` — The recording start time. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_key` (required)** `string` — The Video SDK custom session ID. - **`session_name` (required)** `string` — Session name. - **`start_time` (required)** `string`, format: `date-time` — The time at which the session started. - **`timezone` (required)** `string` — The user's timezone. **Example:** ```json { "event": "session.recording_started", "event_ts": 1, "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "start_time": "", "timezone": "", "recording_file": { "recording_start": "", "recording_end": "" } } } } ``` ### Session.recording\_resumedEvent - **Type:**`object` * **`event` (required)** `string`, possible values: `"session.recording_resumed"` — The event's name. * **`event_ts` (required)** `integer`, format: `int64` — A timestamp, in milliseconds since epoch, at which the event occurred. * **`payload` (required)** `object` - **`account_id` (required)** `string` — The Video SDK account ID. - **`object` (required)** `object` — Information about the session. This object only returns updated properties. - **`recording_file` (required)** `object` - **`recording_end`** `string` — The recording end time. Response in general query. - **`recording_start`** `string` — The recording start time. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_key` (required)** `string` — The Video SDK custom session ID. - **`session_name` (required)** `string` — Session name. - **`start_time` (required)** `string`, format: `date-time` — The time at which the session started. - **`timezone` (required)** `string` — The user's timezone. **Example:** ```json { "event": "session.recording_resumed", "event_ts": 1, "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "start_time": "", "timezone": "", "recording_file": { "recording_start": "", "recording_end": "" } } } } ``` ### Session.live\_streaming\_stoppedEvent - **Type:**`object` * **`event` (required)** `string`, possible values: `"session.live_streaming_stopped"` — The name of the event. * **`event_ts` (required)** `integer`, format: `int64` — Timestamp (in milliseconds since epoch) at which the event occurred. The value of this field is returned in long(int64) format. * **`payload` (required)** `object` - **`account_id` (required)** `string` — The Video SDK account ID. - **`object` (required)** `object` — Information about the session. - **`id` (required)** `string` — The session ID. - **`live_streaming` (required)** `object` — Information about the participant. - **`custom_live_streaming_settings` (required)** `object` — The live stream settings. - **`page_url` (required)** `string` — The live stream's page URL. - **`stream_key` (required)** `string` — The stream's Key. - **`stream_url` (required)** `string` — The stream's URL. - **`resolution`** `string` — The number of pixels in each dimension that the video camera can display. - **`date_time` (required)** `string`, format: `date-time` — The live stream's stop time. - **`service` (required)** `string`, possible values: `"Facebook", "Workplace_by_Facebook", "YouTube", "Custom_Live_Streaming_Service"` — The name of the Live Streaming service. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_name` (required)** `string` — Session name. - **`start_time` (required)** `string`, format: `date-time` — The session's start time. - **`session_key`** `string` — The Video SDK custom session ID. **Example:** ```json { "event": "session.live_streaming_stopped", "event_ts": 1, "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "start_time": "", "live_streaming": { "service": "Facebook", "custom_live_streaming_settings": { "stream_url": "", "stream_key": "", "page_url": "", "resolution": "" }, "date_time": "" } } } } ``` ### Session.stream\_ingestion\_stoppedEvent - **Type:**`object` * **`event` (required)** `string`, possible values: `"session.stream_ingestion_stopped"` — Event name. * **`event_ts` (required)** `integer`, format: `int64` — Timestamp (in milliseconds since epoch) when the event occurred. The value of this field is returned in long (int64) format. * **`payload` (required)** `object` - **`account_id` (required)** `string` — The Video SDK account ID. - **`object` (required)** `object` — Information about the session. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_name` (required)** `string` — Session name. - **`stream_ingestion` (required)** `object` — Information about the stream ingestion. - **`backup_stream_url` (required)** `string` — The backup stream URL. - **`stream_id` (required)** `string` — The stream ingestion ID. - **`stream_key` (required)** `string` — The stream ingestion key. - **`stream_name` (required)** `string` — The stream ingestion name. - **`stream_url` (required)** `string` — The stream URL. - **`stream_description`** `string` — The stream ingestion description. - **`session_key`** `string` — The Video SDK custom session ID. **Example:** ```json { "event": "session.stream_ingestion_stopped", "event_ts": 1, "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "stream_ingestion": { "stream_id": "", "stream_name": "", "stream_description": "", "stream_key": "", "stream_url": "", "backup_stream_url": "" } } } } ``` ### Session.user\_room\_system\_callout\_rejectedEvent - **Type:**`object` * **`event` (required)** `string` — The name of the event. * **`event_ts` (required)** `integer`, format: `int64` — A timestamp at which the event occurred. * **`payload` (required)** `object` - **`account_id` (required)** `string` — The account ID of the session host. - **`object` (required)** `object` — Information about the session. - **`host_id` (required)** `string` — The user ID of the session host. - **`inviter_name` (required)** `string` — The user name of the event's trigger. - **`message_id` (required)** `string` — The request unique identifier (UUID). - **`participant` (required)** `object` — Information about the invited participant. - **`call_type` (required)** `string` — The type of call out. Use a value of \`h323\` or \`sip\`. - **`device_ip` (required)** `string` — The user's device IP address. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_name` (required)** `string` — Session name. - **`id`** `integer`, format: `int64` — The session ID. - **`uuid`** `string` — The session's universally unique identifier (UUID). Each session instance generates a session UUID. **Example:** ```json { "event": "", "event_ts": 1, "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "host_id": "", "message_id": "", "inviter_name": "", "participant": { "call_type": "", "device_ip": "", "additionalProperty": "anything" } } } } ``` ### Session.alertEvent - **Type:**`object` * **`event` (required)** `string`, possible values: `"session.alert"` — The event's name. * **`event_ts` (required)** `integer`, format: `int64` — A timestamp, in milliseconds since epoch, at which the event occurred. * **`payload` (required)** `object` - **`account_id` (required)** `string` — The Video SDK account ID. - **`object` (required)** `object` — Information about the session. This object only returns updated properties. - **`id` (required)** `string` — The session ID. - **`issues` (required)** `array` — Issues that occurred during the session. **Items:** `string`, possible values: `"Unstable audio quality", "Unstable video quality", "Unstable screen share quality", "High CPU occupation", "Call Reconnection"` - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_name` (required)** `string` — Session name. - **`session_key`** `string` — The Video SDK custom session ID. **Example:** ```json { "event": "session.alert", "event_ts": 1, "payload": { "account_id": "", "object": { "id": "", "session_id": "", "session_name": "", "session_key": "", "issues": [ "Unstable audio quality" ] } } } ``` ### Session.recording\_summary\_completedEvent - **Type:**`object` * **`download_token` (required)** `string` — The URL to download the recording. To download, set your \[Video SDK API JWT]\(https\://developers.zoom.us/docs/video-sdk/api-request/) as a Bearer token in the Authorization header of your HTTP request. For example: \`curl "{download\_url}" --header "authorization: Bearer {access token or JWT}" --header "content-type: application/json"\`. Note: The download\_url may be a redirect. In that case, use \`curl --location "{download\_url}"\` to follow redirects or use another tool, like Postman. * **`event` (required)** `string`, possible values: `"session.recording_summary_completed"` — The event's name. * **`event_ts` (required)** `integer`, format: `int64` — A timestamp, in milliseconds since epoch, when the event occurred. * **`payload` (required)** `object` - **`account_id` (required)** `string` — The Video SDK account ID. - **`object` (required)** `object` — Information about the session. This object only returns updated properties. - **`recording_files` (required)** `array` — List of recording files. **Items:** - **`download_url`** `string` — The URL to download the recording. To download, set your \[Video SDK API JWT]\(https\://developers.zoom.us/docs/video-sdk/api-request/) as a Bearer token in the Authorization header of your HTTP request. For example: \`curl "{download\_url}" --header "authorization: Bearer {access token or JWT}" --header "content-type: application/json"\`. Note: The download\_url may be a redirect. In that case, use \`curl --location "{download\_url}"\` to follow redirects or use another tool, like Postman. - **`file_extension`** `string`, possible values: `"JSON"` — The archived file's file extension. - **`file_name`** `string` — The file name. - **`file_path`** `string` — The file path to the on-premise account recording. \*\*Note:\*\* This API only returns this field for \[Zoom On-Premise accounts]\(https\://support.zoom.us/hc/en-us/articles/360034064852-Zoom-On-Premise-Deployment). It does \*\*not\*\* return the \`download\_url\` field. - **`file_size`** `number` — The recording file size. - **`file_type`** `string`, possible values: `"SUMMARY"` — The recording file type. The value of this field is:\
\`SUMMARY\`: Summary file of the recording in JSON format - **`id`** `string` — The recording file ID. Included in the response of the general query. - **`recording_end`** `string` — The recording end time. Response in the general query. - **`recording_start`** `string` — The recording start time. - **`recording_type`** `string`, possible values: `"summary"` — The recording type. The value of this field is:\
\`summary\` - **`status`** `string`, possible values: `"completed"` — The recording status. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_key` (required)** `string` — The Video SDK custom session ID. - **`session_name` (required)** `string` — Session name. - **`start_time` (required)** `string`, format: `date-time` — The session start time. - **`timezone` (required)** `string` — The user's timezone. **Example:** ```json { "event": "session.recording_summary_completed", "event_ts": 1, "download_token": "", "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "start_time": "", "timezone": "", "recording_files": [ { "id": "", "recording_start": "", "recording_end": "", "file_name": "", "file_path": "", "file_type": "SUMMARY", "file_size": 1, "file_extension": "JSON", "download_url": "", "status": "completed", "recording_type": "summary" } ] } } } ``` ### Session.sharing\_endedEvent - **Type:**`object` * **`event` (required)** `string`, possible values: `"session.sharing_ended"` — The event's name. * **`event_ts` (required)** `integer`, format: `int64` — A timestamp, in milliseconds since epoch, at which the event occurred. * **`payload` (required)** `object` - **`account_id` (required)** `string` — The Video SDK account ID. - **`object` (required)** `object` — Information about the session. This object only returns updated properties. - **`id` (required)** `string` — The session ID. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_name` (required)** `string` — Session name. - **`user` (required)** `object` — Information about the user. - **`id` (required)** `string` — The user's unique ID. This value is assigned to the user upon joining a session and is only valid for that session. - **`name` (required)** `string` — The user's username. - **`sharing_details` (required)** `object` — Information about the session's screen sharing. - **`content` (required)** `string`, possible values: `"application", "whiteboard", "desktop", "unknown"` — The type of shared content: \* \`application\` — An application. For example, a web browser. \* \`whiteboard\` — The Zoom \[whiteboard]\(https\://support.zoom.us/hc/en-us/articles/205677665-Sharing-a-whiteboard). \* \`desktop\` — A user's desktop. \* \`unknown\` — An unrecognized application, such as a third party app. - **`date_time` (required)** `string`, format: `date-time` — The session's screen sharing date and time. - **`user_key`** `string` — Another identifier for the user. Can be a number or characters. - **`session_key`** `string` — The Video SDK custom session ID. **Example:** ```json { "event": "session.sharing_ended", "event_ts": 1, "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "user": { "id": "", "name": "", "user_key": "", "sharing_details": { "content": "application", "date_time": "" } } } } } ``` ### Session.recording\_pausedEvent - **Type:**`object` * **`event` (required)** `string`, possible values: `"session.recording_paused"` — The event's name. * **`event_ts` (required)** `integer`, format: `int64` — A timestamp, in milliseconds since epoch, at which the event occurred. * **`payload` (required)** `object` - **`account_id` (required)** `string` — The Video SDK account ID. - **`object` (required)** `object` — Information about the session. This object only returns updated properties. - **`recording_file` (required)** `object` - **`recording_end`** `string` — The recording end time. Response in general query. - **`recording_start`** `string` — The recording start time. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_key` (required)** `string` — The Video SDK custom session ID. - **`session_name` (required)** `string` — Session name. - **`start_time` (required)** `string`, format: `date-time` — The time at which the session started. - **`timezone` (required)** `string` — The user's timezone. **Example:** ```json { "event": "session.recording_paused", "event_ts": 1, "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "start_time": "", "timezone": "", "recording_file": { "recording_start": "", "recording_end": "" } } } } ``` ### Session.endedEvent - **Type:**`object` * **`event` (required)** `string`, possible values: `"session.ended"` — The name of the event. * **`event_ts` (required)** `integer`, format: `int64` — Timestamp at which the event occurred, in milliseconds since epoch. The value of this field is returned in long(int64) format. * **`payload` (required)** `object` - **`account_id` (required)** `string` — The Video SDK account ID. - **`object` (required)** `object` — Information about the session. - **`end_time` (required)** `string`, format: `date-time` — The session's end time. - **`id` (required)** `string` — The session ID. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_name` (required)** `string` — Session name. - **`start_time` (required)** `string`, format: `date-time` — The session's start time. - **`session_key`** `string` — The Video SDK custom session ID. **Example:** ```json { "event": "session.ended", "event_ts": 1, "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "start_time": "", "end_time": "" } } } ``` ### Session.startedEvent - **Type:**`object` * **`event` (required)** `string`, possible values: `"session.started"` — The name of the event. * **`event_ts` (required)** `integer`, format: `int64` — Timestamp (in milliseconds since epoch) at which the event occurred. The value of this field is returned in long(int64) format. * **`payload` (required)** `object` - **`account_id` (required)** `string` — The Video SDK account ID. - **`object` (required)** `object` — Information about the session. - **`id` (required)** `string` — The session's ID. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_name` (required)** `string` — Session name. - **`start_time` (required)** `string`, format: `date-time` — The session's start time. - **`session_key`** `string` — The Video SDK custom session ID. **Example:** ```json { "event": "session.started", "event_ts": 1, "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "start_time": "" } } } ``` ### Session.stream\_ingestion\_unbindEvent - **Type:**`object` * **`event` (required)** `string`, possible values: `"session.stream_ingestion_unbind"` — Event name. * **`event_ts` (required)** `integer`, format: `int64` — Timestamp (in milliseconds since epoch) at which the event occurred. The value of this field is returned in long (int64) format. * **`payload` (required)** `object` - **`account_id` (required)** `string` — The Video SDK account ID. - **`object` (required)** `object` — Information about the session. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_name` (required)** `string` — Session name. - **`stream_ingestion` (required)** `object` — Information about the stream ingestion. - **`backup_stream_url` (required)** `string` — The backup stream URL. - **`stream_id` (required)** `string` — The stream ingestion ID. - **`stream_key` (required)** `string` — The stream ingestion key. - **`stream_name` (required)** `string` — The stream ingestion name. - **`stream_url` (required)** `string` — The stream URL. - **`stream_description`** `string` — The stream ingestion description. - **`session_key`** `string` — The Video SDK custom session ID. **Example:** ```json { "event": "session.stream_ingestion_unbind", "event_ts": 1, "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "stream_ingestion": { "stream_id": "", "stream_name": "", "stream_description": "", "stream_key": "", "stream_url": "", "backup_stream_url": "" } } } } ``` ### Session.live\_streaming\_startedEvent - **Type:**`object` * **`event` (required)** `string`, possible values: `"session.live_streaming_started"` — Name of the event. * **`event_ts` (required)** `integer`, format: `int64` — Timestamp (in milliseconds since epoch) at which the event occurred. The value of this field is returned in long(int64) format. * **`payload` (required)** `object` - **`account_id` (required)** `string` — The Video SDK account ID. - **`object` (required)** `object` — Information about the session. - **`id` (required)** `string` — The session ID. - **`live_streaming` (required)** `object` — Information about the participant. - **`custom_live_streaming_settings` (required)** `object` — The live stream settings. - **`page_url` (required)** `string` — The live stream's page URL. - **`stream_key` (required)** `string` — The stream's key. - **`stream_url` (required)** `string` — The stream's URL. - **`resolution`** `string` — The number of pixels in each dimension that the video camera can display. - **`date_time` (required)** `string`, format: `date-time` — The live stream's start time. - **`service` (required)** `string`, possible values: `"Facebook", "Workplace_by_Facebook", "YouTube", "Custom_Live_Streaming_Service"` — The name of the Live Streaming service. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_name` (required)** `string` — Session name. - **`start_time` (required)** `string`, format: `date-time` — The session's start time. - **`session_key`** `string` — The Video SDK custom session ID. **Example:** ```json { "event": "session.live_streaming_started", "event_ts": 1, "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "start_time": "", "live_streaming": { "service": "Facebook", "custom_live_streaming_settings": { "stream_url": "", "stream_key": "", "page_url": "", "resolution": "" }, "date_time": "" } } } } ``` ### Session.user\_room\_system\_callout\_missedEvent - **Type:**`object` * **`event` (required)** `string` — The name of the event. * **`event_ts` (required)** `integer`, format: `int64` — A timestamp at which the event occurred. * **`payload` (required)** `object` - **`account_id` (required)** `string` — The account ID of the session host. - **`object` (required)** `object` — Information about the session. - **`host_id` (required)** `string` — The user ID of the session host. - **`inviter_name` (required)** `string` — The user name of the event's trigger. - **`message_id` (required)** `string` — The request unique identifier (UUID). - **`participant` (required)** `object` — Information about the invited participant. - **`call_type` (required)** `string` — The type of call out. Use a value of \`h323\` or \`sip\`. - **`device_ip` (required)** `string` — The user's device IP address. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_name` (required)** `string` — Session name. - **`id`** `integer`, format: `int64` — The session ID. - **`uuid`** `string` — The session's universally unique identifier (UUID). Each session instance generates a session UUID. **Example:** ```json { "event": "", "event_ts": 1, "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "host_id": "", "message_id": "", "inviter_name": "", "participant": { "call_type": "", "device_ip": "", "additionalProperty": "anything" } } } } ``` ### Session.user\_phone\_callout\_acceptedEvent - **Type:**`object` * **`event` (required)** `string` — The name of the event. * **`event_ts` (required)** `integer`, format: `int64` — A timestamp at which the event occurred. * **`payload` (required)** `object` - **`account_id` (required)** `string` — The account ID of the session host. - **`object` (required)** `object` — Information about the session. - **`host_id` (required)** `string` — The user ID of the session host. - **`participant` (required)** `object` — Information about the invited participant. - **`from_number` (required)** `integer`, format: `int64` — The number used to call out to the invited user. - **`invitee_name` (required)** `string` — The user's name to display in the session. - **`phone_number` (required)** `integer`, format: `int64` — The user's phone number. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_key` (required)** `string` — The Video SDK custom session ID. - **`session_name` (required)** `string` — Session name. - **`user_key` (required)** `string` — Another identifier for the inviter. Can be a number or characters. - **`id`** `integer`, format: `int64` — The session ID. - **`uuid`** `string` — The session's universally unique identifier (UUID). Each session instance generates a session UUID. **Example:** ```json { "event": "", "event_ts": 1, "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "user_key": "", "host_id": "", "participant": { "invitee_name": "", "phone_number": 1, "from_number": 1 } } } } ``` ### Session.user\_leftEvent - **Type:**`object` * **`event` (required)** `string`, possible values: `"session.user_left"` — The event's name. * **`event_ts` (required)** `integer`, format: `int64` — A timestamp, in milliseconds since epoch, at which the event occurred. * **`payload` (required)** `object` - **`account_id` (required)** `string` — The Video SDK account ID. - **`object` (required)** `object` — Information about the session. This object only returns updated properties. - **`id` (required)** `string` — The session ID. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_name` (required)** `string` — Session name. - **`user` (required)** `object` — Information about the user. - **`id` (required)** `string` — The user's unique ID. This value is assigned to the user upon joining a session and is only valid for that session. - **`leave_time` (required)** `string`, format: `date-time` — The time at which the user left the session. - **`name` (required)** `string` — The user's username. - **`participant_uuid` (required)** `string` — The participant's UUID. This value is assigned to a participant upon joining a session and is only valid for the session's duration. - **`leave_reason`** `string` — The reason why the user left the session, where \`$name\` is the participant's username: \* \`$name left the session.\` \* \`$name got disconnected from the session.\` \* \`Host ended the session.\` \* \`Host closed the session.\` \* \`Host started a new session.\` \* \`Network connection error.\` \* \`Host did not join.\` \* \`Exceeded free session minutes limit.\` \* \`Removed by host.\` \* \`Unknown reason.\` \* \`Leave waiting room.\` \* \`Removed by host from waiting room.\` - **`phone_number`** `string` — Phone number of participant joined via PSTN. - **`user_key`** `string` — Another identifier for the user. Can be a number or characters. - **`session_key`** `string` — The Video SDK custom session ID. **Example:** ```json { "event": "session.user_left", "event_ts": 1, "payload": { "account_id": "", "object": { "id": "", "session_id": "", "session_name": "", "session_key": "", "user": { "id": "", "name": "", "leave_time": "", "leave_reason": "", "user_key": "", "phone_number": "", "participant_uuid": "" } } } } ``` ### Session.sharing\_startedEvent - **Type:**`object` * **`event` (required)** `string`, possible values: `"session.sharing_started"` — The event's name. * **`event_ts` (required)** `integer`, format: `int64` — A timestamp, in milliseconds since epoch, at which the event occurred. * **`payload` (required)** `object` - **`account_id` (required)** `string` — The Video SDK account ID. - **`object` (required)** `object` — Information about the session. This object only returns updated properties. - **`id` (required)** `string` — The session ID. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_name` (required)** `string` — Session name. - **`user` (required)** `object` — Information about the user. - **`id` (required)** `string` — The user's unique ID. This value is assigned to the user upon joining a session and is only valid for that session. - **`name` (required)** `string` — The user's username. - **`sharing_details` (required)** `object` — Information about the session's screen sharing. - **`content` (required)** `string`, possible values: `"application", "whiteboard", "desktop", "unknown"` — The type of shared content: \* \`application\` — An application. For example, a web browser. \* \`whiteboard\` — The Zoom \[whiteboard]\(https\://support.zoom.us/hc/en-us/articles/205677665-Sharing-a-whiteboard). \* \`desktop\` — A user's desktop. \* \`unknown\` — An unrecognized application, such as a third party app. - **`date_time` (required)** `string`, format: `date-time` — The session's screen sharing date and time. - **`user_key`** `string` — Another identifier for the user. Can be a number or characters. - **`session_key`** `string` — The Video SDK custom session ID. **Example:** ```json { "event": "session.sharing_started", "event_ts": 1, "payload": { "account_id": "", "object": { "id": "", "session_id": "", "session_name": "", "session_key": "", "user": { "id": "", "name": "", "user_key": "", "sharing_details": { "content": "application", "date_time": "" } } } } } ``` ### Session.user\_phone\_callout\_canceledEvent - **Type:**`object` * **`event` (required)** `string` — The name of the event. * **`event_ts` (required)** `integer`, format: `int64` — A timestamp at which the event occurred. * **`payload` (required)** `object` - **`account_id` (required)** `string` — The account ID of the session host. - **`object` (required)** `object` — Information about the session. - **`participant` (required)** `object` — Information about the invited participant. - **`from_number` (required)** `integer`, format: `int64` — The number used to call out to the invited user. - **`invitee_name` (required)** `string` — The user's name to display in the session. - **`phone_number` (required)** `integer`, format: `int64` — The user's phone number. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_key` (required)** `string` — The Video SDK custom session ID. - **`session_name` (required)** `string` — Session name. - **`user_key` (required)** `string` — Another identifier for the inviter. Can be a number or characters. **Example:** ```json { "event": "", "event_ts": 1, "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "user_key": "", "participant": { "invitee_name": "", "phone_number": 1, "from_number": 1 } } } } ``` ### Session.recording\_transcript\_completedEvent - **Type:**`object` * **`download_token` (required)** `string` — A generated token used to download the recording. The download token only lasts for 24 hours after its creation and you can only download the file within 24 hours of receiving the event notification. You can either pass the \`download\_token\` as a Bearer token in the Authorization header of your HTTP request (recommended) or include it as a query parameter. See the following for examples. \*\*Using an Authorization header (Recommended)\*\* \`\`\` curl --request GET \ --url {download\_url} \ --header 'authorization: Bearer {download\_token} \ --header 'content-type: application/json' \`\`\` \*\*Using a query parameter\*\* \`\`\` {download\_url}/?access\_token={download\_token} \`\`\` For example: \`https\://zoom.us/recording/download/123456?access\_token=abcdefgh\` * **`event` (required)** `string`, possible values: `"session.recording_transcript_completed"` — The event's name. * **`event_ts` (required)** `integer`, format: `int64` — A timestamp, in milliseconds since epoch, at which the event occurred. * **`payload` (required)** `object` - **`account_id` (required)** `string` — The Video SDK account ID. - **`object` (required)** `object` — Information about the session. This object only returns updated properties. - **`recording_files` (required)** `array` — List of recording file. **Items:** - **`download_url`** `string` — The URL at which to download the the recording. To access a private or password-protected cloud recording of a user in your account, use your \[Video SDK API JWT]\(https\://marketplace.zoom.us/docs/guides/build/video-sdk-app/#video-sdk-and-api-credentials). You can either pass the generated JWT as a Bearer token in the Authorization header of your HTTP request (recommended) or include it as a query parameter at the end of the URL. See the following for examples. \*\*Using an Authorization header (Recommended)\*\* \`\`\` curl --request GET \ --url {download\_url} \ --header 'authorization: Bearer {JWT} \ --header 'content-type: application/json' \`\`\` \*\*Using a query parameter\*\* \`\`\` {download\_url}/?access\_token={download\_token} \`\`\` For example: \`https\://{base-domain}/recording/download/{path-to-file-download}?access\_token={JWT}\`. - **`file_extension`** `string`, possible values: `"MP4", "M4A", "TXT", "VTT", "CSV", "JSON", "JPG"` — The archived file's file extension. - **`file_name`** `string` — Name of the file. - **`file_path`** `string` — The file path to the On-Premise account recording. \*\*Note:\*\* This API only returns this field for \[Zoom On-Premise accounts]\(https\://support.zoom.us/hc/en-us/articles/360034064852-Zoom-On-Premise-Deployment). It does \*\*not\*\* return the \`download\_url\` field. - **`file_size`** `number` — The recording file size. - **`file_type`** `string`, possible values: `"MP4", "M4A", "CHAT", "TRANSCRIPT", "CSV", "CC", "TB", "CHAT_MESSAGE", "TIMELINE"` — The recording file type. The value of this field could be one of the following:\
\`MP4\`: Video file of the recording.\
\`M4A\` Audio-only file of the recording.\
\`TIMELINE\`: Timestamp file of the recording in JSON file format. To get a timeline file, the "Add a timestamp to the recording" setting must be enabled in the \[recording settings]\(https\://support.zoom.us/hc/en-us/articles/360060316092). The time will display in the host's timezone, set on their Zoom profile. \
\`TRANSCRIPT\`: Transcription file of the recording in VTT format.\
\`CHAT\`: A TXT file containing in-session chat messages that were sent during the session.\
\`CC\`: File containing closed captions of the recording in VTT file format.\
\`CSV\`: File containing polling data in csv format. \
A recording file object with file type of either \`CC\` or \`TIMELINE\` \*\*does not have\*\* the following properties:\
\`id\`, \`status\`, \`file\_size\`, \`recording\_type\`. - **`id`** `string` — The recording file ID. Included in the response of general query. - **`recording_end`** `string` — The recording end time. Response in general query. - **`recording_start`** `string` — The recording start time. - **`recording_type`** `string`, possible values: `"shared_screen_with_speaker_view(CC)", "shared_screen_with_speaker_view", "shared_screen_with_gallery_view", "gallery_view", "shared_screen", "audio_only", "audio_transcript", "chat_file", "active_speaker", "host_video", "audio_only_each_participant", "cc_transcript", "closed_caption", "poll", "timeline", "thumbnail", "chat_message"` — The recording type. The value of this field can be one of the following:\
\`shared\_screen\_with\_speaker\_view(CC)\`\
\`shared\_screen\_with\_speaker\_view\`\
\`shared\_screen\_with\_gallery\_view\`\
\`speaker\_view\`\
\`gallery\_view\`\
\`shared\_screen\`\
\`audio\_only\`\
\`audio\_transcript\`\
\`chat\_file\`\
\`active\_speaker\`\
\`poll\`\
\`timeline\`\
\`closed\_caption\` - **`status`** `string`, possible values: `"completed"` — The recording status. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_key` (required)** `string` — The Video SDK custom session ID. - **`session_name` (required)** `string` — Session name. - **`start_time` (required)** `string`, format: `date-time` — The time at which the session started. - **`timezone` (required)** `string` — The user's timezone. **Example:** ```json { "event": "session.recording_transcript_completed", "event_ts": 1, "download_token": "", "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "start_time": "", "timezone": "", "recording_files": [ { "id": "", "recording_start": "", "recording_end": "", "file_name": "", "file_path": "", "file_type": "MP4", "file_size": 1, "file_extension": "MP4", "download_url": "", "status": "completed", "recording_type": "shared_screen_with_speaker_view(CC)" } ] } } } ``` ### Session.recording\_deletedEvent - **Type:**`object` * **`event` (required)** `string`, possible values: `"session.recording_deleted"` — The event's name. * **`event_ts` (required)** `integer`, format: `int64` — A timestamp, in milliseconds since epoch, at which the event occurred. * **`payload` (required)** `object` - **`account_id` (required)** `string` — The Video SDK account ID. - **`object` (required)** `object` — Information about the session. This object only returns updated properties. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_key` (required)** `string` — The Video SDK custom session ID. - **`session_name` (required)** `string` — Session name. - **`start_time` (required)** `string`, format: `date-time` — The time at which the session started. - **`timezone` (required)** `string` — The user's timezone. - **`operator` (required)** `string`, format: `email` — The email address of the user who deleted the recording. - **`operator_id` (required)** `string` — The user ID of the user who deleted the recording. **Example:** ```json { "event": "session.recording_deleted", "event_ts": 1, "payload": { "account_id": "", "operator": "", "operator_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "start_time": "", "timezone": "" } } } ``` ### Session.ai\_interpreter\_usage\_summaryEvent - **Type:**`object` * **`event` (required)** `string`, possible values: `"session.ai_interpreter_usage_summary"` — The name of the event. * **`event_ts` (required)** `integer`, format: `int64` — A timestamp, in milliseconds since epoch, at which the event occurred. * **`payload` (required)** `object` - **`account_id` (required)** `string` — The Video SDK account ID. - **`object` (required)** `object` — Information about the session. This object only returns updated properties. - **`end_time` (required)** `string` — The end time of AI interpreter usage. - **`is_host` (required)** `boolean` — Whether the current user is the host of this session. - **`participant_uuid` (required)** `string` — The participant's UUID. This value is assigned to a participant upon joining a session and is only valid for the session's duration. - **`session_id` (required)** `string` — The ID of the session. Each instance of the session will have its own \`session\_id\`. - **`session_name` (required)** `string` — The name of the session. - **`start_time` (required)** `string` — The start time of AI interpreter usage. - **`usage` (required)** `string` — The duration of AI interpreter usage. - **`session_key`** `string` — The ID of the Video SDK custom session. **Example:** ```json { "event": "session.ai_interpreter_usage_summary", "event_ts": 1, "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "participant_uuid": "", "is_host": true, "start_time": "", "end_time": "", "usage": "" } } } ``` ### Session.user\_room\_system\_callout\_failedEvent - **Type:**`object` * **`event` (required)** `string` — The name of the event. * **`event_ts` (required)** `integer`, format: `int64` — A timestamp at which the event occurred. * **`payload` (required)** `object` - **`account_id` (required)** `string` — The account ID of the session host. - **`object` (required)** `object` — Information about the session. - **`host_id` (required)** `string` — The user ID of the session host. - **`inviter_name` (required)** `string` — The user name of the event's trigger. - **`message_id` (required)** `string` — The request unique identifier (UUID). - **`participant` (required)** `object` — Information about the invited participant. - **`call_type` (required)** `string` — The type of call out. Use a value of \`h323\` or \`sip\`. - **`device_ip` (required)** `string` — The user's device IP address. - **`reason_type` (required)** `integer`, possible values: `0, 1, 2, 3, 4, 7, 8, 9, 10, 11, 12, 13, 14` — reason type for failure: \* \`1\` — Encryption\_Fail. \* \`2\` — Disconnected\_By\_Remote. \* \`3\` — Retry. \* \`4\` — Bad\_Seq. \* \`5\` — Call\_Limit. \* \`6\` — Not\_Registered. \* \`7\` — Timeout. \* \`8\` — Bad\_Addr. \* \`9\` — Unreachable \* \`10\` — Disconnect\_By\_Local \* \`11\` — Server\_Internal\_Error \* \`12\` — Exceed\_Free\_Port \* \`13\` — Connect\_Error \* \`14\` — Proxy\_Connect\_Error \* \`0\` — Other\_Failed\_Reason. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_name` (required)** `string` — Session name. - **`id`** `integer`, format: `int64` — The session ID. - **`uuid`** `string` — The session's universally unique identifier (UUID). Each session instance generates a session UUID. **Example:** ```json { "event": "", "event_ts": 1, "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "host_id": "", "message_id": "", "inviter_name": "", "reason_type": 0, "participant": { "call_type": "", "device_ip": "", "additionalProperty": "anything" } } } } ``` ### Session.recording\_completedEvent - **Type:**`object` * **`download_token` (required)** `string` — A generated token used to download the recording. The download token only lasts for 24 hours after its creation, and you can only download the file within 24 hours of receiving the event notification. Pass the \`download\_token\` as a Bearer token in the Authorization header of your HTTP request. For example: \`\`\` curl --request GET \ --url {download\_url} \ --header 'authorization: Bearer {download\_token} \ --header 'content-type: application/json' \`\`\` * **`event` (required)** `string`, possible values: `"session.recording_completed"` — The event's name. * **`event_ts` (required)** `integer`, format: `int64` — A timestamp, in milliseconds since epoch, at which the event occurred. * **`payload` (required)** `object` - **`account_id` (required)** `string` — The Video SDK account ID. - **`object` (required)** `object` — Information about the session. This object only returns updated properties. - **`recording_files` (required)** `array` — List of recording files. **Items:** - **`download_url`** `string` — The URL at which to download the recording. To access a private or password-protected cloud recording of a user in your account, generate a \[Build account API JWT]\(https\://developers.zoom.us/docs/build/api-request/). Pass the generated JWT as a Bearer token in the Authorization header of your HTTP request. For example: \`\`\` curl --request GET \ --url {download\_url} \ --header 'authorization: Bearer {JWT} \ --header 'content-type: application/json' \`\`\` - **`external_storage_url`** `string` — The URL for the recording file when BYOS is enabled. In BYOS accounts, this field replaces \`download\_url\`. - **`file_extension`** `string`, possible values: `"MP4", "M4A", "TXT", "VTT", "CSV", "JSON", "JPG"` — The archived file's file extension. - **`file_name`** `string` — The name of the file. - **`file_path`** `string` — The file path to the On-Premise account recording. \*\*Note:\*\* This API only returns this field for \[Zoom On-Premise accounts]\(https\://support.zoom.com/hc/en/article?id=zm\_kb\&sysparm\_article=KB0058321). It does \*\*not\*\* return the \`download\_url\` field. - **`file_size`** `number` — The recording file size. - **`file_type`** `string`, possible values: `"MP4", "M4A", "CHAT", "TRANSCRIPT", "CSV", "CC", "TB", "CHAT_MESSAGE"` — The recording file type. The value of this field could be one of the following:\
\`MP4\` - Video file of the recording.\
\`M4A\` - Audio-only file of the recording.\
\`TIMELINE\` - Timestamp file of the recording in JSON file format. To get a timeline file, enable the "Add a timestamp to the recording" setting in the \[recording settings]\(https\://support.zoom.com/hc/en/article?id=zm\_kb\&sysparm\_article=KB0064676). The time displays the host's timezone, as set in their Zoom profile. \
\`TRANSCRIPT\` - Transcription file of the recording in VTT format.\
\`CHAT\` - A TXT file containing in-session chat messages that were sent during the session.\
\`CC\` - File containing closed captions of the recording in VTT file format.\
\`CSV\` - File containing polling data in CSV format. \
A recording file object with file type of either \`CC\` or \`TIMELINE\` \*\*does not have\*\* the following properties:\
\`id\`, \`status\`, \`file\_size\`, \`recording\_type\`. - **`id`** `string` — The recording file ID. Included in the response of a general query. - **`recording_end`** `string` — The recording end time. Returned in a general query. - **`recording_start`** `string` — The recording start time. - **`recording_type`** `string`, possible values: `"shared_screen_with_speaker_view(CC)", "shared_screen_with_speaker_view", "shared_screen_with_gallery_view", "gallery_view", "shared_screen", "audio_only", "audio_transcript", "chat_file", "active_speaker", "host_video", "audio_only_each_participant", "cc_transcript", "closed_caption", "poll", "timeline", "thumbnail", "chat_message"` — The recording type. The value of this field can be one of the following:\
\`shared\_screen\_with\_speaker\_view(CC)\`\
\`shared\_screen\_with\_speaker\_view\`\
\`shared\_screen\_with\_gallery\_view\`\
\`speaker\_view\`\
\`gallery\_view\`\
\`shared\_screen\`\
\`audio\_only\`\
\`audio\_transcript\`\
\`chat\_file\`\
\`active\_speaker\`\
\`poll\`\
\`timeline\`\
\`closed\_caption\` - **`status`** `string`, possible values: `"completed"` — The recording status. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_key` (required)** `string` — The Video SDK custom session ID. - **`session_name` (required)** `string` — Session name. - **`start_time` (required)** `string`, format: `date-time` — The time at which the session started. - **`timezone` (required)** `string` — The user's timezone. - **`participant_audio_files`** `array` — List of recording files. **Items:** - **`download_url`** `string` — The URL at which to download the recording. To access a private or password-protected cloud recording of a user in your account, generate a \[Build account API JWT]\(https\://developers.zoom.us/docs/build/api-request/). Pass the generated JWT as a Bearer token in the Authorization header of your HTTP request. For example: \`\`\` curl --request GET \ --url {download\_url} \ --header 'authorization: Bearer {JWT} \ --header 'content-type: application/json' \`\`\` - **`file_extension`** `string`, possible values: `"MP4", "M4A", "TXT", "VTT", "CSV", "JSON", "JPG"` — The archived file's file extension. - **`file_name`** `string` — The name of the file. - **`file_path`** `string` — The file path to the On-Premise account recording. \*\*Note:\*\* This API only returns this field for \[Zoom On-Premise accounts]\(https\://support.zoom.com/hc/en/article?id=zm\_kb\&sysparm\_article=KB0058321). It does \*\*not\*\* return the \`download\_url\` field. - **`file_size`** `number` — The recording file size. - **`file_type`** `string`, possible values: `"MP4", "M4A", "CHAT", "TRANSCRIPT", "CSV", "CC", "TB", "CHAT_MESSAGE"` — The recording file type. The value of this field could be one of the following:\
\`MP4\` - Video file of the recording.\
\`M4A\` - Audio-only file of the recording.\
\`TIMELINE\` - Timestamp file of the recording in JSON file format. To get a timeline file, enable the "Add a timestamp to the recording" setting in the \[recording settings]\(https\://support.zoom.com/hc/en/article?id=zm\_kb\&sysparm\_article=KB0064676). The time displays in the host's timezone, as set in their Zoom profile. \
\`TRANSCRIPT\` - Transcription file of the recording in VTT format.\
\`CHAT\` - A TXT file containing in-session chat messages that were sent during the session.\
\`CC\` - File containing closed captions of the recording in VTT file format.\
\`CSV\` - File containing polling data in CSV format. \
A recording file object with file type of either \`CC\` or \`TIMELINE\` \*\*does not have\*\* the following properties:\
\`id\`, \`status\`, \`file\_size\`, \`recording\_type\`. - **`id`** `string` — The recording file ID. Included in the response of a general query. - **`recording_end`** `string` — The recording end time. Returned in a general query. - **`recording_start`** `string` — The recording start time. - **`recording_type`** `string`, possible values: `"shared_screen_with_speaker_view(CC)", "shared_screen_with_speaker_view", "shared_screen_with_gallery_view", "gallery_view", "shared_screen", "audio_only", "audio_transcript", "chat_file", "active_speaker", "host_video", "audio_only_each_participant", "cc_transcript", "closed_caption", "poll", "timeline", "thumbnail", "chat_message"` — The recording type. The value of this field can be one of the following:\
\`shared\_screen\_with\_speaker\_view(CC)\`\
\`shared\_screen\_with\_speaker\_view\`\
\`shared\_screen\_with\_gallery\_view\`\
\`speaker\_view\`\
\`gallery\_view\`\
\`shared\_screen\`\
\`audio\_only\`\
\`audio\_transcript\`\
\`chat\_file\`\
\`active\_speaker\`\
\`poll\`\
\`timeline\`\
\`closed\_caption\` - **`status`** `string`, possible values: `"completed"` — The recording status. - **`user_id`** `string` — The participant's session user ID. This value is assigned to a participant upon joining a session and is only valid for the duration of the session. - **`user_key`** `string` — The participant's SDK identifier. Set with the \`user\_identity\` key in the Video SDK JWT payload. This value can be alphanumeric, up to a maximum length of 35 characters. - **`participant_video_files`** `array` — List of recording files. **Items:** - **`download_url`** `string` — The URL at which to download the recording. To access a private or password-protected cloud recording of a user in your account, generate a \[Build account API JWT]\(https\://developers.zoom.us/docs/build/api-request/). Pass the generated JWT as a Bearer token in the Authorization header of your HTTP request. For example: \`\`\` curl --request GET \ --url {download\_url} \ --header 'authorization: Bearer {JWT} \ --header 'content-type: application/json' \`\`\` - **`file_extension`** `string`, possible values: `"MP4"` — The archived file's file extension. - **`file_name`** `string` — The name of the file. - **`file_path`** `string` — The file path to the On-Premise account recording. \*\*Note:\*\* This API only returns this field for \[Zoom On-Premise accounts]\(https\://support.zoom.com/hc/en/article?id=zm\_kb\&sysparm\_article=KB0058321). It does \*\*not\*\* return the \`download\_url\` field. - **`file_size`** `number` — The recording file size. - **`file_type`** `string`, possible values: `"MP4"` — The recording file type. The value of this field could be one of the following:\
\`MP4\`: Video file of the recording. - **`id`** `string` — The recording file ID. Included in the response of a general query. - **`recording_end`** `string` — The recording end time. Returned in a general query. - **`recording_start`** `string` — The recording start time. - **`recording_type`** `string`, possible values: `"individual_user", "individual_shared_screen"` — The recording type. The value of this field can be one of the following:\
\`shared\_screen\_with\_speaker\_view(CC)\`\
\`shared\_screen\_with\_speaker\_view\`\
\`shared\_screen\_with\_gallery\_view\`\
\`speaker\_view\`\
\`gallery\_view\`\
\`shared\_screen\`\
\`audio\_only\`\
\`audio\_transcript\`\
\`chat\_file\`\
\`active\_speaker\`\
\`poll\`\
\`timeline\`\
\`closed\_caption\` - **`status`** `string`, possible values: `"completed"` — The recording status. - **`user_id`** `string` — The participant's session user ID. This value is assigned to a participant upon joining a session and is only valid for the duration of the session. - **`user_key`** `string` — The participant's SDK identifier. Set with the \`user\_identity\` key in the Video SDK JWT payload. This value can be alphanumeric, up to a maximum length of 35 characters. **Example:** ```json { "event": "session.recording_completed", "event_ts": 1, "download_token": "", "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "start_time": "", "timezone": "", "recording_files": [ { "id": "", "recording_start": "", "recording_end": "", "file_name": "", "file_path": "", "file_type": "MP4", "file_size": 1, "file_extension": "MP4", "download_url": "", "external_storage_url": "", "status": "completed", "recording_type": "shared_screen_with_speaker_view(CC)" } ], "participant_audio_files": [ { "id": "", "recording_start": "", "recording_end": "", "file_name": "", "file_path": "", "file_type": "MP4", "file_size": 1, "file_extension": "MP4", "download_url": "", "status": "completed", "recording_type": "shared_screen_with_speaker_view(CC)", "user_id": "", "user_key": "" } ], "participant_video_files": [ { "id": "", "recording_start": "", "recording_end": "", "file_name": "", "file_path": "", "file_type": "MP4", "file_size": 1, "file_extension": "MP4", "download_url": "", "status": "completed", "recording_type": "individual_user", "user_id": "", "user_key": "" } ] } } } ``` ### Session.recording\_transcript\_failedEvent - **Type:**`object` * **`event` (required)** `string`, possible values: `"session.recording_transcript_failed"` — The event's name. * **`event_ts` (required)** `integer`, format: `int64` — A timestamp, in milliseconds since epoch, when the event occurred. * **`payload` (required)** `object` - **`account_id` (required)** `string` — The Video SDK account ID. - **`object` (required)** `object` — Information about the session. This object only returns updated properties. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_key` (required)** `string` — The Video SDK custom session ID. - **`session_name` (required)** `string` — Session name. - **`start_time` (required)** `string`, format: `date-time` — The time when the session started. - **`timezone` (required)** `string` — The user's timezone. **Example:** ```json { "event": "session.recording_transcript_failed", "event_ts": 1, "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "start_time": "", "timezone": "" } } } ``` ### Session.recording\_trashedEvent - **Type:**`object` * **`event` (required)** `string`, possible values: `"session.recording_trashed"` — The event's name. * **`event_ts` (required)** `integer`, format: `int64` — A timestamp, in milliseconds since epoch, at which the event occurred. * **`payload` (required)** `object` - **`account_id` (required)** `string` — The Video SDK account ID. - **`object` (required)** `object` — Information about the session. This object only returns updated properties. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_key` (required)** `string` — The Video SDK custom session ID. - **`session_name` (required)** `string` — Session name. - **`start_time` (required)** `string`, format: `date-time` — The time at which the session started. - **`timezone` (required)** `string` — The user's timezone. - **`operator` (required)** `string`, format: `email` — The email address of the user who deleted the recording. - **`operator_id` (required)** `string` — The user ID of the user who deleted the recording. **Example:** ```json { "event": "session.recording_trashed", "event_ts": 1, "payload": { "account_id": "", "operator": "", "operator_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "start_time": "", "timezone": "" } } } ``` ### Session.user\_joinedEvent - **Type:**`object` * **`event` (required)** `string`, possible values: `"session.user_joined"` — The event's name. * **`event_ts` (required)** `integer`, format: `int64` — A timestamp, in milliseconds since epoch, at which the event occurred. * **`payload` (required)** `object` - **`account_id` (required)** `string` — The Video SDK account ID. - **`object` (required)** `object` — Information about the session. This object only returns updated properties. - **`id` (required)** `string` — The session ID. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_name` (required)** `string` — Session name. - **`user` (required)** `object` — Information about the user. - **`id` (required)** `string` — The user's unique ID. This value is assigned to the user upon joining a session and is only valid for that session. - **`join_time` (required)** `string`, format: `date-time` — The time at which the user joined the session. - **`name` (required)** `string` — The user's username. - **`participant_uuid` (required)** `string` — The participant's UUID. This value is assigned to a participant upon joining a session and is only valid for the session's duration. - **`phone_number`** `string` — Phone number of participant joined via PSTN. - **`user_key`** `string` — Another identifier for the user. Can be a number or characters. - **`session_key`** `string` — The Video SDK custom session ID. **Example:** ```json { "event": "session.user_joined", "event_ts": 1, "payload": { "account_id": "", "object": { "id": "", "session_id": "", "session_name": "", "session_key": "", "user": { "id": "", "name": "", "join_time": "", "user_key": "", "phone_number": "", "participant_uuid": "" } } } } ``` ### Session.stream\_ingestion\_startedEvent - **Type:**`object` * **`event` (required)** `string`, possible values: `"session.stream_ingestion_started"` — Event name. * **`event_ts` (required)** `integer`, format: `int64` — Timestamp (in milliseconds since epoch) when the event occurred. The value of this field is returned in long (int64) format. * **`payload` (required)** `object` - **`account_id` (required)** `string` — The Video SDK account ID. - **`object` (required)** `object` — Information about the session. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_name` (required)** `string` — Session name. - **`stream_ingestion` (required)** `object` — Information about the stream ingestion. - **`backup_stream_url` (required)** `string` — The backup stream URL. - **`stream_id` (required)** `string` — The stream ingestion ID. - **`stream_key` (required)** `string` — The stream ingestion key. - **`stream_name` (required)** `string` — The stream ingestion name. - **`stream_url` (required)** `string` — The stream URL. - **`stream_description`** `string` — The stream ingestion description. - **`session_key`** `string` — The Video SDK custom session ID. **Example:** ```json { "event": "session.stream_ingestion_started", "event_ts": 1, "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "stream_ingestion": { "stream_id": "", "stream_name": "", "stream_description": "", "stream_key": "", "stream_url": "", "backup_stream_url": "" } } } } ``` ### Session.stream\_ingestion\_connectedEvent - **Type:**`object` * **`event` (required)** `string`, possible values: `"session.stream_ingestion_connected"` — Name of the event. * **`event_ts` (required)** `integer`, format: `int64` — Timestamp (in milliseconds since epoch) when the event occurred. The value of this field is returned in long (int64) format. * **`payload` (required)** `object` - **`account_id` (required)** `string` — The Video SDK account ID. - **`object` (required)** `object` — Information about the session. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_name` (required)** `string` — Session name. - **`stream_ingestion` (required)** `object` — Information about the stream ingestion. - **`backup_stream_url` (required)** `string` — The backup stream URL. - **`stream_id` (required)** `string` — The stream ingestion ID. - **`stream_key` (required)** `string` — The stream ingestion key. - **`stream_name` (required)** `string` — The stream ingestion name. - **`stream_url` (required)** `string` — The stream URL. - **`stream_description`** `string` — The stream ingestion description. - **`session_key`** `string` — The Video SDK custom session ID. **Example:** ```json { "event": "session.stream_ingestion_connected", "event_ts": 1, "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "stream_ingestion": { "stream_id": "", "stream_name": "", "stream_description": "", "stream_key": "", "stream_url": "", "backup_stream_url": "" } } } } ``` ### Session.stream\_ingestion\_disconnectedEvent - **Type:**`object` * **`event` (required)** `string`, possible values: `"session.stream_ingestion_disconnected"` — Name of the event. * **`event_ts` (required)** `integer`, format: `int64` — Timestamp (in milliseconds since epoch) when the event occurred. The value of this field is returned in long (int64) format. * **`payload` (required)** `object` - **`account_id` (required)** `string` — The Video SDK account ID. - **`object` (required)** `object` — Information about the session. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_name` (required)** `string` — Session name. - **`stream_ingestion` (required)** `object` — Information about the stream ingestion. - **`backup_stream_url` (required)** `string` — The backup stream URL. - **`stream_id` (required)** `string` — The stream ingestion ID. - **`stream_key` (required)** `string` — The stream ingestion key. - **`stream_name` (required)** `string` — The stream ingestion name. - **`stream_url` (required)** `string` — The stream URL. - **`stream_description`** `string` — The stream ingestion description. - **`session_key`** `string` — The Video SDK custom session ID. **Example:** ```json { "event": "session.stream_ingestion_disconnected", "event_ts": 1, "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "stream_ingestion": { "stream_id": "", "stream_name": "", "stream_description": "", "stream_key": "", "stream_url": "", "backup_stream_url": "" } } } } ``` ### Session.recording\_recoveredEvent - **Type:**`object` * **`event` (required)** `string`, possible values: `"session.recording_recovered"` — The event's name. * **`event_ts` (required)** `integer`, format: `int64` — A timestamp, in milliseconds since epoch, at which the event occurred. * **`payload` (required)** `object` - **`account_id` (required)** `string` — The Video SDK account ID. - **`object` (required)** `object` — Information about the session. This object only returns updated properties. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_key` (required)** `string` — The Video SDK custom session ID. - **`session_name` (required)** `string` — Session name. - **`start_time` (required)** `string`, format: `date-time` — The time at which the session started. - **`timezone` (required)** `string` — The user's timezone. - **`operator` (required)** `string`, format: `email` — The email address of the user who deleted the recording. - **`operator_id` (required)** `string` — The user ID of the user who deleted the recording. **Example:** ```json { "event": "session.recording_recovered", "event_ts": 1, "payload": { "account_id": "", "operator": "", "operator_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "start_time": "", "timezone": "" } } } ``` ### Session.user\_phone\_callout\_missedEvent - **Type:**`object` * **`event` (required)** `string` — The name of the event. * **`event_ts` (required)** `integer`, format: `int64` — A timestamp at which the event occurred. * **`payload` (required)** `object` - **`account_id` (required)** `string` — The account ID of the session host. - **`object` (required)** `object` — Information about the session. - **`host_id` (required)** `string` — The user ID of the session host. - **`participant` (required)** `object` — Information about the invited user. - **`from_number` (required)** `integer`, format: `int64` — The number used to call out to the invited user. - **`invitee_name` (required)** `string` — The user's name to display in the session. - **`phone_number` (required)** `integer`, format: `int64` — The user's phone number. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_key` (required)** `string` — The Video SDK custom session ID. - **`session_name` (required)** `string` — Session name. - **`user_key` (required)** `string` — Another identifier for the inviter. Can be a number or characters. - **`id`** `integer`, format: `int64` — The session ID. - **`uuid`** `string` — The session's universally unique identifier (UUID). Each session instance generates a session UUID. **Example:** ```json { "event": "", "event_ts": 1, "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "user_key": "", "host_id": "", "participant": { "invitee_name": "", "phone_number": 1, "from_number": 1 } } } } ``` ### Session.user\_phone\_callout\_rejectedEvent - **Type:**`object` * **`event` (required)** `string` — The name of the event. * **`event_ts` (required)** `integer`, format: `int64` — A timestamp at which the event occurred. * **`payload` (required)** `object` - **`account_id` (required)** `string` — The account ID of the session host. - **`object` (required)** `object` — Information about the session. - **`host_id` (required)** `string` — The user ID of the session host. - **`participant` (required)** `object` — Information about the invited user. - **`from_number` (required)** `integer`, format: `int64` — The number used to call out to the invited user. - **`invitee_name` (required)** `string` — The user's name to display in the session. - **`phone_number` (required)** `integer`, format: `int64` — The user's phone number. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_key` (required)** `string` — The Video SDK custom session ID. - **`session_name` (required)** `string` — Session name. - **`user_key` (required)** `string` — Another identifier for the inviter. Can be a number or characters. - **`id`** `integer`, format: `int64` — The session ID. - **`uuid`** `string` — The session's universally unique identifier (UUID). Each session instance generates a session UUID. **Example:** ```json { "event": "", "event_ts": 1, "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "user_key": "", "host_id": "", "participant": { "invitee_name": "", "phone_number": 1, "from_number": 1 } } } } ``` ### Session.user\_room\_system\_callout\_acceptedEvent - **Type:**`object` * **`event` (required)** `string` — The name of the event. * **`event_ts` (required)** `integer`, format: `int64` — A timestamp at which the event occurred. * **`payload` (required)** `object` - **`account_id` (required)** `string` — The account ID of the session host. - **`object` (required)** `object` — Information about the session. - **`host_id` (required)** `string` — The user ID of the session host. - **`inviter_name` (required)** `string` — The user name of the event's trigger. - **`message_id` (required)** `string` — The request unique identifier (UUID). - **`participant` (required)** `object` — Information about the invited participant. - **`call_type` (required)** `string` — The type of call out. Use a value of \`h323\` or \`sip\`. - **`device_ip` (required)** `string` — The user's device IP address. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_name` (required)** `string` — Session name. - **`id`** `integer`, format: `int64` — The session ID. - **`uuid`** `string` — The session's universally unique identifier (UUID). Each session instance generates a session UUID. **Example:** ```json { "event": "", "event_ts": 1, "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "host_id": "", "message_id": "", "inviter_name": "", "participant": { "call_type": "", "device_ip": "", "additionalProperty": "anything" } } } } ``` ### Session.recording\_stoppedEvent - **Type:**`object` * **`event` (required)** `string`, possible values: `"session.recording_stopped"` — The event's name. * **`event_ts` (required)** `integer`, format: `int64` — A timestamp, in milliseconds since epoch, at which the event occurred. * **`payload` (required)** `object` - **`account_id` (required)** `string` — The Video SDK account ID. - **`object` (required)** `object` — Information about the session. This object only returns updated properties. - **`recording_file` (required)** `object` - **`recording_end`** `string` — The recording end time. Response in general query. - **`recording_start`** `string` — The recording start time. - **`session_id` (required)** `string` — Unique session identifier. Each instance of the session will have its own session\_id. - **`session_key` (required)** `string` — The Video SDK custom session ID. - **`session_name` (required)** `string` — Session name. - **`start_time` (required)** `string`, format: `date-time` — The time at which the session started. - **`timezone` (required)** `string` — The user's timezone. **Example:** ```json { "event": "session.recording_stopped", "event_ts": 1, "payload": { "account_id": "", "object": { "session_id": "", "session_name": "", "session_key": "", "start_time": "", "timezone": "", "recording_file": { "recording_start": "", "recording_end": "" } } } } ```