Canvas

  • OpenAPI Version: 3.1.1
  • API Version: 2

Zoom Docs

Servers

  • URL: https://api.zoom.us/v2

Operations

List collaborators of a file

  • Method: GET
  • Path: /docs/files/{fileId}/collaborators
  • Tags: Collaborator

List collaborators of a file. Only doc or data table files are supported.

Scopes: docs_collaborator:read,docs_collaborator:read:admin

Granular Scopes: docs:read:list_file_collaborators,docs:read:list_file_collaborators:admin

Rate Limit Label: MEDIUM

Responses

Status: 200 Returns the collaborators of a file.
Content-Type: application/json
  • collaborators

    array — A list of collaborators. Each collaborator item must contain exactly one of the following fields: `user_id`, `channel_id`, or `email`.

    Items:

    • avatar_url (required)

      string — The avatar URL.

    • collaborator_id (required)

      string — The collaborator item ID, used as the `collaboratorId` when removing or modifying a collaborator.

    • collaborator_name (required)

      string — The collaborator display name.

    • collaborator_type (required)

      string, possible values: "user", "channel", "email" — The collaborator type.

    • role (required)

      string, possible values: "viewer", "commenter", "editor", "co-owner" — The collaborator role.

    • channel_id

      string — The Zoom Team Chat channel ID. Available when `collaborator_type` = `channel`.

    • email

      string — The email address. Available when `collaborator_type` = `email`.

    • user_id

      string — The Zoom user ID. Available when `collaborator_type` = `user`.

Example:

{
  "collaborators": [
    {
      "collaborator_id": "user:9aSWJV2rTyWwkIDWmPYsfg",
      "collaborator_type": "user",
      "role": "viewer",
      "collaborator_name": "Jack",
      "user_id": "9aSWJV2rTyWwkIDWmPYsfg",
      "channel_id": "utSBcPSTQTmiebe_if1rpg",
      "email": "user@example.com",
      "avatar_url": "https://images.zoom.us/p/v2/c6ea193b21e21r4rdqw21wdc3b0170737fb3213e21e34/1f1wwe2c3-432e-4dfa-92ab-f732w1a385q1301-2v21"
    }
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request
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/).

Add collaborators for a file

  • Method: POST
  • Path: /docs/files/{fileId}/collaborators
  • Tags: Collaborator

Share a file with newly added Zoom users or Zoom Team Chat channels. Only doc or data table files are supported.

Scopes: docs_collaborator:write,docs_collaborator:write:admin

Granular Scopes: docs:write:collaborator,docs:write:collaborator:admin

Rate Limit Label: MEDIUM

Not supported in Gov cluster

Request Body

Content-Type: application/json
  • collaborators (required)

    array — A list of collaborators to be added. Each collaborator item must contain exactly one of the following fields: `user_id`, `channel_id` and `email`.

    Items:

    • role (required)

      string, possible values: "viewer", "commenter", "editor", "co-owner" — The collaborator role.

    • channel_id

      string — Zoom team chat channel ID.

    • email

      string — Email address.

    • user_id

      string — Zoom user ID.

Example:

{
  "collaborators": [
    {
      "user_id": "9aSWJV2rTyWwkIDWmPYsfg",
      "channel_id": "4b1826c3597b492e9b1f7a9bd59d3f8c",
      "email": "user@example.com",
      "role": "viewer"
    }
  ]
}

Responses

Status: 201 Returns the collaborators successfully added to collaborator list of this file.
Content-Type: application/json
  • collaborators (required)

    array — Collaborators successfully added to collaborator list of this file. Each collaborator item must contain exactly one of the following fields: `user_id`, `channel_id`, or `email`.

    Items:

    • collaborator_id (required)

      string — The collaborator item ID, used as the `collaboratorId` when removing or modifying a collaborator.

    • collaborator_type (required)

      string, possible values: "user", "channel", "email" — The collaborator type.

    • role (required)

      string, possible values: "viewer", "commenter", "editor", "co-owner" — The collaborator role.

    • channel_id

      string — The Zoom Team Chat channel ID. Available when `collaborator_type` = `channel`.

    • email

      string — The email address. Available when `collaborator_type` = `email`.

    • user_id

      string — The Zoom user ID. Available when `collaborator_type` = `user`.

Example:

{
  "collaborators": [
    {
      "collaborator_id": "user:9aSWJV2rTyWwkIDWmPYsfg",
      "collaborator_type": "user",
      "role": "viewer",
      "user_id": "9aSWJV2rTyWwkIDWmPYsfg",
      "channel_id": "4b1826c3597b492e9b1f7a9bd59d3f8c",
      "email": "user@example.com"
    }
  ]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request
Status: 403 **HTTP Status Code:** `403` <br> Forbidden Permission Denied.
Status: 404 **HTTP Status Code:** `404` <br> Not Found File 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/).

Remove a collaborator from a file

  • Method: DELETE
  • Path: /docs/files/{fileId}/collaborators/{collaboratorId}
  • Tags: Collaborator

Remove a collaborator from a file. Only doc or data table files are supported.

Scopes: docs_collaborator:delete,docs_collaborator:delete:admin

Granular Scopes: docs:delete:collaborator,docs:delete:collaborator:admin

Rate Limit Label: MEDIUM

Not supported in Gov cluster

Responses

Status: 204 Nothing to return.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request
Status: 403 **HTTP Status Code:** `403` <br> Forbidden Permission Denied.
Status: 404 **HTTP Status Code:** `404` <br> Not Found File 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 a collaborator’s role on a file

  • Method: PATCH
  • Path: /docs/files/{fileId}/collaborators/{collaboratorId}
  • Tags: Collaborator

Modify a collaborator’s role on a file. Only doc or data table files are supported.

Scopes: docs_collaborator:write,docs_collaborator:write:admin

Granular Scopes: docs:update:collaborator,docs:update:collaborator:admin

Rate Limit Label: MEDIUM

Not supported in Gov cluster

Request Body

Content-Type: application/json
  • role (required)

    string, possible values: "viewer", "commenter", "editor", "co-owner" — The collaborator role.

Example:

{
  "role": "viewer"
}

Responses

Status: 204 Nothing to return.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request
Status: 403 **HTTP Status Code:** `403` <br> Forbidden Permission Denied.
Status: 404 **HTTP Status Code:** `404` <br> Not Found File 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 file export

  • Method: POST
  • Path: /docs/exports
  • Tags: Export

Creates a export for specified file.

Scopes: docs_export:write,docs_export:write:admin

Granular Scopes: docs:write:export,docs:write:export:admin

Rate Limit Label: HEAVY

Not supported in Gov cluster

Request Body

Content-Type: application/json
  • export_format (required)

    string, possible values: "docx", "markdown", "pdf", "csv" — The target format for export. Different file types support different export formats: - `doc` supports export to `docx`, `markdown` or `pdf` - `data_table` supports export to `csv`

  • file_id (required)

    string — The doc file ID.

Example:

{
  "file_id": "ADuV705lSXW4c6fBgQFarQ",
  "export_format": "docx"
}

Responses

Status: 201 A Docs file is being converted into expected format.
Content-Type: application/json
  • export_id (required)

    string — The unique ID for your export. Use this ID to check the export status via the Get file export status endpoint (GET /docs/exports/{exportId}/status).

Example:

{
  "export_id": "ccbb4d8f72774741af8b8141f92e6d83"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request
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 export status

  • Method: GET
  • Path: /docs/exports/{exportId}/status
  • Tags: Export

Use this API to query the status of a file export.

Before using this API, confirm that you have invoked the API Create a file export endpoint and obtained the export_id.

Scopes: docs_export:read,docs_export:read:admin

Granular Scopes: docs:read:export,docs:read:export:admin

Rate Limit Label: LIGHT

Not supported in Gov cluster

Responses

Status: 200 Retrieves the docs file export result.
Content-Type: application/json
  • status (required)

    string, possible values: "processing", "failed", "succeeded" — The status of the file export. Enum: - `processing` - The Docs file is being converted. - `succeeded` - The Docs file has been converted successfully. - `failed` - The Docs file has failed to convert.

  • download_link

    string — The download link for the converted file. This field will be returned when the value of status is `succeeded`.

  • expires_at

    string — The expiration date of the `download_link` URL; after this time, the `download_link` will become invalid. This field will be returned when the value of status is `succeeded`.

Example:

{
  "status": "processing",
  "download_link": "https://file.zoom.us/file/xxxx?signature=xxxxx&token=xxxxx",
  "expires_at": "2025-12-11T08:51:54.887212742Z"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `5150` <br> Export file size limit exceeded. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `5003` <br> The exportId not exists or expired. <br>

Get file content

  • Method: GET
  • Path: /docs/files/{fileId}/content
  • Tags: Export

Retrieves the file name and full file content in Markdown format.

Scopes: docs_export:read

Granular Scopes: docs:read:export

Rate Limit Label: HEAVY

Not supported in Gov cluster

Responses

Status: 200 Retrieves the file name and full file content in Markdown format.
Content-Type: application/json
  • file_content

    string — The document file content in Markdown format.

  • file_name

    string — The name of the document file.

Example:

{
  "file_name": "Q3 Plan",
  "file_content": "## Product Development\n\n- Complete beta testing for mobile app by July 15\n- Implement AI-powered recommendation engine"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `5150` <br> Export file size limit exceeded. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden Permission denied.
Status: 404 **HTTP Status Code:** `404` <br> Not Found File not found or 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/).

Create a new file

  • Method: POST
  • Path: /docs/files
  • Tags: File Management

Creates a new file for a user.

Scopes: docs:write,docs:write:admin

Granular Scopes: docs:write:file,docs:write:file:admin

Rate Limit Label: MEDIUM

Not supported in Gov cluster

Request Body

Content-Type: application/json
  • file_name

    string, default: "Untitled" — The file name.

  • file_type

    string, possible values: "doc", "folder", "data_table", default: "doc" — The type of a 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 Docs." Use "root" to represent the top-level folder of the current user. Folders can only be created under "My Docs," a shared folder, or another folder.

  • user_id

    string — 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.

Example:

{
  "file_name": "Q3 Plan",
  "parent_id": "fIdgryoPSZ-Jm34Ag-OX7A",
  "file_type": "doc",
  "user_id": "9BGgfjrQTayGWw_422j1Bw"
}

Responses

Status: 201 Returns the ID of the created file.
Content-Type: application/json
  • file_id

    string — The document file ID.

Example:

{
  "file_id": "ADuV705lSXW4c6fBgQFarQ"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request Invalid request parameters provided.
Status: 403 **HTTP Status Code:** `403` <br> Forbidden Permission required to create files under this parent directory.
Status: 404 **HTTP Status Code:** `404` <br> Not Found File 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/).

Get metadata of a file

  • Method: GET
  • Path: /docs/files/{fileId}
  • Tags: File Management

Get metadata of a file.

Scopes: docs:read,docs:read:admin

Granular Scopes: docs:read:file,docs:read:file:admin

Rate Limit Label: LIGHT

Not supported in Gov cluster

Responses

Status: 200 Returns the basic metadata of this file.
Content-Type: application/json
  • created_time (required)

    string — The time when the file created.

  • file_id (required)

    string — The doc file ID.

  • file_link (required)

    string — The URL link of the file.

  • file_name (required)

    string — The doc file name.

  • file_type (required)

    string, possible values: "doc", "folder", "data_table", default: "doc" — The type of a file

  • modified_time (required)

    string — The time when the file last modified.

Example:

{
  "file_id": "ADuV705lSXW4c6fBgQFarQ",
  "file_name": "Q3 Plan",
  "file_type": "doc",
  "file_link": "https://docs.zoom.us/doc/ADuV705lSXW4c6fBgQFarQ",
  "created_time": "2025-06-30T09:47:40.249Z",
  "modified_time": "2025-06-30T09:47:40.249Z"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request
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/).

Delete a file

  • Method: DELETE
  • Path: /docs/files/{fileId}
  • Tags: File Management

Delete a file.

Scopes: docs:delete,docs:delete:admin

Granular Scopes: docs:delete:file,docs:delete:file:admin

Rate Limit Label: MEDIUM

Not supported in Gov cluster

Responses

Status: 204 **HTTP Status Code**: `204` File deleted successfully.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request
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/).

Modify metadata of a file

  • Method: PATCH
  • Path: /docs/files/{fileId}
  • Tags: File Management

Modify metadata of a file.

Scopes: docs:write,docs:write:admin

Granular Scopes: docs:update:file,docs:update:file:admin

Rate Limit Label: MEDIUM

Not supported in Gov cluster

Request Body

Content-Type: application/json
  • file_name

    string — File title name.

Example:

{
  "file_name": "Q3 plan"
}

Responses

Status: 204 **HTTP Status Code**: `204` Modify metadata successfully.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request
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/).

List all children of a file

  • Method: GET
  • Path: /docs/files/{fileId}/children
  • Tags: File Management

List all children of a file.

Scopes: docs:read,docs:read:admin

Granular Scopes: docs:read:list_children,docs:read:list_children:admin

Rate Limit Label: MEDIUM

Responses

Status: 200 Returns all children files.
Content-Type: application/json
  • files (required)

    array — children list

    Items:

    • created_time (required)

      string — The time when the file created.

    • file_id (required)

      string — The ID of a file.

    • file_link (required)

      string — The access link of a file.

    • file_name (required)

      string — The name of a file.

    • file_type (required)

      string, possible values: "doc", "folder", "data_table", default: "doc" — The type of a file

    • modified_time (required)

      string — The time when the file last modified.

  • next_page_token (required)

    string — The next page token paginates through a large set of results. A next page token returns whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes.

Example:

{
  "files": [
    {
      "file_id": "61kkJE-rR52UsywN25E0hQ",
      "file_name": "Q3 plan",
      "file_type": "doc",
      "file_link": "https://docs.zoom.us/doc/61kkJE-rR52UsywN25E0hQ",
      "created_time": "2025-06-30T09:47:40.249Z",
      "modified_time": "2025-06-30T09:47:40.249Z"
    }
  ],
  "next_page_token": "eyJ0aW1lQ3Vyc29yIjoiMjAyNS0wNC0yMVQwOTo0NTo1OC45NTJaIiwiaWRDdXJzb3IiOiJzemFsMkpmTlFteTExY1JwdkYxRWhBIn0="
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request
Status: 403 **HTTP Status Code:** `403` <br> Forbidden Permission Denied.
Status: 404 **HTTP Status Code:** `404` <br> Not Found Parent 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/).

Transfer ownership of a file

  • Method: PUT
  • Path: /docs/files/{fileId}/owner
  • Tags: File Management

Transfer a file’s ownership to another user. Only doc or data table files are supported. Only the file owner has permission to perform an ownership transfer.

Scopes: docs_file_owner:write,docs_file_owner:write:admin

Granular Scopes: docs:update:file_owner,docs:update:file_owner:admin

Rate Limit Label: MEDIUM

Not supported in Gov cluster

Request Body

Content-Type: application/json
  • user_id (required)

    string — Zoom user ID of the new owner.

Example:

{
  "user_id": "9aSWJV2rTyWwkIDWmPYsfg"
}

Responses

Status: 204 Nothing to return.
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/).

Create file upload for docs import or attachments

  • Method: POST
  • Path: /docs/file_uploads
  • Tags: File Uploads

Create a file upload for document import or attachments.

Notes:

  • Base URL: https://fileapi.zoom.us/v2.
  • Rate limit: 20 requests per second per user or 2000 requests per second per IP address.
  • The caller must retain the Authorization header when redirected to a different hostname.
  • Unsupported file formats: .svg.
  • 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 Docs Management.

Scopes: docs_file_uploads:write,docs_file_uploads:write:admin

Granular Scopes: docs:write:file_uploads,docs:write:file_uploads:admin

Rate Limit Label: HEAVY

Not supported in Gov cluster

Request Body

Content-Type: multipart/form-data
  • file (required)

    string — The data file to be uploaded.

Example:

{
  "file": "<binary data>"
}

Responses

Status: 201 File successfully created.
Content-Type: application/json
  • file_upload_id

    string — The unique ID of the file upload.

Example:

{
  "file_upload_id": "aBvhhhyjQUal6HacwXlYwe"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request
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 the general access setting of a file

  • Method: GET
  • Path: /docs/files/{fileId}/general_access_setting
  • Tags: General Access

Get the general access settings of a file. Only doc or data table files are supported.

Scopes: docs_general_access:read,docs_general_access:read:admin

Granular Scopes: docs:read:general_access,docs:read:general_access:admin

Rate Limit Label: MEDIUM

Responses

Status: 200 Return the general access setting of a file.
Content-Type: application/json
  • general_access_setting

    object — The general access setting of this file.

    • share_scope (required)

      string, possible values: "collaborators_only", "anyone_in_org", "anyone_with_link" — The general access scope of this file. `collaborators_only`: only collaborators of this file can access `anyone_in_org`: users within the same orgnization as the file owner can access `anyone_with_link`: anyone can access this file, including anonymous user.

    • role

      string, possible values: "viewer", "commenter", "editor" — Role to collaborate. This field is empty when `share_scope` is set to `collaborators_only`.

Example:

{
  "general_access_setting": {
    "share_scope": "anyone_in_org",
    "role": "viewer"
  }
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request
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/).

Modify the general access setting of a file

  • Method: PATCH
  • Path: /docs/files/{fileId}/general_access_setting
  • Tags: General Access

Modify the general access setting for a file. Only doc or data table files are supported.

Scopes: docs_general_access:write,docs_general_access:write:admin

Granular Scopes: docs:update:general_access,docs:update:general_access:admin

Rate Limit Label: MEDIUM

Not supported in Gov cluster

Request Body

Content-Type: application/json
  • general_access_setting (required)

    object — The general access setting.

    • share_scope (required)

      string, possible values: "collaborators_only", "anyone_in_org", "anyone_with_link" — The general access scope of this file. `collaborators_only`: only collaborators of this file can access `anyone_in_org`: users within the same orgnization as the file owner can access `anyone_with_link`: anyone can access this file, including anonymous user.

    • role

      string, possible values: "viewer", "commenter", "editor" — Role to collaborate. This field is empty when `share_scope` is set to `collaborators_only`.

Example:

{
  "general_access_setting": {
    "share_scope": "anyone_in_org",
    "role": "viewer"
  }
}

Responses

Status: 204 Nothing to return.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request
Status: 403 **HTTP Status Code:** `403` <br> Forbidden Permission Denied.
Status: 404 **HTTP Status Code:** `404` <br> Not Found File 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: /docs/import_content
  • Tags: Import

Creates a new doc from Markdown content.

The Markdown content is limited to 100 KB in size.

Scopes: docs_import:write

Granular Scopes: docs:write:import

Rate Limit Label: HEAVY

Not supported in Gov cluster

Request Body

Content-Type: application/json
  • content

    string — The Markdown-formatted content. If the content is empty, an empty document will be 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 Docs**. Use `root` to represent the top-level folder of the current user. Folders can only be created under **My Docs**, a shared folder, or another folder.

Example:

{
  "file_name": "Q3 Plan",
  "parent_id": "fIdgryoPSZ-Jm34Ag-OX7A",
  "content": "# Project Overview  This document provides a concise outline for a sample project, including goals, milestones, tasks, and open questions.  ## 1. Goals  - Define the project scope clearly. - Deliver a working prototype by the target date. - Ensure documentation is complete and maintainable.  ## 2. Milestones  | Milestone | Description | Target Date | |----------|-------------|--------------| | M1 | Requirement gathering | 2025-01-15 | | M2 | Prototype ready | 2025-02-10 | | M3 | Final review | 2025-03-01 |  ## 3. Tasks  - [ ] Set up development environment   - [ ] Draft technical design   - [ ] Implement core features   - [ ] Write unit tests   - [ ] Prepare demo  ## 4. Architecture Diagram (Mermaid)  ```mermaid flowchart TD     A[Client] --> B[API Gateway]     B --> C[Service A]     B --> D[Service B]     D --> E[Database] ```  ## 5. Open Questions  - Should we adopt a monorepo structure? - Which logging strategy is preferred? - How should we structure integration tests?  ## 6. Notes  Add any additional remarks or context here."
}

Responses

Status: 201 The uploaded file is being converted into a doc file.
Content-Type: application/json
  • file_id (required)

    string — The newly created file 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>
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 by import

  • Method: POST
  • Path: /docs/imports
  • Tags: Import

Creates a new file from a file upload.

When importing the uploaded file as a specified type of Docs file:

  • doc

    • Upload file size limit is 10MB.
    • The size limit for a single Block's content is 1MB.
    • Maximum number of Blocks allowed is 20,000.
  • data_table

    • Upload file size limit is 10MB.
    • Maximum number of columns allowed in a single data table is 200.
    • The size limit for a single Block's content is 1MB.
    • Maximum number of Blocks allowed in a single data table is 20,000.

When importing an HTML compressed package exported from Notion into Docs:

  • Maximum allowed size for a single zip archive is 4GB.
  • Maximum number of files that can be imported into Docs within a single ZIP file is 100,000.
  • The maximum depth of parent-child relationships between files in the tree structure is 20.
  • Maximum number of child nodes allowed per node in the tree is 2,000.

Scopes: docs_import:write,docs_import:write:admin

Granular Scopes: docs:write:import,docs:write:import:admin

Rate Limit Label: HEAVY

Not supported in Gov cluster

Request Body

Content-Type: application/json
  • file_upload_id (required)

    string — The ID of the file upload. Ensure the file is valid, within the size limit, and in a supported format.

  • file_upload_type (required)

    string, possible values: "docx", "txt", "markdown", "csv", "xlsx", "notion_zip", "html" — The supported file format for upload. For file type `doc`, the supported formats are `.docx`, `.txt`, `.html` and `.md`. For file type `data_table`, the supported formats are `.xlsx` and `.csv`. For the zip file in HTML format exported from Notion, use `notion_zip`.

  • file_name

    string — The name of the file.

  • file_type

    string, possible values: "doc", "data_table", default: "doc" — The type of the file created after import.

  • 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 Docs**. Use `root` to represent the top-level folder of the current user. Folders can only be created under **My Docs**, a shared folder, or another folder.

  • user_id

    string — 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.

Example:

{
  "file_name": "Q3 Plan",
  "file_type": "doc",
  "parent_id": "fIdgryoPSZ-Jm34Ag-OX7A",
  "file_upload_id": "aBvhhhyjQUal6HacwXlYwe",
  "file_upload_type": "docx",
  "user_id": "9BGgfjrQTayGWw_422j1Bw"
}

Responses

Status: 201 The uploaded file is being converted into a Docs file.
Content-Type: application/json
  • import_id (required)

    string — The unique ID for your import. Use this ID to check the import status via the **Get file import status** endpoint (GET /docs/imports/{importId}/status).

Example:

{
  "import_id": "ccbb4d8f72774741af8b8141f92e6d83"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `5004` <br> File size limit exceeded. <br> **Error Code:** `5005` <br> Incorrect file format. <br> **Error Code:** `20001` <br> Invalid `user_id` for `admin` scope. <br> **Error Code:** `20002` <br> `parent_id` file not found. <br> **Error Code:** `20003` <br> Invalid `file_type`. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden Permission is needed to create children under this file.
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `5007` <br> File upload does not exist. <br>

Get file import status

  • Method: GET
  • Path: /docs/imports/{importId}/status
  • Tags: Import

Use this API to query the status of a new file by import. Before using this API, confirm that you have invoked the API Create a new file by import endpoint and obtained the import_id.

Scopes: docs_import:read,docs_import:read:admin

Granular Scopes: docs:read:import,docs:read:import:admin

Rate Limit Label: LIGHT

Not supported in Gov cluster

Responses

Status: 200 Retrieves the docs file import result.
Content-Type: application/json
  • file_id (required)

    string — The file ID is `nullable`. This value is returned only when the status is `succeeded`. The zip file in HTML format exported from Notion may contain data for one or more files; importing will only return the root ID of the imported files.

  • file_type (required)

    string, possible values: "doc", "data_table" — The type of the created file.

  • status (required)

    string, possible values: "succeeded", "processing", "failed" — The status of the file created by importing an uploaded file. Enum: `processing` - The uploaded file is being converted. `succeeded` - The uploaded file has been converted successfully. `failed` - The uploaded file has failed to convert.

Example:

{
  "status": "processing",
  "file_id": "ch4L4KKgQVesEJcqdt1qIw",
  "file_type": "doc"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request
Status: 404 **HTTP Status Code:** `404` <br> 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/).