Now Available: Zoom AI Services Summarizer & Translator APIs.
APIsMCPBlogChangelogAgent Skills
Help
/
Video SDK
APIMaster APIWebhooks
View as MarkdownDownload OpenAPI
APIsMCPBlogChangelogAgent SkillsHelp
Theme

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, under Add feature, toggle Event Subscriptions to subscribe to events using webhooks.\n\n Configure webhooks to send Video SDK events 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 for details or our webhook sample code (Node.js).

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.

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:

{
  "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.

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:

{
  "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 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:

{
  "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 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:

{
  "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:

{
  "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:

{
  "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.

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:

{
  "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 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:

{
  "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 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:<br> `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:<br>`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:

{
  "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 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:

{
  "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 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:

{
  "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:

{
  "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:

{
  "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:

{
  "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:

{
  "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 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:

{
  "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.

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:

{
  "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 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:

{
  "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 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:

{
  "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.

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:

{
  "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 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:<br> `MP4`: Video file of the recording.<br>`M4A` Audio-only file of the recording.<br>`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. <br> `TRANSCRIPT`: Transcription file of the recording in VTT format.<br> `CHAT`: A TXT file containing in-session chat messages that were sent during the session.<br>`CC`: File containing closed captions of the recording in VTT file format.<br>`CSV`: File containing polling data in csv format. <br> A recording file object with file type of either `CC` or `TIMELINE` **does not have** the following properties:<br> `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:<br>`shared_screen_with_speaker_view(CC)`<br>`shared_screen_with_speaker_view`<br>`shared_screen_with_gallery_view`<br>`speaker_view`<br>`gallery_view`<br>`shared_screen`<br>`audio_only`<br>`audio_transcript`<br>`chat_file`<br>`active_speaker`<br>`poll`<br>`timeline`<br>`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:

{
  "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 with the delete query parameter or
  • The Zoom web portal. See 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:

{
  "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 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:

{
  "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 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:

{
  "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 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:<br> `MP4` - Video file of the recording.<br>`M4A` - Audio-only file of the recording.<br>`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. <br> `TRANSCRIPT` - Transcription file of the recording in VTT format.<br> `CHAT` - A TXT file containing in-session chat messages that were sent during the session.<br>`CC` - File containing closed captions of the recording in VTT file format.<br>`CSV` - File containing polling data in CSV format. <br> A recording file object with file type of either `CC` or `TIMELINE` **does not have** the following properties:<br> `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:<br>`shared_screen_with_speaker_view(CC)`<br>`shared_screen_with_speaker_view`<br>`shared_screen_with_gallery_view`<br>`speaker_view`<br>`gallery_view`<br>`shared_screen`<br>`audio_only`<br>`audio_transcript`<br>`chat_file`<br>`active_speaker`<br>`poll`<br>`timeline`<br>`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:<br> `MP4` - Video file of the recording.<br>`M4A` - Audio-only file of the recording.<br>`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. <br> `TRANSCRIPT` - Transcription file of the recording in VTT format.<br> `CHAT` - A TXT file containing in-session chat messages that were sent during the session.<br>`CC` - File containing closed captions of the recording in VTT file format.<br>`CSV` - File containing polling data in CSV format. <br> A recording file object with file type of either `CC` or `TIMELINE` **does not have** the following properties:<br> `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:<br>`shared_screen_with_speaker_view(CC)`<br>`shared_screen_with_speaker_view`<br>`shared_screen_with_gallery_view`<br>`speaker_view`<br>`gallery_view`<br>`shared_screen`<br>`audio_only`<br>`audio_transcript`<br>`chat_file`<br>`active_speaker`<br>`poll`<br>`timeline`<br>`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:<br> `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:<br>`shared_screen_with_speaker_view(CC)`<br>`shared_screen_with_speaker_view`<br>`shared_screen_with_gallery_view`<br>`speaker_view`<br>`gallery_view`<br>`shared_screen`<br>`audio_only`<br>`audio_transcript`<br>`chat_file`<br>`active_speaker`<br>`poll`<br>`timeline`<br>`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:

{
  "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 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:

{
  "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 API with the trash query parameter or
  • The Zoom web portal. See 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:

{
  "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 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:

{
  "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:

{
  "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:

{
  "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:

{
  "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 for details.
  • The Recover a single recording or Recover session's recordings 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:

{
  "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.

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:

{
  "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.

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:

{
  "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.

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:

{
  "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 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:

{
  "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:

{
  "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:

{
  "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:

{
  "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:

{
  "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:

{
  "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:

{
  "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:

{
  "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:

{
  "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:<br> `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:<br>`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:

{
  "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:

{
  "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:

{
  "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:

{
  "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:

{
  "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:

{
  "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:

{
  "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:

{
  "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:

{
  "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:

{
  "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:

{
  "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:

{
  "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:<br> `MP4`: Video file of the recording.<br>`M4A` Audio-only file of the recording.<br>`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. <br> `TRANSCRIPT`: Transcription file of the recording in VTT format.<br> `CHAT`: A TXT file containing in-session chat messages that were sent during the session.<br>`CC`: File containing closed captions of the recording in VTT file format.<br>`CSV`: File containing polling data in csv format. <br> A recording file object with file type of either `CC` or `TIMELINE` **does not have** the following properties:<br> `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:<br>`shared_screen_with_speaker_view(CC)`<br>`shared_screen_with_speaker_view`<br>`shared_screen_with_gallery_view`<br>`speaker_view`<br>`gallery_view`<br>`shared_screen`<br>`audio_only`<br>`audio_transcript`<br>`chat_file`<br>`active_speaker`<br>`poll`<br>`timeline`<br>`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:

{
  "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:

{
  "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:

{
  "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:

{
  "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:<br> `MP4` - Video file of the recording.<br>`M4A` - Audio-only file of the recording.<br>`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. <br> `TRANSCRIPT` - Transcription file of the recording in VTT format.<br> `CHAT` - A TXT file containing in-session chat messages that were sent during the session.<br>`CC` - File containing closed captions of the recording in VTT file format.<br>`CSV` - File containing polling data in CSV format. <br> A recording file object with file type of either `CC` or `TIMELINE` **does not have** the following properties:<br> `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:<br>`shared_screen_with_speaker_view(CC)`<br>`shared_screen_with_speaker_view`<br>`shared_screen_with_gallery_view`<br>`speaker_view`<br>`gallery_view`<br>`shared_screen`<br>`audio_only`<br>`audio_transcript`<br>`chat_file`<br>`active_speaker`<br>`poll`<br>`timeline`<br>`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:<br> `MP4` - Video file of the recording.<br>`M4A` - Audio-only file of the recording.<br>`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. <br> `TRANSCRIPT` - Transcription file of the recording in VTT format.<br> `CHAT` - A TXT file containing in-session chat messages that were sent during the session.<br>`CC` - File containing closed captions of the recording in VTT file format.<br>`CSV` - File containing polling data in CSV format. <br> A recording file object with file type of either `CC` or `TIMELINE` **does not have** the following properties:<br> `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:<br>`shared_screen_with_speaker_view(CC)`<br>`shared_screen_with_speaker_view`<br>`shared_screen_with_gallery_view`<br>`speaker_view`<br>`gallery_view`<br>`shared_screen`<br>`audio_only`<br>`audio_transcript`<br>`chat_file`<br>`active_speaker`<br>`poll`<br>`timeline`<br>`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:<br> `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:<br>`shared_screen_with_speaker_view(CC)`<br>`shared_screen_with_speaker_view`<br>`shared_screen_with_gallery_view`<br>`speaker_view`<br>`gallery_view`<br>`shared_screen`<br>`audio_only`<br>`audio_transcript`<br>`chat_file`<br>`active_speaker`<br>`poll`<br>`timeline`<br>`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:

{
  "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:

{
  "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:

{
  "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:

{
  "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:

{
  "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:

{
  "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:

{
  "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:

{
  "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:

{
  "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:

{
  "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:

{
  "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:

{
  "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": ""
      }
    }
  }
}