Video Management API
- 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:
- A Pro or higher account plan.
- A Zoom Video Management license.
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
Parameters
next_page_token
- In:
query
The next page token paginates through a set of large results. A next page token is returned whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes.
string
page_size
- In:
query
The number of records returned in a single API call.
integer, default: 30
user_id
- In:
query
The user ID or email address of the channel owner. It is used for an account-level OAuth app. Providing this parameter will return only the channels owned by the specified user. Omit this field for user-level apps.
string
Responses
Status: 200 **HTTP Status Code:** `200` Channel Information.
Content-Type: application/json
channelsarray— ChannelsItems: All of: categoriesarray— The category of the channel.Items: stringchannel_idstring— The channel ID.descriptionstring— A description of the channel.namestring— The name of the channel.owner_idstring— The ID of the channel owner.statusstring, possible values:"PUBLISH", "DRAFT"— The channel status. * `PUBLISH` - A published channel. * `DRAFT` - A draft channel.
next_page_tokenstring— The next page token.total_recordsnumber— 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:
- 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:write:channel,video_mgmt:write:channel:admin
Rate Limit Label: LIGHT
Parameters
user_id
- In:
query
The user ID or email address of the on-behalf-of user who has the permission to create a channel. It's used for an account-level OAuth app. For user-level apps, this should not be used.
string
Request Body
Content-Type: application/json
name(required)string— The name of the channel.categoriesarray— The category of the channel. Use categories to classify your videos and help viewers filter videos.Items: stringdescriptionstring— A description of the channel.thumbnailsarray— 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
categoriesarray— The category of the channel.Items: stringchannel_idstring— The video channel ID.descriptionstring— A description of the channel.namestring— The name of the channel.statusstring, 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:
- A Pro or higher account plan.
- A Zoom Video Management license.
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
Parameters
channelId required
- In:
path
The channel ID.
string
Responses
Status: 200 **HTTP Status Code:** `200` Video channel returned
Content-Type: application/json
access_typestring, 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 linkcategoriesarray— The category of the channel.Items: stringchannel_idstring— The channel ID.channel_linkstring— A link to the channel.descriptionstring— A description of the channel.namestring— The name of the channel.owner_idstring— The ID of the channel owner.statusstring, possible values:"PUBLISH", "DRAFT"— The channel status. * `PUBLISH` - Published channel. * `DRAFT` - Draft channel.thumbnailsarray— A list of thumbnail images associated with the channel.Items: file_urlstring, 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
Parameters
channelId required
- In:
path
The video channel ID.
string
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
Parameters
channelId required
- In:
path
The video channel ID.
string
Request Body
Content-Type: application/json
access_typestring, 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 linkcategoriesarray— The category of the channel. Categories allow you to classify your videos and help viewers filter videos.Items: stringdescriptionstring— Channel description.namestring— The name of the channel.thumbnailsarray— 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:
- 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
Parameters
channelId required
- In:
path
The video channel ID.
string
Request Body
Content-Type: application/json
operationstring, 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:
- A Pro or higher account plan.
- A Zoom Video Management license.
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
Parameters
channelId required
- In:
path
The channel ID.
string
user_id
- In:
query
Optional filter for a permission entry. Supports a Zoom user ID or an email address. If an email does not resolve to a Zoom user, the API falls back to matching external shared users by email in a case-insensitive manner.
string
next_page_token
- In:
query
The next page token is used to paginate through a large set of results. A next page token is returned whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes.
string
page_size
- In:
query
The number of records returned in a single API call.
integer, default: 30
Responses
Status: 200 **HTTP Status Code:** `200` Channel permission information.
Content-Type: application/json
next_page_tokenstring— The next page token.permissionsarray— THe list of permissions.Items: chat_channel_idstring— The chat channel ID.display_namestring— The display name of the user.invite_statusstring, 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.rolestring, 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 permissionsuser_idstring | null— The Zoom user ID. This field is returned only for same-account Zoom users. For external or unregistered users, this field returns null.
total_recordsnumber— The total number of records.
Example:
{
"total_records": 10,
"next_page_token": "yqT59YnBSHqvDdNnkeHQsA",
"permissions": [
{
"user_id": "IAfJX3jsOLW7w3dokmFl84zOa0MAVGyMEB2",
"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:
- 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:write:permissions,video_mgmt:write:permissions:admin
Rate Limit Label: MEDIUM
Parameters
channelId required
- In:
path
The channel ID
string
Request Body
Content-Type: application/json
permissionsarray— 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:
- 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:permissions,video_mgmt:delete:permissions:admin
Rate Limit Label: LIGHT
Parameters
channelId required
- In:
path
The channel ID
string
Request Body
Content-Type: application/json
permissionsarray— 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:
- 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:permissions,video_mgmt:update:permissions:admin
Rate Limit Label: LIGHT
Parameters
channelId required
- In:
path
The channel ID.
string
Request Body
Content-Type: application/json
permissionsarray— 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:
- A Pro or higher account plan.
- A Zoom Video Management license.
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
Parameters
channelId required
- In:
path
The channel ID
string
next_page_token
- In:
query
The next page token paginates through a set of large results. A next page token is returned whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes.
string
page_size
- In:
query
The number of records returned in a single API call. Max 300.
integer, default: 30
Responses
Status: 200 List of playlists for the channel
Content-Type: application/json
next_page_tokenstring— The next page token.playlistsarray— List of playlists for the channel.Items: namestring— The name of the playlist.playlist_idstring— The playlist ID
total_recordsnumber— 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:
- 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:write:channel_playlists,video_mgmt:write:channel_playlists:admin
Rate Limit Label: LIGHT
Parameters
channelId required
- In:
path
The channel ID
string
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:
- 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_playlists,video_mgmt:delete:channel_playlists:admin
Rate Limit Label: LIGHT
Parameters
channelId required
- In:
path
The channel ID
string
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:
- A Pro or higher account plan.
- A Zoom Video Management license.
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
Parameters
next_page_token
- In:
query
The next page token paginates through a set of large results. A next page token is returned whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes.
string
page_size
- In:
query
The number of records returned in a single API call.
integer, default: 30
user_id
- In:
query
The user ID or email address of the playlist owner. It is used for an account-level OAuth app. Providing this parameter will return only the playlists owned by the specified user. Omit this for user-level apps.
string
search_text required
- In:
query
The text to search for playlists by name. A minimum of 3 characters is needed to search. Search is not case-sensitive.
string
Responses
Status: 200 List of playlists for the user
Content-Type: application/json
next_page_tokenstring— The next page token.playlistsarray— List of playlists for the user.Items: namestring— The name of the playlist.playlist_idstring— The playlist ID.thumbnailsarray— A list of thumbnail images associated with this playlist.Items: file_urlstring, format:uri— A public or pre-signed URL to download or view the thumbnail.
total_recordsnumber— 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:
- 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:write:playlist,video_mgmt:write:playlist:admin
Rate Limit Label: LIGHT
Parameters
user_id
- In:
query
The user ID or email address of the on-behalf-of user who has the permission to create playlist. It is used for an account-level OAuth app. Omit this field for user-level apps.
string
Request Body
Content-Type: application/json
name(required)string— The name of the playlist.thumbnailsarray— 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
namestring— The name of the playlist.playlist_idstring— 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
Parameters
playlistId required
- In:
path
Playlist ID
string
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:
- 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:update:playlist,video_mgmt:update:playlist:admin
Rate Limit Label: LIGHT
Parameters
playlistId required
- In:
path
The ID of the playlist.
string
Request Body
Content-Type: application/json
namestring— The name of the playlist.thumbnailsarray— 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:
- A Pro or higher account plan.
- A Zoom Video Management license.
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
Parameters
channelId required
- In:
path
The video channel ID.
string
next_page_token
- In:
query
Use this token to fetch the next page of results. Returns a next_page_token when the total number of results exceeds the current page size. Include this token in your next request to continue pagination. The token expires after 15 minutes.
string
page_size
- In:
query
The number of records returned in a single API call.
integer, default: 30
Responses
Status: 200 List of the channel's videos.
Content-Type: application/json
next_page_tokenstring— Token to access the next page of results.total_recordsnumber— The total number of records.videosarray— List of the channel's videos.Items: durationinteger— The duration of the video in milliseconds.play_linkstring— A link to play the video.video_idstring— The ID of the video.video_namestring— The name of the video.video_sourcestring, 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_statusstring, 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:
- 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:write:channel_videos,video_mgmt:write:channel_videos:admin
Rate Limit Label: LIGHT
Parameters
channelId required
- In:
path
The channel ID.
string
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:
- 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_videos,video_mgmt:delete:channel_videos:admin
Rate Limit Label: LIGHT
Parameters
channelId required
- In:
path
The channel ID
string
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:
- A Pro or higher account plan.
- A Zoom Video Management license.
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
Parameters
playlistId required
- In:
path
The playlist ID.
string
next_page_token
- In:
query
Returned when the total results exceed the current page size. Include this token in your next request to fetch the next page of results. The token expires after 15 minutes.
string
page_size
- In:
query
The number of records returned in a single API call.
integer, default: 30
Responses
Status: 200 List of the playlist's videos.
Content-Type: application/json
next_page_tokenstring— The token to return the next page of results.total_recordsnumber— The total number of records.videosarray— List of the playlist's videos.Items: durationinteger— The video duration in milliseconds.play_linkstring— The URL to play the video.video_idstring— The video ID.video_namestring— The video name.video_sourcestring, 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_statusstring, 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:
- 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:write:playlist_videos,video_mgmt:write:playlist_videos:admin
Rate Limit Label: LIGHT
Parameters
playlistId required
- In:
path
The playlist ID.
string
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:
- 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_videos,video_mgmt:delete:playlist_videos:admin
Rate Limit Label: LIGHT
Parameters
playlistId required
- In:
path
The playlist ID.
string
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:
- A Pro or higher account plan.
- A Zoom Video Management license.
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
Parameters
search_text
- In:
query
The text to use for search. A minimum of 3 characters is needed to search.
string
next_page_token
- In:
query
The next page token paginates through a set of large results. A next page token is returned whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes.
string
page_size
- In:
query
The number of records returned in a single API call.
integer, default: 30
user_id
- In:
query
The user ID or email address of the owner. It is used for an account-level OAuth app. Providing this parameter will return only the videos owned by the specified user. Omit this for user-level apps.
string
Responses
Status: 200 List of videos for the user
Content-Type: application/json
next_page_tokenstring— The next page token.total_recordsnumber— The total number of records.videosarray— List of videos.Items: created_timestring, format:date-time— The time the video was created in UTC format. The format will be `yyyy-MM-dd`T`HH:mm:ssZ`descriptionstring— A detailed description or summary of the video content.durationinteger— The duration of the video in milliseconds.external_idstring— Link the migrated media ID from an external system.modified_timestring, format:date-time— The time the video was modified in UTC format. The format will be `yyyy-MM-dd`T`HH:mm:ssZ`notesstring— Additional information or notes about the video.owner_emailstring— The email address of the owner of the videoowner_namestring— The name of the owner of the video.play_linkstring— A link to the video.video_idstring— The ID of the video.video_namestring— The name of the video.video_sourcestring, 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_statusstring, 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:
- A Pro or higher account plan.
- A Zoom Video Management license.
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
Parameters
videoId required
- In:
path
The ID of the video. If the ID contains URL-reserved characters, double URL-encode the entire value before sending the request. For example, F6/2jeddReCK+WUtDtxv3Q==_0003 becomes F6%252F2jeddReCK%252BWUtDtxv3Q%253D%253D_0003.
string
Responses
Status: 200 **HTTP Status Code:** `200` <br> OK Video metadata retrieved successfully.
Content-Type: application/json
created_timestring, format:date-time— The time the video was created in UTC format. The format will be `yyyy-MM-dd`T`HH:mm:ssZ`descriptionstring— Detailed description or summary of the video content.durationinteger— The duration of the video, in milliseconds.external_idstring— Used to link the migrated media ID from an external system.modified_timestring, format:date-time— The time the video was modified in UTC format. The format will be `yyyy-MM-dd`T`HH:mm:ssZ`notesstring— Additional information or notes about the video.owner_emailstring— The email address of the owner of the videoowner_namestring— The name of the owner of the video.play_linkstring— A link to the video.thumbnailsarray— A list of thumbnail images associated with this video.Items: file_urlstring, format:uri— A public or pre-signed URL to download or view the thumbnail.
video_namestring— The name of the video.video_sourcestring, 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_statusstring, 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:
- A Pro or higher account plan.
- A Zoom Video Management license.
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
Parameters
videoId required
- In:
path
The ID of the video. If the ID contains URL-reserved characters, double URL-encode the entire value before sending the request. For example, F6/2jeddReCK+WUtDtxv3Q==_0003 becomes F6%252F2jeddReCK%252BWUtDtxv3Q%253D%253D_0003.
string
Request Body
Content-Type: application/json
descriptionstring— Detailed description or summary of the video content.external_idstring— Used to link the migrated media ID from an external system.notesstring— Additional information or notes about the video.thumbnailsarray— 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.
transcriptsarray— 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_defaultboolean— 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.languagestring— The language code (ISO 639-1 or BCP 47).
video_namestring— 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:
- A Pro or higher account plan.
- A Zoom Video Management license.
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_idstring— 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"
}