# 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**: - A [Pro or higher account plan](https://www.zoom.us/pricing?). - A Zoom Video Management license. **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `video_mgmt_channels:read`,`video_mgmt_channels:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `video_mgmt:read:list_channels`,`video_mgmt:read:list_channels:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `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:** ```json { "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\` \
Unauthorized ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
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](https://www.zoom.us/pricing?). - A Zoom Video Management license. **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `video_mgmt_channels:write`,`video_mgmt_channels:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `video_mgmt:write:channel`,`video_mgmt:write:channel:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `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:** ```json { "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:** ```json { "channel_id": "iso9Dllddp39dagjLj9j", "name": "FoodieFlicks", "description": "A cinematic journey through th world of cuisine!", "status": "PUBLISHED", "categories": [ "Education" ] } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
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](https://www.zoom.us/pricing?). - A Zoom Video Management license. **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `video_mgmt_channels:read`,`video_mgmt_channels:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `video_mgmt:read:channel`,`video_mgmt:read:channel:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `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:** ```json { "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\` \
Unauthorized ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`30661005\` \
Channel not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
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](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `video_mgmt_channels:write`,`video_mgmt_channels:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `video_mgmt:delete:channel`,`video_mgmt:delete:channel:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` Channel deleted successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`30661005\` \
Channel not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
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](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `video_mgmt_channels:write`,`video_mgmt_channels:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `video_mgmt:update:channel`,`video_mgmt:update:channel:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `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:** ```json { "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\` \
Unauthorized ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`30661005\` \
Channel not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
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](https://www.zoom.us/pricing?). - A Zoom Video Management license. **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `video_mgmt_channels:write`,`video_mgmt_channels:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `video_mgmt:update:channel`,`video_mgmt:update:channel:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`operation`** `string`, possible values: `"publish", "unpublish"` — The available actions for a video channel. \* \`publish\` \— Publish the channel. \* \`unpublish\` \— Un-publish the published channel. **Example:** ```json { "operation": "publish" } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code:\*\* \`204\` Channel status changed successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`30661005\` \
Channel not found \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
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](https://www.zoom.us/pricing?). - A Zoom Video Management license. **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `video_mgmt_channels:read`,`video_mgmt_channels:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `video_mgmt:read:list_permissions`,`video_mgmt:read:list_permissions:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `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:** ```json { "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\` \
Unauthorized ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`30661005\` \
Channel not found \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
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](https://www.zoom.us/pricing?). - A Zoom Video Management license. **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `video_mgmt_channels:write`,`video_mgmt_channels:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `video_mgmt:write:permissions`,`video_mgmt:write:permissions:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `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:** ```json { "permissions": [ { "role": "VIEWER", "user_id": "325bde9e82c84a179ac0f612f7688df7" } ] } ``` #### Responses ##### Status: 204 success response ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`30661001\` \
Param is invalid \
##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`30661005\` \
Channel not found \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
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](https://www.zoom.us/pricing?). - A Zoom Video Management license. **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `video_mgmt_channels:write`,`video_mgmt_channels:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `video_mgmt:delete:permissions`,`video_mgmt:delete:permissions:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `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:** ```json { "permissions": [ { "user_id": "325bde9e82c84a179ac0f612f7688df7" } ] } ``` #### Responses ##### Status: 204 No content. ##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`30661005\` \
Channel not found \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
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](https://www.zoom.us/pricing?). - A Zoom Video Management license. **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `video_mgmt_channels:write`,`video_mgmt_channels:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `video_mgmt:update:permissions`,`video_mgmt:update:permissions:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `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:** ```json { "permissions": [ { "role": "VIEWER", "user_id": "325bde9e82c84a179ac0f612f7688df7" } ] } ``` #### Responses ##### Status: 204 Channel permissions updated successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`30661001\` \
Param is invalid \
##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`30661005\` \
Channel not found \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
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](https://www.zoom.us/pricing?). - A Zoom Video Management license. **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `video_mgmt_channels:read`,`video_mgmt_channels:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `video_mgmt:read:list_channel_playlists`,`video_mgmt:read:list_channel_playlists:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `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:** ```json { "total_records": 1, "next_page_token": "yqT59YnBSHqvDdNnkeHQsA", "playlists": [ { "playlist_id": "csduzfv3JwTeyR5QpC3PXw52", "name": "My Playlist1" } ] } ``` ##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
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](https://www.zoom.us/pricing?). - A Zoom Video Management license. **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `video_mgmt_channels:write`,`video_mgmt_channels:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `video_mgmt:write:channel_playlists`,`video_mgmt:write:channel_playlists:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`playlist_ids` (required)** `array` — The playlist IDs. **Items:** `string` **Example:** ```json { "playlist_ids": [ "csduzfv3JwTeyR5QpC3PXw52" ] } ``` #### Responses ##### Status: 204 Successfully added playlists to the channel. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
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](https://www.zoom.us/pricing?). - A Zoom Video Management license. **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `video_mgmt_channels:write`,`video_mgmt_channels:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `video_mgmt:delete:channel_playlists`,`video_mgmt:delete:channel_playlists:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Request Body ##### Content-Type: application/json - **`playlist_ids` (required)** `array` — The playlist IDs. **Items:** `string` **Example:** ```json { "playlist_ids": [ "csduzfv3JwTeyR5QpC3PXw52" ] } ``` #### Responses ##### Status: 204 Successfully removed playlists from the channel. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
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](https://www.zoom.us/pricing?). - A Zoom Video Management license. **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `video_mgmt_playlists:read`,`video_mgmt_playlists:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `video_mgmt:read:list_playlists`,`video_mgmt:read:list_playlists:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `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:** ```json { "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\` \
Unauthorized ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
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](https://www.zoom.us/pricing?). - A Zoom Video Management license. **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `video_mgmt_playlists:write`,`video_mgmt_playlists:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `video_mgmt:write:playlist`,`video_mgmt:write:playlist:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `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:** ```json { "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:** ```json { "playlist_id": "iso9Dllddp39dagjLj9j", "name": "FoodieFlicks" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
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](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `video_mgmt_playlists:write`,`video_mgmt_playlists:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `video_mgmt:delete:playlist`,`video_mgmt:delete:playlist:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 204 Successfully deleted playlist ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
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](https://www.zoom.us/pricing?). - A Zoom Video Management license. **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `video_mgmt_playlists:write`,`video_mgmt_playlists:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `video_mgmt:update:playlist`,`video_mgmt:update:playlist:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `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:** ```json { "name": "FoodieFlicks", "thumbnails": [ { "file_id": "xBvggqyjQUal6TecwMlYwE123" } ] } ``` #### Responses ##### Status: 204 Successfully updated playlist ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
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](https://www.zoom.us/pricing?). - A Zoom Video Management license. **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `video_mgmt_channels:read`,`video_mgmt_channels:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `video_mgmt:read:list_channel_videos`,`video_mgmt:read:list_channel_videos:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `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:** ```json { "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\` \
Unauthorized ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
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](https://www.zoom.us/pricing?). - A Zoom Video Management license. **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `video_mgmt_channels:write`,`video_mgmt_channels:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `video_mgmt:write:channel_videos`,`video_mgmt:write:channel_videos:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `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:** ```json { "videos": [ { "video_id": "csduzfv3JwTeyR5QpC3PXw52" } ] } ``` #### Responses ##### Status: 204 Successfully added channel videos. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`30661005\` \
Channel not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
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](https://www.zoom.us/pricing?). - A Zoom Video Management license. **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `video_mgmt_channels:write`,`video_mgmt_channels:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `video_mgmt:delete:channel_videos`,`video_mgmt:delete:channel_videos:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `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:** ```json { "videos": [ { "video_id": "csduzfv3JwTeyR5QpC3PXw52" } ] } ``` #### Responses ##### Status: 204 Successfully deleted channel videos. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`30661005\` \
Channel not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
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](https://www.zoom.us/pricing?). - A Zoom Video Management license. **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `video_mgmt_playlists:read`,`video_mgmt_playlists:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `video_mgmt:read:list_playlist_videos`,`video_mgmt:read:list_playlist_videos:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `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:** ```json { "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\` \
Unauthorized ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
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](https://www.zoom.us/pricing?). - A Zoom Video Management license. **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `video_mgmt_playlists:write`,`video_mgmt_playlists:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `video_mgmt:write:playlist_videos`,`video_mgmt:write:playlist_videos:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `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:** ```json { "videos": [ { "video_id": "csduzfv3JwTeyR5QpC3PXw52" } ] } ``` #### Responses ##### Status: 204 Successfully added playlist videos. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
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](https://www.zoom.us/pricing?). - A Zoom Video Management license. **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `video_mgmt_playlists:write`,`video_mgmt_playlists:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `video_mgmt:delete:playlist_videos`,`video_mgmt:delete:playlist_videos:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `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:** ```json { "videos": [ { "video_id": "csduzfv3JwTeyR5QpC3PXw52" } ] } ``` #### Responses ##### Status: 204 Successfully deleted playlist videos. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
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](https://www.zoom.us/pricing?). - A Zoom Video Management license. **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `video_mgmt_videos:read`,`video_mgmt_videos:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `video_mgmt:read:list_videos`,`video_mgmt:read:list_videos:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `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:** ```json { "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\` \
Unauthorized ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
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](https://www.zoom.us/pricing?). - A Zoom Video Management license. **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `video_mgmt_videos:read`,`video_mgmt_videos:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `video_mgmt:read:video_metadata`,`video_mgmt:read:video_metadata:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT` #### Responses ##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` \
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:** ```json { "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\` \
Unauthorized ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
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](https://www.zoom.us/pricing?). - A Zoom Video Management license. **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `video_mgmt_videos:write`,`video_mgmt_videos:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `video_mgmt:update:video_metadata`,`video_mgmt:update:video_metadata:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `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:** ```json { "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\` \
Bad Request ##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
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](/docs/api/video-management/#tag/channels/post/video_management/channels). **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](https://www.zoom.us/pricing?). - A Zoom Video Management license. **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `video_mgmt_file:write`,`video_mgmt_file:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `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:** ```json { "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:** ```json { "file_id": "xBvggqyjQUal6TecwMlYwE" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 401 \*\*HTTP Status Code:\*\* \`401\` \
Unauthorized ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found Video not found ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/).