# 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/).