Hub
- OpenAPI Version:
3.1.1 - API Version:
2
Servers
- URL:
https://api.zoom.us/v2
Operations
Get file content
- Method:
GET - Path:
/hub/files/{fileId}/content - Tags: Export
Retrieve the file name and full file content in the requested format. Supported formats per file type: doc - markdown or xml; spreadsheet - csv; presentation - markdown; paper_doc - markdown.
[Scopes(/docs/integrations/oauth-scopes-overview/): hub_content:read
[Granular Scopes(/docs/integrations/oauth-scopes-overview/): hub:read:content
Rate Limit Label: CANVAS-EXPORT
Not supported in Gov cluster
Responses
Status: 200 The file name, format, and full file content.
Content-Type: application/json
-
file_content(required)string— The file content in the format indicated by `format`. -
file_name(required)string— The name of the file.
Example:
{
"file_name": "Q3 Plan",
"file_content": "name,age\nAlice,30\nBob,25"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `5150` <br> Export file size limit exceeded. <br> **Error Code:** `5151` <br> Type and file type mismatch. <br> **Error Code:** `5152` <br> Unsupported type. <br>
Status: 401 **HTTP Status Code:** `401` <br> Unauthorized Missing or invalid token.
Status: 403 **HTTP Status Code:** `403` <br> Forbidden Permission Denied.
Status: 404 **HTTP Status Code:** `404` <br> Not Found File Not Found/Deleted.
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 file duplicate task status
- Method:
GET - Path:
/hub/file_duplicate_tasks/{taskId} - Tags: File Management
Get the current status and result of a file duplicate task.
[Scopes(/docs/integrations/oauth-scopes-overview/): hub_file_duplicate_task:read
[Granular Scopes(/docs/integrations/oauth-scopes-overview/): hub:read:file_duplicate_task
Rate Limit Label: LIGHT
Not supported in Gov cluster
Responses
Status: 200 Returns the current status and result of a file duplicate task. The response includes the duplicated file ID when the task succeeds and error details when the task fails.
Content-Type: application/json
-
status(required)string, possible values:"processing", "succeeded", "failed"— The current status of the file duplicate task. -
task_id(required)string— The unique ID of the file duplicate task. -
duplicated_file_idstring— The duplicated file's unique ID. This field is returned only when the task status is `succeeded`. -
errorobject— Error details when the task status is `failed`.-
message(required)string— A user-facing description of the error. -
reason(required)string, possible values:"REASON_UNSPECIFIED", "REASON_PARAMS_INVALID", "REASON_PERMISSION_DENIED", "REASON_FILE_NOT_FOUND"— The machine-readable reason for the error.
-
Example:
{
"task_id": "copy-5nXkADVAQkqbfX-hNZv00x-a1b2c3",
"status": "succeeded",
"duplicated_file_id": "9fQkADVAQkqbfX-hNZv00x",
"error": {
"reason": "REASON_PERMISSION_DENIED",
"message": "You do not have permission to duplicate this file."
}
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request The task ID is invalid.
Status: 403 **HTTP Status Code:** `403` <br> Forbidden The caller does not have permission to view this file duplicate task.
Status: 404 **HTTP Status Code:** `404` <br> Not Found The file duplicate task was not found or has expired.
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rate-limits/).
Duplicate a file
- Method:
POST - Path:
/hub/files/{fileId}/duplicate - Tags: File Management
Duplicate an existing Zoom Hub file to the target location. Supported file types include doc, data_table, paper_doc, spreadsheet, presentation, whiteboard, and clip. Other file types are not supported.
[Scopes(/docs/integrations/oauth-scopes-overview/): hub_content:write
[Granular Scopes(/docs/integrations/oauth-scopes-overview/): hub:write:content
Rate Limit Label: HEAVY
Not supported in Gov cluster
Request Body
Content-Type: application/json
-
file_namestring— The name for the duplicated file. If omitted, the source file name or the product-specific duplicate naming rule is used. -
parent_idstring— The ID of the destination folder, including a folder in My Files or a shared folder. If omitted or set to `root`, the file is duplicated to the effective user's My Files folder. The destination must exist and allow the effective user to create the duplicated file.
Example:
{
"parent_id": "8wo23G28T6m6Yrj8VAI00x",
"file_name": "Q3 Planning Duplicate"
}
Responses
Status: 202 The request has been accepted and an asynchronous file duplicate task has been created. Use the returned `task_id` to poll `GET /hub/file_duplicate_tasks/{taskId}` for the task result.
Content-Type: application/json
-
task_id(required)string— The unique ID of the file duplicate task. Use it to retrieve the task status by calling `GET /hub/file_duplicate_tasks/{taskId}`.
Example:
{
"task_id": "copy-5nXkADVAQkqbfX-hNZv00x-a1b2c3"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request The request is invalid. For example, the source file ID is invalid, the file type is unsupported, or the parent ID is invalid.
Status: 403 **HTTP Status Code:** `403` <br> Forbidden The caller does not have permission to duplicate the source file or create a file in the target location.
Status: 404 **HTTP Status Code:** `404` <br> Not Found The source file or target location was 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 new file from content
- Method:
POST - Path:
/hub/files - Tags: Import
Creates a new file from plain-text content. The expected content format per file type: doc - Markdown; paper_doc - Markdown; spreadsheet - CSV.
The content is limited to 100 KB in size.
[Scopes(/docs/integrations/oauth-scopes-overview/): hub_content:write
[Granular Scopes(/docs/integrations/oauth-scopes-overview/): hub:write:content
Rate Limit Label: CANVAS-IMPORT
Not supported in Gov cluster
Request Body
Content-Type: application/json
-
file_type(required)string, possible values:"doc", "paper_doc", "spreadsheet"— The type of file to create. -
contentstring— The plain-text content in the format expected for the selected `file_type`. If omitted or empty, an empty file is created. -
file_namestring— The name of the file. -
parent_idstring— The ID of the parent file. The newly created file will become a child of this parent. If this parameter is omitted, the file will be placed under **My Files**. Use `root` to represent the top-level folder of the current user. Folders can only be created under **My Files**, a shared folder, or another folder.
Example:
{
"file_type": "doc",
"file_name": "Q3 Plan",
"parent_id": "fIdgryoPSZ-Jm34Ag-OX7A",
"content": "# Project Overview\n\nThis document provides a concise outline for a sample project."
}
Responses
Status: 201 The content is being converted into a file.
Content-Type: application/json
-
file_id(required)string— The newly created file's ID. -
file_link(required)string— The URL of the file.
Example:
{
"file_id": "ch4L4KKgQVesEJcqdt1qIw",
"file_link": "https://docs.zoom.us/doc/ch4L4KKgQVesEJcqdt1qIw"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `5005` <br> Incorrect file format. <br> **Error Code:** `5109` <br> The size of content exceeds the limit. <br> **Error Code:** `5110` <br> The number of images exceeds the limit. <br> **Error Code:** `5153` <br> Unsupported type (e.g. `presentation` for import). <br>
Status: 401 **HTTP Status Code:** `401` <br> Unauthorized Missing or invalid token.
Status: 403 **HTTP Status Code:** `403` <br> Forbidden Permission Denied.
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rate-limits/).
Status: 504 **HTTP Status Code:** `504` <br> Gateway Timeout The conversion task did not complete within the gateway budget.
List shared folders
- Method:
GET - Path:
/hub/shared_folders - Tags: Shared folder
List shared folders.
[Scopes(/docs/integrations/oauth-scopes-overview/): hub_shared_folder:read,hub_shared_folder:read:admin
[Granular Scopes(/docs/integrations/oauth-scopes-overview/): hub:read:shared_folder,hub:read:shared_folder:admin
Rate Limit Label: MEDIUM
Not supported in Gov cluster
Responses
Status: 200 Returns the shared folders.
Content-Type: application/json
-
shared_folders(required)array— The list of shared folders.Items:
-
created_time(required)string, format:date-time— The time when the shared folder was created. -
joined(required)boolean— Whether the shared folder is joined by the requested user. -
modified_time(required)string, format:date-time— The time when the shared folder was last modified. -
pinned(required)boolean— Whether the shared folder is pinned by the requested user. -
shared_folder_id(required)string— The ID of the shared folder. -
shared_folder_link(required)string, format:uri— The access link of the shared folder. -
shared_folder_name(required)string— The shared folder name.
-
-
next_page_tokenstring— The next page token 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.
Example:
{
"shared_folders": [
{
"shared_folder_id": "61kkJE-rR52UsywN25E0hQ",
"shared_folder_name": "Weekly Reports",
"shared_folder_link": "https://docs.zoom.us/space/61kkJE-rZCx8qCcR1Wed37SAqlCZg",
"created_time": "2025-06-30T09:47:40.249Z",
"modified_time": "2025-06-30T09:47:40.249Z",
"pinned": true,
"joined": true
}
],
"next_page_token": "eyJ0aW1lQ3Vyc29yIjoiMjAyNS0wNC0yMVQwOTo0NTo1OC45NTJaIiwiaWRDdXJzb3IiOiJzemFsMkpmTlFteTExY1JwdkYxRWhBIn0="
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request Invalid parameters.
Status: 401 **HTTP Status Code:** `401` <br> Unauthorized The request could not be authenticated.
Status: 403 **HTTP Status Code:** `403` <br> Forbidden No permission to query shared folders.
Status: 404 **HTTP Status Code:** `404` <br> Not Found User 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 shared folder
- Method:
POST - Path:
/hub/shared_folders - Tags: Shared folder
Create a shared folder.
[Scopes(/docs/integrations/oauth-scopes-overview/): hub_shared_folder:write
[Granular Scopes(/docs/integrations/oauth-scopes-overview/): hub:write:shared_folder
Rate Limit Label: LIGHT
Not supported in Gov cluster
Request Body
Content-Type: application/json
-
shared_folder_name(required)string— The shared folder name.
Example:
{
"shared_folder_name": "Weekly Reports"
}
Responses
Status: 201 **HTTP Status Code**: `201` Shared folder created successfully.
Content-Type: application/json
-
description(required)string— The description of the shared folder. -
external_user_access_enabled(required)boolean— Once set to `false`, external users cannot be added to or access any files in this shared folder. Existing external members will also lose access. -
member_default_file_role(required)string, possible values:"viewer", "commenter", "editor"— The default file role inherited by members of the shared folder. -
shared_folder_id(required)string— The shared folder ID. -
shared_folder_name(required)string— The shared folder name. -
visibility(required)string, possible values:"open", "private"— Controls the shared folder's visibility, discoverability, and self-service join behavior.
Example:
{
"shared_folder_id": "g-VlWaWgQP-z-qJr3dAbEA",
"description": "This shared folder is used to collect weekly reports",
"visibility": "open",
"external_user_access_enabled": true,
"member_default_file_role": "viewer",
"shared_folder_name": "Weekly Reports"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request Invalid parameters.
Status: 401 **HTTP Status Code:** `401` <br> Unauthorized The request could not be authenticated.
Status: 403 **HTTP Status Code:** `403` <br> Forbidden No permission to create a shared folder.
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 of a shared folder
- Method:
GET - Path:
/hub/shared_folders/{sharedFolderId} - Tags: Shared folder
Get the metadata of a shared folder.
[Scopes(/docs/integrations/oauth-scopes-overview/): hub_shared_folder:read,hub_shared_folder:read:admin
[Granular Scopes(/docs/integrations/oauth-scopes-overview/): hub:read:shared_folder,hub:read:shared_folder:admin
Rate Limit Label: MEDIUM
Not supported in Gov cluster
Responses
Status: 200 Returns the metadata of the shared folder.
Content-Type: application/json
-
description(required)string— The description of the shared folder. -
external_user_access_enabled(required)boolean— Once set to `false`, external users cannot be added to or access any files in this shared folder. Existing external members will also lose access. -
member_default_file_role(required)string, possible values:"viewer", "commenter", "editor"— The default file role inherited by members of the shared folder. -
shared_folder_id(required)string— The shared folder ID. -
shared_folder_name(required)string— The shared folder name. -
visibility(required)string, possible values:"open", "private"— Controls the shared folder's visibility, discoverability, and self-service join behavior.
Example:
{
"shared_folder_name": "Weekly Reports",
"description": "This shared folder is used to collect weekly reports",
"visibility": "open",
"external_user_access_enabled": true,
"member_default_file_role": "viewer",
"shared_folder_id": "g-VlWaWgQP-z-qJr3dAbEA"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request The shared folder ID is invalid.
Status: 401 **HTTP Status Code:** `401` <br> Unauthorized The request requires a valid access token.
Status: 403 **HTTP Status Code:** `403` <br> Forbidden The user does not have permission to read the shared folder metadata.
Status: 404 **HTTP Status Code:** `404` <br> Not Found The shared folder does not exist or is not accessible.
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 shared folder
- Method:
DELETE - Path:
/hub/shared_folders/{sharedFolderId} - Tags: Shared folder
Delete a shared folder.
[Scopes(/docs/integrations/oauth-scopes-overview/): hub_shared_folder:delete,hub_shared_folder:delete:admin
[Granular Scopes(/docs/integrations/oauth-scopes-overview/): hub:delete:shared_folder,hub:delete:shared_folder:admin
Rate Limit Label: LIGHT
Not supported in Gov cluster
Responses
Status: 204 **HTTP Status Code**: `204` The shared folder has been successfully deleted.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request The shared folder ID is invalid.
Status: 401 **HTTP Status Code:** `401` <br> Unauthorized The request could not be authenticated.
Status: 403 **HTTP Status Code:** `403` <br> Forbidden The current user is not allowed to delete the shared folder.
Status: 404 **HTTP Status Code:** `404` <br> Not Found The shared folder was 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/).
Modify metadata of a shared folder
- Method:
PATCH - Path:
/hub/shared_folders/{sharedFolderId} - Tags: Shared folder
Modify the metadata of a shared folder.
[Scopes(/docs/integrations/oauth-scopes-overview/): hub_shared_folder:write
[Granular Scopes(/docs/integrations/oauth-scopes-overview/): hub:update:shared_folder
Rate Limit Label: MEDIUM
Not supported in Gov cluster
Request Body
Content-Type: application/json
-
descriptionstring— The description of the shared folder. -
external_user_access_enabledboolean— Once set to `false`, external users cannot be added to or access any files in this shared folder. Existing external members will also lose access. -
member_default_file_rolestring, possible values:"viewer", "commenter", "editor"— The default file role inherited by members of the shared folder. -
shared_folder_namestring— The shared folder name. -
visibilitystring, possible values:"open", "private"— Controls the shared folder's visibility, discoverability, and self-service join behavior.
Example:
{
"shared_folder_name": "Weekly Reports",
"description": "This shared folder is used to collect weekly reports",
"visibility": "open",
"external_user_access_enabled": true,
"member_default_file_role": "viewer"
}
Responses
Status: 200 **HTTP Status Code:** `200` <br> Updates the shared folder metadata successfully and returns the latest shared folder info.
Content-Type: application/json
-
description(required)string— The description of the shared folder. -
external_user_access_enabled(required)boolean— Once set to `false`, external users cannot be added to or access any files in this shared folder. Existing external members will also lose access. -
member_default_file_role(required)string, possible values:"viewer", "commenter", "editor"— The default file role inherited by members of the shared folder. -
shared_folder_id(required)string— The shared folder ID. -
shared_folder_name(required)string— The shared folder name. -
visibility(required)string, possible values:"open", "private"— Controls the shared folder's visibility, discoverability, and self-service join behavior.
Example:
{
"shared_folder_name": "Weekly Reports",
"description": "This shared folder is used to collect weekly reports",
"visibility": "open",
"external_user_access_enabled": true,
"member_default_file_role": "viewer",
"shared_folder_id": "g-VlWaWgQP-z-qJr3dAbEA"
}