Canvas
- OpenAPI Version:
3.1.1 - API Version:
2
The Canvas API extends Canvas capabilities, enabling developers to integrate document management and collaboration into their applications. The API is organized into these areas: Document management, Document content, Data tables, Document metadata and access.
Servers
- URL:
https://api.zoom.us/v2
Operations
Download archive attachments
- Method:
GET - Path:
/docs/archive_attachments - Tags: Archiving
Batch retrieve download URLs for attachments in archived files.
Scopes: docs_archiving:read:admin
Granular Scopes: docs:read:archive:admin
Rate Limit Label: MEDIUM
Not supported in Gov cluster
Responses
Status: 200 Returns a list of attachments with their download URLs or failure reasons.
Content-Type: application/json
-
attachmentsarray— List of attachments with their download URLs or failure reasons.Items:
-
attachment_id(required)string— The attachment ID. -
download_urlstring— The signed download URL for the attachment, valid for 1 hour. Empty if the download URL could not be retrieved. -
failed_reasonstring— The reason for failure if the download URL could not be retrieved. Empty if the download URL was successfully retrieved.
-
Example:
{
"attachments": [
{
"attachment_id": "QISQ2bgbSpmjiFFee4XExB",
"download_url": "https://example.com/download/document.pdf",
"failed_reason": "The resource does not exist."
}
]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request Invalid parameters.
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 doc archive data
- Method:
GET - Path:
/docs/archives - Tags: Archiving
List archived documents for a given account within a specified time range.
Each archive record includes a download_url for downloading the complete archived content as a JSON file.
See the download_url field description for the full JSON schema definition.
Scopes: docs_archiving:read:admin
Granular Scopes: docs:read:archive:admin
Rate Limit Label: MEDIUM
Not supported in Gov cluster
Responses
Status: 200 The returned archived files list.
Content-Type: application/json
-
from(required)string, format:date-time— The queried start date. -
next_page_token(required)string— The next page token paginates through a large set of results. A next page token is returned whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes. -
page_size(required)integer, format:int32— The number of records returned per page in a single API call. -
to(required)string, format:date-time— The queried end date. -
total_records(required)integer— The total number of returned sessions records. -
dataarray— List of archive detail records under this account.Items:
-
archive_time(required)string, format:date-time— The time when this archive was created, in RFC 3339 format. -
download_url(required)string— The download URL contains the complete archived content of this version and is valid for 1 hour. Please access and download it within the validity period. The downloaded content is a **JSON** object which contains the following structure: **Archive Download Content Schema** The JSON schema definition for the content downloaded from the `download_url` returned in archive records. Each archive is a complete point-in-time snapshot of a Zoom document, including its Markdown content, comments, reactions, user information, file metadata, and attachment references. The file is served as `application/json` and the download URL is valid for 1 hour. ## Top-Level Fields | Field | Type | Required | Description | |-------|------|----------|-------------| | `file_id` | string | Yes | Unique identifier of the archived document | | `version` | integer | Yes | Archive version number (monotonically increasing per file) | | `product` | string | Yes | Product type of the archived document. Values: `docs`, `my_notes`, `meeting_summary` | | `trigger_type` | string | Yes | Event that triggered this archive. Values: `doc_edit`, `doc_create`, `doc_view`, `comment_change`, `transcript_change` | | `is_manual_notes` | boolean | No | Whether the MyNotes content in this version was manually entered (vs. AI-enhanced). `false` indicates the content was processed with AI enhancement. Applicable only to the `my_notes` product | | `transcript` | object | No | Meeting transcript snapshot. Present only for `my_notes` product when transcript data is available. Structure defined in **Transcript** below | | `archive_time` | string | Yes | Document archived time in RFC 3339 format | | `file_metadata` | object | No | Document metadata snapshot at archive time. Structure defined in **FileMetadata** below | | `page_cover` | string | No | Page cover image URL | | `page_icon` | string | No | Page icon (emoji or URL) | | `operator` | object | No | User who triggered this archive event. Structure defined in **UserInfo** below | | `markdown` | string | Yes | Full document content exported as Markdown | | `threads` | array | No | Comment threads on the document. Each element follows the **Thread** structure below | | `page_reactions` | array | No | Page-level reactions (e.g., emoji reactions on the document). Each element follows the **PageReaction** structure below | | `users` | object | No | Map of `user_id` → user info for all users referenced in this archive. Each value follows the **UserInfo** structure below | | `attachments` | array | No | Document-level attachment metadata. Each element follows the **Attachment** structure below | ## Nested Object Definitions ### Transcript Meeting transcript snapshot for a MyNotes document. Contains the transcribed conversation items and the speaker roster. | Field | Type | Required | Description | |-------|------|----------|-------------| | `items` | array | No | Transcribed conversation items in chronological order. Each element follows the **TranscriptItem** structure below | | `speakers` | array | No | Speaker roster referenced by the transcript items. Each element follows the **TranscriptSpeaker** structure below | ### TranscriptItem A single transcribed utterance within the transcript. | Field | Type | Required | Description | |-------|------|----------|-------------| | `text` | string | Yes | Transcribed text of this utterance | | `start_time` | string | Yes | Start time offset of this utterance within the meeting (e.g., `00:00:05`) | | `end_time` | string | Yes | End time offset of this utterance within the meeting (e.g., `00:00:09`) | | `user_id` | integer | No | Numeric speaker identifier, cross-referencing `user_id` in **TranscriptSpeaker** | | `highlight_flag` | integer | No | Whether this utterance is highlighted. `0` = normal, `1` = highlighted | ### TranscriptSpeaker Identity of a participant referenced by the transcript items. | Field | Type | Required | Description | |-------|------|----------|-------------| | `user_id` | integer | No | Numeric speaker identifier referenced by **TranscriptItem** `user_id` | | `zoom_user_id` | string | No | Zoom user identifier of the speaker | | `username` | string | No | Account username of the speaker | | `speaker_id` | string | No | Speaker identifier assigned within the meeting | | `speaker_name` | string | No | Display name of the speaker as shown in the transcript | | `speaker_zoom_user_id` | string | No | Zoom user identifier associated with the speaker entry | | `is_unknown` | boolean | No | Whether the speaker could not be identified | ### FileMetadata Snapshot of document properties at the time of archiving. | Field | Type | Required | Description | |-------|------|----------|-------------| | `title` | string | Yes | Document title | | `owner_id` | string | Yes | User ID of the document owner | | `owner_name` | string | Yes | Display name of the document owner | | `owner_email` | string | No | Email address of the document owner | | `create_time` | string | Yes | Document creation time in RFC 3339 format | | `last_edit_time` | string | Yes | Last edit time in RFC 3339 format | | `is_deleted` | boolean | Yes | Whether the document was deleted at archive time | | `delete_time` | string | No | Deletion time in RFC 3339 format. Present only if `is_deleted` is true | ### UserInfo User identity information. Used in `operator` field and `users` map. | Field | Type | Required | Description | |-------|------|----------|-------------| | `user_id` | string | Yes | Unique user identifier | | `display_name` | string | Yes | User's display name | | `email` | string | No | User's email address | ### Thread A comment thread attached to a specific location in the document. | Field | Type | Required | Description | |-------|------|----------|-------------| | `thread_id` | string | Yes | Unique thread identifier | | `root_block_id` | string | Yes | Block ID where the thread is anchored | | `block_ids` | array of string | No | Additional block IDs related to the thread | | `selected_content` | string | No | The selected text that the comment is attached to | | `comment_type_name` | string | Yes | Comment type. Accepted values: `block`, `page` ,`discussion`, `suggestion` | | `thread_status` | string | Yes | Thread status. Values: `open`, `resolved` | | `comment_count` | integer | Yes | Number of comments in this thread | | `created_by` | string | Yes | User ID who created the thread | | `updated_by` | string | No | User ID who last updated the thread | | `create_time` | string | Yes | Thread creation time in RFC 3339 format | | `modify_time` | string | Yes | Last modification time in RFC 3339 format | | `resolve_time` | string | No | Time when the thread was resolved in RFC 3339 format | | `latest_comment_create_time` | string | Yes | Creation time of the most recent comment in RFC 3339 format | | `comments` | array | No | List of comments in this thread. Each element follows the **Comment** structure below | | `is_deleted` | boolean | No | Whether the thread has been deleted | | `delete_time` | string | No | Deletion time in RFC 3339 format | ### Comment An individual comment within a thread. | Field | Type | Required | Description | |-------|------|----------|-------------| | `comment_id` | string | Yes | Unique comment identifier | | `thread_id` | string | Yes | Parent thread identifier | | `root_block_id` | string | Yes | Block ID where the comment is anchored | | `parent_id` | string | No | Parent comment ID (for nested replies) | | `content_plain_text` | string | Yes | Plain text content of the comment | | `attachments` | array | No | Attachments on this comment. Each element follows the **Attachment** structure below | | `created_by` | string | Yes | User ID who created the comment | | `updated_by` | string | No | User ID who last edited the comment | | `is_edited` | boolean | Yes | Whether the comment has been edited | | `create_time` | string | Yes | Comment creation time in RFC 3339 format | | `modify_time` | string | Yes | Last modification time in RFC 3339 format | | `reactions` | array | No | Reactions on this comment. Each element follows the **Reaction** structure below | | `is_deleted` | boolean | No | Whether the comment has been deleted | | `delete_time` | string | No | Deletion time in RFC 3339 format | ### Reaction An emoji reaction on a comment. | Field | Type | Required | Description | |-------|------|----------|-------------| | `reaction_id` | string | Yes | Unique reaction identifier | | `comment_id` | string | Yes | Comment this reaction belongs to | | `reaction` | string | Yes | Emoji value| | `created_by` | string | Yes | User ID who added the reaction | | `create_time` | string | Yes | Reaction creation time in RFC 3339 format | ### PageReaction An emoji reaction on the document itself. | Field | Type | Required | Description | |-------|------|----------|-------------| | `reaction_id` | string | Yes | Unique reaction identifier | | `reaction` | string | Yes | Emoji value| | `reaction_type` | integer | Yes | Reaction type. `1` = block-level reaction, `2` = page-level reaction | | `created_by` | string | Yes | User ID who added the reaction | | `create_time` | string | Yes | Reaction creation time in RFC 3339 format | ### Attachment Basic metadata for a file attachment embedded in the document or comment. To download the actual attachment file, use the `Download Archive Attachments` OpenAPI with the `attachment_id`. | Field | Type | Required | Description | |-------|------|----------|-------------| | `attachment_id` | string | Yes | Unique attachment identifier. | | `name` | string | Yes | Attachment name | | `type` | string | Yes | MIME type (e.g., `image/png`, `application/pdf`) | | `size` | integer | Yes | File size in bytes | ## JSON Example ```json { "file_id": "zD83pVKRS2WrCBFHsfPMng", "version": 3, "product": "docs", "trigger_type": "comment_change", "archive_time": "2026-04-09T08:34:23Z", "file_metadata": { "title": "Q1 Project Plan", "owner_id": "OnsTZFMpTUWD_YTo2Z_3Lg", "owner_name": "Alice Johnson", "owner_email": "alice.johnson@example.com", "create_time": "2026-01-15T09:00:00Z", "last_edit_time": "2026-04-09T08:30:00Z", "is_deleted": false }, "page_cover": "https://example.com/covers/q1-plan.png", "page_icon": "📋", "operator": { "user_id": "KxR4mWVeQdGt7Lp1Nf_08w", "display_name": "Bob Smith", "email": "bob.smith@example.com" }, "markdown": "# Q1 Project Plan\n\n## Goals\n\n- Launch feature A\n- Complete migration B\n\n## Timeline\n\n| Phase | Date |\n|-------|------|\n| Design | Jan 15 |\n| Dev | Feb 1 |\n| QA | Feb 20 |\n", "threads": [ { "thread_id": "a084b2c7874c42ce9fe5b976160a332d", "root_block_id": "5a10e3c540dc4914ae7c846fa497f183", "block_ids": ["5a10e3c540dc4914ae7c846fa497f183"], "selected_content": "Launch feature A", "comment_type_name": "block", "thread_status": "open", "comment_count": 2, "created_by": "Hj2sNkLdS5qPwU8rY_v7Xg", "create_time": "2026-04-01T10:00:00Z", "modify_time": "2026-04-08T14:00:00Z", "latest_comment_create_time": "2026-04-08T14:00:00Z", "comments": [ { "comment_id": "fcf7bf67fe134d20a49913c7d1e7ea4f", "thread_id": "a084b2c7874c42ce9fe5b976160a332d", "root_block_id": "5a10e3c540dc4914ae7c846fa497f183", "content_plain_text": "Should we push this to Q2?", "attachments": [ { "attachmentId": "xUt5QFe-Sq6_8YPigKt3Eg", "name": "image.png", "type": "image/png", "size": "171153" } ], "created_by": "Hj2sNkLdS5qPwU8rY_v7Xg", "is_edited": false, "create_time": "2026-04-01T10:00:00Z", "modify_time": "2026-04-01T10:00:00Z", "reactions": [ { "reaction_id": "b7e3f91a2c4d48e6a1d5c8f0e2b4a6d8", "comment_id": "fcf7bf67fe134d20a49913c7d1e7ea4f", "reaction": "👍", "created_by": "OnsTZFMpTUWD_YTo2Z_3Lg", "create_time": "2026-04-02T08:00:00Z" } ] }, { "comment_id": "d2a1c4e6f8b0374a9c5e7d1f3b6a8e0c", "thread_id": "a084b2c7874c42ce9fe5b976160a332d", "root_block_id": "5a10e3c540dc4914ae7c846fa497f183", "parent_id": "fcf7bf67fe134d20a49913c7d1e7ea4f", "content_plain_text": "No, let's keep the original timeline.", "created_by": "OnsTZFMpTUWD_YTo2Z_3Lg", "is_edited": false, "create_time": "2026-04-08T14:00:00Z", "modify_time": "2026-04-08T14:00:00Z" } ] } ], "page_reactions": [ { "reaction_id": "e4f6a8c0d2b4917365e7f1a3c5d8b0e2", "reaction": "🎉", "created_by": "KxR4mWVeQdGt7Lp1Nf_08w", "create_time": "2026-04-05T12:00:00Z" } ], "users": { "OnsTZFMpTUWD_YTo2Z_3Lg": { "user_id": "OnsTZFMpTUWD_YTo2Z_3Lg", "display_name": "Alice Johnson", "email": "alice.johnson@example.com" }, "KxR4mWVeQdGt7Lp1Nf_08w": { "user_id": "KxR4mWVeQdGt7Lp1Nf_08w", "display_name": "Bob Smith", "email": "bob.smith@example.com" }, "Hj2sNkLdS5qPwU8rY_v7Xg": { "user_id": "Hj2sNkLdS5qPwU8rY_v7Xg", "display_name": "Charlie Brown", "email": "charlie.brown@example.com" } }, "attachments": [ { "attachment_id": "Tp7xKqW3RvNmYs9dF_c2Jw", "name": "architecture-diagram.png", "type": "image/png", "size": 245760 }, { "attachment_id": "Bm5nQeL8SxHkAr1gU_v4Zw", "name": "requirements.pdf", "type": "application/pdf", "size": 1048576 } ] } ``` ### JSON Example (MyNotes with Transcript) A `my_notes` archive triggered by a transcript change. It includes the `is_manual_notes` flag and the `transcript` object with conversation items and the speaker roster. ```json { "file_id": "Nt4kPzQwRb6McD1sFgHy8A", "version": 5, "product": "my_notes", "trigger_type": "transcript_change", "is_manual_notes": false, "archive_time": "2026-05-12T03:21:47Z", "file_metadata": { "title": "Weekly Sync - Engineering", "owner_id": "OnsTZFMpTUWD_YTo2Z_3Lg", "owner_name": "Alice Johnson", "owner_email": "alice.johnson@example.com", "create_time": "2026-05-12T02:00:00Z", "last_edit_time": "2026-05-12T03:00:00Z", "is_deleted": false }, "page_icon": "🗒️", "operator": { "user_id": "OnsTZFMpTUWD_YTo2Z_3Lg", "display_name": "Alice Johnson", "email": "alice.johnson@example.com" }, "markdown": "# Weekly Sync - Engineering\n\n## Summary\n\n- Reviewed sprint progress\n- Agreed on release date\n", "transcript": { "items": [ { "text": "Good morning everyone, let's get started with the weekly sync.", "start_time": "00:00:02", "end_time": "00:00:06", "user_id": 101, "highlight_flag": 0 }, { "text": "Sure. The payment service migration is on track for Friday.", "start_time": "00:00:07", "end_time": "00:00:11", "user_id": 102, "highlight_flag": 1 }, { "text": "Great. Any blockers we should be aware of?", "start_time": "00:00:12", "end_time": "00:00:15", "user_id": 101, "highlight_flag": 0 }, { "text": "Just waiting on the final QA sign-off, but we're confident.", "start_time": "00:00:16", "end_time": "00:00:20", "user_id": 103, "highlight_flag": 0 }, { "text": "Perfect. Let's lock in Friday for the release then.", "start_time": "00:00:21", "end_time": "00:00:24", "user_id": 101, "highlight_flag": 1 } ], "speakers": [ { "user_id": 101, "zoom_user_id": "OnsTZFMpTUWD_YTo2Z_3Lg", "username": "alice.johnson@example.com", "speaker_id": "spk_001", "speaker_name": "Alice Johnson", "speaker_zoom_user_id": "OnsTZFMpTUWD_YTo2Z_3Lg", "is_unknown": false }, { "user_id": 102, "zoom_user_id": "KxR4mWVeQdGt7Lp1Nf_08w", "username": "bob.smith@example.com", "speaker_id": "spk_002", "speaker_name": "Bob Smith", "speaker_zoom_user_id": "KxR4mWVeQdGt7Lp1Nf_08w", "is_unknown": false }, { "user_id": 103, "zoom_user_id": "", "username": "", "speaker_id": "spk_003", "speaker_name": "Guest Speaker", "speaker_zoom_user_id": "", "is_unknown": true } ] }, "users": { "OnsTZFMpTUWD_YTo2Z_3Lg": { "user_id": "OnsTZFMpTUWD_YTo2Z_3Lg", "display_name": "Alice Johnson", "email": "alice.johnson@example.com" }, "KxR4mWVeQdGt7Lp1Nf_08w": { "user_id": "KxR4mWVeQdGt7Lp1Nf_08w", "display_name": "Bob Smith", "email": "bob.smith@example.com" } } } ``` ## Notes - All timestamp fields use **RFC 3339** string format (UTC). - The `users` map provides a lookup table for all `user_id` values referenced throughout the archive (in `operator`, `created_by`, `updated_by`, etc.). - The `markdown` field contains the complete document content at the time of archiving, exported in Markdown format. - The `attachments` at the top level are **document-level** attachments only. Comment-level attachments are nested within each comment's `attachments` field. - The `is_manual_notes` and `transcript` fields apply only to the `my_notes` product. For `docs` and `meeting_summary`, they are omitted. - `is_manual_notes` reflects how the MyNotes content in this version was produced: `true` means it was manually entered, while `false` means it was processed with AI enhancement. -
file_id(required)string— Unique identifier of the archived file. -
product(required)string, possible values:"docs", "my_notes", "meeting_summary"— Product type of the archived document. -
trigger_type(required)string, possible values:"doc_create", "doc_edit", "doc_view", "comment_change", "transcript_change"— Type of event that triggered this archive. -
version(required)integer, format:uint32— Archive version number that increments starting from 1.
-
Example:
{
"from": "2026-02-13T00:00:00Z",
"to": "2026-03-14T00:00:00Z",
"page_size": 20,
"next_page_token": "IAfJX3jsOLW7w3dokmFl84zOa0MAVGyMEB2",
"total_records": 30,
"data": [
{
"file_id": "hCSzn_k9SGGXTwjujsF73w",
"version": 1,
"product": "docs",
"trigger_type": "doc_edit",
"archive_time": "2023-07-27T17:36:34Z",
"download_url": "https://example.com/download/archive.json"
}
]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request. Invalid parameter.
Status: 403 **HTTP Status Code:** `403` <br> Forbidden
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 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
-
collaboratorsarray— 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_idstring— The Zoom Team Chat channel ID. Available when `collaborator_type` = `channel`. -
emailstring— The email address. Available when `collaborator_type` = `email`. -
user_idstring— 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_idstring— Zoom team chat channel ID. -
emailstring— Email address. -
user_idstring— 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_idstring— The Zoom Team Chat channel ID. Available when `collaborator_type` = `channel`. -
emailstring— The email address. Available when `collaborator_type` = `email`. -
user_idstring— 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 data table
- Method:
POST - Path:
/docs/files/{fileId}/data_table - Tags: DataTable Content
Creates a new table inside an existing file. This API does not create a new data table file. To create a data table file, use the Create a new file endpoint with the data_table file type.
This API supports two host file types:
- In a doc file, the inserted table is referred to as a data table.
- In a data table file, the inserted table is referred to as a table.
Scopes: canvas_data_table:write
Granular Scopes: canvas:write:data_table
Rate Limit Label: MEDIUM
Not supported in Gov cluster
Request Body
Content-Type: application/json
-
columns(required)array— The list of columns to create.Items:
-
column_type(required)string, possible values:"text", "number", "percent", "single_select", "multiple_select", "date", "people", "checkbox", "attachment", "reaction", "created_by", "updated_by", "created_time", "updated_time", "currency", "page", "url"— The type of the column. -
name(required)string— The column name. -
column_optionsobject— The corresponding relationship between column type and column option is as follows: `date`|`created_time`|`updated_time`: date_option `number`: number_option `currency`: currency_option `percent`: percent_option `url`: url_option `attachment`: attachment_option `reaction`: reaction_option `single_select`|`multiple_select`: select_option `people`: people_option Other column types do not have a column option.-
attachment_optionobject— The `attachment` column option.-
layout(required)string, possible values:"thumbnail", "full_width"— The attachment layout.
-
-
currency_optionobject— The `currency` column option.-
decimal(required)integer, possible values:0, 1, 2, 3, 4, 5— The number of decimal places. -
format(required)string, possible values:"accounting", "currency"— The currency format. -
symbol(required)string, possible values:"$", "¥", "€", "Ft", "Rp", "kr", "R", "CHF", "DH", "₹", "zł", "₽", "₩", "฿", "₺", "£"— The currency symbol.
-
-
date_optionobject— The `date`|`created_time`|`updated_time` column option.-
format(required)string, possible values:"MM/dd/yyyy", "MM/dd/yy", "M/d/yyyy", "yy-MM-dd", "yyyy/MM/dd", "yy/MM/dd", "yyyy/M/d", "yy/M/d", "dd/MM/yyyy", "dd/MM/yy", "MMM d, yyyy", "EEE, MMM d", "EEE, MMM d, yyyy", "EEE"— The date display format. Examples are as follows: 2025-10-21 12:00 2025/10/21 12:00 2025/10/21 00:00 25-10-21 00:30 10/21/2025 00:30 10/21/25 00:30 08/10/2025 01:00 08/10/25 01:00 -
is_24_hour_format(required)boolean— If `true`, display in 24-hour format. If `false`, display in 12-hour format.
-
-
number_optionobject— The `number` column option.-
decimal(required)integer, possible values:0, 1, 2, 3, 4, 5— The number of decimal places. -
show_separator(required)boolean— If `true`, display thousand separators. If `false`, do not display thousand separators.
-
-
people_optionobject— The `people` column option.-
is_multiple(required)boolean— If `true`, allow selection of multiple people. If `false`, only one person can be selected. -
is_notify(required)boolean— If `true`, send a notification message after selecting someone. If `false`, do not send a notification message after selecting someone.
-
-
percent_optionobject— The `percent` column option.-
decimal(required)integer, possible values:0, 1, 2, 3, 4, 5— The number of decimal places. -
show_progress_bar(required)boolean— If `true`, display the progress bar. If `false`, do not display the progress bar.
-
-
reaction_optionobject— The `reaction` column option.-
allow_commenter_react(required)boolean— Whether a user with only commenter permission is allowed to click. If `true`, the user is allowed to click. If `false`, the user is not allowed to click. -
display_type(required)string, possible values:"number", "people", "none"— The reaction icon display type. -
icon(required)object— The icon content.-
type(required)string, possible values:"emoji"— The icon display type. Currently only supports emoji. -
value(required)string, possible values:"👍", "👎", "🌟"— The icon value.
-
-
-
select_optionobject— The `single_select` and `multiple_select` column option.-
optionsarray— The option list.Items:
-
namestring— The option name.
-
-
-
url_optionobject— The `url` column option.-
display_type(required)string, possible values:"title", "full", "icon"— The URL display type. -
open_type(required)string, possible values:"current_page", "new_page"— The URL open type.
-
-
-
descriptionstring— Column Description
-
-
name(required)string— The table name. -
after_block_idstring— If `after_block_id` is provided, the new table is inserted after the specified block. If `after_block_id` is omitted, the new table is inserted at the end of the file.
Example:
{
"after_block_id": "44879b1a2ee54ada9426b82c2e654c74",
"name": "Project Tracker",
"columns": [
{
"name": "Text",
"column_type": "text",
"description": "Text Content",
"column_options": {
"date_option": {
"format": "MM/dd/yyyy",
"is_24_hour_format": false
},
"number_option": {
"decimal": 1,
"show_separator": false
},
"select_option": {
"options": [
{
"name": "Blue"
}
]
},
"percent_option": {
"decimal": 1,
"show_progress_bar": false
},
"people_option": {
"is_multiple": false,
"is_notify": false
},
"reaction_option": {
"icon": {
"type": "emoji",
"value": "👍"
},
"display_type": "number",
"allow_commenter_react": false
},
"currency_option": {
"decimal": 1,
"symbol": "$",
"format": "accounting"
},
"attachment_option": {
"layout": "thumbnail"
},
"url_option": {
"display_type": "title",
"open_type": "current_page"
}
}
}
]
}
Responses
Status: 201 Table created successfully.
Content-Type: application/json
-
columns(required)array— The list of created columns.Items:
-
column_id(required)string— The column ID. -
column_type(required)string, possible values:"text", "number", "percent", "single_select", "multiple_select", "date", "people", "checkbox", "attachment", "reaction", "created_by", "updated_by", "created_time", "updated_time", "currency", "page", "url"— The type of the column. -
integrated(required)boolean— If `true`, this column is an integrated column and cannot be edited by the user. If `false`, the user can edit it. -
name(required)string— The column name. -
column_optionsobject— The corresponding relationship between column type and column option is as follows: `date`|`created_time`|`updated_time`: date_option `number`: number_option `currency`: currency_option `percent`: percent_option `url`: url_option `attachment`: attachment_option `reaction`: reaction_option `single_select`|`multiple_select`: select_option `people`: people_option Other column types do not have a column option.-
attachment_optionobject— The `attachment` column option.-
layout(required)string, possible values:"thumbnail", "full_width"— The attachment layout.
-
-
currency_optionobject— The `currency` column option.-
decimal(required)integer, possible values:0, 1, 2, 3, 4, 5— The number of decimal places. -
format(required)string, possible values:"accounting", "currency"— The currency format. -
symbol(required)string, possible values:"$", "¥", "€", "Ft", "Rp", "kr", "R", "CHF", "DH", "₹", "zł", "₽", "₩", "฿", "₺", "£"— The currency symbol.
-
-
date_optionobject— The `date`|`created_time`|`updated_time` column option.-
format(required)string, possible values:"MM/dd/yyyy", "MM/dd/yy", "M/d/yyyy", "yy-MM-dd", "yyyy/MM/dd", "yy/MM/dd", "yyyy/M/d", "yy/M/d", "dd/MM/yyyy", "dd/MM/yy", "MMM d, yyyy", "EEE, MMM d", "EEE, MMM d, yyyy", "EEE"— The date format. Examples are as follows: 2025-10-21 12:00 2025/10/21 12:00 2025/10/21 00:00 25-10-21 00:30 10/21/2025 00:30 10/21/25 00:30 08/10/2025 01:00 08/10/25 01:00 -
is_24_hour_format(required)boolean— If `true`, display in 24-hour format. If `false`, display in 12-hour format.
-
-
number_optionobject— The `number` column option.-
decimal(required)integer, possible values:0, 1, 2, 3, 4, 5— The number of decimal places. -
show_separator(required)boolean— If `true`, display thousand separators. If `false`, do not display thousand separators.
-
-
people_optionobject— The `people` column option.-
is_multiple(required)boolean— If `true`, allow selection of multiple people. If `false`, only one person can be selected. -
is_notify(required)boolean— If `true`, send a notification message after selecting someone. If `false`, do not send a notification message after selecting someone.
-
-
percent_optionobject— The `percent` column option.-
decimal(required)integer, possible values:0, 1, 2, 3, 4, 5— The number of decimal places. -
show_progress_bar(required)boolean— If `true`, display the progress bar. If `false`, do not display the progress bar.
-
-
reaction_optionobject— The `reaction` column option.-
allow_commenter_react(required)boolean— Whether a user with only commenter permission is allowed to click. If `true`, the user is allowed to click. If `false`, the user is not allowed to click. -
display_type(required)string, possible values:"number", "people", "none"— The reaction icon display type. -
icon(required)object— The icon content.-
type(required)string, possible values:"emoji"— The icon display type. Currently only supports emoji. -
value(required)string, possible values:"👍", "👎", "🌟"— The icon value.
-
-
-
select_optionobject— The `single_select` and `multiple_select` column option.-
optionsarray— The option list.Items:
-
idstring— The option ID. -
namestring— The option name.
-
-
-
url_optionobject— The `url` column option.-
display_type(required)string, possible values:"title", "full", "icon"— The URL display type. -
open_type(required)string, possible values:"current_page", "new_page"— The URL open type.
-
-
-
descriptionstring— Column Description
-
-
table_id(required)string— The ID of the created table. -
namestring— The table name.
Example:
{
"table_id": "c9456fb41aac408286651625298e863c",
"name": "Project Tracker",
"columns": [
{
"name": "Text",
"column_type": "text",
"description": "Text Content",
"column_options": {
"date_option": {
"format": "MM/dd/yyyy",
"is_24_hour_format": false
},
"number_option": {
"decimal": 1,
"show_separator": false
},
"select_option": {
"options": [
{
"name": "Blue",
"id": "A8xSJQDVf1dnVIVh"
}
]
},
"percent_option": {
"decimal": 1,
"show_progress_bar": false
},
"people_option": {
"is_multiple": false,
"is_notify": false
},
"reaction_option": {
"icon": {
"type": "emoji",
"value": "👍"
},
"display_type": "number",
"allow_commenter_react": false
},
"currency_option": {
"decimal": 1,
"symbol": "$",
"format": "accounting"
},
"attachment_option": {
"layout": "thumbnail"
},
"url_option": {
"display_type": "title",
"open_type": "current_page"
}
},
"column_id": "dd08972e3bca46b89ba7bf0c9ee32ff5",
"integrated": false
}
]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request Invalid parameters. **Error Code:** `2012` <br> Unsupported column type. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden No permission. **Error Code:** `2009` <br> No permission to access or modify this resource. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found File not found. **Error Code:** `2000` <br> Block not found. <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/).
List data tables in a file
- Method:
GET - Path:
/docs/files/{fileId}/data_tables - Tags: DataTable Content
Returns a list of data tables. There are two scenarios when listing data tables of the specified file:
- If the file type is
doc, this API returns all the inline data tables in the file. - If the file type is
data_table, this API returns all the tables.
Scopes: canvas_data_table:read
Granular Scopes: canvas:read:data_table
Rate Limit Label: LIGHT
Not supported in Gov cluster
Responses
Status: 200 **HTTP Status Code:** `200` Data table list returned.
Content-Type: application/json
-
data_tables(required)array— The data table list.Items:
-
data_table_id(required)string— The data table ID. -
is_synced(required)boolean— Whether the table is synchronized. If `true`, the table is synchronized. If `false`, the table is the source table. -
name(required)string— The table name. -
integrationobject— If `integration` is not empty, the data in this table originates from external sources. This table has certain limitations: 1. Integrated columns cannot be edited, whereas user-created columns are editable. 2. Editing of rows is not permitted.-
integration_type(required)string— The data integration type, such as `jira` and `meeting`. -
marketplace_app_idstring— If the data source originates from an app integrated via the marketplace, a `marketplace_app_id` is provided. If it does not originate from the marketplace, there is no `marketplace_app_id`.
-
-
related_tableobject— If `is_synced` is `true`, `related_table` contains the metadata of the related table.-
data_table_id(required)string— The related data table ID. -
file_id(required)string— The related file ID.
-
-
Example:
{
"data_tables": [
{
"data_table_id": "6108696fe9b44dc3a2675a448ab0c338",
"name": "Project tracker",
"is_synced": false,
"related_table": {
"file_id": "Fk0XWCWSTJqgTDcxbAKLfQ",
"data_table_id": "c7628bc10b5a458cb7b4af3747cbf32d"
},
"integration": {
"marketplace_app_id": "wc9NSSgESB-qLJed0RSZjQ",
"integration_type": "jira"
}
}
]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request Invalid parameters.
Status: 403 **HTTP Status Code:** `403` <br> Forbidden Permission denied. **Error Code:** `2009` <br> No permission to access or modify this resource. <br>
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/).
Update table metadata
- Method:
PATCH - Path:
/docs/files/{fileId}/data_tables/{tableId} - Tags: DataTable Content
Update the table metadata, such as the title.
Scopes: canvas_data_table:update
Granular Scopes: canvas:update:data_table
Rate Limit Label: LIGHT
Not supported in Gov cluster
Request Body
Content-Type: application/json
-
title(required)string— The table title.
Example:
{
"title": "Project Tracker"
}
Responses
Status: 204 Metadata updated successfully.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request Invalid parameters.
Status: 403 **HTTP Status Code:** `403` <br> Forbidden No permission. **Error Code:** `2009` <br> No permission to access or modify this resource. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found File or data table not found. **Error Code:** `2000` <br> Table not found. <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/).
List columns
- Method:
GET - Path:
/docs/files/{fileId}/data_tables/{tableId}/columns - Tags: DataTable Content
List the columns of a table.
Scopes: canvas_data_table:read
Granular Scopes: canvas:read:data_table
Rate Limit Label: LIGHT
Not supported in Gov cluster
Responses
Status: 200 Column list of the table.
Content-Type: application/json
-
columns(required)array— List of columns.Items:
-
column_id(required)string— The column ID. -
column_type(required)string, possible values:"text", "number", "percent", "single_select", "multiple_select", "date", "people", "checkbox", "attachment", "reaction", "created_by", "updated_by", "created_time", "updated_time", "currency", "page", "url"— The type of the column. -
integrated(required)boolean— If `true`, this column is an integrated column and cannot be edited by the user. If `false`, the user can edit it. -
name(required)string— The column name. -
column_optionsobject— The corresponding relationship between column type and column option is as follows: `date`|`created_time`|`updated_time`: date_option `number`: number_option `currency`: currency_option `percent`: percent_option `url`: url_option `attachment`: attachment_option `reaction`: reaction_option `single_select`|`multiple_select`: select_option `people`: people_option Other column types do not have column options.-
attachment_optionobject— `attachment` column option.-
layout(required)string, possible values:"thumbnail", "full_width"— The attachment layout.
-
-
currency_optionobject— `currency` column option.-
decimal(required)integer, possible values:0, 1, 2, 3, 4, 5— The number of decimal places. -
format(required)string, possible values:"accounting", "currency"— The currency format. -
symbol(required)string, possible values:"$", "¥", "€", "Ft", "Rp", "kr", "R", "CHF", "DH", "₹", "zł", "₽", "₩", "฿", "₺", "£"— The currency symbol.
-
-
date_optionobject— `date`|`created_time`|`updated_time` column option.-
format(required)string, possible values:"MM/dd/yyyy", "MM/dd/yy", "M/d/yyyy", "yy-MM-dd", "yyyy/MM/dd", "yy/MM/dd", "yyyy/M/d", "yy/M/d", "dd/MM/yyyy", "dd/MM/yy", "MMM d, yyyy", "EEE, MMM d", "EEE, MMM d, yyyy", "EEE"— Date display format. Examples are provided below: 2025-10-21 12:00 2025/10/21 12:00 2025/10/21 00:00 25-10-21 00:30 10/21/2025 00:30 10/21/25 00:30 08/10/2025 01:00 08/10/25 01:00 -
is_24_hour_format(required)boolean— If `true`, display in 24-hour format. If `false`, display in 12-hour format.
-
-
number_optionobject— `number` column option.-
decimal(required)integer, possible values:0, 1, 2, 3, 4, 5— The number of decimal places. -
show_separator(required)boolean— If `true`, display thousand separators. If `false`, do not display thousand separators.
-
-
people_optionobject— `people` column option.-
is_multiple(required)boolean— If `true`, allow selection of multiple people. If `false`, only one person can be selected. -
is_notify(required)boolean— If `true`, send a notification message after selecting someone. If `false`, do not send a notification message after selecting someone.
-
-
percent_optionobject— `percent` column option.-
decimal(required)integer, possible values:0, 1, 2, 3, 4, 5— The number of decimal places. -
show_progress_bar(required)boolean— If `true`, display the progress bar. If `false`, do not display the progress bar.
-
-
reaction_optionobject— `reaction` column option.-
allow_commenter_react(required)boolean— If `true`, users with only commenter permission are allowed to react. If `false`, users with only commenter permission are not allowed to react. -
display_type(required)string, possible values:"number", "people", "none"— The reaction icon display type. -
icon(required)object— The icon content.-
type(required)string, possible values:"emoji"— The icon display type. Currently only supports `emoji`. -
value(required)string, possible values:"👍", "👎", "🌟"— The icon value.
-
-
-
select_optionobject— `single_select` and `multiple_select` column option.-
options(required)array— The option list.Items:
-
option_idstring— The option ID. -
option_namestring— The option name.
-
-
-
url_optionobject— `url` column option.-
display_type(required)string, possible values:"title", "full", "icon"— The URL display type. -
open_type(required)string, possible values:"current_page", "new_page"— The URL open type.
-
-
-
descriptionstring— Column Description
-
Example:
{
"columns": [
{
"name": "Text",
"column_type": "text",
"description": "Text Content",
"column_options": {
"date_option": {
"format": "MM/dd/yyyy",
"is_24_hour_format": false
},
"number_option": {
"decimal": 1,
"show_separator": false
},
"select_option": {
"options": [
{
"option_name": "Blue",
"option_id": "A8xSJQDVf1dnVIVh"
}
]
},
"percent_option": {
"decimal": 1,
"show_progress_bar": false
},
"people_option": {
"is_multiple": false,
"is_notify": false
},
"reaction_option": {
"icon": {
"type": "emoji",
"value": "👍"
},
"display_type": "number",
"allow_commenter_react": false
},
"currency_option": {
"decimal": 1,
"symbol": "$",
"format": "accounting"
},
"attachment_option": {
"layout": "thumbnail"
},
"url_option": {
"display_type": "title",
"open_type": "current_page"
}
},
"column_id": "dd08972e3bca46b89ba7bf0c9ee32ff5",
"integrated": false
}
]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request Invalid parameters.
Status: 403 **HTTP Status Code:** `403` <br> Forbidden Permission denied. **Error Code:** `2009` <br> No permission to access or modify this resource. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found File or table not found. **Error Code:** `2000` <br> Block not found. <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 column
- Method:
POST - Path:
/docs/files/{fileId}/data_tables/{tableId}/columns - Tags: DataTable Content
Add a new column to the table. A table allows up to 200 columns.
Scopes: canvas_data_table:write
Granular Scopes: canvas:write:data_table
Rate Limit Label: MEDIUM
Not supported in Gov cluster
Request Body
Content-Type: application/json
-
column_type(required)string, possible values:"text", "number", "percent", "single_select", "multiple_select", "date", "people", "checkbox", "attachment", "reaction", "created_by", "updated_by", "created_time", "updated_time", "currency", "page", "url"— The type of the column. -
name(required)string— The name of the column. Must be unique within the same table. -
column_optionsobject— The corresponding relationship between column type and column option is as follows: `date`|`created_time`|`updated_time`: date_option `number`: number_option `currency`: currency_option `percent`: percent_option `url`: url_option `attachment`: attachment_option `reaction`: reaction_option `single_select`|`multiple_select`: select_option `people`: people_option Other column types do not have a column option.-
attachment_optionobject— The `attachment` column option.-
layout(required)string, possible values:"thumbnail", "full_width"— The attachment layout.
-
-
currency_optionobject— The `currency` column option.-
decimal(required)integer, possible values:0, 1, 2, 3, 4, 5— The number of decimal places. -
format(required)string, possible values:"accounting", "currency"— The currency format. -
symbol(required)string, possible values:"$", "¥", "€", "Ft", "Rp", "kr", "R", "CHF", "DH", "₹", "zł", "₽", "₩", "฿", "₺", "£"— The currency symbol.
-
-
date_optionobject— The `date`|`created_time`|`updated_time` column option.-
format(required)string, possible values:"MM/dd/yyyy", "MM/dd/yy", "M/d/yyyy", "yy-MM-dd", "yyyy/MM/dd", "yy/MM/dd", "yyyy/M/d", "yy/M/d", "dd/MM/yyyy", "dd/MM/yy", "MMM d, yyyy", "EEE, MMM d", "EEE, MMM d, yyyy", "EEE"— The date display format. Examples are as follows: 2025-10-21 12:00 2025/10/21 12:00 2025/10/21 00:00 25-10-21 00:30 10/21/2025 00:30 10/21/25 00:30 08/10/2025 01:00 08/10/25 01:00 -
is_24_hour_format(required)boolean— If `true`, display in 24-hour format. If `false`, display in 12-hour format.
-
-
number_optionobject— The `number` column option.-
decimal(required)integer, possible values:0, 1, 2, 3, 4, 5— The number of decimal places. -
show_separator(required)boolean— If `true`, display thousand separators. If `false`, do not display thousand separators.
-
-
people_optionobject— The `people` column option.-
is_multiple(required)boolean— If `true`, allow selection of multiple people. If `false`, only one person can be selected. -
is_notify(required)boolean— If `true`, send a notification message after selecting someone. If `false`, do not send a notification message after selecting someone.
-
-
percent_optionobject— The `percent` column option.-
decimal(required)integer, possible values:0, 1, 2, 3, 4, 5— The number of decimal places. -
show_progress_bar(required)boolean— If `true`, display the progress bar. If `false`, do not display the progress bar.
-
-
reaction_optionobject— The `reaction` column option.-
allow_commenter_react(required)boolean— Whether a user with only commenter permission is allowed to click. If `true`, the user is allowed to click. If `false`, the user is not allowed to click. -
display_type(required)string, possible values:"number", "people", "none"— The reaction icon display type. -
icon(required)object— The icon content.-
type(required)string, possible values:"emoji"— The icon display type. Currently only supports emoji. -
value(required)string, possible values:"👍", "👎", "🌟"— The icon value.
-
-
-
select_optionobject— The `single_select` and `multiple_select` column option.-
optionsarray— The option list.Items:
-
namestring— The option name.
-
-
-
url_optionobject— The `url` column option.-
display_type(required)string, possible values:"title", "full", "icon"— The URL display type. -
open_type(required)string, possible values:"current_page", "new_page"— The URL open type.
-
-
-
descriptionstring— Column description
Example:
{
"name": "column name",
"description": "column description",
"column_type": "text",
"column_options": {
"date_option": {
"format": "MM/dd/yyyy",
"is_24_hour_format": false
},
"number_option": {
"decimal": 1,
"show_separator": false
},
"select_option": {
"options": [
{
"name": "Blue"
}
]
},
"percent_option": {
"decimal": 1,
"show_progress_bar": false
},
"people_option": {
"is_multiple": false,
"is_notify": false
},
"reaction_option": {
"icon": {
"type": "emoji",
"value": "👍"
},
"display_type": "number",
"allow_commenter_react": false
},
"currency_option": {
"decimal": 1,
"symbol": "$",
"format": "accounting"
},
"attachment_option": {
"layout": "thumbnail"
},
"url_option": {
"display_type": "title",
"open_type": "current_page"
}
}
}
Responses
Status: 201 **HTTP Status Code:** `201` Created. The new column of the data table is returned.
Content-Type: application/json
-
column_id(required)string— The ID of the column. -
column_type(required)string, possible values:"text", "number", "percent", "single_select", "multiple_select", "date", "people", "checkbox", "attachment", "reaction", "created_by", "updated_by", "created_time", "updated_time", "currency", "page", "url"— The type of the column. -
integrated(required)boolean— If `true`, this column is an integrated column and cannot be edited by the user. If `false`, the user can edit it. -
name(required)string— The name of the column. -
column_optionsobject— The corresponding relationship between column type and column option is as follows: `date`|`created_time`|`updated_time`: date_option `number`: number_option `currency`: currency_option `percent`: percent_option `url`: url_option `attachment`: attachment_option `reaction`: reaction_option `single_select`|`multiple_select`: select_option `people`: people_option Other column types do not have a column option.-
attachment_optionobject— The `attachment` column option.-
layout(required)string, possible values:"thumbnail", "full_width"— The attachment layout.
-
-
currency_optionobject— The `currency` column option.-
decimal(required)integer, possible values:0, 1, 2, 3, 4, 5— The number of decimal places. -
format(required)string, possible values:"accounting", "currency"— The currency format. -
symbol(required)string, possible values:"$", "¥", "€", "Ft", "Rp", "kr", "R", "CHF", "DH", "₹", "zł", "₽", "₩", "฿", "₺", "£"— The currency symbol.
-
-
date_optionobject— The `date`|`created_time`|`updated_time` column option.-
format(required)string, possible values:"MM/dd/yyyy", "MM/dd/yy", "M/d/yyyy", "yy-MM-dd", "yyyy/MM/dd", "yy/MM/dd", "yyyy/M/d", "yy/M/d", "dd/MM/yyyy", "dd/MM/yy", "MMM d, yyyy", "EEE, MMM d", "EEE, MMM d, yyyy", "EEE"— The date display format. Specific examples are as follows: 2025-10-21 12:00 2025/10/21 12:00 2025/10/21 00:00 25-10-21 00:30 10/21/2025 00:30 10/21/25 00:30 08/10/2025 01:00 08/10/25 01:00 -
is_24_hour_format(required)boolean— If `true`, display in 24-hour format. If `false`, display in 12-hour format.
-
-
number_optionobject— The `number` column option.-
decimal(required)integer, possible values:0, 1, 2, 3, 4, 5— The number of decimal places. -
show_separator(required)boolean— If `true`, display thousand separators. If `false`, do not display thousand separators.
-
-
people_optionobject— The `people` column option.-
is_multiple(required)boolean— If `true`, allow selection of multiple people. If `false`, only one person can be selected. -
is_notify(required)boolean— If `true`, send a notification message after selecting someone. If `false`, do not send a notification message after selecting someone.
-
-
percent_optionobject— The `percent` column option.-
decimal(required)integer, possible values:0, 1, 2, 3, 4, 5— The number of decimal places. -
show_progress_bar(required)boolean— If `true`, display the progress bar. If `false`, do not display the progress bar.
-
-
reaction_optionobject— The `reaction` column option.-
allow_commenter_react(required)boolean— Whether a user with only commenter permission is allowed to click. If `true`, the user is allowed to click. If `false`, the user is not allowed to click. -
display_type(required)string, possible values:"number", "people", "none"— The reaction icon display type. -
icon(required)object— The icon content.-
type(required)string, possible values:"emoji"— The icon display type. Currently only supports emoji. -
value(required)string, possible values:"👍", "👎", "🌟"— The icon value.
-
-
-
select_optionobject— The `single_select` and `multiple_select` column option.-
optionsarray— The option list.Items:
-
idstring— The ID of an option. -
namestring— The name of an option.
-
-
-
url_optionobject— The `url` column option.-
display_type(required)string, possible values:"title", "full", "icon"— The URL display type. -
open_type(required)string, possible values:"current_page", "new_page"— The URL open type.
-
-
-
descriptionstring— Column Description
Example:
{
"column_id": "cacdc418655a4d5b8ca6c6b5e5dab07b",
"name": "Text",
"description": "Text Content",
"column_type": "text",
"column_options": {
"date_option": {
"format": "MM/dd/yyyy",
"is_24_hour_format": false
},
"number_option": {
"decimal": 1,
"show_separator": false
},
"select_option": {
"options": [
{
"name": "Blue",
"id": "h45x4NDzVprZUu6t"
}
]
},
"percent_option": {
"decimal": 1,
"show_progress_bar": false
},
"people_option": {
"is_multiple": false,
"is_notify": false
},
"reaction_option": {
"icon": {
"type": "emoji",
"value": "👍"
},
"display_type": "number",
"allow_commenter_react": false
},
"currency_option": {
"decimal": 1,
"symbol": "$",
"format": "accounting"
},
"attachment_option": {
"layout": "thumbnail"
},
"url_option": {
"display_type": "title",
"open_type": "current_page"
}
},
"integrated": false
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request Invalid parameters. **Error Code:** `2012` <br> Unsupported column type. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden Permission denied. **Error Code:** `2009` <br> No permission to access or modify this resource. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found File or data table 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/).
Delete a column
- Method:
DELETE - Path:
/docs/files/{fileId}/data_tables/{tableId}/columns/{columnId} - Tags: DataTable Content
Delete a column from a table.
Scopes: canvas_data_table:delete
Granular Scopes: canvas:delete:data_table
Rate Limit Label: MEDIUM
Not supported in Gov cluster
Responses
Status: 204 Column deleted successfully.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request Invalid parameters.
Status: 403 **HTTP Status Code:** `403` <br> Forbidden No permission. **Error Code:** `2009` <br> No permission to access or modify this resource. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found Table or column not found. **Error Code:** `2000` <br> Block not found. <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/).
Update a column
- Method:
PATCH - Path:
/docs/files/{fileId}/data_tables/{tableId}/columns/{columnId} - Tags: DataTable Content
Update a column.
Scopes: canvas_data_table:update
Granular Scopes: canvas:update:data_table
Rate Limit Label: MEDIUM
Not supported in Gov cluster
Request Body
Content-Type: application/json
-
column_optionsobject— When updating columns, update only the necessary options; there is no need to update all of them. The corresponding relationship between column type and column option is as follows: `date`|`created_time`|`updated_time`: date_option `number`: number_option `currency`: currency_option `percent`: percent_option `url`: url_option `attachment`: attachment_option `reaction`: reaction_option `single_select`|`multiple_select`: select_option `people`: people_option Other column types do not have a column option.-
attachment_optionobject— The `attachment` column option.-
layout(required)string, possible values:"thumbnail", "full_width"— The attachment layout.
-
-
currency_optionobject— The `currency` column option.-
decimal(required)integer, possible values:0, 1, 2, 3, 4, 5— The number of decimal places. -
format(required)string, possible values:"accounting", "currency"— The currency format. -
symbol(required)string, possible values:"$", "¥", "€", "Ft", "Rp", "kr", "R", "CHF", "DH", "₹", "zł", "₽", "₩", "฿", "₺", "£"— The currency symbol.
-
-
date_optionobject— The `date`|`created_time`|`updated_time` column option.-
format(required)string, possible values:"MM/dd/yyyy", "MM/dd/yy", "M/d/yyyy", "yy-MM-dd", "yyyy/MM/dd", "yy/MM/dd", "yyyy/M/d", "yy/M/d", "dd/MM/yyyy", "dd/MM/yy", "MMM d, yyyy", "EEE, MMM d", "EEE, MMM d, yyyy", "EEE"— The date display format. Specific examples are as follows: 2025-10-21 12:00 2025/10/21 12:00 2025/10/21 00:00 25-10-21 00:30 10/21/2025 00:30 10/21/25 00:30 08/10/2025 01:00 08/10/25 01:00 -
is_24_hour_format(required)boolean— If `true`, display in 24-hour format. If `false`, display in 12-hour format.
-
-
number_optionobject— The `number` column option.-
decimal(required)integer, possible values:0, 1, 2, 3, 4, 5— The number of decimal places. -
show_separator(required)boolean— If `true`, display thousand separators. If `false`, do not display thousand separators.
-
-
people_optionobject— The `people` column option.-
is_multiple(required)boolean— If `true`, allow selection of multiple people. If `false`, only one person can be selected. -
is_notify(required)boolean— If `true`, send a notification message after selecting someone. If `false`, do not send a notification message after selecting someone.
-
-
percent_optionobject— The `percent` column option.-
decimal(required)integer, possible values:0, 1, 2, 3, 4, 5— The number of decimal places. -
show_progress_bar(required)boolean— If `true`, display the progress bar. If `false`, do not display the progress bar.
-
-
reaction_optionobject— The `reaction` column option.-
allow_commenter_react(required)boolean— Whether a user with only commenter permission is allowed to click. If `true`, the user is allowed to click. If `false`, the user is not allowed to click. -
display_type(required)string, possible values:"number", "people", "none"— The reaction icon display type. -
icon(required)object— The icon content.-
type(required)string, possible values:"emoji"— The icon display type. Currently only supports emoji. -
value(required)string, possible values:"👍", "👎", "🌟"— The icon value.
-
-
-
select_optionobject— The `single_select` and `multiple_select` column option. Only supports adding new options and modifying existing ones; deleting options is not supported.-
create_optionsarray— The list of new options to be added.Items:
string— The option name. -
update_optionsarray— The list of options to be updated.Items:
-
option_idstring— The option ID. -
option_namestring— The option name.
-
-
-
url_optionobject— The `url` column option.-
display_type(required)string, possible values:"title", "full", "icon"— The URL display type. -
open_type(required)string, possible values:"current_page", "new_page"— The URL open type.
-
-
-
column_typestring, possible values:"text", "number", "percent", "single_select", "multiple_select", "date", "people", "checkbox", "attachment", "reaction", "created_by", "updated_by", "created_time", "updated_time", "currency", "page", "url"— If the column type needs to be modified, pass the new column type here. If the target column type requires column options, pass the column options as well. -
descriptionstring— Column Description -
namestring— The column name.
Example:
{
"name": "Text",
"description": "Display national place names",
"column_options": {
"date_option": {
"format": "MM/dd/yyyy",
"is_24_hour_format": false
},
"number_option": {
"decimal": 1,
"show_separator": false
},
"select_option": {
"create_options": [
"Todo"
],
"update_options": [
{
"option_id": "U9QOO6U4s8gBu0Zl",
"option_name": "Done"
}
]
},
"percent_option": {
"decimal": 1,
"show_progress_bar": false
},
"people_option": {
"is_multiple": false,
"is_notify": false
},
"reaction_option": {
"icon": {
"type": "emoji",
"value": "👍"
},
"display_type": "number",
"allow_commenter_react": false
},
"currency_option": {
"decimal": 1,
"symbol": "$",
"format": "accounting"
},
"attachment_option": {
"layout": "thumbnail"
},
"url_option": {
"display_type": "title",
"open_type": "current_page"
}
},
"column_type": "text"
}
Responses
Status: 204 Successfully updated the column of the table.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request Invalid parameters. **Error Code:** `2012` <br> Unsupported column type. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden No permission. **Error Code:** `2009` <br> Updating column type is not allowed. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found Data table or column not found. **Error Code:** `2000` <br> Block not found. <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 table rows
- Method:
POST - Path:
/docs/files/{fileId}/data_tables/{tableId}/rows - Tags: DataTable Content
Add rows to a table. Create up to 10 rows at a time.
Scopes: canvas_data_table:write
Granular Scopes: canvas:write:data_table
Rate Limit Label: MEDIUM
Not supported in Gov cluster
Request Body
Content-Type: application/json
-
rows(required)array— Array of table rows.Items:
-
cells(required)array— Array of cell values in a row.Items:
-
column_name(required)string— The column name. Each cell value corresponds to a column. -
value(required)object— A single `column_name` corresponds to only one `value`, and the relationship between each `value` and its `column_type` is as follows: `text`: `text` column `number`: `number` column `currency`: `currency` column `percent`: `percent` column `date`: `date` column `url`: `url` column `people`: `people` column `reaction`: `reaction` column `attachment`: `attachment` column `single_select`: `single_select` column `multiple_select`: `multiple_select` column `checkbox`: `checkbox` column `page`, `relation`, `formula`, and `rollup` cell values are not supported. The `created_time`, `updated_time`, `created_by`, and `updated_by` values are automatically generated by the system.-
attachmentarray— The `attachment` cell value. You must first call the [Upload file for docs import or attachments](/docs/api-reference/zoom-api/methods#operation/uploadDocsFile) API to upload the attachment, get the **attachment_id**, and then fill it into the cell value. Multiple **attachment_id** values can be specified. Image attachments are not allowed.Items:
-
attachment_idstring— The attachment ID.
-
-
checkboxboolean— The `checkbox` cell value. Whether the checkbox is checked: `true` or `false`. -
currencynumber— The `currency` cell value. -
datestring— The `date` cell value. An ISO 8601 formatted date string in UTC. -
multiple_selectarray— The `multiple_select` cell value.Items:
string -
numbernumber— The `number` cell value. -
peoplearray— The `people` cell value. If the `people` column's `is_multiple` is `true`, multiple people entries can be specified; otherwise, only one is allowed.Items:
-
user_idstring— The user ID.
-
-
percentnumber— The `percent` cell value. The calculation is based on percentage. For example, 200 represents 200%, and 1 represents 1%. -
reactionstring, possible values:"click", "unclick"— The `reaction` cell value. -
single_selectstring— The `single_select` cell value. -
textstring— The `text` cell value. -
urlstring— The `url` cell value.
-
-
-
Example:
{
"rows": [
{
"cells": [
{
"column_name": "Text",
"value": {
"text": "Hello World!",
"number": 12.14,
"percent": 200,
"single_select": "Male",
"multiple_select": [
"Male"
],
"date": "2025-07-03T05:52:37Z",
"people": [
{
"user_id": "U3OwWitcRAShLhbG4ChXNQ"
}
],
"checkbox": false,
"reaction": "click",
"currency": 20000,
"url": "https://www.google.com",
"attachment": [
{
"attachment_id": "ql62c9GzTdywOfRiaj6imQ"
}
]
}
}
]
}
]
}
Responses
Status: 201 **HTTP Status Code:** `201` Created rows of the data table returned.
Content-Type: application/json
-
rowsarray— Array of table rows.Items:
-
cells(required)array— Array of cell values in a row.Items:
-
column_name(required)string— The column name. Each cell value corresponds to a column. -
value(required)object— The column types corresponding to each cell value are as follows: `text`: `text` column `number`: `number` column `currency`: `currency` column `percent`: `percent` column `date`: `date` column `url`: `url` column `people`: `people` column `reaction`: `reaction` column `attachment`: `attachment` column `single_select`: `single_select` column `multiple_select`: `multiple_select` column `checkbox`: `checkbox` column `page`, `relation`, `formula`, and `rollup` cell values are not supported. The `created_time`, `updated_time`, `created_by`, and `updated_by` values are automatically generated by the system.-
attachmentarray— The `attachment` cell value. You must first call the [Upload file for docs import or attachments](/docs/api-reference/zoom-api/methods#operation/uploadDocsFile) API to upload the attachment, get the **attachment_id**, and then fill it into the cell value. Multiple **attachment_id** values can be specified. Image attachments are not allowed.Items:
-
attachment_idstring— The attachment ID. -
namestring— The attachment name. -
typestring— The attachment type.
-
-
checkboxboolean— The `checkbox` cell value. Whether the checkbox is checked: `true` or `false`. -
currencynumber— The `currency` cell value. -
datestring— The `date` cell value. An ISO 8601 formatted date string in UTC. -
multiple_selectarray— The `multiple_select` cell value.Items:
string -
numbernumber— The `number` cell value. -
peoplearray— The `people` cell value. If the `people` column's `is_multiple` is `true`, multiple people entries can be specified; otherwise, only one is allowed.Items:
-
user_idstring— The user ID. -
user_namestring— The user name.
-
-
percentnumber— The `percent` cell value. The calculation is based on percentage. For example, 200 represents 200%, and 1 represents 1%. -
reactionarray— The `reaction` cell value.Items:
-
user_idstring— The user ID. -
user_namestring— The user name.
-
-
single_selectstring— The `single_select` cell value. -
textstring— The `text` cell value. -
urlstring— The `url` cell value.
-
-
-
row_id(required)string— The row ID.
-
Example:
{
"rows": [
{
"cells": [
{
"column_name": "Text",
"value": {
"text": "Hello World!",
"number": 12.14,
"percent": 200,
"single_select": "Male",
"multiple_select": [
"Male"
],
"date": "2025-07-03T05:52:37Z",
"people": [
{
"user_id": "U3OwWitcRAShLhbG4ChXNQ",
"user_name": "Jack Li"
}
],
"checkbox": false,
"reaction": [
{
"user_id": "GUZs4XBmSXqP6WLfEl_PSg",
"user_name": "Jack Li"
}
],
"currency": 20000,
"url": "https://www.google.com",
"attachment": [
{
"attachment_id": "ql62c9GzTdywOfRiaj6imQ",
"name": "api.txt",
"type": "txt"
}
]
}
}
],
"row_id": "f537cdc592524388ae6651f9e97fe860"
}
]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request Invalid parameters. **Error Code:** `2105` <br> Row count can not be greater than 10. <br> **Error Code:** `2026` <br> Invalid or inaccessible link URL. <br> **Error Code:** `2012` <br> Unsupported column type. <br>
Status: 401 **HTTP Status Code:** `401` <br> Unauthorized User not found or authentication failed.
Status: 403 **HTTP Status Code:** `403` <br> Forbidden Permission denied. **Error Code:** `2009` <br> No permission to access or modify this resource. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found File or data table not found. **Error Code:** `2000` <br> Block not found. <br>
Status: 415 **HTTP Status Code:** `415` <br> Unsupported Media Type Unsupported image attachment.
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 rows
- Method:
DELETE - Path:
/docs/files/{fileId}/data_tables/{tableId}/rows - Tags: DataTable Content
Batch delete rows. Delete up to 10 rows at a time.
Scopes: canvas_data_table:delete
Granular Scopes: canvas:delete:data_table
Rate Limit Label: MEDIUM
Not supported in Gov cluster
Responses
Status: 204 Rows deleted successfully.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request Invalid Parameters.
Status: 403 **HTTP Status Code:** `403` <br> Forbidden No Permission. **Error Code:** `2009` <br> No permission to access or modify this resource. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found Table or Row not found. **Error Code:** `2000` <br> Table row not found. <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/).
Update rows
- Method:
PATCH - Path:
/docs/files/{fileId}/data_tables/{tableId}/rows - Tags: DataTable Content
Update rows of the table. A maximum of 10 rows can be updated at one time.
Scopes: canvas_data_table:update
Granular Scopes: canvas:update:data_table
Rate Limit Label: MEDIUM
Not supported in Gov cluster
Request Body
Content-Type: application/json
-
rows(required)array— Array of table rows.Items:
-
cells(required)array— The list of cells to update in this row. Include only the columns whose values need to be changed. Columns that are not included remain unchanged.Items:
-
column_name(required)string— The column name. Each cell value corresponds to a column. -
value(required)object— A single `column_name` corresponds to only one `value`, and the relationship between each `value` and its `column_type` is as follows: `text`: `text` column `number`: `number` column `currency`: `currency` column `percent`: `percent` column `date`: `date` column `url`: `url` column `people`: `people` column `reaction`: `reaction` column `attachment`: `attachment` column `single_select`: `single_select` column `multiple_select`: `multiple_select` column `checkbox`: `checkbox` column `page`, `relation`, `formula`, and `rollup` cell values are not supported. The `created_time`, `updated_time`, `created_by`, and `updated_by` values are automatically generated by the system.-
attachmentarray— The `attachment` cell value. You must first call the `Upload file for docs import or attachments` API to upload the attachment, get the **attachment_id**, and then fill it into the cell value. Multiple **attachment_id** values can be specified. Image attachments are not allowed.Items:
-
attachment_idstring— The attachment ID.
-
-
checkboxboolean— The `checkbox` cell value. Whether the checkbox is checked: `true` or `false`. -
currencynumber— The `currency` cell value. -
datestring— The `date` cell value. The ISO 8601 formatted date string in UTC. -
multiple_selectarray— The `multiple_select` cell value.Items:
string -
numbernumber— The `number` cell value. -
peoplearray— The `people` cell value. If the `people` column's `is_multiple` is `true`, multiple people entries can be specified; otherwise, only one is allowed.Items:
-
user_idstring— The user ID.
-
-
percentnumber— The `percent` cell value. The calculation is based on percentage. For example, 200 represents 200%, and 1 represents 1%. -
reactionstring, possible values:"click", "unclick"— The `reaction` cell value. -
single_selectstring— The `single_select` cell value. -
textstring— The `text` cell value. -
urlstring— The `url` cell value.
-
-
-
row_id(required)string— The row ID.
-
Example:
{
"rows": [
{
"cells": [
{
"column_name": "Text",
"value": {
"text": "Hello World!",
"number": 12.14,
"percent": 200,
"single_select": "Male",
"multiple_select": [
"Male"
],
"date": "2025-07-03T05:52:37Z",
"people": [
{
"user_id": "U3OwWitcRAShLhbG4ChXNQ"
}
],
"checkbox": false,
"reaction": "click",
"currency": 20000,
"url": "https://www.google.com",
"attachment": [
{
"attachment_id": "ql62c9GzTdywOfRiaj6imQ"
}
]
}
}
],
"row_id": "f537cdc592524388ae6651f9e97fe860"
}
]
}
Responses
Status: 204 Rows updated successfully.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request Invalid parameters. **Error Code:** `2000` <br> Block not found. <br> **Error Code:** `2105` <br> Row count cannot be greater than 10. <br> **Error Code:** `2026` <br> Invalid or inaccessible link URL. <br>
Status: 401 **HTTP Status Code:** `401` <br> Unauthorized User not found or authentication failed.
Status: 403 **HTTP Status Code:** `403` <br> Forbidden No permission. **Error Code:** `2009` <br> No permission to access or modify this resource. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found Data table or rows not found. **Error Code:** `2000` <br> Block not found. <br>
Status: 415 **HTTP Status Code:** `415` <br> Unsupported Media Type Unsupported image attachment.
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rate-limits/).
Search rows
- Method:
POST - Path:
/docs/files/{fileId}/data_tables/{tableId}/rows/query - Tags: DataTable Content
Retrieve rows from a table with pagination, sorting, field selection, and filtering. A maximum of 100 rows are returned at a time.
Scopes: canvas_data_table:read
Granular Scopes: canvas:read:data_table
Rate Limit Label: MEDIUM
Not supported in Gov cluster
Request Body
Content-Type: application/json
-
fieldsarray— If provided, only the values of the specified fields are returned. If not provided, the values of all fields are returned.Items:
string— The field name. -
filtersobject— # Filter Structure ## 1. Logical Group (`and` / `or`) ```json { "and": [ { "column_name": "Status", "operator": "equal", "value": { "single_select": "Done" } }, { "column_name": "Priority", "operator": "greater_than", "value": { "number": 3 } } ] } ``` ## 2. Nested Group (max 2 levels) ```json { "and": [ { "column_name": "Status", "operator": "equal", "value": { "single_select": "Done" } }, { "or": [ { "column_name": "Priority", "operator": "equal", "value": { "number": 1 } }, { "column_name": "Priority", "operator": "equal", "value": { "number": 2 } } ] } ] } ``` --- # Condition Fields | Key | Type | Required | Description | | ---------- | -------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------- | | `column_name` | `string` | **Yes** | The column name. | | `operator` | `string` | **Yes** | The filter operator (see below). | | `value` | `object` | No | The filter value. **Not required** when `operator` is `is_empty` or `is_not_empty`. Only **one key** should be set, matching the column type. | --- # Filter Operators | Operator | Description | | -------------------- | --------------------------------- | | `equal` | Equal to | | `not_equal` | Not equal to | | `greater_than` | Greater than | | `greater_than_equal` | Greater than or equal to | | `less_than` | Less than | | `less_than_equal` | Less than or equal to | | `contains` | Contains | | `not_contains` | Does not contain | | `is_empty` | Is empty (no `value` needed) | | `is_not_empty` | Is not empty (no `value` needed) | | `starts_with` | Starts with | | `ends_with` | Ends with | | `contains_any_of` | Contains any of the given values | | `contains_none_of` | Contains none of the given values | | `contains_all_of` | Contains all of the given values | --- # Value Format by Column Type ## `text` - **Format:** `{ "text": "Hello World!" }` - **Operators:** `is_empty`, `is_not_empty`, `equal`, `not_equal`, `contains`, `not_contains`, `starts_with`, `ends_with` ## `number` - **Format:** `{ "number": 12.14 }` - **Operators:** `is_empty`, `is_not_empty`, `equal`, `not_equal`, `greater_than`, `greater_than_equal`, `less_than`, `less_than_equal` ## `percent` - **Format:** `{ "percent": 200 }` - **Note:** 200 means 200%, 1 means 1%. - **Operators:** Same as `number`. ## `currency` - **Format:** `{ "currency": 20000 }` - **Operators:** Same as `number`. ## `single_select` - **Format:** `{ "single_select": "Male" }` - **Note:** Value is the **option name**. - **Operators:** `is_empty`, `is_not_empty`, `equal`, `not_equal`, `contains_any_of`, `contains_none_of` ## `multiple_select` - **Format:** `{ "multiple_select": ["Tag1", "Tag2"] }` - **Note:** Value is an **array of option names**. - **Operators:** `is_empty`, `is_not_empty`, `equal`, `contains_any_of`, `contains_all_of`, `contains_none_of` ## `date` - **Format:** `{ "date": { "mode": "<mode>", "value": "<value>" } }` - **`mode` is required.** The `value` field depends on the mode: | Mode | `value` | Example | | ------------- | ----------------------------- | -------------------------------------------------------- | | `exactly` | ISO 8601 date string | `{ "mode": "exactly", "value": "2025-07-03T05:52:37Z" }` | | `past` | Number of days ago (string) | `{ "mode": "past", "value": "3" }` | | `next` | Number of days ahead (string) | `{ "mode": "next", "value": "7" }` | | `today` | Not required | `{ "mode": "today" }` | | `yesterday` | Not required | `{ "mode": "yesterday" }` | | `tomorrow` | Not required | `{ "mode": "tomorrow" }` | | `currentweek` | Not required | `{ "mode": "currentweek" }` | - **Operators:** `is_empty`, `is_not_empty`, `equal`, `not_equal`, `greater_than`, `greater_than_equal`, `less_than`, `less_than_equal` - **Examples:** - Greater than current week: `"operator": "greater_than"`, `"value": { "date": { "mode": "currentweek" } }` - Less than a specific date: `"operator": "less_than"`, `"value": { "date": { "mode": "exactly", "value": "2025-07-03T05:52:37Z" } }` - Greater than 3 days ago: `"operator": "greater_than"`, `"value": { "date": { "mode": "past", "value": "3" } }` ## `people` - **Format:** `{ "people": ["U3OwWitcRAShLhbG4ChXNQ"] }` - **Note:** Value is an **array of user IDs**. - **Operators:** `is_empty`, `is_not_empty`, `equal`, `not_equal`, `contains_any_of`, `contains_none_of` ## `checkbox` - **Format:** `{ "checkbox": false }` - **Operators:** `equal` ## `reaction` - **Format:** `{ "reaction": 12 }` - **Note:** Value is the **click count** (integer). - **Operators:** `is_empty`, `is_not_empty`, `equal`, `not_equal`, `greater_than`, `greater_than_equal`, `less_than`, `less_than_equal` ## `url` - **Format:** `{ "url": "https://www.google.com" }` - **Operators:** `is_empty`, `is_not_empty`, `equal`, `not_equal`, `contains`, `not_contains`, `starts_with`, `ends_with` ## `attachment` - **Format:** `{ "attachment": "document.txt" }` - **Note:** Filtering is based on the **file name**. - **Operators:** `is_empty`, `is_not_empty`, `equal`, `not_equal`, `contains`, `not_contains`, `starts_with`, `ends_with` -
sortarray— The list of sorting rules.Items:
-
column_name(required)string— The column name to sort by. -
order(required)string, possible values:"desc", "asc"— The sort order.
-
Example:
{
"filters": {},
"fields": [
"Task"
],
"sort": [
{
"column_name": "Priority",
"order": "asc"
}
]
}
Responses
Status: 200 Successfully searched rows.
Content-Type: application/json
-
rows(required)array— The array of queried rows.Items:
-
cells(required)array— The array of cell values in the row.Items:
-
column_name(required)string— The column name. Each cell value corresponds to a column. -
value(required)object— The column types corresponding to each cell value are as follows: `text`: `text` column `number`: `number` column `currency`: `currency` column `percent`: `percent` column `date`: `date` column `url`: `url` column `people`: `people` column `reaction`: `reaction` column `attachment`: `attachment` column `single_select`: `single_select` column `multiple_select`: `multiple_select` column `checkbox`: `checkbox` column `page`, `relation`, `formula`, and `rollup` cell values are not supported. The `created_time`, `updated_time`, `created_by`, and `updated_by` values are automatically generated by the system.-
attachmentarray— The `attachment` cell value. You must first call the [Upload file for docs import or attachments](/docs/api-reference/zoom-api/methods#operation/uploadDocsFile) API to upload the attachment, get the **attachment_id**, and then fill it into the cell value. Multiple **attachment_id** values can be specified. Image attachments are not allowed.Items:
-
attachment_idstring— The attachment ID. -
namestring— The attachment name. -
typestring— The attachment type.
-
-
checkboxboolean— The `checkbox` cell value. Whether the checkbox is checked: `true` or `false`. -
currencynumber— The `currency` cell value. -
datestring— The `date` cell value. An ISO 8601 formatted date string in UTC. -
multiple_selectarray— The `multiple_select` cell value.Items:
string -
numbernumber— The `number` cell value. -
peoplearray— The `people` cell value. If the `people` column's `is_multiple` is `true`, multiple people entries can be specified; otherwise, only one is allowed.Items:
-
user_idstring— The user ID. -
user_namestring— The user name.
-
-
percentnumber— The `percent` cell value. The calculation is based on percentage. For example, 200 represents 200%, and 1 represents 1%. -
reactionarray— The `reaction` cell value.Items:
-
user_idstring— The user ID. -
user_namestring— The user name.
-
-
single_selectstring— The `single_select` cell value. -
textstring— The `text` cell value. -
urlstring— The `url` cell value.
-
-
-
row_id(required)string— The row ID.
-
-
total_records(required)number— The total number of rows matching the query condition. -
next_page_tokenstring— If `next_page_token` is not empty, it indicates that there are more results. Use this token in the next request to retrieve the next page of results.
Example:
{
"next_page_token": "Tva2CuIdTgsv8wAnhyAdU3m06Y2HuLQtlh3",
"total_records": 50,
"rows": [
{
"cells": [
{
"column_name": "Text",
"value": {
"text": "Hello World!",
"number": 12.14,
"percent": 200,
"single_select": "Male",
"multiple_select": [
"Male"
],
"date": "2025-07-03T05:52:37Z",
"people": [
{
"user_id": "U3OwWitcRAShLhbG4ChXNQ",
"user_name": "Jack Li"
}
],
"checkbox": false,
"reaction": [
{
"user_id": "GUZs4XBmSXqP6WLfEl_PSg",
"user_name": "Jack Li"
}
],
"currency": 20000,
"url": "https://www.google.com",
"attachment": [
{
"attachment_id": "ql62c9GzTdywOfRiaj6imQ",
"name": "api.txt",
"type": "txt"
}
]
}
}
],
"row_id": "f537cdc592524388ae6651f9e97fe860"
}
]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request Invalid parameters. **Error Code:** `2012` <br> Unsupported column type. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden No permission. **Error Code:** `2009` <br> No permission to access or modify this resource. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found Table or rows not found. **Error Code:** `2000` <br> Block not found. <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/).
Insert blocks into a document
- Method:
POST - Path:
/docs/files/{fileId}/blocks - Tags: Doc Content
Insert new blocks at a specific position in a document. Accepts XML-formatted block content and supports positioning above, below, or inside a specific parent block. Use the Get file content endpoint with the query parameter format=xml first to fetch the document structure and block IDs.
Scopes: docs_content:write
Granular Scopes: docs:write:content
Rate Limit Label: LIGHT
Not supported in Gov cluster
Request Body
Content-Type: application/json
-
blocks(required)string— XML string containing block content. See the [Zoom Docs XML Format Specification](https://developers.zoom.us/docs/zoom-docs/doc-format-specification) for supported block types and syntax. -
positioningobject— Block positioning options. At most one of `above_block_id`, `below_block_id`, or `parent_block_id` should be specified. If none are specified, blocks are appended to the end of the document.-
above_block_idstring— Block ID to insert above (mutually exclusive with below) -
below_block_idstring— Block ID to insert below (mutually exclusive with above) -
parent_block_idstring— Parent block ID. Inserts at the end of this parent's children.
-
Example:
{
"positioning": {
"above_block_id": "8d0ad8e130e14d44",
"below_block_id": "8d0ad8e130e14d44",
"parent_block_id": "a1b2c3d4e5f6"
},
"blocks": "<text>New content</text>"
}
Responses
Status: 201 Successfully inserted blocks.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `2000` <br> Block not found. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `4000` <br> File not found. <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/).
Replace a range of blocks
- Method:
POST - Path:
/docs/files/{fileId}/blocks/replace_range - Tags: Doc Content
Replace a contiguous range of sibling blocks with new blocks in a single atomic operation. All blocks between start and end (inclusive) are removed and replaced with the provided XML block content. Important: start_block_id and end_block_id must be direct children of the same parent block (siblings). If they are not siblings, the operation will fail. Use the Get file content endpoint to verify the document structure before calling this endpoint.
Scopes: docs_content:update
Granular Scopes: docs:update:content
Rate Limit Label: LIGHT
Not supported in Gov cluster
Request Body
Content-Type: application/json
-
blocks(required)string— XML string containing block content. See the [Zoom Docs XML Format Specification](https://developers.zoom.us/docs/zoom-docs/doc-format-specification) for supported block types and syntax. -
end_block_id(required)string— Block ID of the last block in the range. -
start_block_id(required)string— Block ID of the first block in the range.
Example:
{
"blocks": "<text>New content</text>",
"start_block_id": "a1b2c",
"end_block_id": "d4e5f"
}
Responses
Status: 204 Successfully replaced the specified block range with new blocks.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `2000` <br> Block not found. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `4000` <br> File not found. <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/).
Delete a specific block
- Method:
DELETE - Path:
/docs/files/{fileId}/blocks/{blockId} - Tags: Doc Content
Deletes a block and all its content from the document.
Granular Scopes: docs:delete:content
Rate Limit Label: LIGHT
Not supported in Gov cluster
Responses
Status: 204 Successfully deleted the block.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `2000` <br> Block not found. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `4000` <br> File not found. <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/).
Update a specific block
- Method:
PATCH - Path:
/docs/files/{fileId}/blocks/{blockId} - Tags: Doc Content
Updates the content of an existing block using XML-formatted content. Keeps the existing block type and replaces the content. To change the block type, use ReplaceBlockRange.
Scopes: docs_content:update
Granular Scopes: docs:update:content
Rate Limit Label: LIGHT
Not supported in Gov cluster
Request Body
Content-Type: application/json
-
block(required)string— A single XML block string with the updated content. See the [Zoom Docs XML Format Specification](https://developers.zoom.us/docs/zoom-docs/doc-format-specification) for supported block types and syntax.
Example:
{
"block": "<text>New content</text>"
}
Responses
Status: 204 Block updated successfully.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `2000` <br> Block not found. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `4000` <br> File not found. <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 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_linkstring— The download link for the converted file. This field will be returned when the value of status is `succeeded`. -
expires_atstring— 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_contentstring— The document file content in Markdown format. -
file_namestring— 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
-
data_tableobject— The data table schema information.-
columnsarray— The `columns` parameter is ignored when `file_type` is not `data_table`. When `file_type` is `data_table`, users can provide custom columns. If none are provided, three default columns—`text`, `people`, and `single_select`—along with a grid view will be created.Items:
-
column_type(required)string, possible values:"text", "number", "percent", "single_select", "multiple_select", "date", "people", "checkbox", "attachment", "reaction", "created_by", "updated_by", "created_time", "updated_time", "currency", "page", "url"— The type of the column. -
name(required)string— The column name. -
column_optionsobject— The corresponding relationship between column type and column option is as follows: `date`|`created_time`|`updated_time`: date_option `number`: number_option `currency`: currency_option `percent`: percent_option `url`: url_option `attachment`: attachment_option `reaction`: reaction_option `single_select`|`multiple_select`: select_option `people`: people_option Other column types do not have a column option.-
attachment_optionobject— The `attachment` column option.-
layout(required)string, possible values:"thumbnail", "full_width"— The attachment layout.
-
-
currency_optionobject— The `currency` column option.-
decimal(required)integer, possible values:0, 1, 2, 3, 4, 5— The number of decimal places. -
format(required)string, possible values:"accounting", "currency"— The currency format. -
symbol(required)string, possible values:"$", "¥", "€", "Ft", "Rp", "kr", "R", "CHF", "DH", "₹", "zł", "₽", "₩", "฿", "₺", "£"— The currency symbol.
-
-
date_optionobject— The `date`|`created_time`|`updated_time` column option.-
format(required)string, possible values:"MM/dd/yyyy", "MM/dd/yy", "M/d/yyyy", "yy-MM-dd", "yyyy/MM/dd", "yy/MM/dd", "yyyy/M/d", "yy/M/d", "dd/MM/yyyy", "dd/MM/yy", "MMM d, yyyy", "EEE, MMM d", "EEE, MMM d, yyyy", "EEE"— The date display format. Examples are as follows: 2025-10-21 12:00 2025/10/21 12:00 2025/10/21 00:00 25-10-21 00:30 10/21/2025 00:30 10/21/25 00:30 08/10/2025 01:00 08/10/25 01:00 -
is_24_hour_format(required)boolean— If `true`, display in 24-hour format. If `false`, display in 12-hour format.
-
-
number_optionobject— The `number` column option.-
decimal(required)integer, possible values:0, 1, 2, 3, 4, 5— The number of decimal places. -
show_separator(required)boolean— If `true`, display thousand separators. If `false`, do not display thousand separators.
-
-
people_optionobject— The `people` column option.-
is_multiple(required)boolean— If `true`, allow selection of multiple people. If `false`, only one person can be selected. -
is_notify(required)boolean— If `true`, send a notification message after selecting someone. If `false`, do not send a notification message after selecting someone.
-
-
percent_optionobject— The `percent` column option.-
decimal(required)integer, possible values:0, 1, 2, 3, 4, 5— The number of decimal places. -
show_progress_bar(required)boolean— If `true`, display the progress bar. If `false`, do not display the progress bar.
-
-
reaction_optionobject— The `reaction` column option.-
allow_commenter_react(required)boolean— Whether a user with only commenter permission is allowed to click. If `true`, the user is allowed to click. If `false`, the user is not allowed to click. -
display_type(required)string, possible values:"number", "people", "none"— The reaction icon display type. -
icon(required)object— The icon content.-
type(required)string, possible values:"emoji"— The icon display type. Currently only supports emoji. -
value(required)string, possible values:"👍", "👎", "🌟"— The icon value.
-
-
-
select_optionobject— The `single_select` and `multiple_select` column option.-
optionsarray— The option list.Items:
-
namestring— The option name.
-
-
-
url_optionobject— The `url` column option.-
display_type(required)string, possible values:"title", "full", "icon"— The URL display type. -
open_type(required)string, possible values:"current_page", "new_page"— The URL open type.
-
-
-
descriptionstring— Column Description
-
-
-
file_namestring, default:"Untitled"— The file name. -
file_typestring, possible values:"doc", "folder", "data_table", default:"doc"— The type of a file. -
parent_idstring— 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_idstring— 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",
"data_table": {
"columns": [
{
"name": "Text",
"column_type": "text",
"description": "Text Content",
"column_options": {
"date_option": {
"format": "MM/dd/yyyy",
"is_24_hour_format": false
},
"number_option": {
"decimal": 1,
"show_separator": false
},
"select_option": {
"options": [
{
"name": "Blue"
}
]
},
"percent_option": {
"decimal": 1,
"show_progress_bar": false
},
"people_option": {
"is_multiple": false,
"is_notify": false
},
"reaction_option": {
"icon": {
"type": "emoji",
"value": "👍"
},
"display_type": "number",
"allow_commenter_react": false
},
"currency_option": {
"decimal": 1,
"symbol": "$",
"format": "accounting"
},
"attachment_option": {
"layout": "thumbnail"
},
"url_option": {
"display_type": "title",
"open_type": "current_page"
}
}
}
]
}
}
Responses
Status: 201 Returns the ID of the created file.
Content-Type: application/json
-
file_idstring— The ID of a file in Docs.
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_namestring— 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 listItems:
-
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/).
Get user My docs info
- Method:
GET - Path:
/docs/users/{userId}/root - Tags: File Management
Get the specified user's My docs info. My docs is the root of a user's documents.
Example:
When an admin needs to list all children of another user's My docs (/docs/files/{fileId}/children), this API should be called to get the target user's My docs ID as fileId in path.
Scopes: docs:read:admin
Granular Scopes: docs:read:file:admin
Rate Limit Label: LIGHT
Not supported in Gov cluster
Responses
Status: 200 Returns user My Docs info.
Content-Type: application/json
-
root_id(required)string— User My Docs ID.
Example:
{
"root_id": "dAdqGeghRh6QF4dDe1Ex_A"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request
Status: 404 **HTTP Status Code:** `404` <br> Not Found user id 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 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_idstring— 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_settingobject— 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. -
rolestring, 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. -
rolestring, 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
-
contentstring— The Markdown-formatted content. If the content is empty, an empty document will be created. -
file_namestring— The name of the file. -
parent_idstring— 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_namestring— The name of the file. -
file_typestring, possible values:"doc", "data_table", default:"doc"— The type of the file created after import. -
parent_idstring— 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_idstring— 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/).
Search files
- Method:
POST - Path:
/docs/file_search - Tags: Search
Search for files accessible to the current user by query and filters (file_types, ancestor_ids, created_by, owner_id). Pagination uses an opaque next_page_token cursor. The first page should omit next_page_token; subsequent pages must pass it back unchanged along with the same filter parameters as the initial request. Changing any filter while providing next_page_token is invalid and will result in a 400 Bad Request.
Scopes: canvas_file_search:write
Granular Scopes: canvas:write:file_search
Rate Limit Label: LIGHT
Not supported in Gov cluster
Request Body
Content-Type: application/json
-
ancestor_idsarray— Ancestor folder or shared folder IDs that limit the search scope. If omitted, the API searches all locations accessible to the current user.Items:
string— The ID of an ancestor folder or shared folder. -
created_bystring— The unique ID of the user who created the file. When set, only files created by this user are returned. -
created_time_fromstring, format:date-time— Filter results created on or after this time. Cannot be used together with `modified_time_from` or `modified_time_to`. -
created_time_tostring, format:date-time— Filter results created on or before this time. Cannot be used together with `modified_time_from` or `modified_time_to`. -
file_typesarray— File type filters. If omitted, the search covers all supported file types. Supported values: `doc`, `data_table`, `meeting_agenda`, `meeting_summary`, `note`, `paper_doc`, `spreadsheet`, `presentation`.Items:
string, possible values:"paper_doc", "presentation", "spreadsheet", "doc", "data_table", "note", "meeting_summary", "meeting_agenda"— File types to filter by. Allowed values: `doc`, `data_table`, `meeting_agenda`, `meeting_summary`, `note`, `paper_doc`, `spreadsheet`, `presentation`. -
modified_time_fromstring, format:date-time— Filter results modified on or after this time. Cannot be used together with `created_time_from` or `created_time_to`. -
modified_time_tostring, format:date-time— Filter results modified on or before this time. Cannot be used together with `created_time_from` or `created_time_to`. -
next_page_tokenstring— The next page token is used to paginate through large result sets. A next page token is returned whenever the set of available results exceeds the current page size. -
owner_idstring— The unique ID of the user who owns the file. When set, only files owned by this user are returned. -
page_sizeinteger— The number of files to return per page. Range: 1 to 50. If omitted, the server default is used. -
querystring— Optional. The search keyword. The API matches this keyword against file titles and searchable content.
Example:
{
"query": "quarterly review",
"created_by": "WpIVEe2v321Tb90PpjE5ag",
"ancestor_ids": [
"lq59G-liS6Cq213SX5FNtA"
],
"file_types": [
"doc"
],
"owner_id": "WpIVEe2v321Tb90PpjE5ag",
"page_size": 20,
"next_page_token": "eyJ0aW1lQ3Vyc29yIjoiMjAyNS0wNC0yMVQwOTo0NTo1OC45NTJaIiwiaWRDdXJzb3IiOiJzemFsMkpmTlFteTExY1JwdkYxRWhBIn0=",
"created_time_from": "2026-02-13T00:00:00Z",
"created_time_to": "2026-02-20T23:59:59Z",
"modified_time_from": "2026-02-13T00:00:00Z",
"modified_time_to": "2026-02-20T23:59:59Z"
}
Responses
Status: 200 Returns matching files and a pagination token when more results are available.
Content-Type: application/json
-
files(required)array— Files that match the search query and filters. An empty array means no matching files were found.Items:
-
file_id(required)string— The file's unique ID. -
file_link(required)string, format:uri— The direct URL to open the file. -
file_name(required)string— The display name of the file. -
file_type(required)string, possible values:"paper_doc", "presentation", "spreadsheet", "doc", "data_table", "note", "meeting_summary", "meeting_agenda"— The file's normalized type. Allowed values: `doc`, `data_table`, `meeting_agenda`, `meeting_summary`, `note`, `paper_doc`, `spreadsheet`, `presentation`.
-
-
next_page_tokenstring— The next page token is used to paginate through large result sets. A next page token is returned whenever the set of available results exceeds the current page size.
Example:
{
"files": [
{
"file_id": "lq59G-liS6Cq213SX5FNtA",
"file_name": "Q2 Product Review",
"file_link": "https://docs.zoom.us/doc/eXSiwenmABCBaoH7RcA3B1",
"file_type": "doc"
}
],
"next_page_token": "eyJ0aW1lQ3Vyc29yIjoiMjAyNS0wNC0yMVQwOTo0NTo1OC45NTJaIiwiaWRDdXJzb3IiOiJzemFsMkpmTlFteTExY1JwdkYxRWhBIn0="
}