Video SDK

  • OpenAPI Version: 3.1.1
  • API Version: 2

Use The Video SDK API Key and API Secret to authorize requests to the Video SDK APIs and Account Settings APIs.

Zoom Video SDK APIs use JSON Web Tokens (JWT) for authorization. Each request to the Video SDK API must be authorized by an encrypted Video SDK API JWT as the request header bearer token. A Video SDK API JWT can be used until the token expires. You can set the token expiry, but we suggest limiting the time up to one hour for increased security.

On your Build Platform App Marketplace page, click View JWT token in the API keys section to quickly generate and use a token. See Make API Requests to learn how to programmatically generate your own.

Servers

  • URL: https://api.zoom.us/v2

Operations

Update Bring Your Own Storage settings

  • Method: PATCH
  • Path: /accounts/{accountId}/videosdk/settings/storage
  • Tags: Byos Storage

Change Cloud Recording's Bring Your Own Storage setting. You can enable or disable this recording option. If it is set to true, Zoom will use your selected storage location to store recordings. If it is set to false, Zoom will use Zoom's own storage, charge you for cloud storage, and delete your configured storage locations.

This feature is in beta. See Bring your own storage for details.

Rate Limit Label: LIGHT

Not supported in Gov cluster

Request Body

Content-Type: application/json
  • bring_our_own_storage (required)

    boolean — Whether to turn on Bring Your Own Storage (BYOS) or not. Set to `true` to enable BYOS or `false` to disable it. If you disable BYOS, for security, Zoom will delete all storage location details.

  • storage_location_id

    string — The ID for the selected storage location.

Example:

{
  "bring_our_own_storage": true,
  "storage_location_id": "LmefoSckQNaw3GSyl74FcA"
}

Responses

Status: 204 Return the Storage location switch and selected value.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `400` <br> The storage ID matches the currently selected account. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `3335` <br> Your account currently does not support CMR BYOS storage. <br> **Error Code:** `3336` <br> Please enable CMR BYOS storage first. Use the API (POST /v2/videosdk/settings/storage/location) to create one and enable this feature. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3310` <br> This storage ID does not exist. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

List storage location

  • Method: GET
  • Path: /accounts/{accountId}/videosdk/settings/storage/location
  • Tags: Byos Storage

List the Bring Your Own Storage (BYOS) location. Lists all settings, except it will not show the AWS access key and secret.

This feature is in beta. See Bring your own storage for details.

Rate Limit Label: LIGHT

Not supported in Gov cluster

Responses

Status: 200 List the Bring Your Own Storage (BYOS) location list.
Content-Type: application/json

Array of:

  • id (required)

    string — The storage location ID.

  • name (required)

    string — The name for your storage location.

  • provider (required)

    string, possible values: "aws_s3" — The provider (currently only supports `aws_s3`).

  • s3 (required)

    object — Currently only supports Amazon S3 access key and secret.

    • authentication_mechanism (required)

      string, possible values: "aws_access_key" — The authentication mechanism (currently only supports `aws_access_key`).

    • bucket (required)

      string — The Amazon S3 bucket.

    • region (required)

      string — The AWS region.

  • selected

    boolean — Storage is now customer-selected.

Example:

[
  {
    "id": "9lXuCXgOTIqocq81iotCdQ",
    "name": "11111",
    "provider": "aws_s3",
    "selected": true,
    "s3": {
      "region": "us-east-2",
      "bucket": "testpbx",
      "authentication_mechanism": "aws_access_key"
    }
  }
]
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `3335` <br> Your account currently does not support CMR BYOS storage. <br> **Error Code:** `3336` <br> Please enable CMR BYOS storage first. Use the API (POST /v2/videosdk/settings/storage/location) to create one and enable this feature. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Add storage location

  • Method: POST
  • Path: /accounts/{accountId}/videosdk/settings/storage/location
  • Tags: Byos Storage

Add the Bring Your Own Storage (BYOS) location.

This feature is in beta. See Bring your own storage for details.

Rate Limit Label: LIGHT

Not supported in Gov cluster

Request Body

Content-Type: application/json
  • name (required)

    string — The name for your storage location.

  • provider (required)

    string, possible values: "aws_s3" — The provider (currently only supports `aws_s3`).

  • s3 (required)

    object — Currently only supports Amazon S3 access key and secret.

    • access_key (required)

      object — When `authentication_mechanism` value is `aws_access_key`.

      • id (required)

        string — The AWS access key.

      • key (required)

        string — The AWS secret.

    • authentication_mechanism (required)

      string, possible values: "aws_access_key" — The authentication mechanism (currently only supports `aws_access_key`, which uses the S3 access key).

    • bucket (required)

      string — The Amazon S3 bucket.

    • region (required)

      string — The AWS region.

Example:

{
  "name": "0827aksk",
  "provider": "aws_s3",
  "s3": {
    "region": "us-east-2",
    "bucket": "testpbx",
    "authentication_mechanism": "aws_access_key",
    "access_key": {
      "id": "access key",
      "key": "secret key"
    }
  }
}

Responses

Status: 201 Return the add success object.
Content-Type: application/json
  • id (required)

    string — The storage location ID.

  • name (required)

    string — The name for your storage location.

  • provider (required)

    string, possible values: "aws_s3" — The provider (currently only supports `aws_s3`).

  • s3 (required)

    object — Currently only supports Amazon S3 access key and secret.

    • authentication_mechanism (required)

      string, possible values: "aws_access_key" — The authentication mechanism (currently only supports `aws_access_key`, which uses the S3 access key).

    • bucket (required)

      string — The Amazon S3 bucket.

    • region (required)

      string — The AWS region.

Example:

{
  "id": "GOSG08LQQoeDyyRAO6GgLw",
  "name": "0827aksk",
  "provider": "aws_s3",
  "s3": {
    "region": "us-east-2",
    "bucket": "testpbx",
    "authentication_mechanism": "aws_access_key"
  }
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `3313` <br> Unable to connect to the storage location. Please check your configuration and try again. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `3335` <br> Your account currently does not support CMR BYOS storage. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Storage location detail

  • Method: GET
  • Path: /accounts/{accountId}/videosdk/settings/storage/location/{storageLocationId}
  • Tags: Byos Storage

Get details about one of the Bring Your Own Storage (BYOS) locations. This won't show the AWS access key and secret.

This feature is in beta. See Bring your own storage for details.

Rate Limit Label: LIGHT

Not supported in Gov cluster

Responses

Status: 200 Details about one of the Bring Your Own Storage (BYOS) locations.
Content-Type: application/json
  • id (required)

    string — The storage location ID.

  • name (required)

    string — The custom name.

  • provider (required)

    string, possible values: "aws_s3" — The provider (currently only supports `aws_s3` enum).

  • s3 (required)

    object — Currently only supports Amazon S3 access key and secret.

    • authentication_mechanism (required)

      string, possible values: "aws_access_key" — The authentication mechanism (currently only supports `aws_access_key` enum).

    • bucket (required)

      string — The Amazon S3 bucket.

    • region (required)

      string — The AWS region.

  • verify_status (required)

    string, possible values: "success", "failure" — The verifification status for this storage location.

Example:

{
  "id": "7kdwg5y0Ra6B2vWdtXUJOQ",
  "name": "newpbx123",
  "provider": "aws_s3",
  "s3": {
    "region": "us-east-1",
    "bucket": "testpbx",
    "authentication_mechanism": "aws_access_key"
  },
  "verify_status": "success"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `400` <br> Invalid parameters. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `3335` <br> Your account currently does not support CMR BYOS storage. <br> **Error Code:** `3336` <br> Please enable CMR BYOS storage first. Use the API (POST /v2/videosdk/settings/storage/location) to create one and enable this feature. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3310` <br> This storage ID does not exist. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Delete storage location detail

  • Method: DELETE
  • Path: /accounts/{accountId}/videosdk/settings/storage/location/{storageLocationId}
  • Tags: Byos Storage

Delete one of the the Bring Your Own Storage (BYOS) storage locations.

This feature is in beta. See Bring your own storage for details.

Rate Limit Label: LIGHT

Not supported in Gov cluster

Responses

Status: 204 Delete Bring Your Own Storage (BYOS) storage location.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `400` <br> Invalid parameters. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `3335` <br> Your account currently does not support CMR BYOS storage. <br> **Error Code:** `3336` <br> Please enable CMR BYOS storage first. Use the API (POST /v2/videosdk/settings/storage/location) to create one and enable this feature. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3310` <br> This storage ID does not exist. <br>
Status: 405 **HTTP Status Code:** `405` <br> Method Not Allowed **Error Code:** `3312` <br> You cannot delete this bucket, because it is currently being used. To delete, either change to another storage location, or turn off BYOS, then try again. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Change storage location detail

  • Method: PATCH
  • Path: /accounts/{accountId}/videosdk/settings/storage/location/{storageLocationId}
  • Tags: Byos Storage

Change one of the Bring Your Own Storage (BYOS) storage location details.

This feature is in beta. See Bring your own storage for details.

Rate Limit Label: LIGHT

Not supported in Gov cluster

Request Body

Content-Type: application/json
  • name

    string — The custom name.

  • provider

    string, possible values: "aws_s3" — The provider (currently only supports `aws_s3`).

  • s3

    object — Currently only supports Amazon S3 access key and secret.

    • access_key

      object — When `authentication_mechanism` value is `aws_access_key`.

      • id

        string — The AWS access key. When you get or list the storage location detail, this key will be blocked.

      • key

        string — The AWS secret. When you get or list the storage location detail, this secret will be blocked.

    • authentication_mechanism

      string, possible values: "aws_access_key" — The authentication mechanism (currently only supports `aws_access_key`).

    • bucket

      string — The Amazon S3 bucket (cannot change bucket).

    • region

      string — The AWS region (cannot change region).

Example:

{
  "name": "newpbx1234567",
  "provider": "aws_s3",
  "s3": {
    "region": "us-east-1",
    "bucket": "testpbx",
    "authentication_mechanism": "aws_access_key",
    "access_key": {
      "id": "access_key",
      "key": "secret_key"
    }
  }
}

Responses

Status: 204 The Bring Your Own Storage (BYOS) location detail.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `400` <br> Can not change the bucket and region. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `3335` <br> Your account currently does not support CMR BYOS storage. <br> **Error Code:** `3336` <br> Please enable CMR BYOS storage first. Use the API (POST /v2/videosdk/settings/storage/location) to create one and enable this feature. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found This storage ID does not exist.
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

List recordings of an account

  • Method: GET
  • Path: /accounts/{accountId}/videosdk/recordings
  • Tags: Cloud Recording

List Video SDK Cloud Recordings available on an Account.

To access a password protected cloud recording, add an access_token parameter to the download URL and provide your Video SDK API JWT as the value of the access_token.

Rate Limit Label: MEDIUM

Responses

Status: 200 **HTTP Status Code:** `200` List of recording objects returned.
Content-Type: application/json

All of:

  • from

    string — The start date of the query date range.

  • next_page_token

    string — The next page token to paginate through large result sets.

  • page_size

    integer — The number of records returned within a single API call.

  • to

    string — The end date of the query date range.

  • total_records

    integer — The number of all records available across pages.

  • sessions

    array — List of recording sessions

    Items:

    All of:

    • duration

      integer — Session duration.

    • recording_count

      integer — Number of recording files returned in the response of this API call. This includes the `recording_files` and `participant_audio_files` files.

    • session_id

      string — Unique session identifier. Each instance of the session will have its own `session_id`.

    • session_key

      string — The Video SDK custom session ID.

    • session_name

      string — Session name.

    • start_time

      string, format: date-time — The time at which the session started.

    • total_size

      integer, format: int64 — The total file size of the recording. This includes the `recording_files` and `participant_audio_files` files.

    All of:

    • recording_files

      array — List of recording files.

      Items:

      All of:

      • deleted_time

        string — The time at which the recording was deleted. Returned in the response only for the trash query.

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

      • external_storage_url

        string — The S3 path for bring your own storage recording.

      • file_size

        number — The recording file size.

      • file_type

        string — The recording file type. The value of this field could be one of the following: `MP4`: Video file of the recording. `M4A` Audio-only file of the recording. `TIMELINE`: Timestamped file of the recording in JSON file format. To get a timeline file, the 'Add a timestamp to the recording'. You must enable this setting in the recording settings. See [Video SDK Account: Enable cloud recording](https://developers.zoom.us/docs/video-sdk/account/#enable-cloud-recording) for details). The time will display in the account's timezone, set in their Zoom profile. `TRANSCRIPT`: Transcription file of the recording in VTT format. `CHAT`: A TXT file containing in-session chat messages that were sent during the session. `CC`: File containing closed captions of the recording in VTT file format. `CSV`: File containing polling data in CSV format. A recording file object with file type of either `CC` or `TIMELINE` **does not have** the following properties: `id`, `status`, `file_size`, and `recording_type`.

      • id

        string — The recording file ID. This is included in the general query response.

      • recording_end

        string — The recording end time. This is included in the the general query response.

      • recording_start

        string — The recording start time.

      • recording_type

        string — The recording type. The value of this field can be one of the following: `shared_screen_with_speaker_view(CC)` `shared_screen_with_speaker_view` `shared_screen_with_gallery_view` `active_speaker` `gallery_view` `shared_screen` `audio_only` `audio_transcript` `chat_file` `poll` `timeline` `closed_caption` `local_transcript` `original_transcript`

      • status

        string, possible values: "completed" — The recording status.

    All of:

    • participant_video_files

      array — A list of recording files. The API only returns this response when the **Record a separate audio file of each participant** setting is enabled.

      Items:

      All of:

      • download_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 {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 — The archived file's file extension.

      • file_name

        string — The recording file's name.

      • file_size

        number — The recording file's size, in bytes.

      • file_type

        string — The recording file's format. One of: * `MP4` - Video file. * `M4A` - Audio-only file. * `TIMELINE` - Timestamp file of the recording, in JSON file format. To get a timeline file, you must enable the **Add a timestamp to the recording** setting in the recording settings. See [Video SDK Account: Enable could recording](https://developers.zoom.us/docs/video-sdk/account/#enable-cloud-recording) for details. The time will display in the account's timezone. * `TRANSCRIPT` - A transcript of the recording, in VTT format. * `CHAT` - A text file containing chat messages sent during the session. * `CC` - A file containing the closed captions of the recording, in VTT file format. * `CSV` - A file containing polling data, in CSV format. A recording file object with file type of either `CC` or `TIMELINE` **does not have** the following properties: `id`, `status`, `file_size`, and `recording_type`.

      • id

        string — The recording file's unique ID. This is included in the general query response.

      • recording_end

        string, format: date-time — The recording file's end time. This is included in the general query response.

      • recording_start

        string, format: date-time — The recording file's start time.

      • recording_type

        string, possible values: "individual_user", "individual_shared_screen" — The type of recording file: * `individual_user` * `individual_shared_screen`.

      • status

        string, possible values: "completed" — The recording file's 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 36 characters.

Example:

{
  "from": "2021-10-11",
  "to": "2021-11-11",
  "page_size": 30,
  "total_records": 100,
  "next_page_token": "Usse957pzxvmYwlmCZ50a6CNXFrhztxuj82",
  "sessions": [
    {
      "session_id": "JZiFOknTQ4yH/tJgaUTlkg==",
      "session_name": "session_name",
      "start_time": "2022-03-10T02:27:24Z",
      "duration": 2,
      "total_size": 444601,
      "recording_count": 4,
      "session_key": "ABC36jaBI145",
      "recording_files": [
        {
          "id": "35497738-9fef-4f8a-97db-0ec34caef065",
          "recording_start": "2022-03-11T12:34:39Z",
          "recording_end": "2022-03-11T12:34:42Z",
          "file_type": "MP4",
          "file_size": 12125,
          "download_url": "https://example.com/download_url",
          "external_storage_url": "s3://cmrpbx/cmr/replay/2024/05/01/77431195-02EC-4B4C-8218-17E716123FCD/cmr_byos/GMT20210906-041233_Recording.m4a",
          "status": "completed",
          "deleted_time": "2022-03-28T07:22:22Z",
          "recording_type": "audio_only"
        }
      ],
      "participant_video_files": [
        {
          "id": "24698bd1-589e-4c33-9ba3-bc788b2a0ac2",
          "recording_start": "2021-12-07T05:42:13Z",
          "recording_end": "2021-12-07T05:42:28Z",
          "file_name": "recording_name",
          "file_type": "MP4",
          "file_extension": "MP4",
          "file_size": 900452,
          "download_url": "https://download.example.com/download_url",
          "recording_type": "individual_shared_screen",
          "status": "completed",
          "user_id": "abcd1234",
          "user_key": "efgh5678"
        }
      ]
    }
  ]
}
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User {userId} not exist or not belong to this account. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

List session's recordings

  • Method: GET
  • Path: /accounts/{accountId}/videosdk/sessions/{sessionId}/recordings
  • Tags: Cloud Recording

Get all the recordings from a session instance. The recording files can be downloaded via the download_url property listed in the response.

Rate Limit Label: LIGHT

Responses

Status: 200 **Error Code:** `200` You do not have the right permissions. **HTTP Status Code:** `200` Recording object returned.
Content-Type: application/json

All of:

All of:

  • duration

    integer — Session duration.

  • recording_count

    integer — Number of recording files returned in the response of this API call. This includes the `recording_files` and `participant_audio_files` files.

  • session_id

    string — Unique session identifier. Each instance of the session will have its own `session_id`.

  • session_key

    string — The Video SDK custom session ID.

  • session_name

    string — Session name.

  • start_time

    string, format: date-time — The time at which the session started.

  • total_size

    integer, format: int64 — The total file size of the recording. This includes the `recording_files` and `participant_audio_files` files.

All of:

  • recording_files

    array — List of recording files.

    Items:

    All of:

    • deleted_time

      string — The time at which recording was deleted. Returned in the response only for the trash query.

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

    • external_storage_url

      string — The S3 path for bring your own storage recording.

    • file_size

      number — The recording file size.

    • file_type

      string — The recording file type. One of the following: `MP4` - Video file of the recording. `M4A` - Audio-only file of the recording. `TIMELINE` - Timestamped file of the recording in JSON file format. To get a timeline file, you must enable the 'Add a timestamp to the recording' setting in the recording settings. See [Enable cloud recording](https://developers.zoom.us/docs/video-sdk/account/#enable-cloud-recording) for details. The time will display in the host's timezone, set in their Zoom profile. `TRANSCRIPT` - Transcription file of the recording in VTT format. `CHAT` - A TXT file containing in-session chat messages that were sent during the session. `CC` - File containing closed captions of the recording in VTT file format. `CSV` - File containing polling data in CSV format. A recording file object with the file type `CC` or `TIMELINE` **does not have** the `id`, `status`, `file_size`, or `recording_type` properties.

    • id

      string — The recording file ID. Included in the general query response.

    • recording_end

      string — The recording end time. Included in the general query response.

    • recording_start

      string — The recording start time.

    • recording_type

      string — The recording type. The value of this field can be one of the following: `shared_screen_with_speaker_view(CC)` `shared_screen_with_speaker_view` `shared_screen_with_gallery_view` `active_speaker` `gallery_view` `shared_screen` `audio_only` `audio_transcript` `chat_file` `poll` `timeline` `closed_caption` `local_transcript` `original_transcript`

    • status

      string, possible values: "completed" — The recording status.

All of:

  • participant_video_files

    array — A list of recording files. The API only returns this response when the **Record a separate audio file of each participant** setting is enabled.

    Items:

    All of:

    • download_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 {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 — The archived file's file extension.

    • file_name

      string — The recording file's name.

    • file_size

      number — The recording file's size, in bytes.

    • file_type

      string — The recording file's format. One of the following: * `MP4` - Video file. * `M4A` - Audio-only file. * `TIMELINE` - Timestamp file of the recording, in JSON file format. To get a timeline file, you must enable the 'Add a timestamp to the recording' setting in the recording settings. See [Enable cloud recording](https://developers.zoom.us/docs/video-sdk/account/#enable-cloud-recording) for details. The time will display in the host's timezone. * `TRANSCRIPT` - A transcript of the recording, in VTT format. * `CHAT` - A text file containing chat messages sent during the session. * `CC` - A file containing the closed captions of the recording, in VTT file format. * `CSV` - A file containing polling data, in CSV format. A recording file object with the file type `CC` or `TIMELINE` value **does not have** the `id`, `status`, `file_size`, or `recording_type` properties.

    • id

      string — The recording file's unique ID. This is included in the general query response.

    • recording_end

      string, format: date-time — The recording file's end time. This is included in the general query response.

    • recording_start

      string, format: date-time — The recording file's start time.

    • recording_type

      string, possible values: "individual_user", "individual_shared_screen" — The type of recording file: * `individual_user` * `individual_shared_screen`.

    • status

      string, possible values: "completed" — The recording file's status.

  • download_access_token

    string — The JWT access token for downloading the session recording. This is only returned if the `include_fields` query parameter contains `download_access_token`.

All of:

  • participant_audio_files

    array — A list of recording files. The API only returns this response when the **Record a separate audio file of each participant** setting is enabled.

    Items:

    All of:

    • download_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 {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 — The archived file's file extension.

    • file_name

      string — The recording file's name.

    • file_size

      number — The recording file's size, in bytes.

    • file_type

      string — The recording file's format. One of the following: * `MP4` - Video file. * `M4A` - Audio-only file. * `TIMELINE` - Timestamp file of the recording, in JSON file format. To get a timeline file, you must enable the 'Add a timestamp to the recording' setting in the recording settings. See [Enable cloud recording](https://developers.zoom.us/docs/video-sdk/account/#enable-cloud-recording) for details. The time will display in the host's timezone. * `TRANSCRIPT` - A transcript of the recording, in VTT format. * `CHAT` - A text file containing chat messages sent during the session. * `CC` - A file containing the closed captions of the recording, in VTT file format. * `CSV` - A file containing polling data, in CSV format. A recording file object with the file type `CC` or `TIMELINE` value **does not have** the `id`, `status`, `file_size`, or `recording_type` properties.

    • id

      string — The recording file's unique ID. This is included in the general query response.

    • recording_end

      string, format: date-time — The recording file's end time. This is included in the general query response.

    • recording_start

      string, format: date-time — The recording file's start time.

    • status

      string, possible values: "completed" — The recording file's 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 36 characters.

All of:

  • participant_video_files

    array — A list of recording files. The API only returns this response when the **Record a separate audio file of each participant** setting is enabled.

    Items:

    All of:

    • download_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 {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 — The archived file's file extension.

    • file_name

      string — The recording file's name.

    • file_size

      number — The recording file's size, in bytes.

    • file_type

      string — The recording file's format. One of the following: * `MP4` - Video file. * `M4A` - Audio-only file. * `TIMELINE` - Timestamp file of the recording, in JSON file format. To get a timeline file, you must enable the 'Add a timestamp to the recording' setting in the recording settings. See [Enable cloud recording](https://developers.zoom.us/docs/video-sdk/account/#enable-cloud-recording) for details. The time will display in the host's timezone. * `TRANSCRIPT` - A transcript of the recording, in VTT format. * `CHAT` - A text file containing chat messages sent during the session. * `CC` - A file containing the closed captions of the recording, in VTT file format. * `CSV` - A file containing polling data, in CSV format. A recording file object with the file type `CC` or `TIMELINE` **does not** have the `id`, `status`, `file_size`, or `recording_type` properties.

    • id

      string — The recording file's unique ID. This is included in the general query response.

    • recording_end

      string, format: date-time — The recording file's end time. This is included in the general query response.

    • recording_start

      string, format: date-time — The recording file's start time.

    • recording_type

      string, possible values: "individual_user", "individual_shared_screen" — The type of recording file: * `individual_user` * `individual_shared_screen`.

    • status

      string, possible values: "completed" — The recording file's 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 36 characters.

Example:

{
  "session_id": "JZiFOknTQ4yH/tJgaUTlkg==",
  "session_name": "session_name",
  "start_time": "2022-03-10T02:27:24Z",
  "duration": 2,
  "total_size": 444601,
  "recording_count": 4,
  "session_key": "ABC36jaBI145",
  "recording_files": [
    {
      "id": "35497738-9fef-4f8a-97db-0ec34caef065",
      "recording_start": "2022-03-11T12:34:39Z",
      "recording_end": "2022-03-11T12:34:42Z",
      "file_type": "MP4",
      "file_size": 12125,
      "download_url": "https://example.com/download_url",
      "external_storage_url": "s3://cmrpbx/cmr/replay/2024/05/01/77431195-02EC-4B4C-8218-17E716123FCD/cmr_byos/GMT20210906-041233_Recording.m4a",
      "status": "completed",
      "deleted_time": "2022-03-28T07:22:22Z",
      "recording_type": "audio_only"
    }
  ],
  "participant_video_files": [
    {
      "id": "24698bd1-589e-4c33-9ba3-bc788b2a0ac2",
      "recording_start": "2021-12-07T05:42:13Z",
      "recording_end": "2021-12-07T05:42:28Z",
      "file_name": "recording_name",
      "file_type": "MP4",
      "file_extension": "MP4",
      "file_size": 900452,
      "download_url": "https://download.example.com/download_url",
      "recording_type": "individual_shared_screen",
      "status": "completed",
      "user_id": "abcd1234",
      "user_key": "efgh5678"
    }
  ],
  "download_access_token": "exampleTokenXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
  "participant_audio_files": [
    {
      "id": "24698bd1-589e-4c33-9ba3-bc788b2a0ac2",
      "recording_start": "2021-12-07T05:42:13Z",
      "recording_end": "2021-12-07T05:42:28Z",
      "file_name": "recording_name",
      "file_type": "MP4",
      "file_extension": "MP4",
      "file_size": 900452,
      "download_url": "https://download.example.com/download_url",
      "status": "completed",
      "user_id": "abcd1234",
      "user_key": "efgh5678"
    }
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `1010` <br> User not found on this account: {accountId}. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3301` <br> There is no recording for this session. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Delete session's recordings

  • Method: DELETE
  • Path: /accounts/{accountId}/videosdk/sessions/{sessionId}/recordings
  • Tags: Cloud Recording

Delete all recording files of a session.

Prerequisites:

  • Cloud Recording should be enabled on the user's account.

Rate Limit Label: LIGHT

Responses

Status: 204 The recording was successfully deleted.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `1010` <br> User does not belong to this account: {accountId}. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3301` <br> There is no recording for this session. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Recover session's recordings

  • Method: PUT
  • Path: /accounts/{accountId}/videosdk/sessions/{sessionId}/recordings/status
  • Tags: Cloud Recording

Zoom allows users to recover recordings from trash for up to 30 days from the deletion date.

Prerequisites:

  • Video SDK account with Cloud Recording enabled.

Rate Limit Label: Light

Request Body

Content-Type: application/json
  • action

    string, possible values: "recover"

Example:

{
  "action": "recover"
}

Responses

Status: 200 **Error Code:** `200` You do not have the right permissions.
Status: 204 **HTTP Status Code:** `204` Deleted recordings of the session recovered.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `1010` <br> User does not belong to this account: {accountId}.
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> User does not exist: {userId}.<br> **Error Code:** `3301` <br> There is no recording for this session.
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Delete session's recording file

  • Method: DELETE
  • Path: /accounts/{accountId}/videosdk/sessions/{sessionId}/recordings/{recordingId}
  • Tags: Cloud Recording

Delete a specific recording file from a session. Note: To use this API, you must enable the The host can delete cloud recordings setting.

Rate Limit Label: LIGHT

Responses

Status: 204 The recording file was successfully deleted.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `1010` <br> User does not belong to this account: {accountId}.<br> <br> **Error Code:** `3303` <br> You can not delete an uncompleted session. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3301` <br> There is no recording for this session. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Recover a single recording

  • Method: PUT
  • Path: /accounts/{accountId}/videosdk/sessions/{sessionId}/recordings/{recordingId}/status
  • Tags: Cloud Recording

Zoom allows users to recover recordings from trash for up to 30 days from the deletion date. Use this API to recover a single recording file from the session.

Rate Limit Label: Light

Request Body

Content-Type: application/json
  • action

    string, possible values: "recover"

Example:

{
  "action": "recover"
}

Responses

Status: 204 **HTTP Status Code:** `204` Session recording recovered.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `1010` <br> User does not belong to this account: {accountId}.
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3301` <br> There is no recording for this session.
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

List sessions

  • Method: GET
  • Path: /accounts/{accountId}/videosdk/sessions
  • Tags: Sessions

List the total live or past sessions that occurred during a specified period of time. You can specify a monthly date range for this data using the from and to query parameters. The month should fall within the last six months. The report only includes one month's worth of data.

The response displays whether features such as audio, video, screen sharing, and recording were used during the session.

Prerequisites:

  • A Video SDK account

Rate Limit Label: RESOURCE-INTENSIVE

Responses

Status: 200 **HTTP Status Code:** `200` Sessions returned. Only available for paid accounts that have dashboard feature enabled.
Content-Type: application/json
  • from

    string, format: date — The report's start date, in 'yyyy-mm-dd' format.

  • next_page_token

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

  • page_size

    integer, default: 30 — The number of records returned within a single API call.

  • sessions

    array — Information about the session.

    Items:

    • audio_quality

      string, possible values: "good", "fair", "poor", "bad" — * `good` - The audio is almost flawless and the quality is excellent. * `fair` - The audio occasionally has distortion, noise, and other problems, but the content is basically continuous. Users can communicate normally. * `poor` - The audio often has distortion, noise, and other problems, but the content is basically continuous. Users can communicate normally. * `bad` - The sound quality is extremely poor and the audio content is almost inaudible.

    • duration

      string — The session's duration, in 'hh:mm:ss' format.

    • end_time

      string, format: date-time — The session's end time.

    • has_pstn

      boolean — Whether the PSTN feature was used in the session.

    • has_recording

      boolean — Whether the recording feature was used in the session.

    • has_screen_share

      boolean — Whether the screen share feature was used in the session.

    • has_session_summary

      boolean — Whether the session summary was used in the session.

    • has_video

      boolean — Whether video was used in the session.

    • has_voip

      boolean — Whether VoIP was used in the session.

    • id

      string — The session's ID. If the ID begins with a `+`, `/`, or contains `//` characters, you must **double-encode** this value.

    • screen_share_quality

      string, possible values: "good", "fair", "poor", "bad" — * `good` - The video is almost flawless and the quality is excellent. * `fair` - The video definition is high, occasionally gets stuck, fast or slow, or other problems, but the frequency is very low and the video quality is good. * `poor` - The video definition is not high, but not many problems exist. The video quality is mediocre. * `bad` - The picture is very blurred and often gets stuck.

    • session_key

      string — The Video SDK custom session ID.

    • session_name

      string — The session's name.

    • start_time

      string, format: date-time — The session's start time.

    • user_count

      integer — The session's user count.

    • video_quality

      string, possible values: "good", "fair", "poor", "bad" — * `good` - The video is almost flawless and the quality is excellent. * `fair` - The video definition is high, occasionally gets stuck, fast or slow, or other problems, but the frequency is very low and the video quality is good. * `poor` - The video definition is not high, but not many problems exist. The video quality is mediocre. * `bad` - The picture is very blurred and often gets stuck.

  • to

    string, format: date — The report's end date, in 'yyyy-mm-dd' format.

Example:

{
  "from": "2021-12-01",
  "to": "2021-12-02",
  "page_size": 30,
  "next_page_token": "suQA5LvDBnH5No5OYD7mqpJuFzJqUOHK8U2",
  "sessions": [
    {
      "id": "sfk/aOFJSJSYhGwk1hnxgw==",
      "session_name": "My session",
      "start_time": "2019-08-20T19:09:01Z",
      "end_time": "2019-08-20T19:19:01Z",
      "duration": "30:00",
      "user_count": 2,
      "has_voip": true,
      "has_video": true,
      "has_screen_share": true,
      "has_recording": true,
      "has_pstn": true,
      "session_key": "my_session_key",
      "has_session_summary": true,
      "audio_quality": "good",
      "video_quality": "good",
      "screen_share_quality": "good"
    }
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> This API is only available for Video SDK accounts. <br>
Status: 401 **HTTP Status Code:** `401` <br> Unauthorized
Status: 403 **HTTP Status Code:** `403` <br> Forbidden
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rate-limits/).

Create a session

  • Method: POST
  • Path: /accounts/{accountId}/videosdk/sessions
  • Tags: Sessions

Create a Video SDK session.

This API is designed to get the PSTN or SIP dial in information before starting a session with the session name specified in this API. The Create a session API is not required for creating or starting a Video SDK session.

Zoom creates and starts Video SDK sessions on demand when the first user joins, see the Video SDK Session documentation for your platform for details.

Video SDK sessions only show up in the dashboard or REST API reports when they are live or completed.

Prerequisites:

  • A Video SDK account.

Rate Limit Label: MEDIUM

Request Body

Content-Type: application/json
  • session_name (required)

    string — The session's name.

  • session_password

    string — Developer provided session alphanumeric password. It is equivalent to the sessionPassword in the Video SDK interface.

  • settings

    object — Information about the session's settings.

    • auto_recording

      string, possible values: "cloud", "none", default: "none" — The automatic recording settings. * `cloud` - Record the session to the cloud. * `none` - Auto-recording disabled.

Example:

{
  "session_name": "My session",
  "session_password": "123456",
  "settings": {
    "auto_recording": "cloud"
  }
}

Responses

Status: 201 **HTTP Status Code:** `201` Session created.
Content-Type: application/json
  • session_name (required)

    string — The session's name.

  • created_at

    string, format: date-time — The date and time when this session was created.

  • passcode

    string — Zoom generated numeric code to use when joining the session by phone (PSTN), or from a room (H323/SIP device).

  • session_id

    string — The session's ID. If this field's value includes any `/` characters, you must **double-encode** the value.

  • session_number

    integer, format: int64 — The session's number. Unique identifier of the session in **long** format, represented as an int64 data type in JSON.

  • session_password

    string — Developer provided session alphanumeric password. It is equivalent to the sessionPassword in the Video SDK interface.

  • settings

    object — Information about the session's settings.

    • auto_recording

      string, possible values: "cloud", "none", default: "none" — The automatic recording settings. * `cloud` - Record the session to the cloud. * `none` - Auto-recording disabled.

    • global_dial_in_countries

      array — A list of available global dial-in countries.

      Items:

      string

    • global_dial_in_numbers

      array — Global dial-in countries or regions.

      Items:

      • country

        string — The country code.

      • country_name

        string — Full name of country.

      • number

        string — The phone number, such as +1 2332357613.

      • type

        string, possible values: "toll", "tollfree", "premium" — Type of number.

Example:

{
  "session_id": "sfk/aOFJSJSYhGwk1hnxgw==",
  "session_number": 97763643886,
  "session_name": "My session",
  "session_password": "123456",
  "passcode": "123456",
  "created_at": "2022-03-25T07:29:29Z",
  "settings": {
    "auto_recording": "cloud",
    "global_dial_in_countries": [
      "US"
    ],
    "global_dial_in_numbers": [
      {
        "country": "US",
        "country_name": "US",
        "number": "+1 1000200200",
        "type": "toll"
      }
    ]
  }
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `3000` <br> Session name already exists. Try a different session name. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Get session details

  • Method: GET
  • Path: /accounts/{accountId}/videosdk/sessions/{sessionId}
  • Tags: Sessions

Get information about scheduled, live, or past sessions.

The overview response displays whether features such as audio, video, screen sharing, and recording were used during the session.

Prerequisites:

  • A Video SDK account

Rate Limit Label: HEAVY

Responses

Status: 200 **HTTP Status Code:** `200` Session returned.
Content-Type: application/json
  • audio_quality

    string, possible values: "good", "fair", "poor", "bad" — * `good` - The audio is almost flawless and the quality is excellent. * `fair` - The audio occasionally has distortion, noise, and other problems, but the content is basically continuous. Users can communicate normally. * `poor` - The audio often has distortion, noise, and other problems, but the content is basically continuous. Users can communicate normally. * `bad` - The sound quality is extremely poor and the audio content is almost inaudible.

  • created_at

    string, format: date-time — The date and time when this session was created.

  • duration

    string — The session's duration, in `hh:mm:ss` format.

  • end_time

    string, format: date-time — The session's end time.

  • has_pstn

    boolean — Whether the PSTN feature was used in the session.

  • has_recording

    boolean — Whether the recording feature was used in the session.

  • has_screen_share

    boolean — Whether the screen share feature was used in the session.

  • has_session_summary

    boolean — Whether the session summary was used in the session.

  • has_video

    boolean — Whether video was used in the session.

  • has_voip

    boolean — Whether VoIP was used in the session.

  • id

    string — The session's ID. If the ID begins with a `+`, `/` or contains `//` characters, you must **double-encode** this value.

  • passcode

    string — The session's passcode.

  • screen_share_quality

    string, possible values: "good", "fair", "poor", "bad" — * `good` - The video is almost flawless and the quality is excellent. * `fair` - The video definition is high, occasionally gets stuck, fast or slow, or other problems, but the frequency is very low and the video quality is good. * `poor` - The video definition is not high, but not many problems exist. The video quality is mediocre. * `bad` - The picture is very blurred and often gets stuck.

  • session_key

    string — The Video SDK custom session ID.

  • session_name

    string — The session's name.

  • session_number

    integer, format: int64 — The session's number. Unique identifier of the session in **long** format, represented as an int64 data type in JSON.

  • settings

    object — Information about the session's settings. Only returns if type=scheduled.

    • auto_recording

      string, possible values: "cloud", "none", default: "none" — The automatic recording settings. * `cloud` - Record the session to the cloud. * `none` - Auto-recording disabled.

    • global_dial_in_countries

      array — A list of available global dial-in countries.

      Items:

      string

    • global_dial_in_numbers

      array — Global dial-in countries or regions.

      Items:

      • country

        string — The country code.

      • country_name

        string — Full name of country.

      • number

        string — The phone number, such as +1 2332357613.

      • type

        string, possible values: "toll", "tollfree", "premium" — Type of number.

  • start_time

    string, format: date-time — The session's start time.

  • total_minutes

    integer — The total number of minutes attended by the sessions's host and users.

  • user_count

    integer — The session's user count.

  • video_quality

    string, possible values: "good", "fair", "poor", "bad" — * `good` - The video is almost flawless and the quality is excellent. * `fair` - The video definition is high, occasionally gets stuck, fast or slow, or other problems, but the frequency is very low and the video quality is good. * `poor` - The video definition is not high, but not many problems exist. The video quality is mediocre. * `bad` - The picture is very blurred and often gets stuck.

Example:

{
  "id": "sfk/aOFJSJSYhGwk1hnxgw==",
  "session_number": 97763643886,
  "session_name": "My session",
  "passcode": "123456",
  "start_time": "2019-08-20T19:09:01Z",
  "end_time": "2019-08-20T19:19:01Z",
  "duration": "30:00",
  "user_count": 2,
  "has_voip": true,
  "has_video": true,
  "has_screen_share": true,
  "has_recording": true,
  "has_pstn": true,
  "session_key": "my_session_key",
  "has_session_summary": true,
  "created_at": "2022-03-25T07:29:29Z",
  "settings": {
    "auto_recording": "cloud",
    "global_dial_in_countries": [
      "US"
    ],
    "global_dial_in_numbers": [
      {
        "country": "US",
        "country_name": "US",
        "number": "+1 1000200200",
        "type": "toll"
      }
    ]
  },
  "audio_quality": "good",
  "video_quality": "good",
  "screen_share_quality": "good",
  "total_minutes": 1
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> This API is only available for Video SDK accounts. <br>
Status: 401 **HTTP Status Code:** `401` <br> Unauthorized
Status: 403 **HTTP Status Code:** `403` <br> Forbidden
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Session does not exist. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rate-limits/).

Use in-session events controls

  • Method: PATCH
  • Path: /accounts/{accountId}/videosdk/sessions/{sessionId}/events
  • Tags: Sessions

Control in-session events such as the recording controls to start a recording, stop a recording, pause a recording, and resume a recording, and invitation control to invite users. The recording controls only work for cloud recordings and not for local recordings.

Prerequisite:

  • The session must be a live session.
  • Cloud recording must be enabled for recording controls.
  • The user using this API must either be the host or manager of the session.
  • You must have a Conference Room Connector add-on plan to invite users to the session using a room system callout.

Rate Limit Label: MEDIUM

Request Body

Content-Type: application/json
  • method

    string, possible values: "recording.start", "recording.stop", "recording.pause", "recording.resume", "user.invite.callout", "user.invite.room_system_callout", "stream_ingestion.bind", "stream_ingestion.unbind", "stream_ingestion.send", "stream_ingestion.stop", "audio.block", "audio.unblock", "video.block", "video.unblock", "share.block", "share.unblock", "user.remove" — The method that you would like to control. The value of this field can be one of the following. * `recording.start` - Start the recording. * `recording.stop` - Stop the recording. * `recording.pause` - Pause the recording. * `recording.resume` - Resume the recording that was previously paused. * `user.invite.callout` - Invite a user to the session through call out (phone). Requires that you purchase and set up the Audio Conferencing plan. See [Video SDK account settings](/docs/video-sdk/account/#customize-audio-conferencing) for details. * `user.invite.room_system_callout` - Invite a user to the session through call out (room system). This works like [Inviting others to join a Zoom Rooms meeting](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0065721) in Zoom Meeting. See the link for details. Use these values for Real-Time Messaging Protocol (RTMP) ingestion for a live session (you must also add a `stream_ingestion_stream_id` to the request). * `stream_ingestion.bind` - Bind a stream key to a session. * `stream_ingestion.unbind` - Unbind a stream key to a session. You can bind the unbound stream key to another live session. * `stream_ingestion.send` - Send ingested stream data into a session. * `stream_ingestion.stop` - Stop sending ingested stream data into a session. Contact [Developer Support](https://developers.zoom.us/support/) to enable the following moderation features. * `audio.block` - Mute the user's audio and disallow self-unmute. * `audio.unblock` - Allow users to unmute themselves. * `video.block` - Stop the user's video and disallow self-starting. * `video.unblock` - Allow users to start the video themselves. * `share.block` - Stop the user's share and disallow self-starting. * `share.unblock` - Allow users to start sharing themselves. * `user.remove` - Remove a user from a session.

  • params

    object — The in-session parameters.

    • call_type

      string — The type of call out. Use a value of `h323` or `sip`. Use this field if you pass the `user.invite.room_system_callout` value for the `method` field.

    • device_ip

      string — The user's device IP address. Use this field if you pass the `user.invite.room_system_callout` value for the `method` field.

    • h323_headers

      object — Enable customers to leverage services that require customization of the FROM header to identify the caller. Use this field if you pass the `user.invite.room_system_callout` value for the `method` field and the `h323` value for the `call_type` field.

      • from_display_name

        string — Custom name that will be used within the `h323` header.

      • to_display_name

        string — Custom remote name that will be used within the session.

    • invite_options

      object — Information about the `user.invite.callout` settings.

      • require_greeting

        boolean, default: true — Whether to require a greeting before being connected. Use this field if you pass the `user.invite.callout` value for the `method` field.

      • require_pressing_one

        boolean, default: true — Whether to require pressing 1 before being connected. Use this field if you pass the `user.invite.callout` value for the `method` field.

    • invitee_name

      string — The user's name to display in the session. Use this field if you pass the `user.invite.callout` value for the `method` field.

    • participant_uuid

      string — The user's UUID. This value is assigned to a user upon joining a session and is only valid for the session's duration. Use this field if you pass the `audio.block`, `audio.unblock`, `video.block`, `video.unblock`, `share.block`, `share.unblock`, or `user.remove` value for the `method` field.

    • phone_number

      string — The user's phone number. Use this field if you pass the `user.invite.callout` value for the `method` field. As a best practice, ensure this includes a country code and area code. If you are dialing a phone number that includes an extension, type a hyphen '-' after the phone number and enter the extension. For example, 6032331333-156 dials the extension 156.

    • sip_headers

      object — Enable customers to leverage services that require customization of the FROM header to identify the caller. Use this field if you pass the `user.invite.room_system_callout` value for the `method` field and the `sip` value for the `call_type` field.

      • additional_headers

        array — Ability to add 1..10 custom headers, each of which has a maximum length of 256 bytes to comply with SIP standards. Custom headers would leverage header names starting with &quot;X-&quot; per SIP guidelines.

        Items:

        • key

          string — Additional custom SIP header's key

        • value

          string — Additional custom SIP header's value

      • from_display_name

        string — Custom name that will be used within the SIP Header.

      • from_uri

        string — Custom URI that will be used within the SIP Header. The URI must be start with 'sip:' or 'sips:' as a valid URI based on parameters defined by the platform

      • to_display_name

        string — Custom remote name that will be used within the session.

    • stream_ingestion_stream_id

      string — The stream ingestion ID. Use this field if you pass the `stream_ingestion.bind`, `stream_ingestion.unbind`, `stream_ingestion.send`, or `stream_ingestion.stop` value for the `method` field.

Example:

{
  "method": "recording.start",
  "params": {
    "invitee_name": "Jill Chill",
    "phone_number": "15555550100",
    "invite_options": {
      "require_greeting": true,
      "require_pressing_one": true
    },
    "call_type": "h323",
    "device_ip": "10.100.111.237",
    "h323_headers": {
      "from_display_name": "display name",
      "to_display_name": "display name"
    },
    "sip_headers": {
      "from_display_name": "display name",
      "to_display_name": "display name",
      "from_uri": "sip:username@domain.company.org",
      "additional_headers": [
        {
          "key": "X-Header1",
          "value": "X-body1"
        }
      ]
    },
    "participant_uuid": "D444CD06-2ABB-2FCC-019B-39E41D8DADF7",
    "stream_ingestion_stream_id": "sfk/aOFJSJSYhGwk1hnxgw=="
  }
}

Responses

Status: 202 **HTTP Status Code**: `202` Request processed successfully.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> No permission. <br> **Error Code:** `300` <br> This API is not available for this account, please contact Zoom support. <br> **Error Code:** `200` <br> This API is only available for Video SDK accounts. <br> **Error Code:** `34005` <br> This stream key is already bound to an existing session. Please use a different stream key. <br> **Error Code:** `34007` <br> Failed to bind a stream key to the session. <br> **Error Code:** `34008` <br> Failed to unbind a stream key to the session. <br> **Error Code:** `34009` <br> Failed to send ingested stream data into the session. <br> **Error Code:** `34010` <br> Failed to stop sending ingested stream data into the session. <br> **Error Code:** `34000` <br> Stream ingestion does not exist: {streamId}. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Session is not found or has expired. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Get session live stream details

  • Method: GET
  • Path: /accounts/{accountId}/videosdk/sessions/{sessionId}/livestream
  • Tags: Sessions

Use this API to return a session's live stream configuration details, such as the stream's URL, key, and page URL.

Prerequisites:

  • A Video SDK account

Rate Limit Label: Light

Responses

Status: 200 **HTTP Status Code:** `200` **OK** Live Stream details returned.
Content-Type: application/json
  • page_url

    string, format: url — The live stream's page URL. This is the URL at which anyone can view the session's live stream.

  • resolution

    string — The number of pixels in each dimension that the video camera can display.

  • stream_key

    string — The live stream key.

  • stream_url

    string, format: url — The live stream's URL.

Example:

{
  "stream_url": "https://example.com/livestream",
  "stream_key": "ABCDEFG12345HIJ6789",
  "page_url": "https://example.com/livestream/123",
  "resolution": "720p"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> This API is only available for Video SDK accounts.<br> **Error Code:** `300` <br> Session ID does not exist.<br> **Error Code:** `300` <br> Invalid session ID.
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Session does not exist: {sessionId}.<br> **Error Code:** `1001` <br> User does not exist: {0}.
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Update a session live stream

  • Method: PATCH
  • Path: /accounts/{accountId}/videosdk/sessions/{sessionId}/livestream
  • Tags: Sessions

Use this API to update a session's live stream information.

Prerequisites:

  • A Video SDK account

Rate Limit Label: Light

Request Body

Content-Type: application/json
  • page_url (required)

    string, format: url — The live stream's page URL. This is the URL at which anyone can view the session's live stream.

  • stream_key (required)

    string — The live stream key.

  • stream_url (required)

    string, format: url — The live stream's URL.

  • resolution

    string — The number of pixels in each dimension that the video camera can display, required when a user enables 1080p. Use a value of `720p` or `1080p`

Example:

{
  "stream_url": "https://example.com/livestream",
  "stream_key": "ABCDEFG12345HIJ6789",
  "page_url": "https://example.com/livestream/123",
  "resolution": "720p"
}

Responses

Status: 204 **HTTP Status Code:** `204` Session live stream updated.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> This API is only available for Video SDK accounts.<br> **Error Code:** `300` <br> Session ID does not exist.<br> **Error Code:** `300` <br> Invalid session ID.
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Session does not exist: {sessionId}.<br> **Error Code:** `1001` <br> User does not exist: {0}.
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Update session livestream status

  • Method: PATCH
  • Path: /accounts/{accountId}/videosdk/sessions/{sessionId}/livestream/status
  • Tags: Sessions

Update a session's livestream status.

Prerequisites:

  • A Video SDK account

Rate Limit Label: LIGHT

Request Body

Content-Type: application/json
  • action

    string, possible values: "start", "stop", "mode" — The session's livestream status: * `start` - Start a livestream. * `stop` - Stop an ongoing livestream. * `mode` - Control a livestream view at runtime.

  • settings

    object — The session's livestreaming settings.

    • active_speaker_name

      boolean — Whether to display the name of the active speaker during a session's livestream. Use this field if you pass the `start` value for the `action` field.

    • close_caption

      string, possible values: "burnt-in", "embedded", "off", default: "burnt-in" — The closed caption type of the session's livestream. Use this field if you pass the `start` or `mode` value for the `action` field. * `burnt-in` - Burnt-In Captions. * `embedded` - Embedded Captions. * `off` - Turn off Captions.

    • display_name

      string — The display name of the session's livestream. Use this field if you pass the `start` value for the `action` field.

    • layout

      string, possible values: "gallery_view", "speaker_view", default: "speaker_view" — The layout of the session's livestream. Use this field if you pass the `start` or `mode` value for the `action` field. * `gallery_view` - Gallery view. * `speaker_view` - Speaker view.

Example:

{
  "action": "start",
  "settings": {
    "active_speaker_name": true,
    "display_name": "Jill Chill",
    "layout": "speaker_view",
    "close_caption": "burnt-in"
  }
}

Responses

Status: 204 **HTTP Status Code:** `204` <br> Session livestream updated.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> This API is only available for Video SDK accounts. <br> **Error Code:** `300` <br> Invalid session ID. <br> **Error Code:** `4927` <br> Session {sessionId} has not started. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Session does not exist: {sessionId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Update session status

  • Method: PUT
  • Path: /accounts/{accountId}/videosdk/sessions/{sessionId}/status
  • Tags: Sessions

Use this API to update a session's status.

Prerequisites:

  • A Video SDK account

Rate Limit Label: Light

Request Body

Content-Type: application/json
  • action

    string, possible values: "end" — The session's type: * `end` &mdash; End the session.

Example:

{
  "action": "end"
}

Responses

Status: 204 **HTTP Status Code:** `204` Session updated.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> This API is only available for Video SDK accounts.<br> **Error Code:** `300` <br> Session ID does not exist.<br> **Error Code:** `300` <br> Invalid session ID.
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Session does not exist: {sessionId}.<br> **Error Code:** `1001` <br> User does not exist: {0}.
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

List session streaming ingestions

  • Method: GET
  • Path: /accounts/{accountId}/videosdk/sessions/{sessionId}/stream_ingestions
  • Tags: Sessions

List all streaming ingestions of a live session.

Prerequisites:

  • A Video SDK account.

Rate Limit Label: MEDIUM

Responses

Status: 200 **HTTP Status Code:** `200` Session streaming ingestions returned.
Content-Type: application/json

Array of:

  • rtmp_connection_status

    integer, possible values: 0, 1 — The RTMP connection status. * `0` - Third-party live streaming software disconnected. * `1` - Third-party live streaming software connected.

  • rtmp_stream_push_status

    integer, possible values: 0, 1 — The RTMP stream push status. * `0` - The stream is not pushed to the live session. * `1` - The stream has been pushed to the live session.

  • stream_id

    string — The stream ingestion ID.

Example:

[
  {
    "stream_id": "sfk/aOFJSJSYhGwk1hnxgw==",
    "rtmp_connection_status": 0,
    "rtmp_stream_push_status": 0
  }
]
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> This API is only available for Video SDK accounts. <br> **Error Code:** `300` <br> Invalid session ID. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Session does not exist: {sessionId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rate-limits/).

List session users

  • Method: GET
  • Path: /accounts/{accountId}/videosdk/sessions/{sessionId}/users
  • Tags: Sessions

Use this API to return a list of users from live or past sessions. You can specify a monthly date range for this data using the from and to query parameters. The month should fall within the last six months.

  • If you do not provide the type query parameter, the API defaults to the live value and the API will only return metrics for users in a live session, if a session is currently in progress.
  • To view metrics on past session users, provide the past value for the type query parameter.

Prerequisites:

  • A Video SDK account.

Rate Limit Label: HEAVY

Responses

Status: 200 **HTTP Status Code:** `200` Session users returned.
Content-Type: application/json
  • next_page_token

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

  • page_size

    integer, default: 30 — The number of records returned within a single API call.

  • users

    array — Information about session users. **Note:** * If a user left a session and rejoined the same session, their information will appear multiple times (for each time the user joined the session).

    Items:

    • audio_call

      array — Information about the meeting participant's audio call. Some participants may join the meeting through a phone call or are bound to the audio from a phone call.

      Items:

      • call_number

        string — The caller's number.

      • call_type

        string — The call type.

      • zoom_number

        string — The toll-free telephone number.

    • audio_quality

      string, possible values: "good", "fair", "poor", "bad" — * `good` - The audio is almost flawless and the quality is excellent. * `fair` - The audio occasionally has distortion, noise, and other problems, but the content is basically continuous. Users can communicate normally. * `poor` - The audio often has distortion, noise, and other problems, but the content is basically continuous. Users can communicate normally. * `bad` - The sound quality is extremely poor and the audio content is almost inaudible.

    • browser_name

      string — Web client browser

    • browser_version

      string — Web client browser version

    • camera

      string — The type of camera that the user used during the session.

    • client

      string — Client software or SDK version.

    • connection_type

      string — The user's connection type.

    • data_center

      string — The data center where user's session data is stored. See [Datacenter abbreviation list](https://support.zoom.us/hc/en-us/articles/360059254691-Datacenter-abbreviation-list) for details.

    • device

      string, possible values: "Phone", "H.323/SIP", "Windows", "Mac", "iOS", "Android" — The type of device the user used to join the session: * `Phone` - The user joined via PSTN. * `H.323/SIP` - The user joined via an H.323 or SIP device. * `Windows` - The user joined via VoIP using a Windows device. * `Mac` - The user joined via VoIP using a Mac device. * `iOS` - The user joined via VoIP using an iOS device. * `Android` - The user joined via VoIP using an Android device.

    • id

      string — The user's ID. This is a unique ID assigned to the user joining a session and is valid for **only** that session.

    • ip_address

      string — The user's IP address.

    • is_original_host

      boolean — Whether the current user is the original host of this session.

    • join_time

      string, format: date-time — The time at which user joined the session.

    • leave_time

      string, format: date-time — The time at which a user left the session. For live sessions, this field is only returned if a user has left the ongoing session.

    • location

      string — The user's location.

    • microphone

      string — The type of microphone that the user used during the session.

    • name

      string — The user's display name.

    • network_type

      string, possible values: "Wired", "Wifi", "PPP", "Cellular", "Others" — The user's network type: * `Wired` * `Wifi` * `PPP` - Point-to-Point. * `Cellular` - 3G, 4G, and 5G cellular. * `Others` - Not able to detect network type on web browsers.

    • os

      string — Device operating system

    • os_version

      string — Device operating system version

    • participant_uuid

      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.

    • screen_share_quality

      string, possible values: "good", "fair", "poor", "bad" — * `good` - The video is almost flawless and the quality is excellent. * `fair` - The video definition is high, occasionally gets stuck, fast or slow, or other problems, but the frequency is very low and the video quality is good. * `poor` - The video definition is not high, but not many problems exist. The video quality is mediocre. * `bad` - The picture is very blurred and often gets stuck.

    • speaker

      string — The type of speaker that the user used during the session.

    • user_key

      string — Another identifier for the user. Set with the `user_identity` key in the Video SDK JWT payload. Can be a number or characters. Maximum length of 36 characters.

    • video_quality

      string, possible values: "good", "fair", "poor", "bad" — * `good` - The video is almost flawless and the quality is excellent. * `fair` - The video definition is high, occasionally gets stuck, fast or slow, or other problems, but the frequency is very low and the video quality is good. * `poor` - The video definition is not high, but not many problems exist. The video quality is mediocre. * `bad` - The picture is very blurred and often gets stuck.

Example:

{
  "page_size": 30,
  "next_page_token": "suQA5LvDBnH5No5OYD7mqpJuFzJqUOHK8U2",
  "users": [
    {
      "id": "32dsfsd4g5gd",
      "name": "exampleuser",
      "device": "Windows",
      "ip_address": "127.0.0.1",
      "location": "New York",
      "network_type": "Wifi",
      "microphone": "Plantronics BT600",
      "speaker": "Plantronics BT600",
      "camera": "FaceTime HD Camera",
      "data_center": "SC",
      "connection_type": "P2P",
      "join_time": "2019-08-20T19:09:01Z",
      "leave_time": "2019-08-20T19:19:01Z",
      "user_key": "myUserKey",
      "audio_call": [
        {
          "call_number": "4131",
          "call_type": "call-in",
          "zoom_number": "18773690926"
        }
      ],
      "participant_uuid": "D444CD06-2ABB-2FCC-019B-39E41D8DADF7",
      "client": "Web Meeting SDK 2.18",
      "os": "iOS",
      "os_version": "16.5",
      "browser_name": "Firefox",
      "browser_version": "133",
      "audio_quality": "good",
      "video_quality": "good",
      "screen_share_quality": "good",
      "is_original_host": false
    }
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> This API is only available for Video SDK accounts. <br> **Error Code:** `12702` <br> Can not access a session a year ago. <br>
Status: 401 **HTTP Status Code:** `401` <br> Unauthorized
Status: 403 **HTTP Status Code:** `403` <br> Forbidden
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> Session ID is invalid or has not ended. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rate-limits/).

List session users QoS

  • Method: GET
  • Path: /accounts/{accountId}/videosdk/sessions/{sessionId}/users/qos
  • Tags: Sessions

Return a list of session users from live or past sessions along with the quality of service (QoS) they received during the session. For example, connection quality for sending and receiving video, audio, and shared content. You can specify a monthly date range for the dashboard data using the from and to query parameters. The month should fall within the last six months.

  • If you do not provide the type query parameter, the API defaults to the live value and the API will only return metrics for users in a live session, if a session is currently in progress.
  • To view metrics on past session users, provide the past value for the type query parameter.

Prerequisites:

  • A Video SDK Account

Rate Limit Label: HEAVY

Responses

Status: 200 **HTTP Status Code:** `200` Session users returned.
Content-Type: application/json
  • next_page_token

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

  • page_size

    integer, default: 1 — The number of items per page.

  • users

    array — Information about the session users.

    Items:

    • browser_name

      string — Web client browser.

    • browser_version

      string — Web client browser version.

    • camera

      string — The type of camera used during the session.

    • client

      string — Client software or SDK version.

    • connection_type

      string — The user's connection type.

    • data_center

      string — The data center where the user's session data is stored. See [Datacenter abbreviation list](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0067446) for details.

    • device

      string, possible values: "Phone", "H.323/SIP", "Windows", "Mac", "iOS", "Android" — The type of device used to join the session: * `Phone` - The user joined with PSTN. * `H.323/SIP` - The user joined with an H.323 or SIP device. * `Windows` - The user joined with VoIP on a Windows device. * `Mac` - The user joined with VoIP on a macOS device. * `iOS` - The user joined with VoIP on an iOS device. * `Android` - The user joined with VoIP on an Android device. * `""` - An external user.

    • id

      string — The user's ID.

    • ip_address

      string — The user's IP address.

    • is_original_host

      boolean — Whether the current user is the original host of this session.

    • join_time

      string, format: date-time — The time at which user joined the session.

    • leave_time

      string, format: date-time — The time at which user left the session.

    • location

      string — The user's location.

    • microphone

      string — The type of microphone used during the session.

    • name

      string — The user's display name.

    • network_type

      string, possible values: "Wired", "Wifi", "PPP", "Cellular", "Others" — The user's network type: * `Wired` * `Wifi` * `PPP` - Point-to-Point. * `Cellular` - 3G, 4G, and 5G cellular. * `Others` - An unknown device.

    • os

      string — Device operating system.

    • os_version

      string — Device operating system version.

    • speaker

      string — The type of speaker used during the session.

    • user_key

      string — Another identifier for the user. Set with the user_identity key in the Video SDK JWT payload. Can be a number or characters. Maximum length of 36 characters.

    • user_qos

      array — The QoS (quality of service) provided to the user.

      Items:

      • as_device_from_rwg

        object — Information about the session's screen share QoS (quality of service) sent by a participant who joined the meeting via the web client.

        • avg_loss

          string — The average amount of packet loss. For example, the percentage of packets that fail to arrive at their destination.

        • bitrate

          string — The number of bits per second that can be transmitted along a digital network, in Kbps.

        • frame_rate

          string — The frame rate at which your video camera can produce unique images. Zoom supports a frame rate of up to 30fps.

        • jitter

          string — The variation in the delay of received packets, in milliseconds.

        • latency

          string — The time it takes for a packet to travel from point to point, in milliseconds.

        • max_loss

          string — The maximum amount of packet loss. For example, the maximum percentage of packets that fail to arrive at their destination.

        • resolution

          string — The number of pixels in each dimension that can be displayed by your video camera.

      • as_device_to_rwg

        object — Information about the session's screen share QoS (quality of service) received by a participant who joined the meeting via the web client.

        • avg_loss

          string — The average amount of packet loss. For example, the percentage of packets that fail to arrive at their destination.

        • bitrate

          string — The number of bits per second that can be transmitted along a digital network, in Kbps.

        • frame_rate

          string — The frame rate at which your video camera can produce unique images. Zoom supports a frame rate of up to 30fps.

        • jitter

          string — The variation in the delay of received packets, in milliseconds.

        • latency

          string — The time it takes for a packet to travel from point to point, in milliseconds.

        • max_loss

          string — The maximum amount of packet loss. For example, the maximum percentage of packets that fail to arrive at their destination.

        • resolution

          string — The number of pixels in each dimension that can be displayed by your video camera.

      • as_input

        object — Information about the session's screen share QoS (quality of service).

        • avg_loss

          string — The average amount of packet loss. For example, the percentage of packets that fail to arrive at their destination.

        • bitrate

          string — The number of bits per second that can be transmitted along a digital network, in Kbps.

        • frame_rate

          string — The frame rate at which your video camera can produce unique images. Zoom supports a frame rate of up to 30fps.

        • jitter

          string — The variation in the delay of received packets, in milliseconds.

        • latency

          string — The time it takes for a packet to travel from point to point, in milliseconds.

        • max_loss

          string — The maximum amount of packet loss. For example, the maximum percentage of packets that fail to arrive at their destination.

        • resolution

          string — The number of pixels in each dimension that can be displayed by your video camera.

      • as_output

        object — Information about the session's screen share QoS (quality of service).

        • avg_loss

          string — The average amount of packet loss. For example, the percentage of packets that fail to arrive at their destination.

        • bitrate

          string — The number of bits per second that can be transmitted along a digital network, in Kbps.

        • frame_rate

          string — The frame rate at which your video camera can produce unique images. Zoom supports a frame rate of up to 30fps.

        • jitter

          string — The variation in the delay of received packets, in milliseconds.

        • latency

          string — The time it takes for a packet to travel from point to point, in milliseconds.

        • max_loss

          string — The maximum amount of packet loss. For example, the maximum percentage of packets that fail to arrive at their destination.

        • resolution

          string — The number of pixels in each dimension that can be displayed by your video camera.

      • audio_device_from_rwg

        object — Information about the session's audio quality of service (QoS) sent by a participant who joined the meeting via the web client.

        • avg_loss

          string — The average amount of packet loss. For example, the percentage of packets that fail to arrive at their destination.

        • bitrate

          string — The number of bits per second that can be transmitted along a digital network, in Kbps.

        • jitter

          string — The variation in the delay of received packets, in milliseconds.

        • latency

          string — The time it takes for a packet to travel from point to point, in milliseconds.

        • max_loss

          string — The maximum amount of packet loss. For example, the maximum percentage of packets that fail to arrive at their destination.

      • audio_device_to_rwg

        object — Information about the session's audio quality of service (QoS) received by a participant who joined the meeting via the web client.

        • avg_loss

          string — The average amount of packet loss. For example, the percentage of packets that fail to arrive at their destination.

        • bitrate

          string — The number of bits per second that can be transmitted along a digital network, in Kbps.

        • jitter

          string — The variation in the delay of received packets, in milliseconds.

        • latency

          string — The time it takes for a packet to travel from point to point, in milliseconds.

        • max_loss

          string — The maximum amount of packet loss. For example, the maximum percentage of packets that fail to arrive at their destination.

      • audio_input

        object — Information about the session's audio quality of service (QoS).

        • avg_loss

          string — The average amount of packet loss. For example, the percentage of packets that fail to arrive at their destination.

        • bitrate

          string — The number of bits per second that can be transmitted along a digital network, in Kbps.

        • jitter

          string — The variation in the delay of received packets, in milliseconds.

        • latency

          string — The time it takes for a packet to travel from point to point, in milliseconds.

        • max_loss

          string — The maximum amount of packet loss. For example, the maximum percentage of packets that fail to arrive at their destination.

      • audio_output

        object — Information about the session's audio quality of service (QoS).

        • avg_loss

          string — The average amount of packet loss. For example, the percentage of packets that fail to arrive at their destination.

        • bitrate

          string — The number of bits per second that can be transmitted along a digital network, in Kbps.

        • jitter

          string — The variation in the delay of received packets, in milliseconds.

        • latency

          string — The time it takes for a packet to travel from point to point, in milliseconds.

        • max_loss

          string — The maximum amount of packet loss. For example, the maximum percentage of packets that fail to arrive at their destination.

      • cpu_pressure_level

        object — The CPU pressure level of the system.

        • system_avg_cpu_pressure_level

          string, possible values: "normal", "fair", "serious", "critical" — The average CPU pressure level of the system.

        • system_max_cpu_pressure_level

          string, possible values: "critical", "serious", "fair", "normal" — The maximum CPU pressure level of the system.

        • system_min_cpu_pressure_level

          string, possible values: "normal", "fair", "serious", "critical" — The minimum CPU pressure level of the system.

      • cpu_usage

        object — Information about CPU usage.

        • system_max_cpu_usage

          string — The system's maximum CPU usage.

        • zoom_avg_cpu_usage

          string — Zoom's average CPU usage.

        • zoom_max_cpu_usage

          string — Zoom's maximum CPU usage.

        • zoom_min_cpu_usage

          string — Zoom's minimum CPU usage.

      • date_time

        string, format: date-time — The QoS date.

      • video_device_from_rwg

        object — Information about the session's video quality of service (QoS) sent by a participant who joined the meeting via the web client.

        • avg_loss

          string — The average amount of packet loss. For example, the percentage of packets that fail to arrive at their destination.

        • bitrate

          string — The number of bits per second that can be transmitted along a digital network, in Kbps.

        • frame_rate

          string — The frame rate at which your video camera can produce unique images. Zoom supports a frame rate of up to 30 fps.

        • jitter

          string — The variation in the delay of received packets, in milliseconds.

        • latency

          string — The time it takes for a packet to travel from point to point, in milliseconds.

        • max_loss

          string — The maximum amount of packet loss. For example, the maximum percentage of packets that fail to arrive at their destination.

        • resolution

          string — The number of pixels in each dimension that can be displayed by your video camera.

      • video_device_to_rwg

        object — Information about the session's video quality of service (QoS) received by a participant who joined the meeting via the web client.

        • avg_loss

          string — The average amount of packet loss. For example, the percentage of packets that fail to arrive at their destination.

        • bitrate

          string — The number of bits per second that can be transmitted along a digital network, in Kbps.

        • frame_rate

          string — The frame rate at which your video camera can produce unique images. Zoom supports a frame rate of up to 30 fps.

        • jitter

          string — The variation in the delay of received packets, in milliseconds.

        • latency

          string — The time it takes for a packet to travel from point to point, in milliseconds.

        • max_loss

          string — The maximum amount of packet loss. For example, the maximum percentage of packets that fail to arrive at their destination.

        • resolution

          string — The number of pixels in each dimension that can be displayed by your video camera.

      • video_input

        object — Information about the session's video quality of service (QoS).

        • avg_loss

          string — The average amount of packet loss. For example, the percentage of packets that fail to arrive at their destination.

        • bitrate

          string — The number of bits per second that can be transmitted along a digital network, in Kbps.

        • frame_rate

          string — The frame rate at which your video camera can produce unique images. Zoom supports a frame rate of up to 30 fps.

        • jitter

          string — The variation in the delay of received packets, in milliseconds.

        • latency

          string — The time it takes for a packet to travel from point to point, in milliseconds.

        • max_loss

          string — The maximum amount of packet loss. For example, the maximum percentage of packets that fail to arrive at their destination.

        • resolution

          string — The number of pixels in each dimension that can be displayed by your video camera.

      • video_output

        object — Information about the session's video quality of service (QoS).

        • avg_loss

          string — The average amount of packet loss. For example, the percentage of packets that fail to arrive at their destination.

        • bitrate

          string — The number of bits per second that can be transmitted along a digital network, in Kbps.

        • frame_rate

          string — The frame rate at which your video camera can produce unique images. Zoom supports a frame rate of up to 30 fps.

        • jitter

          string — The variation in the delay of received packets, in milliseconds.

        • latency

          string — The time it takes for a packet to travel from point to point, in milliseconds.

        • max_loss

          string — The maximum amount of packet loss. For example, the maximum percentage of packets that fail to arrive at their destination.

        • resolution

          string — The number of pixels in each dimension that can be displayed by your video camera.

      • wifi_rssi

        object — The QoS metrics for the wireless network's RSSI sent by a participant who joined the meeting through a wireless network.

        • avg_rssi

          integer — Average value of the wireless network's received signal strength indicator (RSSI).

        • max_rssi

          integer — Maximum value of the wireless network's received signal strength indicator (RSSI).

        • min_rssi

          integer — Minimum value of the wireless network's received signal strength indicator (RSSI).

        • rssi_unit

          string — Unit of the wireless network's received signal strength indicator (RSSI).

Example:

{
  "page_size": 1,
  "next_page_token": "1cyhUewZa419P9F8QUYURck0U3rFWB0d1H2",
  "users": [
    {
      "id": "1670000000",
      "name": "User",
      "device": "Android",
      "client": "Web Meeting SDK 2.18",
      "os": "iOS",
      "os_version": "16.5",
      "browser_name": "Firefox",
      "browser_version": "133",
      "ip_address": "192.0.2.0",
      "location": "San Jose (US)",
      "network_type": "Wifi",
      "microphone": "Plantronics BT600",
      "speaker": "Plantronics BT600",
      "camera": "FaceTime HD Camera",
      "data_center": "SC",
      "connection_type": "P2P",
      "join_time": "2019-08-20T19:09:01Z",
      "leave_time": "2019-08-20T19:19:01Z",
      "user_key": "myUserKey",
      "is_original_host": false,
      "user_qos": [
        {
          "date_time": "2019-08-20T19:19:01Z",
          "audio_input": {
            "bitrate": "23 kbps",
            "latency": "126 ms",
            "jitter": "6 ms",
            "avg_loss": "0.3%",
            "max_loss": "1.9%"
          },
          "audio_output": {
            "bitrate": "23 kbps",
            "latency": "126 ms",
            "jitter": "6 ms",
            "avg_loss": "0.3%",
            "max_loss": "1.9%"
          },
          "video_input": {
            "bitrate": "23 kbps",
            "latency": "126 ms",
            "jitter": "6 ms",
            "avg_loss": "0.3%",
            "max_loss": "1.9%",
            "resolution": "1280*720",
            "frame_rate": "12 fps"
          },
          "video_output": {
            "bitrate": "23 kbps",
            "latency": "126 ms",
            "jitter": "6 ms",
            "avg_loss": "0.3%",
            "max_loss": "1.9%",
            "resolution": "1280*720",
            "frame_rate": "12 fps"
          },
          "as_input": {
            "bitrate": "23 Kbps",
            "latency": "126 ms",
            "jitter": "6 ms",
            "avg_loss": "0.3%",
            "max_loss": "1.9%",
            "resolution": "1280*720",
            "frame_rate": "12 fps"
          },
          "as_output": {
            "bitrate": "23 Kbps",
            "latency": "126 ms",
            "jitter": "6 ms",
            "avg_loss": "0.3%",
            "max_loss": "1.9%",
            "resolution": "1280*720",
            "frame_rate": "12 fps"
          },
          "audio_device_from_rwg": {
            "bitrate": "23 kbps",
            "latency": "126 ms",
            "jitter": "6 ms",
            "avg_loss": "0.3%",
            "max_loss": "1.9%"
          },
          "audio_device_to_rwg": {
            "bitrate": "23 kbps",
            "latency": "126 ms",
            "jitter": "6 ms",
            "avg_loss": "0.3%",
            "max_loss": "1.9%"
          },
          "video_device_from_rwg": {
            "bitrate": "23 kbps",
            "latency": "126 ms",
            "jitter": "6 ms",
            "avg_loss": "0.3%",
            "max_loss": "1.9%",
            "resolution": "1280*720",
            "frame_rate": "12 fps"
          },
          "video_device_to_rwg": {
            "bitrate": "23 kbps",
            "latency": "126 ms",
            "jitter": "6 ms",
            "avg_loss": "0.3%",
            "max_loss": "1.9%",
            "resolution": "1280*720",
            "frame_rate": "12 fps"
          },
          "as_device_from_rwg": {
            "bitrate": "23 Kbps",
            "latency": "126 ms",
            "jitter": "6 ms",
            "avg_loss": "0.3%",
            "max_loss": "1.9%",
            "resolution": "1280*720",
            "frame_rate": "12 fps"
          },
          "as_device_to_rwg": {
            "bitrate": "23 Kbps",
            "latency": "126 ms",
            "jitter": "6 ms",
            "avg_loss": "0.3%",
            "max_loss": "1.9%",
            "resolution": "1280*720",
            "frame_rate": "12 fps"
          },
          "wifi_rssi": {
            "max_rssi": -75,
            "avg_rssi": -69,
            "min_rssi": -35,
            "rssi_unit": "dBm"
          },
          "cpu_usage": {
            "zoom_min_cpu_usage": "8%",
            "zoom_avg_cpu_usage": "12%",
            "zoom_max_cpu_usage": "18%",
            "system_max_cpu_usage": "40%"
          },
          "cpu_pressure_level": {
            "system_min_cpu_pressure_level": "normal",
            "system_avg_cpu_pressure_level": "normal",
            "system_max_cpu_pressure_level": "normal"
          }
        }
      ]
    }
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> This API is only available for Video SDK accounts. <br> **Error Code:** `12702` <br> Can not access a session a year ago. <br>
Status: 401 **HTTP Status Code:** `401` <br> Unauthorized
Status: 403 **HTTP Status Code:** `403` <br> Forbidden
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> This session's detail info is not available.<br>The Session ID is not valid or the session has not ended yet. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rate-limits/).

Get sharing/recording details

  • Method: GET
  • Path: /accounts/{accountId}/videosdk/sessions/{sessionId}/users/sharing
  • Tags: Sessions

Retrieve the sharing and recording details of participants from live or past sessions.

Prerequisites:

  • A Video SDK Account.

Rate Limit Label: HEAVY

Responses

Status: 200 **HTTP Status Code:** `200` Session user share returned.
Content-Type: application/json
  • next_page_token

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

  • page_size

    integer, default: 1 — The number of items per page.

  • users

    array — Array of users

    Items:

    • details

      array — Array of users

      Items:

      • content

        string, possible values: "local_recording", "cloud_recording", "desktop", "application", "whiteboard", "airplay", "camera", "video_sdk" — Type of content shared.

      • end_time

        string — End time of sharing.

      • start_time

        string — Start time of sharing.

    • id

      string — The user's ID.

    • name

      string — The user's display name.

    • user_key

      string — Another identifier for the user. Set with the user_identity key in the Video SDK JWT payload. Can be a number or characters. Maximum length of 36 characters.

Example:

{
  "page_size": 1,
  "next_page_token": "1cyhUewZa419P9F8QUYURck0U3rFWB0d1H2",
  "users": [
    {
      "id": "1670000000",
      "name": "User",
      "user_key": "myUserKey",
      "details": [
        {
          "content": "desktop",
          "start_time": "2021-06-17T06:49:06Z",
          "end_time": "2021-06-17T06:49:35Z"
        }
      ]
    }
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> This API is only available for Video SDK accounts. <br> **Error Code:** `12702` <br> Can not access a session a year ago. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> This session's detail info is not available.<br>This session has not ended yet or the Session ID is invalid. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Get session user QoS

  • Method: GET
  • Path: /accounts/{accountId}/videosdk/sessions/{sessionId}/users/{userId}/qos
  • Tags: Sessions

Retrieve the quality of service (QoS) for users from live or past sessions. The data returned indicates the connection quality for sending and receiving video, audio, and shared content. For a session that has started and is ongoing, the API returns live session data. If the session has ended, the API returns the past session data.

  • This API will not return data if there is no data being sent or received at the time of request.

Rate Limit Label: HEAVY

Responses

Status: 200 **HTTP Status Code:** `200` Session user QOS returned.
Content-Type: application/json
  • browser_name

    string — Web client browser name.

  • browser_version

    string — Web client browser version.

  • camera

    string — The type of camera that the user used during the session.

  • client

    string — Client software or SDK version.

  • connection_type

    string — The user's connection type.

  • data_center

    string — The data center where user's session data is stored. See [Datacenter abbreviation list](https://support.zoom.us/hc/en-us/articles/360059254691-Datacenter-abbreviation-list) for details.

  • device

    string, possible values: "Phone", "H.323/SIP", "Windows", "Mac", "iOS", "Android" — The type of device used to join the session. * `Phone` - The user joined via PSTN. * `H.323/SIP` - The user joined via an H.323 or SIP device. * `Windows` - The user joined via Voice over IP (VoIP) using a Windows device. * `Mac` - The user joined via VoIP using a Mac device. * `iOS` - The user joined via VoIP using an iOS device. * `Android` - The user joined via VoIP using an Android device. * `""` - An external user.

  • id

    string — The user's ID.

  • ip_address

    string — The user's IP address.

  • is_original_host

    boolean — Whether the current user is the original host of this session.

  • join_time

    string, format: date-time — The time at which the user joined the session.

  • leave_time

    string, format: date-time — The time at which the user left the session.

  • location

    string — The user's location.

  • microphone

    string — The type of microphone that the user used during the session.

  • name

    string — The user's display name.

  • network_type

    string, possible values: "Wired", "Wifi", "PPP", "Cellular", "Others" — The user's network type. * `Wired` * `Wifi` * `PPP` - Point-to-Point. * `Cellular` - 3G, 4G, and 5G cellular. * `Others` - An unknown device.

  • os

    string — Device operation system.

  • os_version

    string — Device operation system version.

  • speaker

    string — The type of speaker that the user used during the session.

  • user_key

    string — Another identifier for the user. Set with the user_identity key in the Video SDK JWT payload. Can be a number or characters. Maximum length of 36 characters.

  • user_qos

    array — The QoS (quality of service) provided to the user.

    Items:

    • as_device_from_rwg

      object — Information about the session's screen share QoS (quality of service) sent by a user who joined the session via the web client.

      • avg_loss

        string — The average amount of packet loss. For example, the percentage of packets that fail to arrive at their destination.

      • bitrate

        string — The number of bits per second that can be transmitted along a digital network, in Kbps.

      • frame_rate

        string — The frame rate at which your video camera can produce unique images. Zoom supports a frame rate of up to 30 frames per second (FPS).

      • jitter

        string — The variation in the delay of received packets, in milliseconds.

      • latency

        string — The time it takes for a packet to travel from point to point, in milliseconds.

      • max_loss

        string — The maximum amount of packet loss. For example, the maximum percentage of packets that fail to arrive at their destination.

      • resolution

        string — The number of pixels in each dimension that can be displayed by your video camera.

    • as_device_to_rwg

      object — Information about the session's screen share QoS (quality of service) received by a user who joined the session via the web client.

      • avg_loss

        string — The average amount of packet loss. For example, the percentage of packets that fail to arrive at their destination.

      • bitrate

        string — The number of bits per second that can be transmitted along a digital network, in Kbps.

      • frame_rate

        string — The frame rate at which your video camera can produce unique images. Zoom supports a frame rate of up to 30fps.

      • jitter

        string — The variation in the delay of received packets, in milliseconds.

      • latency

        string — The time it takes for a packet to travel from point to point, in milliseconds.

      • max_loss

        string — The maximum amount of packet loss. For example, the maximum percentage of packets that fail to arrive at their destination.

      • resolution

        string — The number of pixels in each dimension that can be displayed by your video camera.

    • as_input

      object — Information about the session's screen share QoS (quality of service).

      • avg_loss

        string — The average amount of packet loss. For example, the percentage of packets that fail to arrive at their destination.

      • bitrate

        string — The number of bits per second that can be transmitted along a digital network, in Kbps.

      • frame_rate

        string — The frame rate at which your video camera can produce unique images. Zoom supports a frame rate of up to 30 frames per second (FPS).

      • jitter

        string — The variation in the delay of received packets, in milliseconds.

      • latency

        string — The time it takes for a packet to travel from point to point, in milliseconds.

      • max_loss

        string — The maximum amount of packet loss. For example, the maximum percentage of packets that fail to arrive at their destination.

      • resolution

        string — The number of pixels in each dimension that can be displayed by your video camera.

    • as_output

      object — Information about the session's screen share QoS (quality of service).

      • avg_loss

        string — The average amount of packet loss. For example, the percentage of packets that fail to arrive at their destination.

      • bitrate

        string — The number of bits per second that can be transmitted along a digital network, in Kbps.

      • frame_rate

        string — The frame rate at which your video camera can produce unique images. Zoom supports a frame rate of up to 30 frames per second (FPS).

      • jitter

        string — The variation in the delay of received packets, in milliseconds.

      • latency

        string — The time it takes for a packet to travel from point to point, in milliseconds.

      • max_loss

        string — The maximum amount of packet loss. For example, the maximum percentage of packets that fail to arrive at their destination.

      • resolution

        string — The number of pixels in each dimension that can be displayed by your video camera.

    • audio_device_from_rwg

      object — Information about the session's audio quality of service (QoS) sent by a user who joined the session via the web client.

      • avg_loss

        string — The average amount of packet loss. For example, the percentage of packets that fail to arrive at their destination.

      • bitrate

        string — The number of bits per second that can be transmitted along a digital network, in Kbps.

      • jitter

        string — The variation in the delay of received packets, in milliseconds.

      • latency

        string — The time it takes for a packet to travel from point to point, in milliseconds.

      • max_loss

        string — The maximum amount of packet loss. For example, the maximum percentage of packets that fail to arrive at their destination.

    • audio_device_to_rwg

      object — Information about the session's audio quality of service (QoS) received by a user who joined the session via the web client.

      • avg_loss

        string — The average amount of packet loss. For example, the percentage of packets that fail to arrive at their destination.

      • bitrate

        string — The number of bits per second that can be transmitted along a digital network, in Kbps.

      • jitter

        string — The variation in the delay of received packets, in milliseconds.

      • latency

        string — The time it takes for a packet to travel from point to point, in milliseconds.

      • max_loss

        string — The maximum amount of packet loss. For example, the maximum percentage of packets that fail to arrive at their destination.

    • audio_input

      object — Information about the session's audio quality of service (QoS).

      • avg_loss

        string — The average amount of packet loss. For example, the percentage of packets that fail to arrive at their destination.

      • bitrate

        string — The number of bits per second that can be transmitted along a digital network, in Kbps.

      • jitter

        string — The variation in the delay of received packets, in milliseconds.

      • latency

        string — The time it takes for a packet to travel from point to point, in milliseconds.

      • max_loss

        string — The maximum amount of packet loss. For example, the maximum percentage of packets that fail to arrive at their destination.

    • audio_output

      object — Information about the session's audio quality of service (QoS).

      • avg_loss

        string — The average amount of packet loss. For example, the percentage of packets that fail to arrive at their destination.

      • bitrate

        string — The number of bits per second that can be transmitted along a digital network, in Kbps.

      • jitter

        string — The variation in the delay of received packets, in milliseconds.

      • latency

        string — The time it takes for a packet to travel from point to point, in milliseconds.

      • max_loss

        string — The maximum amount of packet loss. For example, the maximum percentage of packets that fail to arrive at their destination.

    • cpu_pressure_level

      object — The CPU pressure level of the system.

      • system_avg_cpu_pressure_level

        string, possible values: "normal", "fair", "serious", "critical" — The average CPU pressure level of the system.

      • system_max_cpu_pressure_level

        string, possible values: "critical", "serious", "fair", "normal" — The maximum CPU pressure level of the system.

      • system_min_cpu_pressure_level

        string, possible values: "normal", "fair", "serious", "critical" — The minimum CPU pressure level of the system.

    • cpu_usage

      object — Information about CPU usage.

      • system_max_cpu_usage

        string — The system's maximum CPU usage.

      • zoom_avg_cpu_usage

        string — Zoom's average CPU usage.

      • zoom_max_cpu_usage

        string — Zoom's maximum CPU usage.

      • zoom_min_cpu_usage

        string — Zoom's minimum CPU usage.

    • date_time

      string, format: date-time — The QoS date.

    • video_device_from_rwg

      object — Information about the session's video quality of service (QoS) sent by a user who joined the session via the web client.

      • avg_loss

        string — The average amount of packet loss. For example, the percentage of packets that fail to arrive at their destination.

      • bitrate

        string — The number of bits per second that can be transmitted along a digital network, in Kbps.

      • frame_rate

        string — The frame rate at which your video camera can produce unique images. Zoom supports a frame rate of up to 30 frames per second (FPS).

      • jitter

        string — The variation in the delay of received packets, in milliseconds.

      • latency

        string — The time it takes for a packet to travel from point to point, in milliseconds.

      • max_loss

        string — The maximum amount of packet loss. For example, the maximum percentage of packets that fail to arrive at their destination.

      • resolution

        string — The number of pixels in each dimension that can be displayed by your video camera.

    • video_device_to_rwg

      object — Information about the session's video quality of service (QoS) received by a user who joined the session via the web client.

      • avg_loss

        string — The average amount of packet loss. For example, the percentage of packets that fail to arrive at their destination.

      • bitrate

        string — The number of bits per second that can be transmitted along a digital network, in Kbps.

      • frame_rate

        string — The frame rate at which your video camera can produce unique images. Zoom supports a frame rate of up to 30 frames per second (FPS).

      • jitter

        string — The variation in the delay of received packets, in milliseconds.

      • latency

        string — The time it takes for a packet to travel from point to point, in milliseconds.

      • max_loss

        string — The maximum amount of packet loss. For example, the maximum percentage of packets that fail to arrive at their destination.

      • resolution

        string — The number of pixels in each dimension that can be displayed by your video camera.

    • video_input

      object — Information about the session's video quality of service (QoS).

      • avg_loss

        string — The average amount of packet loss. For example, the percentage of packets that fail to arrive at their destination.

      • bitrate

        string — The number of bits per second that can be transmitted along a digital network, in Kbps.

      • frame_rate

        string — The frame rate at which your video camera can produce unique images. Zoom supports a frame rate of up to 30 frames per second (FPS).

      • jitter

        string — The variation in the delay of received packets, in milliseconds.

      • latency

        string — The time it takes for a packet to travel from point to point, in milliseconds.

      • max_loss

        string — The maximum amount of packet loss. For example, the maximum percentage of packets that fail to arrive at their destination.

      • resolution

        string — The number of pixels in each dimension that can be displayed by your video camera.

    • video_output

      object — Information about the session's video quality of service (QoS).

      • avg_loss

        string — The average amount of packet loss. For example, the percentage of packets that fail to arrive at their destination.

      • bitrate

        string — The number of bits per second that can be transmitted along a digital network, in Kbps.

      • frame_rate

        string — The frame rate at which your video camera can produce unique images. Zoom supports a frame rate of up to 30 frames per second (FPS).

      • jitter

        string — The variation in the delay of received packets, in milliseconds.

      • latency

        string — The time it takes for a packet to travel from point to point, in milliseconds.

      • max_loss

        string — The maximum amount of packet loss. For example, the maximum percentage of packets that fail to arrive at their destination.

      • resolution

        string — The number of pixels in each dimension that can be displayed by your video camera.

    • wifi_rssi

      object — The QoS metrics for the wireless network's RSSI sent by a participant who joined the meeting through a wireless network.

      • avg_rssi

        integer — Average value of the wireless network's received signal strength indicator (RSSI).

      • max_rssi

        integer — Maximum value of the wireless network's received signal strength indicator (RSSI).

      • min_rssi

        integer — Minimum value of the wireless network's received signal strength indicator (RSSI).

      • rssi_unit

        string — Unit of the wireless network's received signal strength indicator (RSSI).

Example:

{
  "id": "1670000000",
  "name": "User",
  "device": "Android",
  "os": "iOS",
  "os_version": "16.5",
  "browser_name": "Firefox",
  "browser_version": "133",
  "client": "Web Meeting SDK 2.18",
  "ip_address": "192.0.2.0",
  "location": "San Jose (US)",
  "network_type": "Wifi",
  "microphone": "Plantronics BT600",
  "speaker": "Plantronics BT600",
  "camera": "FaceTime HD Camera",
  "data_center": "SC",
  "connection_type": "P2P",
  "join_time": "2019-08-20T19:09:01Z",
  "leave_time": "2019-08-20T19:19:01Z",
  "user_key": "myUserKey",
  "is_original_host": false,
  "user_qos": [
    {
      "date_time": "2019-08-20T19:19:01Z",
      "audio_input": {
        "bitrate": "23 kbps",
        "latency": "126 ms",
        "jitter": "6 ms",
        "avg_loss": "0.3%",
        "max_loss": "1.9%"
      },
      "audio_output": {
        "bitrate": "23 kbps",
        "latency": "126 ms",
        "jitter": "6 ms",
        "avg_loss": "0.3%",
        "max_loss": "1.9%"
      },
      "video_input": {
        "bitrate": "23 kbps",
        "latency": "126 ms",
        "jitter": "6 ms",
        "avg_loss": "0.3%",
        "max_loss": "1.9%",
        "resolution": "1280*720",
        "frame_rate": "12 fps"
      },
      "video_output": {
        "bitrate": "23 kbps",
        "latency": "126 ms",
        "jitter": "6 ms",
        "avg_loss": "0.3%",
        "max_loss": "1.9%",
        "resolution": "1280*720",
        "frame_rate": "12 fps"
      },
      "as_input": {
        "bitrate": "23 kbps",
        "latency": "126 ms",
        "jitter": "6 ms",
        "avg_loss": "0.3%",
        "max_loss": "1.9%",
        "resolution": "1280*720",
        "frame_rate": "12 fps"
      },
      "as_output": {
        "bitrate": "23 kbps",
        "latency": "126 ms",
        "jitter": "6 ms",
        "avg_loss": "0.3%",
        "max_loss": "1.9%",
        "resolution": "1280*720",
        "frame_rate": "12 fps"
      },
      "audio_device_from_rwg": {
        "bitrate": "23 kbps",
        "latency": "126 ms",
        "jitter": "6 ms",
        "avg_loss": "0.3%",
        "max_loss": "1.9%"
      },
      "audio_device_to_rwg": {
        "bitrate": "23 kbps",
        "latency": "126 ms",
        "jitter": "6 ms",
        "avg_loss": "0.3%",
        "max_loss": "1.9%"
      },
      "video_device_from_rwg": {
        "bitrate": "23 kbps",
        "latency": "126 ms",
        "jitter": "6 ms",
        "avg_loss": "0.3%",
        "max_loss": "1.9%",
        "resolution": "1280*720",
        "frame_rate": "12 fps"
      },
      "video_device_to_rwg": {
        "bitrate": "23 kbps",
        "latency": "126 ms",
        "jitter": "6 ms",
        "avg_loss": "0.3%",
        "max_loss": "1.9%",
        "resolution": "1280*720",
        "frame_rate": "12 fps"
      },
      "as_device_from_rwg": {
        "bitrate": "23 kbps",
        "latency": "126 ms",
        "jitter": "6 ms",
        "avg_loss": "0.3%",
        "max_loss": "1.9%",
        "resolution": "1280*720",
        "frame_rate": "12 fps"
      },
      "as_device_to_rwg": {
        "bitrate": "23 kbps",
        "latency": "126 ms",
        "jitter": "6 ms",
        "avg_loss": "0.3%",
        "max_loss": "1.9%",
        "resolution": "1280*720",
        "frame_rate": "12 fps"
      },
      "wifi_rssi": {
        "max_rssi": -75,
        "avg_rssi": -69,
        "min_rssi": -35,
        "rssi_unit": "dBm"
      },
      "cpu_usage": {
        "zoom_min_cpu_usage": "8%",
        "zoom_avg_cpu_usage": "12%",
        "zoom_max_cpu_usage": "18%",
        "system_max_cpu_usage": "40%"
      },
      "cpu_pressure_level": {
        "system_min_cpu_pressure_level": "normal",
        "system_avg_cpu_pressure_level": "normal",
        "system_max_cpu_pressure_level": "normal"
      }
    }
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> This API is only available for Video SDK accounts. <br> **Error Code:** `12702` <br> Can not access a session a year ago. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `3001` <br> This session's detail info is not available.<br>This session has not ended yet or the Session ID is invalid. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

List stream ingestions

  • Method: GET
  • Path: /accounts/{accountId}/videosdk/stream_ingestions
  • Tags: Sessions

List all the stream ingestions on your Zoom account.

Prerequisites:

  • A Video SDK account.

Rate Limit Label: LIGHT

Responses

Status: 200 **HTTP Status Code:** `200` Stream ingestion list returned.
Content-Type: application/json
  • next_page_token

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

  • page_size

    integer, default: 30 — The number of records returned with a single API call.

  • stream_ingestions

    array — Stream ingestion list.

    Items:

    • backup_stream_url

      string — The backup stream URL.

    • stream_description

      string — The stream ingestion description.

    • stream_id

      string — The stream ingestion ID.

    • stream_key

      string — The stream ingestion key.

    • stream_name

      string — The stream ingestion name.

    • stream_url

      string — The stream URL.

Example:

{
  "page_size": 30,
  "next_page_token": "Tva2CuIdTgsv8wAnhyAdU3m06Y2HuLQtlh3",
  "stream_ingestions": [
    {
      "stream_id": "sfk/aOFJSJSYhGwk1hnxgw==",
      "stream_name": "stream ingestion1",
      "stream_description": "stream ingestion1",
      "stream_key": "ABCDEFG12345HIJ6789",
      "stream_url": "rtmp://a.rtmp.zoomevent.com/live1",
      "backup_stream_url": "rtmp://a.rtmp.zoomevent.com/live1"
    }
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> This API is only available for Video SDK accounts. <br> **Error Code:** `34014` <br> Failed to list the stream ingestions. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rate-limits/).

Create a stream ingestion

  • Method: POST
  • Path: /accounts/{accountId}/videosdk/stream_ingestions
  • Tags: Sessions

Create a stream ingestion. A stream ingestion is a unique identifier used to establish a connection between an external streaming source (such as a third-party live streaming app) and the Zoom streaming platform. Once you've created a stream ingestion, you can bind it to your video session, so you can integrate the video feeds from the streaming source into your live video session, for a more immersive experience. You can create up to 20 stream ingestions.

Prerequisites:

  • A Video SDK account.

Rate Limit Label: LIGHT

Request Body

Content-Type: application/json
  • stream_name (required)

    string — The stream ingestion name.

  • stream_description

    string — The stream ingestion description.

Example:

{
  "stream_name": "stream ingestion1",
  "stream_description": "stream ingestion1"
}

Responses

Status: 201 **HTTP Status Code:** `201` Stream ingestion created.
Content-Type: application/json
  • backup_stream_url

    string — The backup stream URL.

  • stream_description

    string — The stream ingestion description.

  • stream_id

    string — The stream ingestion ID.

  • stream_key

    string — The stream ingestion key.

  • stream_name

    string — The stream ingestion name.

  • stream_url

    string — The stream URL.

Example:

{
  "stream_id": "sfk/aOFJSJSYhGwk1hnxgw==",
  "stream_name": "stream ingestion1",
  "stream_description": "stream ingestion1",
  "stream_key": "ABCDEFG12345HIJ6789",
  "stream_url": "rtmp://a.rtmp.zoomevent.com/live1",
  "backup_stream_url": "rtmp://a.rtmp.zoomevent.com/live1"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `34016` <br> You can only create up to 20 stream ingestions. <br> **Error Code:** `200` <br> This API is only available for Video SDK accounts. <br> **Error Code:** `34011` <br> Failed to create the stream ingestion. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rate-limits/).

Get a stream ingestion

  • Method: GET
  • Path: /accounts/{accountId}/videosdk/stream_ingestions/{streamId}
  • Tags: Sessions

Get information about a stream ingestion.

Prerequisites:

  • A Video SDK account.

Rate Limit Label: LIGHT

Responses

Status: 200 **HTTP Status Code:** `200` Stream ingestion object returned.
Content-Type: application/json
  • backup_stream_url

    string — The backup stream URL.

  • stream_description

    string — The stream ingestion description.

  • stream_id

    string — The stream ingestion ID.

  • stream_key

    string — The stream ingestion key.

  • stream_name

    string — The stream ingestion name.

  • stream_url

    string — The stream URL.

Example:

{
  "stream_id": "sfk/aOFJSJSYhGwk1hnxgw==",
  "stream_name": "stream ingestion1",
  "stream_description": "stream ingestion1",
  "stream_key": "ABCDEFG12345HIJ6789",
  "stream_url": "rtmp://a.rtmp.zoomevent.com/live1",
  "backup_stream_url": "rtmp://a.rtmp.zoomevent.com/live1"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> This API is only available for Video SDK accounts. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `34001` <br> Stream ingestion does not exist: {streamId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rate-limits/).

Delete a stream ingestion

  • Method: DELETE
  • Path: /accounts/{accountId}/videosdk/stream_ingestions/{streamId}
  • Tags: Sessions

Delete a stream ingestion.

Prerequisites:

  • A Video SDK account.

Rate Limit Label: LIGHT

Responses

Status: 204 **HTTP Status Code:** `204` Stream ingestion deleted.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> This API is only available for Video SDK accounts. <br> **Error Code:** `34015` <br> You cannot delete a steam ingestion that is in use. <br> **Error Code:** `34012` <br> Failed to delete the stream ingestion. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `34001` <br> Stream ingestion does not exist: {streamId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rate-limits/).

Update a stream ingestion

  • Method: PATCH
  • Path: /accounts/{accountId}/videosdk/stream_ingestions/{streamId}
  • Tags: Sessions

Update a stream ingestion.

Prerequisites:

  • A Video SDK account.

Rate Limit Label: LIGHT

Request Body

Content-Type: application/json
  • stream_description

    string — The stream ingestion description.

  • stream_name

    string — The stream ingestion name.

Example:

{
  "stream_name": "stream ingestion1",
  "stream_description": "stream ingestion1"
}

Responses

Status: 204 **HTTP Status Code:** `204` Stream ingestion updated.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `200` <br> This API is only available for Video SDK accounts. <br> **Error Code:** `34013` <br> Failed to update the stream ingestion. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `34001` <br> Stream ingestion does not exist: {streamId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rate-limits/).

Get cloud recording usage report

  • Method: GET
  • Path: /accounts/{accountId}/videosdk/report/cloud_recording
  • Tags: Video SDK Reports

Retrieve cloud recording usage report for a specified period. You can only get cloud recording reports for up to 6 months prior to the current date. The date gap between from and to dates should be smaller or equal to 30 days.

Prerequisites

  • A Video SDK account.

Rate Limit Label: HEAVY

Responses

Status: 200 **HTTP Status Code:** `200` Clound recording report returned.
Content-Type: application/json
  • cloud_recording_storage

    array — Array of cloud usage objects.

    Items:

    • date

      string, format: date — Date of usage.

    • free_usage

      string — Free storage.

    • plan_usage

      string — Paid storage.

    • usage

      string — Storage used on the date.

  • from

    string, format: date — Start date for this report.

  • to

    string, format: date — End date for this report.

Example:

{
  "from": "2021-12-01",
  "to": "2021-12-02",
  "cloud_recording_storage": [
    {
      "date": "2021-12-01",
      "usage": "29 MB",
      "plan_usage": "1 GB",
      "free_usage": "1 GB"
    }
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Daily report can only be provided within 6 months prior to the current date. <br> **Error Code:** `200` <br> This API is only available for Video SDK accounts. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).

Get daily usage report

  • Method: GET
  • Path: /accounts/{accountId}/videosdk/report/daily
  • Tags: Video SDK Reports

Get daily report of the account-wide usage of Zoom services for each day in a given month. It lists the number of sessions, users, and session minutes.

Prerequisites

  • A Video SDK account.

Rate Limit Label: HEAVY

Responses

Status: 200 **HTTP Status Code:** `200` Daily report retrieved.
Content-Type: application/json
  • dates

    array — Array of date objects.

    Items:

    • date

      string, format: date — Date for this object.

    • session_minutes

      integer — Number of session minutes on this date.

    • sessions

      integer — Number of sessions on this date.

    • users

      integer — Number of participants on this date.

  • month

    integer — Month for this report.

  • year

    integer — Year for this report.

Example:

{
  "year": 2021,
  "month": 12,
  "dates": [
    {
      "date": "2021-12-01",
      "sessions": 20,
      "users": 80,
      "session_minutes": 380
    }
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Daily report can only be provided within 6 months prior to the current date. <br> **Error Code:** `200` <br> This API is only available for Video SDK accounts. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rate-limits/).

Get operation logs report

  • Method: GET
  • Path: /accounts/{accountId}/videosdk/report/operationlogs
  • Tags: Video SDK Reports

Get operation logs report for a specified period of time. The operations logs report allows you to audit admin and user activity, such as changing account settings, and deleting recordings. See Using Admin Activity Logs for similar usage in Zoom Meetings.

Prerequisites

  • A Video SDK account.

Rate Limit Label: HEAVY

Responses

Status: 200 **HTTP Status Code:** `200` Operation Logs Report Returned.
Content-Type: application/json
  • from

    string, format: date — Start date for this report.

  • next_page_token

    string — Use the next page token to paginate through large result sets. Zoom returns a next page token whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes.

  • operation_logs

    array — Array of operation log objects

    Items:

    • action

      string — Action taken.

    • category_type

      string — Category type.

    • operation_detail

      string — Operation detail.

    • operator

      string — The user who performed the operation.

    • time

      string, format: date-time — The time when the operation was performed.

  • page_size

    integer, default: 30 — The number of records returned within a single API call.

  • to

    string, format: date — End date for this report.

Example:

{
  "page_size": 30,
  "next_page_token": "suQA5LvDBnH5No5OYD7mqpJuFzJqUOHK8U2",
  "from": "2021-12-01",
  "to": "2021-12-02",
  "operation_logs": [
    {
      "time": "2019-08-20T19:09:01Z",
      "operator": "someuser@sfksfhksdfsf.com",
      "category_type": "User",
      "action": "update",
      "operation_detail": "Activate User sjkfhdsf@jdfgkhgd.com"
    }
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Daily report can only be provided within 6 months prior to the current date. <br> **Error Code:** `200` <br> This API is only available for Video SDK accounts. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rate-limits/).

Get telephone report

  • Method: GET
  • Path: /accounts/{accountId}/videosdk/report/telephone
  • Tags: Video SDK Reports

Get the telephone report for a specified period of time. The telephone report allows you to view who dialed into sessions via phone (Audio Conferencing or SIP Connected Audio), which number they dialed into, and other details. See Accessing audio conferencing reports for similar usage in Zoom Meetings.

Prerequisites

  • A Video SDK account.

Rate Limit Label: HEAVY

Responses

Status: 200 **HTTP Status Code:** `200` Telephone report returned.
Content-Type: application/json
  • from

    string, format: date — Start date for this report.

  • next_page_token

    string — Use the next page token to paginate through large result sets. Zoom returns a next page token whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes.

  • page_size

    integer, default: 30 — The number of records returned within a single API call.

  • telephony_usage

    array — Array of telephony objects.

    Items:

    • call_in_number

      string — Caller's call-in number.

    • country_name

      string — Country name.

    • duration

      integer — Call leg duration.

    • end_time

      string, format: date-time — Call leg end time.

    • phone_number

      string — Toll-free telephone number.

    • rate

      number — Calling rate for the telephone call.

    • session_id

      string — The session's ID. If the ID begins with a `/` character or contains `//` characters, you must **double-encode** this value.

    • signaled_number

      string — The number that is signaled to Zoom.

    • start_time

      string, format: date-time — Call leg start time.

    • total

      number — Total cost (USD) for Call Out. Calculated as plan rate by duration.

    • type

      string, possible values: "toll-free", "call-out", "call-in", "US toll-number", "global toll-number", "premium", "premium call-in" — Call type.

  • to

    string, format: date — End date for this report.

Example:

{
  "page_size": 30,
  "next_page_token": "suQA5LvDBnH5No5OYD7mqpJuFzJqUOHK8U2",
  "from": "2019-07-15",
  "to": "2019-07-20",
  "telephony_usage": [
    {
      "session_id": "sfk/aOFJSJSYhGwk1hnxgw==",
      "phone_number": "18005555555",
      "signaled_number": "18005555555",
      "start_time": "2019-07-15T23:24:52Z",
      "end_time": "2019-07-15T23:30:19Z",
      "duration": 6,
      "total": 11,
      "country_name": "Macau SAR",
      "call_in_number": "15555555555",
      "type": "toll-free",
      "rate": 12
    }
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Daily report can only be provided within 6 months prior to the current date. <br> **Error Code:** `200` <br> This API is only available for Video SDK accounts. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rate-limits/).

Get webhook logs

  • Method: GET
  • Path: /accounts/{accountId}/videosdk/report/webhook_logs
  • Tags: Video SDK Reports

Get the webhook call logs for the Video SDK app created by the current account.

Prerequisites

  • A Video SDK account.

Rate Limit Label: MEDIUM

Responses

Status: 200 **HTTP Status Code:** `200` Webhook logs info returned.
Content-Type: application/json
  • next_page_token

    string — The API uses the next page token to paginate through large result sets. It returns a next page token whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes.

  • page_size

    integer — The page size of the result.

  • webhook_logs

    array — A list of webhook logs that match the specified query conditions.

    Items:

    • date_time

      string — The recorded time of the log.

    • endpoint

      string — The webhook callback URL.

    • event

      string — The event's name.

    • failed_reason_type

      integer, possible values: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 — The reason type for connection error messages: * `1` - Read time out. * `2` - Connection refused. * `3` - Hystrix fallback. * `4` - Hystrix timeout. * `5` - Async error. * `6` - DNS forbidden. * `7` - Remote error. * `8` - In delegate white list. * `9` - Cert error. * `10` - Need instant retry. * `11` - Host name verify failed. * `12` - TLS verify failed. * `13` - DNS resolve time out. * `14` - No client. * `15` - Resource not found. * `16` - Too many requests.

    • request_body

      string — The request body.

    • request_headers

      string — The request header.

    • request_id

      string — The unique identifier for a webhook request, which remains unchanged across retry attempts.

    • response_body

      string — The response body.

    • response_headers

      string — The response headers.

    • retry_num

      integer, possible values: 0, 1, 2, 3 — The number of retry attempts for this webhook request. A value of 0 signifies that the request is the initial send and not a retry.

    • status

      integer — The HTTP code returned from the endpoint. If the webhook is not sent to the endpoint due to an internal error, the status is `-1`

    • subscription_id

      string — The event subscription's unique ID.

    • trace_id

      string — A distributed tracing identifier used in this webhook request context, commonly used for troubleshooting. When multiple webhook events are triggered within the same context, they may share the same `trace_id`.

Example:

{
  "next_page_token": "b43YBRLJFg3V4vsSpxvGdKIGtNbxn9h9If2",
  "page_size": 30,
  "webhook_logs": [
    {
      "event": "session.started",
      "status": 429,
      "failed_reason_type": 1,
      "endpoint": "https://example.com",
      "subscription_id": "9qwt8mkBEW2O6fPuxBpXpA",
      "request_headers": "N/A",
      "request_body": "{\"event\":\"session.started\",\"payload\":{\"account_id\":\"qnFRJ-Q3QxmK2oXXsXSv1A\",\"object\":{\"session_name\":\"1\",\"start_time\":\"2025-09-09T06:12:46Z\",\"session_id\":\"GfIcwDUNQyGy2Uo7ozIVXg==\",\"id\":\"GfIcwDUNQyGy2Uo7ozIVXg==\"}},\"event_ts\":1757398366655}",
      "response_headers": "{\"Server\":\"nginx\",\"Content-Type\":\"text/html; charset=UTF-8\"}",
      "response_body": "N/A",
      "date_time": "2022-09-09T08:11:38Z",
      "trace_id": "WEB_5f1752ba04e4ffeccde2f2a923c106f9",
      "request_id": "e8ca3e3c_0196_4dc8_9f9e_81217d9000e6",
      "retry_num": 0
    }
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `1501` <br> The 'to' date must be after the 'from' date. <br> **Error Code:** `1502` <br> The date range must be within the last seven days. <br> **Error Code:** `1503` <br> The dates must follow the format: `yyyy-MM-dd'T'HH:mm:ss'Z'`. <br> **Error Code:** `1504` <br> The 'from' date must be before the current date(UTC). <br> **Error Code:** `1506` <br> The 'retry_num' value must be an integer within the range of 0 to 3. <br>
Status: 401 **HTTP Status Code:** `401` <br> Unauthorized Invalid access token.
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1401` <br> No Video SDK app created by this account. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rate-limits/).