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_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(/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_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(/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.

  • 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(/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_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(/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
  • 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/).