Video Management

  • OpenAPI Version: 3.1.1
  • API Version: 2

Use the Video Management API to manage channels, channel permissions, playlists, and videos.

You can create, delete, update, and list the available channels and playlists. You can add and remove videos from channels and playlists or list the videos in a channel or playlist.

Servers

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

Operations

List channels

  • Method: GET
  • Path: /video_management/channels
  • Tags: Channels

Retrieves the list of channels.

Prerequisites:

Scopes: video_mgmt_channels:read,video_mgmt_channels:read:admin

Granular Scopes: video_mgmt:read:list_channels,video_mgmt:read:list_channels:admin

Rate Limit Label: LIGHT

Responses

Status: 200 **HTTP Status Code:** `200` Channel Information.
Content-Type: application/json
  • channels

    array — Channels

    Items:

    All of:

    • categories

      array — The category of the channel.

      Items:

      string

    • channel_id

      string — The channel ID.

    • description

      string — A description of the channel.

    • name

      string — The name of the channel.

    • owner_id

      string — The ID of the channel owner.

    • status

      string, possible values: "PUBLISH", "DRAFT" — The channel status. * `PUBLISH` - A published channel. * `DRAFT` - A draft channel.

  • next_page_token

    string — The next page token.

  • total_records

    number — The total number of records.

Example:

{
  "total_records": 1,
  "next_page_token": "yqT59YnBSHqvDdNnkeHQsA",
  "channels": [
    {
      "channel_id": "iso9Dllddp39dagjLj9j",
      "name": "FoodieFlicks",
      "description": "A cinematic journey through the world of cuisine!.",
      "owner_id": "abc9Dllddp39dagjLj9j",
      "status": "PUBLISH",
      "categories": [
        "Education"
      ]
    }
  ]
}
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 channel

  • Method: POST
  • Path: /video_management/channels
  • Tags: Channels

Creates a channel for managing videos.

Prerequisites:

Scopes: video_mgmt_channels:write,video_mgmt_channels:write:admin

Granular Scopes: video_mgmt:write:channel,video_mgmt:write:channel:admin

Rate Limit Label: LIGHT

Request Body

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

    string — The name of the channel.

  • categories

    array — The category of the channel. Use categories to classify your videos and help viewers filter videos.

    Items:

    string

  • description

    string — A description of the channel.

  • thumbnails

    array — Thumbnail metadata updates. Each entry references an uploaded file by `file_id`.

    Items:

    • file_id (required)

      string — The unique file reference ID from the file upload API.

Example:

{
  "name": "FoodieFlicks",
  "description": "A cinematic journey through the world of cuisine!",
  "categories": [
    "Education"
  ],
  "thumbnails": [
    {
      "file_id": "xBvggqyjQUal6TecwMlYwE123"
    }
  ]
}

Responses

Status: 201 **HTTP Status Code:** `201` Video channel returned
Content-Type: application/json
  • categories

    array — The category of the channel.

    Items:

    string

  • channel_id

    string — The video channel ID.

  • description

    string — A description of the channel.

  • name

    string — The name of the channel.

  • status

    string, possible values: "PUBLISHED", "DRAFT" — The video channel status: * `PUBLISHED` - A published channel. * `DRAFT` - A draft channel.

Example:

{
  "channel_id": "iso9Dllddp39dagjLj9j",
  "name": "FoodieFlicks",
  "description": "A cinematic journey through th world of cuisine!",
  "status": "PUBLISHED",
  "categories": [
    "Education"
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request
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/).

Get channel details

  • Method: GET
  • Path: /video_management/channels/{channelId}
  • Tags: Channels

Returns the details of the video channel.

Prerequisites:

Scopes: video_mgmt_channels:read,video_mgmt_channels:read:admin

Granular Scopes: video_mgmt:read:channel,video_mgmt:read:channel:admin

Rate Limit Label: LIGHT

Responses

Status: 200 **HTTP Status Code:** `200` Video channel returned
Content-Type: application/json
  • access_type

    string, possible values: "PEOPLE_WITH_ACCESS", "ANYONE_IN_ORG", "ANYONE_WITH_LINK" — The channel access type: * `PEOPLE_WITH_ACCESS` = Only people with access * `ANYONE_IN_ORG` = Anyone in the same organization can access using the channel link * `ANYONE_WITH_LINK` = Anyone can access using the channel link

  • categories

    array — The category of the channel.

    Items:

    string

  • channel_id

    string — The channel ID.

  • channel_link

    string — A link to the channel.

  • description

    string — A description of the channel.

  • name

    string — The name of the channel.

  • owner_id

    string — The ID of the channel owner.

  • status

    string, possible values: "PUBLISH", "DRAFT" — The channel status. * `PUBLISH` - Published channel. * `DRAFT` - Draft channel.

  • thumbnails

    array — A list of thumbnail images associated with the channel.

    Items:

    • file_url

      string, format: uri — A public or pre-signed URL to download or view the thumbnail.

Example:

{
  "channel_id": "iso9Dllddp39dagjLj9j",
  "name": "FoodieFlicks",
  "description": "A cinematic journey through the world of cuisine!.",
  "owner_id": "abc9Dllddp39dagjLj9j",
  "status": "PUBLISH",
  "categories": [
    "Education"
  ],
  "channel_link": "https://videocenter.zoom.us/e/channels/MYysLCuzQ0mmk1CvarkaDA",
  "access_type": "PEOPLE_WITH_ACCESS",
  "thumbnails": [
    {
      "file_url": "https://files.zoom.us/thumbnails/thumb123.jpg"
    }
  ]
}
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:** `30661005` <br> Channel not found. <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 channel

  • Method: DELETE
  • Path: /video_management/channels/{channelId}
  • Tags: Channels

Deletes a video channel.

Prerequisites:

  • A Pro or higher account plan.
  • A Zoom Video Management license.

Scopes: video_mgmt_channels:write,video_mgmt_channels:write:admin

Granular Scopes: video_mgmt:delete:channel,video_mgmt:delete:channel:admin

Rate Limit Label: LIGHT

Responses

Status: 204 **HTTP Status Code:** `204` Channel deleted successfully.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request
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:** `30661005` <br> Channel not found. <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 channel

  • Method: PATCH
  • Path: /video_management/channels/{channelId}
  • Tags: Channels

Updates a video channel.

Prerequisites:

  • A Pro or higher account plan.
  • A Zoom Video Management license.

Scopes: video_mgmt_channels:write,video_mgmt_channels:write:admin

Granular Scopes: video_mgmt:update:channel,video_mgmt:update:channel:admin

Rate Limit Label: LIGHT

Request Body

Content-Type: application/json
  • access_type

    string, possible values: "PEOPLE_WITH_ACCESS", "ANYONE_IN_ORG", "ANYONE_WITH_LINK" — The channel access type: * `PEOPLE_WITH_ACCESS` = Only people with access * `ANYONE_IN_ORG` = Anyone in the same organization can access using the channel link * `ANYONE_WITH_LINK` = Anyone can access using the channel link

  • categories

    array — The category of the channel. Categories allow you to classify your videos and help viewers filter videos.

    Items:

    string

  • description

    string — Channel description.

  • name

    string — The name of the channel.

  • thumbnails

    array — The thumbnail metadata updates. Each entry references an uploaded file by `file_id`.

    Items:

    • file_id (required)

      string — The unique file reference ID from the file upload API.

Example:

{
  "name": "FoodieFlicks",
  "description": "A cinematic journey through the world of cuisine!",
  "categories": [
    "Education"
  ],
  "access_type": "PEOPLE_WITH_ACCESS",
  "thumbnails": [
    {
      "file_id": "xBvggqyjQUal6TecwMlYwE123"
    }
  ]
}

Responses

Status: 204 **HTTP Status Code:** `204` Channel updated successfully.
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:** `30661005` <br> Channel not found. <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/).

Channel actions

  • Method: PATCH
  • Path: /video_management/channels/{channelId}/actions
  • Tags: Channels

Perform state transition actions on a video channel .

Prerequisites:

Scopes: video_mgmt_channels:write,video_mgmt_channels:write:admin

Granular Scopes: video_mgmt:update:channel,video_mgmt:update:channel:admin

Rate Limit Label: LIGHT

Request Body

Content-Type: application/json
  • operation

    string, possible values: "publish", "unpublish" — The available actions for a video channel. * `publish` &mdash; Publish the channel. * `unpublish` &mdash; Un-publish the published channel.

Example:

{
  "operation": "publish"
}

Responses

Status: 204 **HTTP Status Code:** `204` Channel status changed successfully.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request
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:** `30661005` <br> Channel not found <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 channel permissions

  • Method: GET
  • Path: /video_management/channels/{channelId}/permissions
  • Tags: Permissions

Retrieves the list of permissions for a channel. \n Prerequisites:

Scopes: video_mgmt_channels:read,video_mgmt_channels:read:admin

Granular Scopes: video_mgmt:read:list_permissions,video_mgmt:read:list_permissions:admin

Rate Limit Label: LIGHT

Responses

Status: 200 **HTTP Status Code:** `200` Channel permission information.
Content-Type: application/json
  • next_page_token

    string — The next page token.

  • permissions

    array — THe list of permissions.

    Items:

    • chat_channel_id

      string — The chat channel ID.

    • display_name

      string — The display name of the user.

    • invite_status

      string, possible values: "PENDING", "ACCEPTED" — The current status of the invitation. Collaborators must accept the invitation that was emailed to them before they can manage a channel.

    • role

      string, possible values: "OWNER", "COLLABORATOR", "VIEWER" — The channel user's role: * `OWNER` = The channel owner * `COLLABORATOR` = Channel user with collaborator permissions * `VIEWER` = Channel user with view permissions

    • user_id

      string — The Zoom user ID.

  • total_records

    number — The total number of records.

Example:

{
  "total_records": 10,
  "next_page_token": "yqT59YnBSHqvDdNnkeHQsA",
  "permissions": [
    {
      "user_id": "325bde9e82c84a179ac0f612f7688df7",
      "chat_channel_id": "dc1731cf94a842bfb43e8b0fe13d2a46@conference.xmppdev.zoom.us",
      "display_name": "John Doe",
      "role": "VIEWER",
      "invite_status": "PENDING"
    }
  ]
}
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:** `30661005` <br> Channel not found <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 channel permissions

  • Method: POST
  • Path: /video_management/channels/{channelId}/permissions
  • Tags: Permissions

Creates permissions for the given channel ID. Add users, such as collaborators or viewers, to the channel.

Prerequisites:

Scopes: video_mgmt_channels:write,video_mgmt_channels:write:admin

Granular Scopes: video_mgmt:write:permissions,video_mgmt:write:permissions:admin

Rate Limit Label: MEDIUM

Request Body

Content-Type: application/json
  • permissions

    array — The list of channel permissions to be added.

    Items:

    All of:

    • role (required)

      string, possible values: "COLLABORATOR", "VIEWER" — The channel user's role: * `COLLABORATOR` = A channel user with collaborator permissions * `VIEWER` = A channel user with view permissions

    One of:

    • user_id (required)

      string — The Zoom user ID.

    • chat_channel_id (required)

      string — The chat channel ID.

Example:

{
  "permissions": [
    {
      "role": "VIEWER",
      "user_id": "325bde9e82c84a179ac0f612f7688df7"
    }
  ]
}

Responses

Status: 204 success response
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `30661001` <br> Param is invalid <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:** `30661005` <br> Channel not found <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 channel permissions

  • Method: DELETE
  • Path: /video_management/channels/{channelId}/permissions
  • Tags: Permissions

Delete channel permissions.

Prerequisites:

Scopes: video_mgmt_channels:write,video_mgmt_channels:write:admin

Granular Scopes: video_mgmt:delete:permissions,video_mgmt:delete:permissions:admin

Rate Limit Label: LIGHT

Request Body

Content-Type: application/json
  • permissions

    array — The permissions to delete.

    Items:

    One of:

    • user_id (required)

      string — The Zoom user ID.

    • chat_channel_id (required)

      string — The chat channel ID.

Example:

{
  "permissions": [
    {
      "user_id": "325bde9e82c84a179ac0f612f7688df7"
    }
  ]
}

Responses

Status: 204 No content.
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:** `30661005` <br> Channel not found <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 channel permissions

  • Method: PATCH
  • Path: /video_management/channels/{channelId}/permissions
  • Tags: Permissions

Updates channel permissions.

Prerequisites:

Scopes: video_mgmt_channels:write,video_mgmt_channels:write:admin

Granular Scopes: video_mgmt:update:permissions,video_mgmt:update:permissions:admin

Rate Limit Label: LIGHT

Request Body

Content-Type: application/json
  • permissions

    array — The list of channel permissions to be updated.

    Items:

    All of:

    • role (required)

      string, possible values: "COLLABORATOR", "VIEWER" — The channel user's role: * `COLLABORATOR` = A channel user with collaborator permissions * `VIEWER` = A channel user with view permissions

    One of:

    • user_id (required)

      string — The Zoom user ID.

    • chat_channel_id (required)

      string — The chat channel ID.

Example:

{
  "permissions": [
    {
      "role": "VIEWER",
      "user_id": "325bde9e82c84a179ac0f612f7688df7"
    }
  ]
}

Responses

Status: 204 Channel permissions updated successfully.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `30661001` <br> Param is invalid <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:** `30661005` <br> Channel not found <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 channel playlists

  • Method: GET
  • Path: /video_management/channels/{channelId}/playlists
  • Tags: Playlists

Retrieves the list of playlists for the channel.

Prerequisites:

Scopes: video_mgmt_channels:read,video_mgmt_channels:read:admin

Granular Scopes: video_mgmt:read:list_channel_playlists,video_mgmt:read:list_channel_playlists:admin

Rate Limit Label: LIGHT

Responses

Status: 200 List of playlists for the channel
Content-Type: application/json
  • next_page_token

    string — The next page token.

  • playlists

    array — List of playlists for the channel.

    Items:

    • name

      string — The name of the playlist.

    • playlist_id

      string — The playlist ID

  • total_records

    number — The total number of records.

Example:

{
  "total_records": 1,
  "next_page_token": "yqT59YnBSHqvDdNnkeHQsA",
  "playlists": [
    {
      "playlist_id": "csduzfv3JwTeyR5QpC3PXw52",
      "name": "My Playlist1"
    }
  ]
}
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
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rate-limits/).

Add channel playlists

  • Method: POST
  • Path: /video_management/channels/{channelId}/playlists
  • Tags: Playlists

Adds playlists to the channel.

Prerequisites:

Scopes: video_mgmt_channels:write,video_mgmt_channels:write:admin

Granular Scopes: video_mgmt:write:channel_playlists,video_mgmt:write:channel_playlists:admin

Rate Limit Label: LIGHT

Request Body

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

    array — The playlist IDs.

    Items:

    string

Example:

{
  "playlist_ids": [
    "csduzfv3JwTeyR5QpC3PXw52"
  ]
}

Responses

Status: 204 Successfully added playlists to the channel.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request
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
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 channel playlists

  • Method: DELETE
  • Path: /video_management/channels/{channelId}/playlists
  • Tags: Playlists

Removes playlists from the channel.

Prerequisites:

Scopes: video_mgmt_channels:write,video_mgmt_channels:write:admin

Granular Scopes: video_mgmt:delete:channel_playlists,video_mgmt:delete:channel_playlists:admin

Rate Limit Label: LIGHT

Request Body

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

    array — The playlist IDs.

    Items:

    string

Example:

{
  "playlist_ids": [
    "csduzfv3JwTeyR5QpC3PXw52"
  ]
}

Responses

Status: 204 Successfully removed playlists from the channel.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request
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
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 playlists

  • Method: GET
  • Path: /video_management/playlists
  • Tags: Playlists

Retrieves the list of playlists for the user.

Prerequisites:

Scopes: video_mgmt_playlists:read,video_mgmt_playlists:read:admin

Granular Scopes: video_mgmt:read:list_playlists,video_mgmt:read:list_playlists:admin

Rate Limit Label: LIGHT

Responses

Status: 200 List of playlists for the user
Content-Type: application/json
  • next_page_token

    string — The next page token.

  • playlists

    array — List of playlists for the user.

    Items:

    • name

      string — The name of the playlist.

    • playlist_id

      string — The playlist ID.

    • thumbnails

      array — A list of thumbnail images associated with this playlist.

      Items:

      • file_url

        string, format: uri — A public or pre-signed URL to download or view the thumbnail.

  • total_records

    number — The total number of records.

Example:

{
  "total_records": 1,
  "next_page_token": "yqT59YnBSHqvDdNnkeHQsA",
  "playlists": [
    {
      "playlist_id": "csduzfv3JwTeyR5QpC3PXw52",
      "name": "My Playlist1",
      "thumbnails": [
        {
          "file_url": "https://files.example.com/thumbnails/thumb123.jpg"
        }
      ]
    }
  ]
}
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
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 playlist

  • Method: POST
  • Path: /video_management/playlists
  • Tags: Playlists

Creates a playlist for managing videos.

Prerequisites:

Scopes: video_mgmt_playlists:write,video_mgmt_playlists:write:admin

Granular Scopes: video_mgmt:write:playlist,video_mgmt:write:playlist:admin

Rate Limit Label: LIGHT

Request Body

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

    string — The name of the playlist.

  • thumbnails

    array — Thumbnail metadata updates. Each entry references an uploaded file by `file_id`.

    Items:

    • file_id (required)

      string — The unique file reference ID from the file upload API.

Example:

{
  "name": "FoodieFlicks",
  "thumbnails": [
    {
      "file_id": "xBvggqyjQUal6TecwMlYwE123"
    }
  ]
}

Responses

Status: 201 **HTTP Status Code:** `201` Playlist returned
Content-Type: application/json
  • name

    string — The name of the playlist.

  • playlist_id

    string — The playlist ID.

Example:

{
  "playlist_id": "iso9Dllddp39dagjLj9j",
  "name": "FoodieFlicks"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request
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/).

Delete playlist

  • Method: DELETE
  • Path: /video_management/playlists/{playlistId}
  • Tags: Playlists

Deletes a playlist.

Prerequisites:

  • A Pro or higher account plan.
  • A Zoom Video Management license.

Scopes: video_mgmt_playlists:write,video_mgmt_playlists:write:admin

Granular Scopes: video_mgmt:delete:playlist,video_mgmt:delete:playlist:admin

Rate Limit Label: LIGHT

Responses

Status: 204 Successfully deleted playlist
Status: 400 **HTTP Status Code:** `400` <br> Bad Request
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
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 playlist

  • Method: PATCH
  • Path: /video_management/playlists/{playlistId}
  • Tags: Playlists

Update playlist.

Prerequisites:

Scopes: video_mgmt_playlists:write,video_mgmt_playlists:write:admin

Granular Scopes: video_mgmt:update:playlist,video_mgmt:update:playlist:admin

Rate Limit Label: LIGHT

Request Body

Content-Type: application/json
  • name

    string — The name of the playlist.

  • thumbnails

    array — The thumbnail metadata updates. Each entry references an uploaded file by `file_id`.

    Items:

    • file_id (required)

      string — The unique file reference ID from the file upload API.

Example:

{
  "name": "FoodieFlicks",
  "thumbnails": [
    {
      "file_id": "xBvggqyjQUal6TecwMlYwE123"
    }
  ]
}

Responses

Status: 204 Successfully updated playlist
Status: 400 **HTTP Status Code:** `400` <br> Bad Request
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
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 channel videos

  • Method: GET
  • Path: /video_management/channels/{channelId}/videos
  • Tags: Videos

Gets a list of the channel's videos.

Prerequisites:

Scopes: video_mgmt_channels:read,video_mgmt_channels:read:admin

Granular Scopes: video_mgmt:read:list_channel_videos,video_mgmt:read:list_channel_videos:admin

Rate Limit Label: LIGHT

Responses

Status: 200 List of the channel's videos.
Content-Type: application/json
  • next_page_token

    string — Token to access the next page of results.

  • total_records

    number — The total number of records.

  • videos

    array — List of the channel's videos.

    Items:

    • duration

      integer — The duration of the video in milliseconds.

    • play_link

      string — A link to play the video.

    • video_id

      string — The ID of the video.

    • video_name

      string — The name of the video.

    • video_source

      string, possible values: "RECORDING", "CLIPS" — The business domain or source of the video : * `ZOOM RECORDING` = The video is from Zoom recording. * `CLIPS` = The video is from Zoom clips.

    • video_status

      string, possible values: "PROCESSING", "COMPLETED" — The status of the video: * `PROCESSING` = The video is currently being processed. * `COMPLETED` = The video has been processed successfully.

Example:

{
  "total_records": 1,
  "next_page_token": "yqT59YnBSHqvDdNnkeHQsA",
  "videos": [
    {
      "video_id": "csduzfv3JwTeyR5QpC3PXw52",
      "video_name": "My Recording1",
      "play_link": "https://abc/recording/unehd6TtTLuTN40owCOqqK",
      "duration": 3000,
      "video_status": "COMPLETED",
      "video_source": "RECORDING"
    }
  ]
}
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
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rate-limits/).

Add channel videos

  • Method: POST
  • Path: /video_management/channels/{channelId}/videos
  • Tags: Videos

Adds videos to the channel.

Prerequisites:

Scopes: video_mgmt_channels:write,video_mgmt_channels:write:admin

Granular Scopes: video_mgmt:write:channel_videos,video_mgmt:write:channel_videos:admin

Rate Limit Label: LIGHT

Request Body

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

    array — The list of videos to add to the channel.

    Items:

    One of:

    • video_id (required)

      string — The video ID.

    • meeting_id (required)

      string — Zoom meeting ID. Add recording from a specific meeting.

Example:

{
  "videos": [
    {
      "video_id": "csduzfv3JwTeyR5QpC3PXw52"
    }
  ]
}

Responses

Status: 204 Successfully added channel videos.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request
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:** `30661005` <br> Channel not found. <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 channel videos

  • Method: DELETE
  • Path: /video_management/channels/{channelId}/videos
  • Tags: Videos

Removes videos from the channel.

Prerequisites:

Scopes: video_mgmt_channels:write,video_mgmt_channels:write:admin

Granular Scopes: video_mgmt:delete:channel_videos,video_mgmt:delete:channel_videos:admin

Rate Limit Label: LIGHT

Request Body

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

    array — The list of videos to remove from the channel.

    Items:

    One of:

    • video_id (required)

      string — The video ID.

    • meeting_id (required)

      string — Zoom meeting ID. Remove the recording of a specific meeting.

Example:

{
  "videos": [
    {
      "video_id": "csduzfv3JwTeyR5QpC3PXw52"
    }
  ]
}

Responses

Status: 204 Successfully deleted channel videos.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request
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:** `30661005` <br> Channel not found. <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 playlist videos

  • Method: GET
  • Path: /video_management/playlists/{playlistId}/videos
  • Tags: Videos

Gets the playlist's list of videos.

Prerequisites:

Scopes: video_mgmt_playlists:read,video_mgmt_playlists:read:admin

Granular Scopes: video_mgmt:read:list_playlist_videos,video_mgmt:read:list_playlist_videos:admin

Rate Limit Label: LIGHT

Responses

Status: 200 List of the playlist's videos.
Content-Type: application/json
  • next_page_token

    string — The token to return the next page of results.

  • total_records

    number — The total number of records.

  • videos

    array — List of the playlist's videos.

    Items:

    • duration

      integer — The video duration in milliseconds.

    • play_link

      string — The URL to play the video.

    • video_id

      string — The video ID.

    • video_name

      string — The video name.

    • video_source

      string, possible values: "RECORDING", "CLIPS" — The business domain or source of the video : * `ZOOM RECORDING` = The video is from Zoom recording. * `CLIPS` = The video is from Zoom clips.

    • video_status

      string, possible values: "PROCESSING", "COMPLETED" — The video status: * `PROCESSING` = Video is currently being processed. * `COMPLETED` = Video processing has finished successfully.

Example:

{
  "total_records": 1,
  "next_page_token": "yqT59YnBSHqvDdNnkeHQsA",
  "videos": [
    {
      "video_id": "csduzfv3JwTeyR5QpC3PXw52",
      "video_name": "My Recording1",
      "play_link": "https://abc/recording/unehd6TtTLuTN40owCOqqK",
      "duration": 3000,
      "video_status": "COMPLETED",
      "video_source": "RECORDING"
    }
  ]
}
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
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rate-limits/).

Add playlist videos

  • Method: POST
  • Path: /video_management/playlists/{playlistId}/videos
  • Tags: Videos

Adds videos to a playlist.

Prerequisites:

Scopes: video_mgmt_playlists:write,video_mgmt_playlists:write:admin

Granular Scopes: video_mgmt:write:playlist_videos,video_mgmt:write:playlist_videos:admin

Rate Limit Label: LIGHT

Request Body

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

    array — The list of videos to add to the playlist.

    Items:

    One of:

    • video_id (required)

      string — The video ID.

    • meeting_id (required)

      string — Zoom meeting ID. Use this to add the recording from a specific meeting.

Example:

{
  "videos": [
    {
      "video_id": "csduzfv3JwTeyR5QpC3PXw52"
    }
  ]
}

Responses

Status: 204 Successfully added playlist videos.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request
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
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 playlist videos

  • Method: DELETE
  • Path: /video_management/playlists/{playlistId}/videos
  • Tags: Videos

Deletes videos from a playlist.

Prerequisites:

Scopes: video_mgmt_playlists:write,video_mgmt_playlists:write:admin

Granular Scopes: video_mgmt:delete:playlist_videos,video_mgmt:delete:playlist_videos:admin

Rate Limit Label: LIGHT

Request Body

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

    array — The list of videos to remove from the playlist.

    Items:

    One of:

    • video_id (required)

      string — The video ID.

    • meeting_id (required)

      string — Zoom meeting ID. Remove the recording from a specific meeting.

Example:

{
  "videos": [
    {
      "video_id": "csduzfv3JwTeyR5QpC3PXw52"
    }
  ]
}

Responses

Status: 204 Successfully deleted playlist videos.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request
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
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 all videos

  • Method: GET
  • Path: /video_management/videos
  • Tags: Videos

Retrieves the list of videos or recordings added by the user.

Prerequisites:

Scopes: video_mgmt_videos:read,video_mgmt_videos:read:admin

Granular Scopes: video_mgmt:read:list_videos,video_mgmt:read:list_videos:admin

Rate Limit Label: LIGHT

Responses

Status: 200 List of videos for the user
Content-Type: application/json
  • next_page_token

    string — The next page token.

  • total_records

    number — The total number of records.

  • videos

    array — List of videos.

    Items:

    • created_time

      string, format: date-time — The time the video was created in UTC format. The format will be `yyyy-MM-dd`T`HH:mm:ssZ`

    • description

      string — A detailed description or summary of the video content.

    • duration

      integer — The duration of the video in milliseconds.

    • external_id

      string — Link the migrated media ID from an external system.

    • modified_time

      string, format: date-time — The time the video was modified in UTC format. The format will be `yyyy-MM-dd`T`HH:mm:ssZ`

    • notes

      string — Additional information or notes about the video.

    • owner_email

      string — The email address of the owner of the video

    • owner_name

      string — The name of the owner of the video.

    • play_link

      string — A link to the video.

    • video_id

      string — The ID of the video.

    • video_name

      string — The name of the video.

    • video_source

      string, possible values: "RECORDING", "CLIPS" — The business domain or source of the video : * `ZOOM RECORDING` = The video is from Zoom recording. * `CLIPS` = The video is from Zoom clips.

    • video_status

      string, possible values: "PROCESSING", "COMPLETED" — The status of the video: * `PROCESSING` = The video is currently being processed. * `COMPLETED` = The video has been processed successfully.

Example:

{
  "total_records": 1,
  "next_page_token": "yqT59YnBSHqvDdNnkeHQsA",
  "videos": [
    {
      "video_id": "csduzfv3JwTeyR5QpC3PXw52",
      "video_name": "My Recording1",
      "description": "Updated description text.",
      "external_id": "legacy_vid_789",
      "notes": "This video contains onboarding information.",
      "play_link": "https://abc/recording/unehd6TtTLuTN40owCOqqK",
      "duration": 3000,
      "video_status": "COMPLETED",
      "video_source": "RECORDING",
      "owner_name": "John Doe",
      "owner_email": "john.doe@xyz.com",
      "created_time": "2022-06-03T20:51:00Z",
      "modified_time": "2022-06-03T20:51:00Z"
    }
  ]
}
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/).

Get metadata for a specific video

  • Method: GET
  • Path: /video_management/videos/{videoId}/metadata
  • Tags: Videos

Retrieves metadata such as the name, description, and notes for a specific video.

Prerequisites:

Scopes: video_mgmt_videos:read,video_mgmt_videos:read:admin

Granular Scopes: video_mgmt:read:video_metadata,video_mgmt:read:video_metadata:admin

Rate Limit Label: LIGHT

Responses

Status: 200 **HTTP Status Code:** `200` <br> OK Video metadata retrieved successfully.
Content-Type: application/json
  • created_time

    string, format: date-time — The time the video was created in UTC format. The format will be `yyyy-MM-dd`T`HH:mm:ssZ`

  • description

    string — Detailed description or summary of the video content.

  • duration

    integer — The duration of the video, in milliseconds.

  • external_id

    string — Used to link the migrated media ID from an external system.

  • modified_time

    string, format: date-time — The time the video was modified in UTC format. The format will be `yyyy-MM-dd`T`HH:mm:ssZ`

  • notes

    string — Additional information or notes about the video.

  • owner_email

    string — The email address of the owner of the video

  • owner_name

    string — The name of the owner of the video.

  • play_link

    string — A link to the video.

  • thumbnails

    array — A list of thumbnail images associated with this video.

    Items:

    • file_url

      string, format: uri — A public or pre-signed URL to download or view the thumbnail.

  • video_name

    string — The name of the video.

  • video_source

    string, possible values: "RECORDING", "CLIPS" — The business domain or source of the video: * `ZOOM RECORDING` = The video is from Zoom recording. * `CLIPS` = The video is from Zoom clips.

  • video_status

    string, possible values: "PROCESSING", "COMPLETED" — The status of the video: * `PROCESSING` = The video is currently being processed. * `COMPLETED` = The video has been processed successfully.

Example:

{
  "video_name": "My Recording1",
  "description": "Updated description text.",
  "external_id": "legacy_vid_789",
  "notes": "This video contains onboarding information.",
  "play_link": "https://abc/recording/unehd6TtTLuTN40owCOqqK",
  "duration": 3000,
  "video_status": "COMPLETED",
  "video_source": "RECORDING",
  "thumbnails": [
    {
      "file_url": "https://files.zoom.us/thumbnails/thumb123.jpg"
    }
  ],
  "owner_name": "John Doe",
  "owner_email": "john.doe@xyz.com",
  "created_time": "2022-06-03T20:51:00Z",
  "modified_time": "2022-06-03T20:51:00Z"
}
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
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 metadata for a specific video.

  • Method: PATCH
  • Path: /video_management/videos/{videoId}/metadata
  • Tags: Videos

Updates video metadata.

Prerequisites:

Scopes: video_mgmt_videos:write,video_mgmt_videos:write:admin

Granular Scopes: video_mgmt:update:video_metadata,video_mgmt:update:video_metadata:admin

Rate Limit Label: LIGHT

Request Body

Content-Type: application/json
  • description

    string — Detailed description or summary of the video content.

  • external_id

    string — Used to link the migrated media ID from an external system.

  • notes

    string — Additional information or notes about the video.

  • thumbnails

    array — Thumbnail metadata updates. Each entry references an uploaded file by `file_id`.

    Items:

    • file_id (required)

      string — The unique file reference ID from the file upload API.

  • transcripts

    array — Transcript updates. Each item references an uploaded transcript file and can include a language code. The `language` field is currently supported only for videos with the source `RECORDING`. For all other video source types, `language` is ignored, and the provided transcript file overwrites the existing transcript, if present.

    Items:

    • file_id (required)

      string — The unique file reference ID from the file upload API.

    • is_default

      boolean — Whether this transcript file is the default caption file. The default transcript is displayed first by the player. When the first transcript file is uploaded, it automatically becomes the default regardless of whether this field is explicitly set.

    • language

      string — The language code (ISO 639-1 or BCP 47).

  • video_name

    string — The name of the video.

Example:

{
  "video_name": "My Recording1",
  "description": "Updated description text.",
  "external_id": "legacy_vid_789",
  "notes": "This video contains onboarding information.",
  "thumbnails": [
    {
      "file_id": "xBvggqyjQUal6TecwMlYwE123"
    }
  ],
  "transcripts": [
    {
      "file_id": "xBvggqyjQUal6TecwMlYwE8",
      "language": "en-US",
      "is_default": true
    },
    {
      "file_id": "xBvggqyjQUal6TecwMlYwE7",
      "language": "fr",
      "is_default": false
    }
  ]
}

Responses

Status: 204 **HTTP Status Code:** `204` Video metadata updated successfully.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request
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
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rate-limits/).

Upload file for video management

  • Method: POST
  • Path: /video_management/files
  • Tags: files

Uploads a file to Zoom Video Management and returns a file_id that can be used in subsequent resource requests. Use this API to upload supporting assets such as thumbnail images and transcript files for channels, playlists, and videos. This API only stores the file. To associate the file with a channel, playlist, or video, call the corresponding create or update API and include the returned file_id. For example, to create a channel with a thumbnail image, first upload the image with this API, then include the returned file_id in the Create Channel API.

Note:

  • Base URL: https://fileapi.zoom.us/v2/.
  • Supported file formats: .vtt, .jpeg/.jpg, .png, .gif.
  • All files must be less than 2 GB.

Prerequisites:

Scopes: video_mgmt_file:write,video_mgmt_file:write:admin

Granular Scopes: video_mgmt:write:file,video_mgmt:write:file:admin

Request Body

Content-Type: multipart/form-data
  • file (required)

    string — The upload file, in binary format. You can only send a maximum of 2 GB.

Example:

{
  "file": "Vm0wd2QyUXlVWGxWV0d4V..."
}

Responses

Status: 201 **HTTP Status Code:** `201` File successfully uploaded.
Content-Type: application/json
  • file_id

    string — The unique identifier for the uploaded file. This is a temporary ID, valid for 7 days from the time of upload. It is primarily used as a reference in other APIs, such as the Video Metadata API, where a `file_id` is required to associate files (for example, thumbnails and transcripts).

Example:

{
  "file_id": "xBvggqyjQUal6TecwMlYwE"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request
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 Video not found
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rate-limits/).