# 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](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `docs_collaborator:read`,`docs_collaborator:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `docs:read:list_file_collaborators`,`docs:read:list_file_collaborators:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `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:** ```json { "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\` \
Bad Request ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden Permission Denied. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
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](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `docs_collaborator:write`,`docs_collaborator:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `docs:write:collaborator`,`docs:write:collaborator:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `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:** ```json { "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:** ```json { "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\` \
Bad Request ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden Permission Denied. ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found File not found. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
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](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `docs_collaborator:delete`,`docs_collaborator:delete:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `docs:delete:collaborator`,`docs:delete:collaborator:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` **Not supported in Gov cluster** #### Responses ##### Status: 204 Nothing to return. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden Permission Denied. ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found File not found. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
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](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `docs_collaborator:write`,`docs_collaborator:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `docs:update:collaborator`,`docs:update:collaborator:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `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:** ```json { "role": "viewer" } ``` #### Responses ##### Status: 204 Nothing to return. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden Permission Denied. ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found File not found. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
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](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `docs_export:write`,`docs_export:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `docs:write:export`,`docs:write:export:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `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:** ```json { "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:** ```json { "export_id": "ccbb4d8f72774741af8b8141f92e6d83" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
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](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `docs_export:read`,`docs_export:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `docs:read:export`,`docs:read:export:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `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:** ```json { "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\` \
Bad Request \*\*Error Code:\*\* \`5150\` \
Export file size limit exceeded. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`5003\` \
The exportId not exists or expired. \
### Get file content - **Method:** `GET` - **Path:** `/docs/files/{fileId}/content` - **Tags:** Export Retrieves the file name and full file content in Markdown format. **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `docs_export:read` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `docs:read:export` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `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:** ```json { "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\` \
Bad Request \*\*Error Code:\*\* \`5150\` \
Export file size limit exceeded. \
##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden Permission denied. ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found File not found or deleted. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
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](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `docs:write`,`docs:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `docs:write:file`,`docs:write:file:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `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:** ```json { "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:** ```json { "file_id": "ADuV705lSXW4c6fBgQFarQ" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request Invalid request parameters provided. ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden Permission required to create files under this parent directory. ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found File not found. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
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](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `docs:read`,`docs:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `docs:read:file`,`docs:read:file:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `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:** ```json { "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\` \
Bad Request ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden Permission Denied. ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found File Not Found/Deleted. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
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](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `docs:delete`,`docs:delete:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `docs:delete:file`,`docs:delete:file:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` **Not supported in Gov cluster** #### Responses ##### Status: 204 \*\*HTTP Status Code\*\*: \`204\` File deleted successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden Permission Denied. ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found File Not Found/Deleted. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
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](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `docs:write`,`docs:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `docs:update:file`,`docs:update:file:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` **Not supported in Gov cluster** #### Request Body ##### Content-Type: application/json - **`file_name`** `string` — File title name. **Example:** ```json { "file_name": "Q3 plan" } ``` #### Responses ##### Status: 204 \*\*HTTP Status Code\*\*: \`204\` Modify metadata successfully. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden Permission Denied. ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found File Not Found/Deleted. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
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](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `docs:read`,`docs:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `docs:read:list_children`,`docs:read:list_children:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `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:** ```json { "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\` \
Bad Request ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden Permission Denied. ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found Parent not found. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
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](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `docs_file_owner:write`,`docs_file_owner:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `docs:update:file_owner`,`docs:update:file_owner:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM` **Not supported in Gov cluster** #### Request Body ##### Content-Type: application/json - **`user_id` (required)** `string` — Zoom user ID of the new owner. **Example:** ```json { "user_id": "9aSWJV2rTyWwkIDWmPYsfg" } ``` #### Responses ##### Status: 204 Nothing to return. ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden Permission denied ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
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: . - 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](https://developers.zoom.us/docs/integrations/create/) app, this API can only be used on behalf of a user who is assigned with a [role](https://support.zoom.com/hc/en/article?id=zm_kb\&sysparm_article=KB0064983#h_80abad9b-86a8-492c-8a3b-5b0141a8c0a9) with Edit permission for Docs Management. **[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `docs_file_uploads:write`,`docs_file_uploads:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `docs:write:file_uploads`,`docs:write:file_uploads:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `HEAVY` **Not supported in Gov cluster** #### Request Body ##### Content-Type: multipart/form-data - **`file` (required)** `string` — The data file to be uploaded. **Example:** ```json { "file": "" } ``` #### Responses ##### Status: 201 File successfully created. ###### Content-Type: application/json - **`file_upload_id`** `string` — The unique ID of the file upload. **Example:** ```json { "file_upload_id": "aBvhhhyjQUal6HacwXlYwe" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
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](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `docs_general_access:read`,`docs_general_access:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `docs:read:general_access`,`docs:read:general_access:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `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:** ```json { "general_access_setting": { "share_scope": "anyone_in_org", "role": "viewer" } } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden Permission Denied. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
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](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `docs_general_access:write`,`docs_general_access:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `docs:update:general_access`,`docs:update:general_access:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `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:** ```json { "general_access_setting": { "share_scope": "anyone_in_org", "role": "viewer" } } ``` #### Responses ##### Status: 204 Nothing to return. ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden Permission Denied. ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found File not found. ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
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](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `docs_import:write` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `docs:write:import` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `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:** ````json { "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:** ```json { "file_id": "ch4L4KKgQVesEJcqdt1qIw", "file_link": "https://docs.zoom.us/doc/ch4L4KKgQVesEJcqdt1qIw" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`5005\` \
Incorrect file format. \
\*\*Error Code:\*\* \`5109\` \
The size of content exceeds the limit. \
\*\*Error Code:\*\* \`5110\` \
The number of images exceeds the limit. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
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](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `docs_import:write`,`docs_import:write:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `docs:write:import`,`docs:write:import:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `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:** ```json { "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:** ```json { "import_id": "ccbb4d8f72774741af8b8141f92e6d83" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`5004\` \
File size limit exceeded. \
\*\*Error Code:\*\* \`5005\` \
Incorrect file format. \
\*\*Error Code:\*\* \`20001\` \
Invalid \`user\_id\` for \`admin\` scope. \
\*\*Error Code:\*\* \`20002\` \
\`parent\_id\` file not found. \
\*\*Error Code:\*\* \`20003\` \
Invalid \`file\_type\`. \
##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden Permission is needed to create children under this file. ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`5007\` \
File upload does not exist. \
### 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](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `docs_import:read`,`docs_import:read:admin` **[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `docs:read:import`,`docs:read:import:admin` **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `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:** ```json { "status": "processing", "file_id": "ch4L4KKgQVesEJcqdt1qIw", "file_type": "doc" } ``` ##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request ##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found ##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/).