Clips
- OpenAPI Version:
3.1.1 - API Version:
2
Clips APIs allow developers to interface with Zoom Clips features programmatically. Zoom Clips enables users to capture, manage, and share short video recordings, making it a valuable tool for collaboration, communication, and documentation.
Servers
- URL:
https://api.zoom.us/
Operations
List all clips
- Method:
GET - Path:
/clips - Tags: Clips
Returns a list of clips of the current user or a list of all clips under the account.
Required scopes clips:read:list_user_clips:admin)
Note user_id can intake Zoom user ID or email, which only applies when scope = clips:read:list_user_clips:admin or scope=clips:read:list_user_clips:master. Otherwise, the user_id can only intake me.
Scopes: clips:read,clips:read:admin
Granular Scopes: clips:read:list_user_clips,clips:read:list_user_clips:admin
Rate Limit Label: LIGHT
Responses
Status: 200 Clips list returned.
Content-Type: application/json
-
dataarray— The list of clips.Items:
-
clip_idstring— The clip's ID. -
created_datestring— The clip created date-time in UTC/GMT. Example: "2020-03-31T12:02:00Z" -
descriptionstring— The description of the clip. -
durationnumber— The duration of the clip, where the unit of duration is seconds. -
file_sizeinteger— The clip file size in bytes -
modified_datestring— The clip modified date-time in UTC/GMT. Example: "2020-03-31T12:02:00Z" -
owner_idstring— The owner's ID. -
share_linkstring— The share link of the clip. -
share_link_settingsobject— The access level, which indicates the access type of the current clips' share link.-
enable_passcodeboolean— Whether the passcode is enabled. -
passcodestring— The passcode. It exists only when `enable_passcode=true` -
share_scopestring, possible values:"ANYONE", "SAME_ORGANIZATON", "INVITED_MEMBERS_ONLY", "PRIVATE"— ANYONE - Anyone with this clip link can watch it. SAME_ORGANIZATON - Only users who are in the same organization as the clip owner can watch it. INVITED_MEMBERS_ONLY - Only invited users can watch it. PRIVATE - Only the clip's owner and account administrators can watch it.
-
-
statusstring, possible values:"RECORD_START", "RECORD_FAILED", "RECORD_END", "RECORD_SUCCESS", "RECORD_DELETE", "SUSPENDED"— The clip status. RECORD_START - It means the clip recording has started but has not yet ended. RECORD_FAILED - It means the clip recording failed. RECORD_END - It means the clip recording has ended but the MP4 transcription is not yet complete. RECORD_SUCCESS - It means the clip recording has reached its final state and is fully complete. RECORD_DELETE - It means the clip has been soft deleted. SUSPENDED - It means the clip has been suspended by the trust & safety team. -
tagsarray— The clip's tagsItems:
string— tag name -
thumbnail_linkstring— The clip thumbnail link. -
titlestring— The title of the clip.
-
-
next_page_tokenstring— The next page token paginates through large result sets. A next page token returns whenever the set of available results exceeds the current page size. This token's expiration period is 15 minutes. -
page_sizeinteger, default:30— The number of records returned within a single API call. -
total_recordsnumber— The total number of records found.
Example:
{
"data": [
{
"title": "clips test title",
"description": "just for test",
"duration": 6000,
"status": "RECORD_SUCCESS",
"clip_id": "A2RldhYyU08zeDNIeFJJVzBOcHFRVlZQWXlRAQ",
"owner_id": "pRof_6gpQP2YKDxmglRziA",
"file_size": 639229,
"share_link": "https://dev-integration.zoomdev.us/clips/share/A2RldhYyU08zeDNIeFJJVzBOcHFRVlZQWXlRAQ",
"share_link_settings": {
"passcode": "Dmpy*xy7",
"share_scope": "ANYONE",
"enable_passcode": true
},
"thumbnail_link": "https://file.zoomdev.us/file/2SO3x3HxRIW0NpqQVVPYyQ?attachType=preview&filename=2SO3x3HxRIW0NpqQVVPYyQ.jpg&jwt=eyJhbGciOiJFUzI1NiIsImsiOiJLSzQxYXo3LyJ9.eyJpc3MiOiJmaWxlIiwiYXVkIjoiemZzIiwiaWljIjoiZGV2IiwiaWF0IjoxNzMwNDM4OTE2LCJvcmkiOiJtYXJ2ZWwiLCJkaWciOiI5NDhhMjIxYjU2ZTFhOWM1YTMyOTE0ODdlNjFmMGU1YjA2NzkzNTM3NTY5NDRhZWVjNzcyYmU3OTQ3ZWQ3ZTAwIiwiZXhwIjoxNzMwNDQ2MTE2LCJoZGlnIjpmYWxzZX0.Lgk1SRRKsxrxWN6F9Y9aZgfqXCSZ1mJg-UsunpVCMuRMYUR1Sf-gGn1_2_Fc1gFexkBKr0C50jT7Vo1_1YQUlQ&subType=552x310",
"created_date": "2024-10-11T01:51:50.631+00:00",
"modified_date": "2024-10-31T10:06:08.460+00:00",
"tags": [
"testTag"
]
}
],
"next_page_token": "R4aF9Oj0fVM2hhezJTEmSKaBSkfesDwGy42",
"page_size": 30,
"total_records": 30
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Pagination Error <br>
Status: 401 **HTTP Status Code:** `401` <br> Unauthorized **Error Code:** `1002` <br> No authenticated <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `1003` <br> No permission to operate <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Get collaborators of a clip
- Method:
GET - Path:
/clips/{clipId}/collaborators - Tags: Clips
Returns the list of collaborators for a clip that the current user owns or returns the list of collaborators for any clip associated with the account. Required scopes clips:read:list_collaborator:admin
Scopes: clips:read,clips:read:admin
Granular Scopes: clips:read:list_collaborator,clips:read:list_collaborator:admin
Rate Limit Label: LIGHT
Responses
Status: 200 **HTTP Status Code:** `200` Clips returned.
Content-Type: application/json
-
dataarray— A list of the clip's collaborators.Items:
-
avatarstring— The avatar's URL -
channel_idstring— This field returns *nullable Team chat channel ID*. This response only returns if the type is 'CHANNEL'. If the `collaborator_type` is not 'CHANNEL', it returns a null value. -
display_namestring— This field returns *nullable Display Name*. This response returns a value only when the type is either 'ZOOM_USER' or 'CHANNEL' and the user belongs to the same organization; otherwise, it returns a null value. -
emailstring— This field returns *nullable Email*. This response only returns if the type is 'EXTERNAL_USER'. If the type is not 'EXTERNAL_USER', it returns a null value. -
rolestring, possible values:"OWNER", "VIEWER"— The owner (OWNER) of the clip. VIEWER - A viewer of the clip. -
typestring, possible values:"ZOOM_USER", "EXTERNAL_USER", "CHANNEL"— A Zoom user (ZOOM_USER). EXTERNAL_USER - A non-Zoom user. CHANNEL - A channel, not a user. -
user_idstring— This field returns *nullable User ID*. This response returns a value only if the type is 'ZOOM_USER' and the user belongs to the same organization. If the type is not 'ZOOM_USER' or the user does not belong to the same organization, it returns a null value.
-
-
next_page_tokenstring— The next page token paginates through a large set of results. A next page token returns when the available results exceed the current page size. The expiration period for this token is 15 minutes. -
page_sizenumber— The number of records returned per page in a single API call.
Example:
{
"data": [
{
"avatar": "https://filedev.zoomdev.us/p/pRof_6gpQP2YKDxmglRziA/664dcb20-5d05-40da-8fd0-ef32b6f2ee5b-3518",
"email": "dev_victor_test_main@dispostable.com",
"type": "ZOOM_USER",
"role": "VIEWER",
"display_name": "dev_victor dev_lu",
"channel_id": "c15e84143a6949568247c2fe1e097bd2",
"user_id": "4BJ2vryWQg-VZaj0iP4p0w"
}
],
"next_page_token": "INg1ogDUtBxsvlBiDnZQ8Ik0qpK4XaCjg22",
"page_size": 30
}
Status: 401 **HTTP Status Code:** `401` <br> Unauthorized **Error Code:** `1002` <br> No authenticated <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `1003` <br> No permission to operate <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `2000` <br> Clip does not exist: {clipId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Remove the collaborator from a clip
- Method:
DELETE - Path:
/clips/{clipId}/collaborators - Tags: Collaborator
Removes a collaborator from a clip.
Scopes: clips:write,clips:write:admin
Granular Scopes: clips:delete:collaborators,clips:delete:collaborators:admin
Rate Limit Label: LIGHT
Responses
Status: 204 Clip collaborator deleted successfully.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `1500` <br> Input parameter is invalid. <br>
Status: 401 **HTTP Status Code:** `401` <br> Unauthorized **Error Code:** `1002` <br> No authenticated. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `1003` <br> No permission to operate <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `2000` <br> Clip does not exist: {clipId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
List clip comments
- Method:
GET - Path:
/clips/{clipId}/comments - Tags: Comment
Returns the list of comments for a clip.
Scopes: clips:read,clips:read:admin
Granular Scopes: clips:read:list_comments,clips:read:list_comments:admin
Rate Limit Label: LIGHT
Responses
Status: 200 Clip comment list returned.
Content-Type: application/json
-
dataarray— The list of comments.Items:
-
avatarstring— The comment owner's avatar. -
children_commentsarray— The list of comments.Items:
-
avatarstring— The comment owner's avatar. -
comment_idstring— The comment's ID. -
contentstring— The comment's content. -
content_typestring, possible values:"TEXT_WITH_MENTION", "TEXT"— The type of the comment. TEXT_WITH_MENTION – A comment that includes a mention. TEXT – A comment without any mention. -
created_datestring— The comment created date-time in UTC/GMT. Example: "2020-03-31T12:02:00Z" -
display_namestring— The comment owner's name. -
editedboolean— Indicates whether the comment has been modified. -
mentionsarray— Includes mention information in the comment, if present.Items:
-
display_namestring— The display name of the mentioned user. -
emailstring— The email address of the mentioned user.
-
-
modified_datestring— The comment modified date-time in UTC/GMT. Example: "2020-03-31T12:02:00Z" -
parent_node_idstring— The comment parent node's ID.
-
-
comment_idstring— The comment's ID. -
contentstring— The comment's content. Supports user mentions in the format: @\[display_name](user:email). Example: @\[clips clips](user:victor.lu@dev.gg) @\[victor.lu](user:devint_test_clips@dispostable.com) here it is - display_name is the visible name shown in the comment. - email is a unique identifier used to resolve the mentioned user. Developers can extract mention info using the regex: @\[(.*?)\]\(user:(.*?)\) -
content_typestring, possible values:"TEXT_WITH_MENTION", "TEXT"— The type of the comment. TEXT_WITH_MENTION – A comment that includes a mention. TEXT – A comment without any mention. EMOJI – An emoji reaction without text. -
created_datestring— The comment created date-time in UTC/GMT. Example: "2020-03-31T12:02:00Z" -
display_namestring— The comment owner's display name. If the owner is a Zoom user, it will display the user's name. If the owner is a guest, it will always display 'Guest'. If the owner is an invited email user (not a Zoom user), it will display the user's email address. -
editedboolean— Whether the comment has been modified. -
mentionsarray— The mention information in the comment, if present.Items:
-
display_namestring— The display name of the mentioned user. -
emailstring— The email address of the mentioned user.
-
-
modified_datestring— The comment modified date-time in UTC/GMT. Example: "2020-03-31T12:02:00Z" -
parent_node_idstring— The comment parent node's ID.
-
-
next_page_tokenstring— The next page token paginates through a large set of results. A next page token returns when the available results exceed the current page size. The expiration period for this token is 15 minutes. -
page_sizenumber— The number of records returned per page in a single API call.
Example:
{
"data": [
{
"comment_id": "a16eb597-90ed-4e70-8475-4f1e0022c8a7",
"content": "@[clips clips](user:victor.lu@dev.gg) @[victor.lu](user:devint_test_clips@dispostable.com) here it is",
"created_date": "2023-11-16T02:50:51Z",
"modified_date": "2023-11-16T02:50:51Z",
"display_name": "dev_victor dev_lu",
"avatar": "https://filedev.zoomdev.us/p/pRof_6gpQP2YKDxmglRziA/664dcb20-5d05-40da-8fd0-ef32b6f2ee5b-3518",
"parent_node_id": "0b7cdb63-0be1-4a05-b44d-e611ac9ae86c",
"edited": false,
"mentions": [
{
"display_name": "clips clips",
"email": "devint_test_clips@dispostable.com"
}
],
"content_type": "TEXT_WITH_MENTION",
"children_comments": [
{
"comment_id": "a16eb597-90ed-4e70-8475-4f1e0022c8a7",
"content": "test comment",
"created_date": "2023-11-16T02:50:51Z",
"modified_date": "2023-11-16T02:50:51Z",
"display_name": "dev_victor dev_lu",
"avatar": "https://filedev.zoomdev.us/p/pRof_6gpQP2YKDxmglRziA/664dcb20-5d05-40da-8fd0-ef32b6f2ee5b-3518",
"parent_node_id": "0b7cdb63-0be1-4a05-b44d-e611ac9ae86c",
"edited": false,
"mentions": [
{
"display_name": "Lowell",
"email": "dev_clips_lowell@dispostable.com"
}
],
"content_type": "TEXT_WITH_MENTION"
}
]
}
],
"next_page_token": "d0csbC3glWlDxlBYP2YcyXox01QHyiwhPg2",
"page_size": 15
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `300` <br> Pagination Error <br>
Status: 401 **HTTP Status Code:** `401` <br> Unauthorized **Error Code:** `1002` <br> No authenticated <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `1003` <br> No permission to operate <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `2000` <br> Clip does not exist: {clipId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rate-limits/).
Delete a comment
- Method:
DELETE - Path:
/clips/{clipId}/comments/{commentId} - Tags: Comment
Removes a comment from a clip.
Scopes: clips:write,clips:write:admin
Granular Scopes: clips:delete:comment,clips:delete:comment:admin
Rate Limit Label: LIGHT
Responses
Status: 204 Clip comment deleted successfully.
Status: 401 **HTTP Status Code:** `401` <br> Unauthorized **Error Code:** `1002` <br> No authenticated <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `1003` <br> No permission to operate <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `2000` <br> Clip does not exist: {clipId}. <br> **Error Code:** `2005` <br> Comment does not exist: {commentId}. <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/).
Download a clip
- Method:
GET - Path:
/clips/{clipId}/download - Tags: Download
Retrieves the download URL for a specific clip and redirects the client to that URL. This endpoint performs a HTTP 302 redirect to the actual download location, allowing the client to download the clip mp4 file directly.
Scopes: clips:read,clips:read:admin
Granular Scopes: clips:read:download_clip,clips:read:download_clip:admin
Rate Limit Label: LIGHT
Responses
Status: 200 The clip file binary stream.
Content-Type: application/octet-stream
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `50002` <br> clip mp4 is not ready <br> **Error Code:** `50003` <br> download url is invalid <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `20001` <br> permission validate failed <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `10002` <br> clip not found or not ready <br>
Get a clip
- Method:
GET - Path:
/clips/{clipId} - Tags: Single
Returns a clip from the current user, or returns any clips associated with the account.
Required scopes: clips:read:clip:admin.
Scopes: clips:read,clips:read:admin
Granular Scopes: clips:read:clip,clips:read:clip:admin
Responses
Status: 200 Clip object returned.
Content-Type: application/json
-
clip_idstring— The clip's ID. -
created_datestring— The clip created date-time in UTC/GMT. Example: "2020-03-31T12:02:00Z" -
descriptionstring— The clip's description. -
durationnumber— The duration of the clip, where the unit of duration is in seconds. -
file_sizeinteger— The clip's file size in bytes. -
modified_datestring— The clip modified date-time in UTC/GMT. Example: "2020-03-31T12:02:00Z" -
owner_idstring— The owner's ID. -
share_linkstring— The clip's share link. -
share_link_settingsobject— The access level, which indicates the access type of the current clips' share link.-
enable_passcodeboolean— Whether the passcode is enabled. -
passcodestring— The passcode. Ir exists only when `enable_passcode=true` -
share_scopestring, possible values:"ANYONE", "SAME_ORGANIZATON", "INVITED_MEMBERS_ONLY", "PRIVATE"— ANYONE - Anyone with this clip link can watch it. SAME_ORGANIZATON - Only users who are in the same organization as the clip owner can watch it. INVITED_MEMBERS_ONLY - Only invited users can watch it. PRIVATE - Only the clip's owner and account administrators can watch it.
-
-
statusstring, possible values:"RECORD_START", "RECORD_FAILED", "RECORD_END", "RECORD_SUCCESS", "RECORD_DELETE", "SUSPENDED"— The clip's status. RECORD_START - The clip recording has started but has not yet ended. RECORD_FAILED - The clip recording failed. RECORD_END - The clip recording has ended but the MP4 transcription is not yet complete. RECORD_SUCCESS - The clip recording has reached its final state and is fully complete. RECORD_DELETE - The clip has been soft deleted. SUSPENDED - The clip has been suspended by the trust & safety team. -
tagsarray— the clip's tags.Items:
string— The tag name. -
thumbnail_linkstring— The clip thumbnail link. -
titlestring— The clip's title.
Example:
{
"title": "clips test title",
"description": "just for test",
"duration": 6000,
"status": "RECORD_SUCCESS",
"clip_id": "A2RldhYyU08zeDNIeFJJVzBOcHFRVlZQWXlRAQ",
"owner_id": "pRof_6gpQP2YKDxmglRziA",
"file_size": 639229,
"share_link": "https://dev-integration.zoomdev.us/clips/share/A2RldhYyU08zeDNIeFJJVzBOcHFRVlZQWXlRAQ",
"share_link_settings": {
"passcode": "Dmpy*xy7",
"share_scope": "ANYONE",
"enable_passcode": true
},
"thumbnail_link": "https://file.zoomdev.us/file/2SO3x3HxRIW0NpqQVVPYyQ?attachType=preview&filename=2SO3x3HxRIW0NpqQVVPYyQ.jpg&jwt=eyJhbGciOiJFUzI1NiIsImsiOiJLSzQxYXo3LyJ9.eyJpc3MiOiJmaWxlIiwiYXVkIjoiemZzIiwiaWljIjoiZGV2IiwiaWF0IjoxNzMwNDM4OTE2LCJvcmkiOiJtYXJ2ZWwiLCJkaWciOiI5NDhhMjIxYjU2ZTFhOWM1YTMyOTE0ODdlNjFmMGU1YjA2NzkzNTM3NTY5NDRhZWVjNzcyYmU3OTQ3ZWQ3ZTAwIiwiZXhwIjoxNzMwNDQ2MTE2LCJoZGlnIjpmYWxzZX0.Lgk1SRRKsxrxWN6F9Y9aZgfqXCSZ1mJg-UsunpVCMuRMYUR1Sf-gGn1_2_Fc1gFexkBKr0C50jT7Vo1_1YQUlQ&subType=552x310",
"created_date": "2024-10-11T01:51:50.631+00:00",
"modified_date": "2024-10-31T10:06:08.460+00:00",
"tags": [
"tagTest"
]
}
Status: 401 **HTTP Status Code:** `401` <br> Unauthorized **Error Code:** `1002` <br> No authenticated <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `1003` <br> No permission to operate <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `2000` <br> Clip does not exist: {clipId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Delete a clip(soft delete)
- Method:
DELETE - Path:
/clips/{clipId} - Tags: Single
Deletes a clip.
Scopes: clips:write,clips:write:admin
Granular Scopes: clips:delete:clip,clips:delete:clip:admin
Rate Limit Label: LIGHT
Responses
Status: 204 Clip deleted successfully.
Status: 401 **HTTP Status Code:** `401` <br> Unauthorized **Error Code:** `1002` <br> No authenticated <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `1003` <br> No permission to operate <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `2000` <br> Clip does not exist: {clipId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Update a clip's basic info
- Method:
PATCH - Path:
/clips/{clipId} - Tags: Single
Updates clips basic info by clip's Id, now support update title/description/tags
Required scopes: clips:write:clip:admin.
Scopes: clips:write,clips:write:admin
Granular Scopes: clips:update:clip,clips:update:clip:admin
Rate Limit Label: LIGHT
Request Body
Content-Type: application/json
-
descriptionstring— The clip summary. -
tagsarray— The clip tags. The support max size is 10Items:
string— The tag name. -
titlestring— The clip title.
Example:
{
"title": "test-open-api",
"description": "test-open-api-desc",
"tags": [
"testTag"
]
}
Responses
Status: 204 Clip updated successfully.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request Field 'tags' size exceeds max size 10
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `1003` <br> No permission to operate <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `2000` <br> Clip does not exist: {clipId}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Transfer clips owner
- Method:
POST - Path:
/clips/transfers - Tags: Transfer
Transfers clip ownership to another user.
Scopes: clips:write:admin
Granular Scopes: clips:write:transfer_owner:admin
Rate Limit Label: MEDIUM
Request Body
Content-Type: application/json
-
source_owner_user_id(required)string— The source user ID who currently owns the clips. Optional for full transfers. -
target_owner_user_id(required)string— The target user ID to receive ownership. Must be active. -
transfer_type(required)string, possible values:"PARTIAL_TRANSFER", "FULL_TRANSFER"— The type of transfer event: PARTIAL_TRANSFER or FULL_TRANSFER. -
clip_id_listarray— The list of specific clip IDs to transfer. Required for partial transfers.Items:
string— The clip ID.
Example:
{
"source_owner_user_id": "user_123",
"clip_id_list": [
"clip_id_123"
],
"target_owner_user_id": "user_234",
"transfer_type": "PARTIAL_TRANSFER"
}
Responses
Status: 201 **HTTP Status Code:** `201` Clips transfer status.
Content-Type: application/json
-
task_id(required)string— The unique ID of this transfer request for logging/correlation.
Example:
{
"task_id": "task_id_123"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `1007` <br> Clips not belong current user. <br> **Error Code:** `10001` <br> Missing field. <br> **Error Code:** `10003` <br> Invalidated field value. <br> **Error Code:** `10004` <br> When transfer type is PARTIAL_TRANSFER, clip_id_list limit size is 50. <br> **Error Code:** `20002` <br> Clips not belong sourceOwner. <br> **Error Code:** `30001` <br> Source user and target user have processing transfer task. <br> **Error Code:** `10002` <br> Can not found any clip by clip_id_list <br>
Status: 401 **HTTP Status Code:** `401` <br> Unauthorized **Error Code:** `1002` <br> No authenticated <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `1003` <br> No permission to operate <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/).
Transfer task status check
- Method:
GET - Path:
/clips/transfers/{taskId} - Tags: Transfer
Transfers the task status check.
Scopes: clips:read:admin
Granular Scopes: clips:read:transfer_task_status:admin
Rate Limit Label: LIGHT
Responses
Status: 200 The clips transfer task status.
Content-Type: application/json
-
source_owner_user_id(required)string— The source user ID who currently owns the clips. Optional for full transfers. -
status(required)string, possible values:"IN_PROCESS", "SUCCESS", "FAILED"— The current status of the transfer task. -
target_owner_user_id(required)string— The target user ID to receive ownership. Must be an active user. -
transfer_type(required)string, possible values:"PARTIAL_TRANSFER", "FULL_TRANSFER"— The type of transfer operation: PARTIAL_TRANSFER or FULL_TRANSFER. -
clip_id_listarray— The list of specific clip IDs to transfer. Required for partial transfers.Items:
string— The clip ID.
Example:
{
"status": "FAILED",
"transfer_type": "PARTIAL_TRANSFER",
"source_owner_user_id": "user_123",
"target_owner_user_id": "user_234",
"clip_id_list": [
"clip_id_123"
]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `10001` <br> Missing field. <br>
Status: 401 **HTTP Status Code:** `401` <br> Unauthorized **Error Code:** `1002` <br> No authenticated. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `1003` <br> No permission to operate <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `10002` <br> Can not found any async task by taskId and accountId. <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/).
Upload clip file
- Method:
POST - Path:
/clips/files - Tags: Upload
Uploads a file to Zoom Revenue Acclerator.
Note:
- Base URL:
https://fileapi.zoom.us/v2/. - The rate limit is 20 requests per second or 2000 requests per second per IP address or 50 requests per user within a 24-hour period
- The caller must support HTTP 30x redirects.
- The caller must retain the Authorization header when redirected to a different hostname.
- Supported video formats:
.mp4,.webm. - When your object size reaches 2 GB, you should use multipart uploads instead of uploading the object in a single operation.
- For an account-level OAuth app, this API can only be used on behalf of a user who is assigned with a role with Edit permission for Zoom Clips.
Scopes: clips:write,clips:write:admin
Request Body
Content-Type: multipart/form-data
-
file(required)string— The upload file, in binary format. You can only send a maximum of two gigabytes.
Example:
{
"file": "Vm1wSmQyVkhUWGxVV0docVVteHdjRlZxVGs1UFVUMDk="
}
Responses
Status: 201 **HTTP Status Code:** `201` File successfully uploaded.
Content-Type: application/json
-
clip_idstring— The clip's unique ID.
Example:
{
"clip_id": "xBvggqyjQUal6TecwMlYwE"
}
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Upload clip multipart files
- Method:
POST - Path:
/clips/files/multipart - Tags: Upload
Uploads a multipart file.
Note:
- The base URL for this API is
https://fileapi.zoom.us/v2/. - The rate limit of this API is 20 requests per second or 2000 requests per second per IP address or 50 requests per user within a 24-hour period.
- The caller must support HTTP 30x redirects.
- The caller must retain the authorization header when redirected to a different hostname.
- Video can be in
.mp4,.webmformat. - In general, when your object size reaches 2 GB, you should use multipart uploads instead of uploading the object in a single operation.
- For an account-level OAuth app, this API can only be used on behalf of a user who is assigned with a role that has the Edit permission for Zoom Clips.
Scopes: clips:write,clips:write:admin
Request Body
Content-Type: multipart/form-data
-
file(required)string— The upload file, in binary format. Each part must be at most 100 MB in size, and at least 5 MB in size, except the last part. -
part_number(required)integer— When uploading multipart files, this field indicates the part number of the part being uploaded . This field is a positive integer between 1 and 100. -
upload_context(required)string— When uploading multipart files, use the upload context to identify the multipart upload whose part is being uploaded.
Example:
{
"file": "VmpKMGExSXlWbk5qUldoVFltNUNhRlZxUWxaUFVUMDk=",
"upload_context": "noNpr2pkBEv4_fTxYWDEHBsSs3pl8keRx4fPZmnyNDe.SPdodJp.3UZDaCI2xRVzkRh0xeEV6RuOrXZpJQBPutWCS424c2YnHVxVh8b9.4DNwd4VErRuD98jeJBwRCgz6rC3I4NQg5zXAtCqPFoC0g--",
"part_number": 10
}
Responses
Status: 201 **HTTP Status Code:** `201` File successfully uploaded.
Content-Type: application/json
-
part_number_etagobject— The etag part number . Collect and bring it back in the final request to complete the multipart upload request.-
etagstring— The etag of the part being uploaded. -
part_numberinteger— The part number of the part being uploaded.
-
Example:
{
"part_number_etag": {
"part_number": 1,
"etag": "etag1"
}
}
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Initiate and complete the multipart file upload for a clip
- Method:
POST - Path:
/clips/files/multipart/upload_events - Tags: Upload
Initiates or completes a multipart upload.
Note:
- The base URL for this API is
https://fileapi.zoom.us/v2/. - The rate limit is 20 requests per second or 2000 requests per second per IP address or 50 requests per user within a 24-hour period
- The caller must support HTTP 30x redirects.
- The caller must retain the authorization header when redirected to a different hostname.
- Once initiated, the multipart upload must complete within 7 days.
- For account-level OAuth apps, this API can only be used on behalf of a user who is assigned with a role with Edit permission for Zoom Clips.
Scopes: clips:write:admin,clips:write
Request Body
Content-Type: application/json
One of:
-
method(required)string, possible values:"CreateMultipartUpload"— The method to upload events: * `CreateMultipartUpload` — Create a multipart upload. -
paramsobject— The CreateMultipartUpload parameters.-
file_namestring— The clip file's name.
-
-
method(required)string, possible values:"CompleteMultipartUpload"— The method to upload events: * `CompleteMultipartUpload` — Complete a multipart upload. -
paramsobject— The parameters for the complete multipart upload.-
part_number_etagsarray— The part number of the etags being uploaded.Items:
-
etagstring— The etag of the part being uploaded. -
part_numberinteger— The part number of the part being uploaded.
-
-
upload_contextstring— The upload context that identifies the multipart upload being uploaded.
-
Example:
{
"method": "CreateMultipartUpload",
"params": {
"file_name": "file name"
}
}
Responses
Status: 201 **Status Code:** `201` Successfully initiate and complete a multipart upload.
Content-Type: application/json
One of:
-
upload_contextstring— The upload context. Return this field if you pass the `CreateMultipartUpload` value for the `method` field. **Note:** Use this upload context to associate all of the parts in the specific multipart upload. You specify this upload context in each of your subsequent upload part requests. You also include this upload context in the final request to complete the multipart upload request.
-
clip_idstring— The clip file's unique ID. Return this field if you pass the `CompleteMultipartUpload` value for the `method` field.
Example:
{
"upload_context": "noNpr2pkBEv4_fTxYWDEHBsSs3pl8keRx4fPZmnyNDe.SPdodJp.3UZDaCI2xRVzkRh0xeEV6RuOrXZpJQBPutWCS424c2YnHVxVh8b9.4DNwd4VErRuD98jeJBwRCgz6rC3I4NQg5zXAtCqPFoC0g--"
}