Now Available: Zoom AI Services Summarizer & Translator APIs.
APIsMCPBlogChangelogAgent Skills
Help
/
Hub
API
View as MarkdownDownload OpenAPI
APIsMCPBlogChangelogAgent SkillsHelp
Theme

Hub API

  • OpenAPI Version: 3.1.1
  • API Version: 2

The Zoom Hub API lets developers programmatically manage the files, folders, and content that live in Zoom Hub , the centralized content layer for Zoom Canvas, AI Productivity Suite (Sheets, Slides, Paper), My Notes, and meeting summaries.

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: hub_content:read

Granular Scopes: hub:read:content

Rate Limit Label: CANVAS-EXPORT

Not supported in Gov cluster

Parameters

fileId required
  • In: path

The unique identifier of the file.

string

format required
  • In: query

The format of the exported content. Supported formats per file type: doc - markdown or xml; spreadsheet - csv; presentation - markdown; paper_doc - markdown.

string, possible values: "markdown", "xml", "csv"

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: hub_file_duplicate_task:read

Granular Scopes: hub:read:file_duplicate_task

Rate Limit Label: LIGHT

Not supported in Gov cluster

Parameters

taskId required
  • In: path

The unique ID of the file duplicate task returned by the Duplicate a file endpoint.

string

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_id

    string — The duplicated file's unique ID. This field is returned only when the task status is `succeeded`.

  • error

    object — 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: hub_content:write

Granular Scopes: hub:write:content

Rate Limit Label: HEAVY

Not supported in Gov cluster

Parameters

fileId required
  • In: path

The unique ID of the source file to duplicate.

string

Request Body

Content-Type: application/json
  • file_name

    string — The name for the duplicated file. If omitted, the source file name or the product-specific duplicate naming rule is used.

  • parent_id

    string — 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: hub_content:write

Granular Scopes: 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.

  • content

    string — The plain-text content in the format expected for the selected `file_type`. If omitted or empty, an empty file is created.

  • file_name

    string — The name of the file.

  • parent_id

    string — 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: hub_shared_folder:read,hub_shared_folder:read:admin

Granular Scopes: hub:read:shared_folder,hub:read:shared_folder:admin

Rate Limit Label: MEDIUM

Not supported in Gov cluster

Parameters

next_page_token
  • In: query

The page token used to paginate through a large set of results. This parameter is not required when requesting the first page.

string

page_size
  • In: query

The number of shared folders to query.

integer, default: 10

user_id
  • In: query

The Zoom user ID. When invoked with the admin scope, this operation runs on behalf of the specified user. Permissions are validated against that user. This parameter is required with the admin scope and has no effect otherwise.

string

view
  • In: query

Shared folder list view. Omit this field or use all to return all shared folders. Use pinned to return only shared folders pinned by the requested user, or joined to return only shared folders the requested user has joined.

string, possible values: "all", "joined", "pinned", default: "all"

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_token

    string — 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: hub_shared_folder:write

Granular Scopes: 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: hub_shared_folder:read,hub_shared_folder:read:admin

Granular Scopes: hub:read:shared_folder,hub:read:shared_folder:admin

Rate Limit Label: MEDIUM

Not supported in Gov cluster

Parameters

sharedFolderId required
  • In: path

The shared folder ID.

string

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: hub_shared_folder:delete,hub_shared_folder:delete:admin

Granular Scopes: hub:delete:shared_folder,hub:delete:shared_folder:admin

Rate Limit Label: LIGHT

Not supported in Gov cluster

Parameters

sharedFolderId required
  • In: path

The shared folder's ID.

string

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: hub_shared_folder:write

Granular Scopes: hub:update:shared_folder

Rate Limit Label: MEDIUM

Not supported in Gov cluster

Parameters

sharedFolderId required
  • In: path

The shared folder's ID.

string

Request Body

Content-Type: application/json
  • description

    string — The description of the shared folder.

  • external_user_access_enabled

    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

    string, possible values: "viewer", "commenter", "editor" — The default file role inherited by members of the shared folder.

  • shared_folder_name

    string — The shared folder name.

  • visibility

    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"
}

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"
}
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 modify shared folder settings.
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/).