# Whiteboard
- **OpenAPI Version:** `3.1.1`
- **API Version:** `2`
The [Zoom Whiteboard APIs](https://developers.zoom.us/docs/zoom-whiteboard/) allow you to manage your Zoom Whiteboard. For example, collaborative persistent whiteboard that allows participants to share and collaborate on a virtual whiteboard in real time The Zoom Whiteboard REST API for [Zoom Whiteboard](https://developers.zoom.us/docs/api/rest/whiteboard/) allows developers to interact with various Zoom features, including Zoom Whiteboard. Developers can create and manage whiteboards programmatically using these APIs.
## Servers
- **URL:** `https://api.zoom.us/v2`
## Operations
### List whiteboards sessions
- **Method:** `GET`
- **Path:** `/whiteboards/sessions`
- **Tags:** Archiving
Creates a list of archived sessions under current account.
**[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard_content:read`,`whiteboard_content:read:admin`
**[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard:read:list_sessions`,`whiteboard:read:list_sessions:admin`
**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM`
#### Responses
##### Status: 200 The returned archived sessions 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 returns whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes. Note: If you use \`next\_page\_token\` as a parameter, your other request parameters should be changeless to make sure that the large result set is what you want. For example, if your to parameter is for a future time, Zoom resets this value to the current time and returns this value in the response body, along with the \`next\_page\_token\` value. Use these same to and \`next\_page\_token\` values in requests for the remaining results set; otherwise you will get an invalid token error.
- **`page_size` (required)**
`integer`, default: `30` — The number of records returned per page in a single API call.
- **`to` (required)**
`string`, format: `date-time` — The queried end date.
- **`sessions`**
`array` — The whiteboard archived sessions list.
**Items:**
- **`end_time`**
`string`, format: `date-time` — The session's end time. It should be \`end\_time < to\`
- **`expire_time`**
`string`, format: `date-time` — The session's expire time.
- **`id`**
`string` — The session's unique ID.
- **`regulated_participants`**
`array` — The session participant under this account.
**Items:**
- **`email`**
`string` — The email of participant. \`nullable\` If the participant is not part of the session's account, this returns an empty string value.
- **`join_whiteboard_time`**
`string`, format: `date-time` — The user join the whiteboard time.
- **`leave_whiteboard_time`**
`string`, format: `date-time` — The user leave the whiteboard time.
- **`user_id`**
`string` — The unique ID of participant user in this session.
- **`user_name`**
`string` — The name of participant user in this session.
- **`start_time`**
`string`, format: `date-time` — The session's start time. It should be \`from < start\_time\`
- **`whiteboard_id`**
`string` — The ID of whiteboard.
- **`whiteboard_name`**
`string` — The name of whiteboard.
- **`total_records`**
`integer` — The total number of returned sessions records.
**Example:**
```json
{
"from": "2021-03-12T02:12:27Z",
"to": "2021-03-12T02:12:27Z",
"page_size": 30,
"next_page_token": "IAfJX3jsOLW7w3dokmFl84zOa0MAVGyMEB2",
"sessions": [
{
"id": "a2f19f96-9294-4f51-8134-6f0eea108eb2",
"start_time": "2021-03-11T05:41:36Z",
"end_time": "2021-03-11T05:41:36Z",
"whiteboard_id": "HY8-AC_HSou4SXY1S-OmOg",
"whiteboard_name": "example_whiteboard_name",
"expire_time": "2021-03-26T06:41:36Z",
"regulated_participants": [
{
"user_id": "wf3h7uo1dk0v53bl",
"user_name": "Jack",
"join_whiteboard_time": "2021-03-26T06:41:36Z",
"leave_whiteboard_time": "2021-03-26T07:41:36Z",
"email": "user@example.com"
}
]
}
],
"total_records": 20
}
```
##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`34002\` \
Invalid parameter. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/).
### Download Whiteboards activity file
- **Method:** `GET`
- **Path:** `/whiteboards/sessions/activity/download/{path}`
- **Tags:** Archiving
Use this API to download the Whiteboard archival file. For obtaining the download URL, please consult the [List whiteboard sessions activities](https://developers.zoom.us/docs/api/rest/reference/whiteboard/methods/#operation/Listwhiteboardsessionsarchivedfiles) documentation. Scroll down under field on schema to documentation URL string.
**[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard_content:read`,`whiteboard_content:read:admin`
**[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard:read:archived_file`,`whiteboard:read:archived_file:admin`
**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM`
#### Responses
##### Status: 200 Returns a file stream.
##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`34002\` \
Invalid path. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`34000\` \
The resource not found. The file does not exist or the file has expired. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/).
### List whiteboard sessions activities
- **Method:** `GET`
- **Path:** `/whiteboards/sessions/{seesionId}`
- **Tags:** Archiving
Lists a session's activity information.
**[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard_content:read`,`whiteboard_content:read:admin`
**[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard:read:session`,`whiteboard:read:session:admin`
**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM`
#### Responses
##### Status: 200 The session activity information.
###### Content-Type: application/json
- **`page_size` (required)**
`integer` — The number of records returned within a single API call.
- **`total_records` (required)**
`number` — The total number of returned activities records.
- **`activities`**
`array` — The activity list of a session.
**Items:**
- **`collaborator_id`**
`string` — The participant's unique ID. \`not nullable\`
- **`collaborator_name`**
`string` — The participant's display name.
- **`content`**
`string` — The text content generated by the activity.
- **`create_time`**
`string`, format: `date-time` — The activity create time.
- **`download_url`**
`string` — The URL to download the the archive file. OAuth apps If a user has authorized and installed your OAuth app that contains \`whiteboard:read:archived\_file\` or \`whiteboard:read:archived\_file:admin\` scopes, use the user's \[OAuth access token]\(https\://developers.zoom.us/docs/integrations/oauth/) to download the file. More details refer \[Download Whiteboards activity file]\(https\://developers.zoom.us/docs/api/rest/reference/whiteboard/methods/#operation/Downloadwhiteboardsactivityfile) For example: \`https\://{{base-domain}}/whiteboards/sesssions/activity/download/xxx--header 'Authorization: Bearer {{OAuth-access-token}}'\`
- **`email`**
`string` — The email of participant. \`nullable\` If the participant is not part of the session's account, this returns an empty string value.
- **`id`**
`string` — The unique ID of an activity.
- **`object_ids`**
`array` — The IDs of the whiteboard object associated with this activity.
**Items:**
`string` — The object ID in the whiteboard.
- **`type`**
`string` — The operation description.
- **`user_id`**
`string` — The ID of user. \`nullable\` If the participant is \*\*not\*\* part of the session's account, this returns an empty string value.
- **`end_time`**
`string`, format: `date-time` — The session's end time.
- **`expire_time`**
`string`, format: `date-time` — The session's expire time.
- **`next_page_token`**
`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. \*\*Note\*\*: if you use \`next\_page\_token\` as a parameter, your other request parameters should be changeless to make sure that the large result set is what you want. For example, if your to parameter is for a future time, Zoom resets this value to the current time and returns this value in the response body, along with the \`next\_page\_token\` value. Use these same to and \`next\_page\_token\` values in requests for the remaining results set; otherwise you will get an invalid token error.
- **`session_id`**
`string` — The unique ID of current session.
- **`start_time`**
`string`, format: `date-time` — The session's start time.
- **`whiteboard_id`**
`string` — The ID of the Zoom Whiteboard.
- **`whiteboard_name`**
`string` — The name of Zoom Whiteboard.
**Example:**
```json
{
"page_size": 30,
"next_page_token": "IAfJX3jsOLW7w3dokmFl84zOa0MAVGyMEB2",
"session_id": "a2f19f96-9294-4f51-8134-6f0eea108eb2",
"whiteboard_id": "HY8-AC_HSou4SXY1S-OmOg",
"whiteboard_name": "example_whiteboard_name",
"start_time": "2021-03-11T05:41:36Z",
"end_time": "2021-03-11T06:41:36Z",
"expire_time": "2021-03-26T06:41:36Z",
"activities": [
{
"id": "cc63bce7-cb59-c1dc-fadd-2be734ad1d55",
"type": "add object",
"download_url": "https://example.com/whiteboards/sessions/activity/download/Qg75t7xZBtEbAkjdlgbfdngBBBB",
"create_time": "2021-03-11T05:41:36Z",
"user_id": "wf3h7uo1dk0v53bl",
"collaborator_id": "x4g6hy789k0o878k",
"collaborator_name": "Jack",
"email": "user@example.com",
"content": "This is a activity content demo",
"object_ids": [
"wfx4g6s1dk0v53bl"
]
}
],
"total_records": 30
}
```
##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`34000\` \
The session not exist or expired. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/).
### List classification labels
- **Method:** `GET`
- **Path:** `/whiteboards/classification_labels`
- **Tags:** Classification Labels
Retrieves all classification labels for the account.
**Note:** Each account can have a maximum of 30 classification labels. The `whiteboard_count` field is only returned when using admin scopes.
**[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard_classification_labels:read:admin`,`whiteboard_classification_labels:read`
**[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard:read:list_classification_labels:admin`,`whiteboard:read:list_classification_labels`
**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT`
#### Responses
##### Status: 200 Classification labels retrieved successfully.
###### Content-Type: application/json
- **`labels`**
`array` — List of classification labels.
**Items:**
- **`classification_id`**
`string` — The unique identifier of the classification label to apply.
- **`color`**
`string` — The hex color code for the label
- **`create_time`**
`string`, format: `date-time` — The timestamp when the label was created
- **`description`**
`string` — A description of the classification label
- **`guideline_url`**
`string` — URL to the classification guidelines document
- **`is_default`**
`boolean` — Whether this is the default label for new whiteboards
- **`modify_time`**
`string`, format: `date-time` — The timestamp when the label was last modified
- **`name`**
`string` — The display name of the classification label
- **`sensitivity_level`**
`integer` — The sensitivity rank of the label.
- **`whiteboard_count`**
`integer` — The number of whiteboards using this classification label (only returned when using admin scopes).
- **`total_records`**
`integer` — The total number of classification labels.
**Example:**
```json
{
"labels": [
{
"classification_id": "abc123xyz",
"name": "Confidential",
"description": "For internal use only",
"color": "#FF5733",
"sensitivity_level": 5,
"guideline_url": "https://example.com/guidelines",
"is_default": false,
"create_time": "2026-01-29T10:30:00Z",
"modify_time": "2026-01-29T10:30:00Z",
"whiteboard_count": 15
}
],
"total_records": 5
}
```
##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`34004\` \
Feature not enabled. Data classification feature is not enabled for this account. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/).
### Create a classification label
- **Method:** `POST`
- **Path:** `/whiteboards/classification_labels`
- **Tags:** Classification Labels
Creates a new classification label for the account. The label is immediately available for use.
**Note:** Each account can have a maximum of 30 classification labels.
**[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard_classification_labels:write:admin`
**[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard:write:classification_labels:admin`
**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT`
#### Request Body
##### Content-Type: application/json
- **`color` (required)**
`string` — The hex color code for the label.
- **`name` (required)**
`string` — The display name of the classification label.
- **`sensitivity_level` (required)**
`integer` — The sensitivity rank of the label.
- **`description`**
`string` — A description of the classification label.
- **`guideline_url`**
`string`, format: `uri` — URL to the classification guidelines document.
- **`is_default`**
`boolean`, default: `false` — Whether this is the default label for new whiteboards.
**Example:**
```json
{
"name": "Confidential",
"description": "For internal use only",
"color": "#FF5733",
"sensitivity_level": 5,
"guideline_url": "https://example.com/guidelines",
"is_default": false
}
```
#### Responses
##### Status: 201 Classification label created successfully.
###### Content-Type: application/json
- **`classification_id` (required)**
`string` — The unique identifier of the classification label to apply.
- **`color` (required)**
`string` — The hex color code for the label.
- **`name` (required)**
`string` — The display name of the classification label.
- **`sensitivity_level` (required)**
`integer` — The sensitivity rank of the label.
- **`create_time`**
`string`, format: `date-time` — The timestamp when the label was created.
- **`description`**
`string` — A description of the classification label.
- **`guideline_url`**
`string` — URL to the classification guidelines document.
- **`is_default`**
`boolean` — Whether this is the default label for new whiteboards.
- **`modify_time`**
`string`, format: `date-time` — The timestamp when the label was last modified.
**Example:**
```json
{
"classification_id": "abc123xyz",
"name": "Confidential",
"description": "For internal use only",
"color": "#FF5733",
"sensitivity_level": 5,
"guideline_url": "https://example.com/guidelines",
"is_default": false,
"create_time": "2026-01-29T10:30:00Z",
"modify_time": "2026-01-29T10:30:00Z"
}
```
##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`34002\` \
Invalid field {field\_name}, reason: {reason}. \
##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`34003\` \
Insufficient permissions to manage classification labels. Requires whiteboard management permissions. \
\*\*Error Code:\*\* \`34004\` \
Data classification feature is not enabled for this account. \
##### Status: 409 \*\*HTTP Status Code:\*\* \`409\` \
Conflict \*\*Error Code:\*\* \`34006\` \
Maximum label limit (30) reached for this account. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/).
### Get classification label
- **Method:** `GET`
- **Path:** `/whiteboards/classification_labels/{classificationId}`
- **Tags:** Classification Labels
Retrieves detailed information about a specific classification label.
**[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard_classification_labels:read:admin`
**[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard:read:classification_labels:admin`
**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT`
#### Responses
##### Status: 200 Classification label retrieved successfully.
###### Content-Type: application/json
- **`classification_id`**
`string` — The unique identifier of the classification label
- **`color`**
`string` — The hex color code for the label
- **`create_time`**
`string`, format: `date-time` — The timestamp when the label was created
- **`description`**
`string` — A description of the classification label
- **`guideline_url`**
`string` — URL to the classification guidelines document
- **`is_default`**
`boolean` — Whether this is the default label for new whiteboards
- **`modify_time`**
`string`, format: `date-time` — The timestamp when the label was last modified
- **`name`**
`string` — The display name of the classification label
- **`sensitivity_level`**
`integer` — The sensitivity rank of the label.
**Example:**
```json
{
"classification_id": "abc123xyz",
"name": "Confidential",
"description": "For internal use only",
"color": "#FF5733",
"sensitivity_level": 5,
"guideline_url": "https://example.com/guidelines",
"is_default": false,
"create_time": "2026-01-29T10:30:00Z",
"modify_time": "2026-01-29T10:30:00Z"
}
```
##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`34004\` \
Feature not enabled. Data classification feature is not enabled for this account. \
\*\*Error Code:\*\* \`34003\` \
Insufficient permissions. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`34005\` \
Label not found . \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/).
### Delete classification label
- **Method:** `DELETE`
- **Path:** `/whiteboards/classification_labels/{classificationId}`
- **Tags:** Classification Labels
Deletes an existing classification label. This action cannot be undone.
**[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard_classification_labels:write:admin`
**[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard:delete:classification_labels:admin`
**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT`
#### Responses
##### Status: 204 Classification label deleted successfully. No content returned.
##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`34003\` \
You are no permission to delete this label. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`34002\` \
Invalid field labelId, reason: Label not found. \
### Update a classification label
- **Method:** `PATCH`
- **Path:** `/whiteboards/classification_labels/{classificationId}`
- **Tags:** Classification Labels
Updates an existing classification label. Only the fields provided in the request body will be updated.
**[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard_classification_labels:write:admin`
**[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard:update:classification_labels:admin`
**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT`
#### Request Body
##### Content-Type: application/json
- **`color`**
`string` — Hex color code for the label (e.g., #FF0000 for red).
- **`description`**
`string` — A description of what this classification label represents.
- **`guideline_url`**
`string`, format: `uri` — HTTPS URL linking to classification guidelines or policies.
- **`is_default`**
`boolean` — Whether this label should be automatically applied to new whiteboards. Only one label can be the default.
- **`name`**
`string` — The display name of the classification label.
- **`sensitivity_level`**
`integer` — The sensitivity rank of the label.
**Example:**
```json
{
"name": "Highly Confidential",
"description": "Documents requiring maximum security measures",
"color": "#FF0000",
"sensitivity_level": 5,
"guideline_url": "https://company.example.com/policies/highly-confidential",
"is_default": false
}
```
#### Responses
##### Status: 204 Classification label updated successfully. Changes are saved as a draft.
##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`34002\` \
Invalid field {field\_name}, reason: {reason}. \
##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`34004\` \
Feature not enabled. Data classification feature is not enabled for this account. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`34005\` \
Classification label not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/).
### Apply classification to whiteboard
- **Method:** `PUT`
- **Path:** `/whiteboards/{whiteboardId}/classification`
- **Tags:** Classification Labels
Applies or updates a classification label on a whiteboard. Each whiteboard can only have one classification label at a time. If the whiteboard already has a label, it will be replaced.
**[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard:write:admin`,`whiteboard:write`
**[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard:update:whiteboard_classification`,`whiteboard:update:whiteboard_classification:admin`
**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT`
#### Request Body
##### Content-Type: application/json
- **`classification_id` (required)**
`string` — The unique identifier of the classification label to apply.
**Example:**
```json
{
"classification_id": "abc123xyz"
}
```
#### Responses
##### Status: 204 Classification applied successfully.
##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`34002\` \
Invalid field {field\_name}, reason: {reason}. \
##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`34003\` \
Insufficient permissions to manage classification labels. Requires whiteboard management permissions. \
\*\*Error Code:\*\* \`34004\` \
Data classification feature is not enabled for this account. \
\*\*Error Code:\*\* \`34008\` \
No permission to access this classification label . \
\*\*Error Code:\*\* \`34009\` \
No permission to access this whiteboard. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`34005\` \
Classification label not found. \
\*\*Error Code:\*\* \`34007\` \
Whiteboard not found. \
### Remove classification from whiteboard
- **Method:** `DELETE`
- **Path:** `/whiteboards/{whiteboardId}/classification`
- **Tags:** Classification Labels
Removes the classification label from a whiteboard.
**[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard:write`,`whiteboard:write:admin`
**[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard:delete:whiteboard_classification`,`whiteboard:delete:whiteboard_classification:admin`
**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT`
**Not supported in Gov cluster**
#### Responses
##### Status: 204 Classification removed successfully.
##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`34002\` \
Invalid field {field\_name}, reason: {reason} \
##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`34003\` \
Insufficient permissions to manage classification labels. Requires whiteboard management permissions. \
\*\*Error Code:\*\* \`34004\` \
Data classification feature is not enabled for this account. \
\*\*Error Code:\*\* \`34009\` \
No permission to access this whiteboard. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`34007\` \
Whiteboard not found. \
### Get collaborators of a whiteboard
- **Method:** `GET`
- **Path:** `/whiteboards/{whiteboardId}/collaborator`
- **Tags:** Collaborator
Returns a list of a whiteboard collaborators.
**[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard_collaborator:read:admin`,`whiteboard_collaborator:read`
**[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard:read:list_collaborators:admin`,`whiteboard:read:list_collaborators`
**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM`
#### Responses
##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Whiteboard collaborators returned.
###### Content-Type: application/json
**Array of:**
- **`avatar`**
`string` — The collaborator profile picture.
- **`channel_id`**
`string` — \`nullable\` Team chat channel ID. This response only returns if the \`collaborator\_type\` is \`2\`. If the \`collaborator\_type\` is \*\*not\*\* \`2\`, this returns null value.
- **`collaborator_id`**
`string` — \`not nullable\` The collaborator's unique ID.
- **`collaborator_name`**
`string` — The collaborator's display name.
- **`collaborator_type`**
`integer`, possible values: `0, 1, 2` — The collaborator type. Enum: \* \`0\` - SAME\_ACCOUNT\_USER \* \`1\` - EXTERNAL\_USER \* \`2\` - CHANNEL
- **`email`**
`string` — \`nullable\` Email. This response only returns if the \`collaborator\_type\` is \`0\`. If the \`collaborator\_type\` is \*\*not\*\* \`0\`, this returns null value.
- **`role`**
`integer`, possible values: `0, 1, 2, 3, 4` — The collaborator role type. Enum: \* \`0\` - OWNER \* \`1\` - CO\_OWNER \* \`2\` - EDITOR \* \`3\` - COMMENTER \* \`4\` - VIEWER
- **`user_id`**
`string` — \`nullable\` User ID. This response only returns if the \`collaborator\_type\` is \`0\`. If the \`collaborator\_type\` is \*\*not\*\* \`0\`, this returns null value.
* Max items: `1000`
**Example:**
```json
[
{
"collaborator_id": "x4g6hy789k0o878k",
"collaborator_name": "Jack",
"user_id": "wf3h7uo1dk0v53bl",
"channel_id": "cabc1234567defghijkl01234",
"avatar": "https://content.zoom.us/swerwerw.jpeg",
"role": 0,
"collaborator_type": 0,
"email": "user@example.com"
}
]
```
##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request
##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`111804\` \
Permission is needed to access this document. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/).
### Share a whiteboard to new users or team chat channels.
- **Method:** `POST`
- **Path:** `/whiteboards/{whiteboardId}/collaborator`
- **Tags:** Collaborator
Add collaborators to a whiteboard.
**[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard_collaborator:write:admin`,`whiteboard_collaborator:write`
**[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard:write:collaborator:admin`,`whiteboard:write:collaborator`
**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM`
#### Request Body
##### Content-Type: application/json
- **`collaborators`**
`array` — Array of collaborator objects to be added to the whiteboard.
**Items:**
- **`channel_id`**
`string` — \*\*Channel ID\*\* The unique identifier of the channel you want to share the whiteboard with. This field is \*\*required\*\* when sharing a whiteboard via a channel. It \*\*must be left empty\*\* when sharing with an individual user by email. \*\*Note\*\*: channel\_id and email cannot be set at the same time.
- **`email`**
`string` — \*\*User Email Address\*\* The email address of the user you want to share the whiteboard with. This field is \*\*required\*\* when sharing a whiteboard with an individual user. It \*\*must be left empty\*\* when sharing via a channel. \*\*Note\*\*: email and channel\_id cannot be set at the same time.
- **`role`**
`integer`, possible values: `0, 1, 2, 3, 4` — Collaborator role type. When assigning a new \`OWNER\` or \`CO\_OWNER\`, the specified user must belong to the same account as the original \`OWNER\`. If a new owner is designated for a whiteboard, the original owner will automatically be demoted to \`CO\_OWNER\`. Role Enum Values: \* \`0\` - OWNER \* \`1\` - CO\_OWNER \* \`2\` - EDITOR \* \`3\` - COMMENTER \* \`4\` - VIEWER
- **`invite_message`**
`string` — The custom message to include with the whiteboard invitation.
- **`skip_notifications`**
`boolean` — \*\*Default is false (notifications will be sent)\*\*. If set to \`true\`, collaborators and owners will not receive direct messages or emails when the whiteboard is shared.
**Example:**
```json
{
"skip_notifications": false,
"invite_message": "I'm glad to invite you to join this whiteboard.",
"collaborators": [
{
"email": "user@example.com.",
"channel_id": "cabc1234567defghijkl01234",
"role": 1
}
]
}
```
#### Responses
##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` Whiteboard added collaborators returned.
###### Content-Type: application/json
**Array of:**
- **`avatar`**
`string` — Collaborator profile picture.
- **`channel_id`**
`string` — \`nullable\` Team chat channel ID. This response only returns if the \`collaborator\_type\` is \`2\`. If the \`collaborator\_type\` is \*\*not\*\* \`2\`, this returns null value.
- **`collaborator_id`**
`string` — The collaborator's unique identifier. This field is not nullable.
- **`collaborator_name`**
`string` — The collaborator's display name.
- **`collaborator_type`**
`integer`, possible values: `0, 1, 2` — Collaborator type. Enum: \* \`0\` - SAME\_ACCOUNT\_USER \* \`1\` - EXTERNAL\_USER \* \`2\` - CHANNEL
- **`role`**
`integer`, possible values: `0, 1, 2, 3, 4` — Collaborator role type. Enum: \* \`0\` - OWNER \* \`1\` - CO\_OWNER \* \`2\` - EDITOR \* \`3\` - COMMENTER \* \`4\` - VIEWER
- **`user_id`**
`string` — \`nullable\` User ID. This response only returns if the \`collaborator\_type\` is \`0\`. If the \`collaborator\_type\` is \*\*not\*\* \`0\`, this returns null value.
* Max items: `100`
**Example:**
```json
[
{
"collaborator_id": "x4g6hy789k0o878k",
"collaborator_name": "Jack",
"user_id": "wf3h7uo1dk0v53bl",
"channel_id": "cabc1234567defghijkl01234",
"avatar": "https://content.zoom.us/swerwerw.jpeg",
"role": 0,
"collaborator_type": 0
}
]
```
##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request
##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/).
### Update whiteboard collaborators
- **Method:** `PATCH`
- **Path:** `/whiteboards/{whiteboardId}/collaborator`
- **Tags:** Collaborator
Use this API to update whiteboard collaborators.
**[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard_collaborator:write:admin`,`whiteboard_collaborator:write`
**[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard:update:collaborator:admin`,`whiteboard:update:collaborator`
**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM`
#### Request Body
##### Content-Type: application/json
- **`collaborators`**
`array` — An array of collaborator objects.
**Items:**
- **`collaborator_id`**
`string` — The collaborator's unique ID \`not nullable\` .
- **`role`**
`integer`, possible values: `0, 1, 2, 3, 4` — Collaborator role type. When assigning a new \`OWNER\` or \`CO\_OWNER\`, the specified user must belong to the same account as the original \`OWNER\`. If a new owner is designated for a whiteboard, the original owner will automatically be demoted to \`CO\_OWNER\`. Role Enum Values: \* \`0\` - OWNER \* \`1\` - CO\_OWNER \* \`2\` - EDITOR \* \`3\` - COMMENTER \* \`4\` - VIEWER
**Example:**
```json
{
"collaborators": [
{
"collaborator_id": "x4g6hy789k0o878k",
"role": 0
}
]
}
```
#### Responses
##### Status: 204 \*\*HTTP Status Code\*\*: \`204\` Whiteboard collaborators updated successfully.
##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`34002\` \
Invalid collaboratorId {collaboratorId}. \
##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`111804\` \
Permission is needed to access this document. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`34000\` \
The resource {whiteboardId} not exist. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/).
### Remove the collaborator from a whiteboard
- **Method:** `DELETE`
- **Path:** `/whiteboards/{whiteboardId}/collaborator/{collaboratorId}`
- **Tags:** Collaborator
Removes a collaborator from a whiteboard.
**[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard_collaborator:write:admin`,`whiteboard_collaborator:write`
**[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard:delete:collaborator:admin`,`whiteboard:delete:collaborator`
**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM`
#### Responses
##### Status: 204 \*\*HTTP Status Code\*\*: \`204\` Whiteboard collaborators deleted successfully.
##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`111804\` \
Permission is needed to access this document. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`34002\` \
Resource not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/).
### List all whiteboards
- **Method:** `GET`
- **Path:** `/whiteboards`
- **Tags:** Document
Use this API to list whiteboards of current user (**Required Scopes**: `whiteboard:read`) or list all whiteboards under the account (**Required Scopes**: `whiteboard:read:admin`).
**Note:** `user_id` can intake `Zoom user ID` or `email` which only applies when scope = `whiteboard:read:admin`. Otherwise, the `user_id` can only intake `me`.
**[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard:read:admin`,`whiteboard:read`
**[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard:read:list_whiteboards:admin`,`whiteboard:read:list_whiteboards`
**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM`
#### Responses
##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Whiteboard list returned.
###### Content-Type: application/json
**All of:**
- **`next_page_token`**
`string` — The next page token paginates through a large set of results. A next page token is returned when the available results exceed the current page size. The expiration period for this token is 15 minutes.
- **`page_size`**
`integer` — The number of records returned per page in a single API call.
- **`total_records`**
`integer` — The total number of records found.
- **`whiteboards`**
`array` — The information about the whiteboard list.
**Items:**
**All of:**
- **`advanced_share_setting`**
`object` — Whiteboard advanced share setting.
- **`can_share`**
`boolean` — Indicate whether users can share at or below their permission level or not. \`true\`: Users can share at or below their permission level. \`false\`: Users cannot share at or below their permission level.
- **`external_can_share`**
`boolean` — Indicate whether external user can share the whiteboard to others or not. \`true\`: External user can share the whiteboard to others. \`false\`:External user cannot share the whiteboard to others.
- **`share_to_external`**
`boolean` — Indicate whether internal users can share with external users or not. \`true\`: Internal users can share with external users. \`false\`: Internal users cannot share with external users.
- **`created_by_display_name`**
`string` — The creator display name of the whiteboard.
- **`created_date`**
`string`, format: `date-time` — Whiteboard create date-time in UTC/GMT. Example: \"2020-03-31T12:02:00Z\"
- **`locked`**
`boolean`, default: `false` — Indicates whether the whiteboard is locked or not. \`true\`: The whiteboard is locked. \`false\`: The whiteboard is unlocked
- **`modified_date`**
`string`, format: `date-time` — Whiteboard update date-time in UTC/GMT. Example: \"2020-03-31T12:02:00Z\"
- **`non_cloud`**
`boolean`, default: `false` — Indicates whether the whiteboard is allowed to be saved to cloud or not. \`true\`: The whiteboard is a saved to cloud. \`false\`: The whiteboard isn't saved to cloud
- **`project_id`**
`string` — qiMWddmtRxqwSFrK22lJPg
- **`readonly`**
`boolean`, default: `false` — Indicates whether the whiteboard is editable or not. If a whiteboard is locked, this field will set \`true\`. \`true\`: The whiteboard is editable. \`false\`: The whiteboard is readonly
- **`share_link_setting`**
`object` — The access level, access type of current whiteboard share link.
- **`share_role`**
`integer`, possible values: `2, 3, 4` — The access level of whiteboard share link. This field need to used with \`share\_scope\`. If \`share\_scope\` set \`0\` - \`Restricted\`, this field is null. If \`share\_scope\` set \`1\` - \`Same account\` or \`2\` - \`Anyone\`, this filed can be \`2\` - \`Editor\`, \`3\` - \`Commenter\` or \`4\` - \`Viewer\`. \* Enum: \* \`2\` - \`Editor\` \* \`3\` - \`Commenter\` \* \`4\` - Viewer
- **`share_scope`**
`integer`, possible values: `0, 1, 2, 3`, default: `0` — The access type of whiteboard share link. \* Enum: \* \`0\` - \`Restricted\`, Only people added can open with this link \* \`1\` - \`Same account\` \* \`2\` - Anyone \* \`3\` - SAME\_ACCOUNT\_EXTERNAL\_AUTH
- **`trashed`**
`boolean`, default: `false` — Indicates whether the whiteboard is moved to trash or not. \`true\`: The whiteboard is moved to trash. \`false\`: The whiteboard isn't moved to trash
- **`whiteboard_id`**
`string` — Whiteboard ID
- **`whiteboard_name`**
`string`, default: `"Untitled"` — Whiteboard name
**Example:**
```json
{
"whiteboards": [
{
"whiteboard_id": "48Z4ppMfQJWONeVWFCcVzA",
"whiteboard_name": "Q3 Plan",
"locked": false,
"trashed": false,
"readonly": false,
"non_cloud": false,
"created_date": "2022-03-25T07:29:29Z",
"modified_date": "2022-03-25T07:29:29Z",
"share_link_setting": {
"share_scope": 0,
"share_role": 2
},
"advanced_share_setting": {
"can_share": true,
"share_to_external": true,
"external_can_share": true
},
"project_id": "The Project ID",
"created_by_display_name": "Jack"
}
],
"next_page_token": "qUEQqB1V0HVhJmwKFQrGOD",
"page_size": 10,
"total_records": 2
}
```
##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/).
### Create a new whiteboard
- **Method:** `POST`
- **Path:** `/whiteboards`
- **Tags:** Document
Creates a new whiteboard for a user.
**[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard:write`
**[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard:write:whiteboard`
**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT`
#### Request Body
##### Content-Type: application/json
- **`name`**
`string`, default: `"Untitled"` — The whiteboard name.
**Example:**
```json
{
"name": "Q3 Plan"
}
```
#### Responses
##### Status: 201 \*\*HTTP Status Code:\*\* \`201\` Whiteboard created successfully.
###### Content-Type: application/json
- **`advanced_share_setting`**
`object` — Whiteboard advanced share setting.
- **`can_share`**
`boolean` — Indicate whether users can share at or below their permission level or not. \`true\`: Users can share at or below their permission level. \`false\`: Users cannot share at or below their permission level.
- **`external_can_share`**
`boolean` — Indicate whether external user can share the whiteboard to others or not. \`true\`: External user can share the whiteboard to others. \`false\`:External user cannot share the whiteboard to others.
- **`share_to_external`**
`boolean` — Indicate whether internal users can share with external users or not. \`true\`: Internal users can share with external users. \`false\`: Internal users cannot share with external users.
- **`created_date`**
`string`, format: `date-time` — The whiteboard create date-time in UTC/GMT. Example: \"\`2020-03-31T12:02:00Z\`\"
- **`locked`**
`boolean`, default: `false` — Indicates whether the whiteboard is locked or not. \`true\`: The whiteboard is locked. \`false\`: The whiteboard is unlocked.
- **`modified_date`**
`string`, format: `date-time` — The whiteboard update date-time in UTC/GMT. Example: \"2020-03-31T12:02:00Z\"
- **`non_cloud`**
`boolean`, default: `false` — Indicates whether the whiteboard is allowed to be saved to cloud or not. \`true\`: The whiteboard is a saved to cloud. \`false\`: The whiteboard was not saved to cloud.
- **`readonly`**
`boolean`, default: `false` — Indicates whether the whiteboard is editable or not. If a whiteboard is locked, this field will set \`true\`. \`true\`: The whiteboard is editable. \`false\`: The whiteboard is read only.
- **`share_link_setting`**
`object` — The access level, access type of current whiteboard share link.
- **`share_role`**
`integer`, possible values: `2, 3, 4` — The access level of whiteboard share link. This field need to used with \`share\_scope\`. If \`share\_scope\` set \`0\` - \`Restricted\`, this field is null. If \`share\_scope\` set \`1\` - \`Same account\` or \`2\` - \`Anyone\`, this filed can be \`2\` - \`Editor\`, \`3\` - \`Commenter\` or \`4\` - \`Viewer\`. \* Enum: \* \`2\` - \`Editor\` \* \`3\` - \`Commenter\` \* \`4\` - Viewer
- **`share_scope`**
`integer`, possible values: `0, 1, 2, 3`, default: `0` — The access type of whiteboard share link. \* Enum: \* \`0\` - \`Restricted\`, Only people added can open with this link \* \`1\` - \`Same account\` \* \`2\` - Anyone \* \`3\` - SAME\_ACCOUNT\_EXTERNAL\_AUTH
- **`trashed`**
`boolean`, default: `false` — Indicates whether the whiteboard is moved to trash or not. \`true\`: The whiteboard is moved to trash. \`false\`: The whiteboard was not moved to trash.
- **`whiteboard_id`**
`string` — The whiteboard ID.
- **`whiteboard_name`**
`string`, default: `"Untitled"` — The whiteboard name.
**Example:**
```json
{
"whiteboard_id": "48Z4ppMfQJWONeVWFCcVzA",
"whiteboard_name": "Q3 Plan",
"locked": false,
"trashed": false,
"readonly": false,
"non_cloud": false,
"created_date": "2022-03-25T07:29:29Z",
"modified_date": "2022-03-25T07:29:29Z",
"share_link_setting": {
"share_scope": 0,
"share_role": 2
},
"advanced_share_setting": {
"can_share": true,
"share_to_external": true,
"external_can_share": true
}
}
```
##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/).
### Get a whiteboard
- **Method:** `GET`
- **Path:** `/whiteboards/{whiteboardId}`
- **Tags:** Document
Returns a whiteboard's information.
**[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard:read:admin`,`whiteboard:read`
**[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard:read:whiteboard:admin`,`whiteboard:read:whiteboard`
**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM`
#### Responses
##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Whiteboard object returned.
###### Content-Type: application/json
- **`advanced_share_setting`**
`object` — The whiteboard advanced share setting.
- **`can_share`**
`boolean` — Indicate whether users can share at or below their permission level or not. \`true\`: Users can share at or below their permission level. \`false\`: Users cannot share at or below their permission level.
- **`external_can_share`**
`boolean` — Indicate whether external user can share the whiteboard to others or not. \`true\`: External user can share the whiteboard to others. \`false\`:External user cannot share the whiteboard to others.
- **`share_to_external`**
`boolean` — Indicate whether internal users can share with external users or not. \`true\`: Internal users can share with external users. \`false\`: Internal users cannot share with external users.
- **`classification_label`**
`object | null` — The classification label applied to this whiteboard. Null if no classification is applied.
- **`color`**
`string` — The hex color code for the label.
- **`description`**
`string` — A description of the classification label.
- **`guideline_url`**
`string` — URL to the classification guidelines document.
- **`id`**
`string` — The unique identifier of the classification label.
- **`name`**
`string` — The display name of the classification label.
- **`sensitivity_level`**
`integer` — The sensitivity rank of the label.
- **`created_by_display_name`**
`string` — The creator display name of the whiteboard.
- **`created_date`**
`string`, format: `date-time` — The whiteboard creation date and time in UTC/GMT. Example: \`2020-03-31T12:02:00Z\`
- **`embedded_content_types`**
`array` — The embedded content type list.
**Items:**
`integer`, format: `int32`, possible values: `0, 1, 2`, default: `0` — The type of embeded content in whiteboard. it's an enum contains \`0\`, \`1\`, \`2\`. The description of the enums: - \*\*0\*\* - \*\*IMAGE\*\*. - \*\*1\*\* - \*\*DOCUMENT\*\*, this would include PDFs, PPTX, DOCX, GOOGLE DOCS, SHEETS and SLIDES. - \*\*2\*\* - \*\*CARD\*\*, this would include Jira, Asana and Azure DevOps.
- **`locked`**
`boolean`, default: `false` — Indicates whether the whiteboard is locked or not. \`true\`- The whiteboard is locked. \`false\` - The whiteboard is unlocked.
- **`modified_by_display_name`**
`string` — The latest modify user display name of the whiteboard.
- **`modified_date`**
`string`, format: `date-time` — The whiteboard update date and time in UTC/GMT. Example: \`2020-03-31T12:02:00Z\`
- **`non_cloud`**
`boolean`, default: `false` — Indicates whether the whiteboard is allowed to be saved to cloud or not. \`true\` - The whiteboard is a saved to cloud. \`false\` - The whiteboard isn't saved to cloud.
- **`preview_link`**
`string` — The whiteboard preview link. This link's validity period is \`2 hours\`, and the maximum number of downloads is \`99 times\`. Only those who have the \`whiteboard:read:whiteboard\` scope or are collaborators of the whiteboard will see this field returned.
- **`project_id`**
`string` — The Project ID
- **`readonly`**
`boolean`, default: `false` — Indicates whether the whiteboard is editable or not. If a whiteboard is locked, this field will be set to \`true\`. \`true\` - The whiteboard is editable. \`false\` - The whiteboard is read only.
- **`share_link`**
`string` — The whiteboard share link.
- **`share_link_setting`**
`object` — The access level, access type of current whiteboard share link.
- **`share_role`**
`integer`, possible values: `2, 3, 4` — The access level of whiteboard share link. This field need to used with \`share\_scope\`. If \`share\_scope\` set \`0\` - \`Restricted\`. This field is null. If \`share\_scope\` set \`1\` - \`Same account\` or \`2\` - \`Anyone\`, this field can be \`2\` - \`Editor\`, \`3\` - \`Commenter\` or \`4\` - \`Viewer\`. \* Enum: \* \`2\` - \`Editor\` \* \`3\` - \`Commenter\` \* \`4\` - Viewer
- **`share_scope`**
`integer`, possible values: `0, 1, 2, 3`, default: `0` — The access type of whiteboard sharing link. \* Enum: \* \`0\` - \`Restricted\`. Only people added can open with this link. \* \`1\` - \`Same account\` \* \`2\` - Anyone \* \`3\` - \`SAME\_ACCOUNT\_EXTERNAL\_AUTH\`
- **`trashed`**
`boolean`, default: `false` — Indicates whether the whiteboard is moved to trash or not. \`true\` - The whiteboard is moved to trash. \`false\` - The whiteboard isn't moved to trash.
- **`whiteboard_id`**
`string` — The whiteboard ID.
- **`whiteboard_name`**
`string`, default: `"Untitled"` — The whiteboard name.
**Example:**
```json
{
"whiteboard_id": "48Z4ppMfQJWONeVWFCcVzA",
"whiteboard_name": "Q3 Plan",
"locked": false,
"trashed": false,
"readonly": false,
"non_cloud": false,
"created_date": "2022-03-25T07:29:29Z",
"modified_date": "2022-03-25T07:29:29Z",
"share_link_setting": {
"share_scope": 0,
"share_role": 2
},
"advanced_share_setting": {
"can_share": true,
"share_to_external": true,
"external_can_share": true
},
"share_link": "https://zoom.us/wb/doc/T-E0zR9NQWSDuvXd-Crt9A",
"preview_link": "https://a01file.zoom.us/file/xxxxx/attach/preview/192x108?jwt=xxx",
"created_by_display_name": "Tom",
"modified_by_display_name": "Jack",
"embedded_content_types": [
0
],
"project_id": "qiMWddmtRxqwSFrK22lJPg",
"classification_label": {
"id": "abc123xyz",
"name": "Confidential",
"description": "For internal use only",
"color": "#FF5733",
"sensitivity_level": 5,
"guideline_url": "https://example.com/guidelines"
}
}
```
##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request
##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`111800\` \
Permission is needed to access this document. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/).
### Update whiteboard basic information
- **Method:** `PUT`
- **Path:** `/whiteboards/{whiteboardId}`
- **Tags:** Document
Use this API to rename a whiteboard, update whiteboard status (locked or unlocked).
**[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard:write:admin`
**[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard:update:whiteboard:admin`
**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM`
#### Request Body
##### Content-Type: application/json
- **`locked`**
`boolean`, default: `false` — Indicates whether the whiteboard is locked or not. \`true\`: The whiteboard is locked. \`false\`: The whiteboard is unlocked.
- **`name`**
`string`, default: `"Untitled"` — The whiteboard name.
**Example:**
```json
{
"name": "Q3 Plan",
"locked": false
}
```
#### Responses
##### Status: 204 \*\*HTTP Status Code\*\*: \`204\` Whiteboard updated successfully.
##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request
##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`111800\` \
Permission is needed to access this document. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/).
### Delete a whiteboard
- **Method:** `DELETE`
- **Path:** `/whiteboards/{whiteboardId}`
- **Tags:** Document
Deletes a whiteboard.
**[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard:write:admin`,`whiteboard:write`
**[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard:delete:whiteboard:admin`,`whiteboard:delete:whiteboard`
**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM`
#### Responses
##### Status: 204 \*\*HTTP Status Code\*\*: \`204\` Whiteboard Deleted.
##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request
##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`111804\` \
Permission is needed to access this document. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/).
### Create whiteboard export
- **Method:** `POST`
- **Path:** `/whiteboards/export`
- **Tags:** Export
Generates the export for the provided whiteboards. This process will generate a PDF of whiteboard projects along with an audit log, bundling them into a ZIP file.
**[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard_export:write:admin`,`whiteboard_export:write`
**[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard:write:export`,`whiteboard:write:export:admin`
**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM`
#### Request Body
##### Content-Type: application/json
- **`whiteboard_ids` (required)**
`array` — The list of whiteboard IDs. The list size must be \*\*less than\*\* 50, if more than 50, the API will \*\*intercept\*\* the first 50 IDs.
**Items:**
`string` — The ID of the whiteboard.
**Example:**
```json
{
"whiteboard_ids": [
"HY8-AC_HSou4SXY1S-OmOg"
]
}
```
#### Responses
##### Status: 200 \*\*HTTP Status Code:\*\* \`200\` Successfully sent a request to generate whiteboard export
###### Content-Type: application/json
- **`task_id` (required)**
`string` — The unique identifier of the generated file, which expires is \*\*30 days\*\*. Use this task\_id to query the progress of file generation (For more details, please refer to:\[\*\*Get whiteboard export generation status\*\*]\(https\://developers.zoom.us/docs/zoom-whiteboard/apis/#operation/Getwhiteboardexportdatagenerationstatus). Once the file is ready, you can download it using the user's OAuth token. For example: \`https\://{base\_domain}/v2/whiteboards/export/task/{taskId} --header 'Authorization: Bearer {{OAuth-access-token}}\` .
**Example:**
```json
{
"task_id": "f7f3cdd37bf74550afe7cdf79128a574"
}
```
##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request
##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`111804\` \
Permission is needed to access this document. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`34002\` \
The whiteboard {whiteboard\_id} not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/).
### Download whiteboard export
- **Method:** `GET`
- **Path:** `/whiteboards/export/task/{taskId}`
- **Tags:** Export
Use this API to download the whiteboard export.
**[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard_content:read:admin`,`whiteboard_content:read`
**[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard:read:export`,`whiteboard:read:export:admin`
**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM`
#### Responses
##### Status: 200 Returns a file stream, with the file type of ZIP.
##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`34002\` \
The task {task\_id} not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/).
### Get whiteboard export generation status
- **Method:** `GET`
- **Path:** `/whiteboards/export/task/{taskId}/status`
- **Tags:** Export
Use this API to query the status of the whiteboard export generation. Before using this API, confirm that you have invoked the interface for generating the whiteboard file [**Create whiteboard export**](https://developers.zoom.us/docs/zoom-whiteboard/apis/#operation/Createwhiteboardsexport) and obtained the `task_id`.
**[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard_content:read:admin`,`whiteboard_content:read`
**[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard:read:export`,`whiteboard:read:export:admin`
**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM`
#### Responses
##### Status: 200 Whiteboard export generation status.
###### Content-Type: application/json
- **`status` (required)**
`string`, possible values: `"processing", "successed", "failed"` — Whiteboard export generation status. \* Enum: \* \`processing\` - Generating whiteboard export \* \`successed\` - Whiteboard export generated successfully(as long as one is successful, it counts as a success) \* \`failed\` - Whiteboard export generation failed
- **`total` (required)**
`integer` — Total number of whiteboards requiring export generation.
- **`failed`**
`array` — List of failed whiteboard IDs.
**Items:**
`string` — The whiteboard ID.
- **`processed`**
`array` — List of processed whiteboard IDs.
**Items:**
`string` — The whiteboard ID.
- **`processing`**
`array` — List of whiteboards being processed.
**Items:**
`string` — The whiteboard ID.
**Example:**
```json
{
"processed": [
"48Z4ppMfQJWONeVWFCcVzA"
],
"status": "processing",
"total": 3,
"failed": [
"UyKtcVj5REWMFT2qd-4qfg"
],
"processing": [
"r2Qr1q4hSxu03MG3hk03uA"
]
}
```
##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`34002\` \
The task {task\_id} not found. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/).
### Upload file for whiteboard import
- **Method:** `POST`
- **Path:** `/whiteboards/files`
- **Tags:** File
Uploads a file to whiteboard. **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 support HTTP 30x redirects.
- The caller must retain the Authorization header when redirected to a different hostname.
- Supported file formats: `.pdf`, `.vsdx`.
- For an account-level [OAuth](https://developers.zoom.us/docs/integrations/create/) app, this API can only be used on behalf of a user who is assigned with a [role](https://support.zoom.com/hc/en/article?id=zm_kb\&sysparm_article=KB0064983#h_80abad9b-86a8-492c-8a3b-5b0141a8c0a9) with **Edit** permission for Whiteboard Management.
**[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard_file:write:admin`,`whiteboard_file:write`
**[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard:write:file`,`whiteboard:write:file:admin`
**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `HEAVY`
**Not supported in Gov cluster**
#### Request Body
##### Content-Type: multipart/form-data
- **`file` (required)**
`string` — The upload file is in binary format. You can only send a maximum of 100 MB.
**Example:**
```json
{
"file": "Vm0wd2QyUXlVWGxWV0d4V1YwZDRWMVl3WkRSV01WbDNXa1JTVjAxV2JETlhhMUpUVmpBeFYySkVUbGhoTVVwVVZtcEJlRll5U2tWVWJHaG9UVlZ3VlZadGNFSmxSbGw1VTJ0V1ZXSkhhRzlVVmxaM1ZsWmFkR05GU214U2JHdzFWVEowVjFaWFNraGhSemxWVm14YU0xWnNXbUZrUjA1R1UyMTRVMkpIZHpGV1ZFb3dWakZhV0ZOcmFHaFNlbXhXVm0xNFlVMHhXbk5YYlVaclVqQTFSMVV5TVRSVk1rcElaSHBHVjFaRmIzZFdha1poVjBaT2NtRkhhRk5sYlhoWFZtMHhORmxWTUhoWGJrNVlZbFZhY2xWcVFURlNNVlY1VFZSU1ZrMXJjRWxhU0hCSFZqRmFSbUl6WkZkaGExcG9WakJhVDJOdFJraGhSazVzWWxob1dGWnRNSGhPUm14V1RVaG9XR0pyTlZsWmJGWmhZMVphZEdSSFJrNVNiRm93V2xWYVQxWlhTbFpqUldSYVRVWmFNMVpxU2t0V1ZrcFpXa1p3VjFKV2NIbFdWRUpoVkRKT2MyTkZhR3BTYkVwVVZteG9RMWRzV1hoWGJFNVRUV3hHTlZWdGRHdGhiRXAwVld4c1dtSkdXbWhaTW5oWFl6RldjbHBHWkdsU2JrSmFWMnhXWVZReFdsaFRiRnBZVmtWd1YxbHJXa3RUUmxweFUydGFiRlpzV2xwWGExcDNZa2RGZWxGcmJGaFhTRUpJVmtSS1UxWXhXblZWYldoVFlYcFdlbGRYZUc5aU1XUkhWMjVTVGxOSFVuTlZha0p6VGtaVmVXUkhkRmhTTUhCSlZsZDRjMWR0U2tkWGJXaGFUVlp3YUZwRlpGTlRSa3B5VGxaT2FWSnRPVE5XTW5oWFlqSkZlRmRZWkU1V1ZscFVXVlJHZDFZeGJISlhhM1JVVW14d2VGVnRNVWRWTWtwV1lrUmFXR0V4Y0hKWlZXUkdaVWRPU0U5V1pHaGhNSEJ2Vm10U1MxUXlVa2RUYmtwb1VqSm9WRmxZY0ZkbGJHUllaVWM1YVUxWFVraFdNalZUVkd4a1NGVnNXbFZXYkhCSVZGUkdVMVp0UmtoUFYyaHBVbGhDTmxkVVFtRmpNV1IwVTJ0a1dHSlhhR0ZVVmxwM1lVWndSbHBHVGxSU2EzQjVWR3hhVDJGV1NuUlBWRTVYVFc1b1dGbHFTa1psUm1SWldrVTFWMVpzY0ZWWFZsSkhaREZaZUdKSVNsaGhNMUpWVlcxNGQyVkdWblJOVldSV1RXdHdWMWxyVW1GWFIwVjRZMGhLV2xaWFVrZGFWV1JQVTBVNVYxcEhhR2hOU0VKMlZtMTBVMU14VVhsVmEyUlVZbXR3YjFWcVNtOVdSbXhaWTBaa2JHSkhVbGxhVldNMVlWVXhXRlZyYUZkTmFsWlVWa2Q0VDFOSFJrZFJiRnBwVmtWVmQxWnRjRWRWTVZwMFVtdG9VRlp0YUZSVVZXaERUbFphU0dWSFJtcE5WMUl3VlRKMGExZEhTbGhoUjBaVlZucFdkbFl3V25KbFJtUnlXa1prVjJFelFqWldhMlI2VFZaWmQwMVdXbWxsYTFwWVdXeG9RMVJHVW5KWGJFcHNVbTFTZWxsVldsTmhWa3AxVVd4d1YySllVbGhhUkVaYVpVZEtTVk5zYUdoTk1VcFdWbGN4TkdReVZrZFdibEpPVmxkU1YxUlhkSGRXTVd4eVZXMUdXRkl3VmpSWk1HaExWMnhhV0ZWclpHRldWMUpRVlRCVk5WWXhjRWhoUjJoT1UwVktNbFp0TVRCVk1VMTRWVmhzVm1FeVVsVlpiWFIzWWpGV2NWTnRPVmRTYlhoYVdUQmFhMkpIU2toVmJHeGhWbGROTVZsV1ZYaFhSbFp5WVVaa1RtRnNXbFZXYTJRMFlURk9SMVp1VGxoaVJscFlXV3RvUTFOV1drZFZhMlJXVFZad01GVnRkRzlWUmxsNVlVaENWbUpIYUVSVWJYaHJWbFpHZEZKdGNFNVdNVWwzVmxSS01HRXhaRWhUYkdob1VqQmFWbFp1Y0Zka2JGbDNWMjVLYkZKdFVubFhhMXByVmpKRmVsRnFXbGRoTWxJMlZGWmFhMUl4VG5OWGJYQlRWak5vV1ZkWGVHOVJNVkpIVlc1S1dHSkZjSE5WYlRGVFpXeHNWbGRzVG1oU1ZFWjZWVEkxYjFZeFdqWlJhbEpWWVRKU1NGVnFSbUZYVm5CSVlVWk9WMVpHV2xkV2JHTjRUa2RSZVZaclpGZGliRXBQVm14a1UxWXhVbGhrU0dSWFRWZDRlVlpYTVVkWFJrbDNWbXBTV2sxSGFFeFdNbmhoVjBaV2NscEhSbGRXTVVwUlZsUkNWazVXV1hoalJXaG9VakpvVDFVd1ZrdE5iRnAwVFZSQ1ZrMVZNVFJXVm1oelZtMUZlVlZzVmxwaVdGSXpXV3BHVjJOV1RuUlBWbVJUWWxob1lWZFVRbUZoTWtwSVUydG9WbUpIZUdoV2JHUk9UVlpzVjFaWWFGaFNiRnA1V1ZWYWExUnRSbk5YYkZaWFlUSlJNRlpFUms5VFJrcHlXa1pLYVZKdVFuZFdiWFJYVm0xUmVGZHVVbXBTVjFKWFZGWmFkMDFHVm5Sa1J6bFdVbXh3TUZsVldsTldWbHBZWVVWU1ZXSkdjR2hWTUdSWFUwWktkR05GTlZkTlZXd3pWbXhTUzAxSFJYaGFSV2hVWWtkb2IxVnFRbUZXYkZwMVkwWmthMkpHYkROV01qVkxZa1pLZEZWdWJGaGhNWEJ5Vm1wS1JtVnNSbkZYYkdSb1RXeEpNbFpHV21GaE1VbDRWRzVPV0dKWVFsUldhazV2VjFaa1dHVkhPVkpOVmtwSVZsYzFTMWRIU2taalNFNVdZbFJHVkZwWGVITldiR1J6Vkcxb1UxWkZXalpXVkVreFlqRlplRmRxV2xOV1JVcG9WV3RXWVdOc1ZuRlRhM1JVVm14S01GbFZXazloUjFaelYyeEdWMkV4Y0doWFZtUlNaVlphY2xwR1pGaFNNMmg1VmxkMFYxTXhaRWRWYkdSWVltMVNjMVp0TVRCTk1WbDVUbGQwV0ZKcmJETldiWEJUVjJzeFIxTnNRbGRoYTNCSVdUSjRhMk50VmtkYVIyaG9UVEJLVWxac1VrZGhNVTE0VTFob2FsSlhVbWhWYlhNeFYwWlpkMVpyZEU1aVJuQXdWRlpTUTFack1WWk5WRkpYVm0xb2VsWnNXbXRUUjFaSFYyeHdWMUpXYjNwWFYzQkhWakpPVjFWdVNsVmlSMUpVV1d4b2IxbFdaRlZSYlVab1RWZFNTRll5TlU5aGJFcDBaVWRHVlZaV2NGZFVWbHB6VmpGYVdXRkhjR2xXV0VKSFZteGtOR0V4VW5SU2JrNVlZa1phV0ZsVVNsSk5SbXhWVW1zNVUwMVdjREZXUjNodllWWktjMk5HYkZoV00xSjJWVlJHYTFZeFpISmhSM1JUVFVad1dWZFhlR0ZaVms1WFZtNVNhMUo2YkZkVmJYaHpUbFpzVm1GRlRsZGlWWEJKV1ZWV1UxWlhTbGxoU0VwWFlrWndTRnBGV2t0a1IwNUdUbFprVGxaWGQzcFdiWGhUVXpBeFNGSllhR0ZTVjJoVldXdGtiMkl4Vm5GUmJVWlhZa1p3TVZrd1dtdGhNa3BIWWtST1YwMXFWa3haYTFwTFpFWldkV0pHYUdoTldFSjVWbTF3UzFKdFZuTlNia1pZWWtkU2IxUlhlRXBOYkZwSFYyMUdXR0pXUmpOVVZscHJWMGRLV0dWSVRscFdSVm96VmpGYWExZEhWa2hQVmtwT1ZsUkZNRlpzWkRSaE1XeFhVMnhrYWxORk5WZFpiRkpIVmtaWmVXVkhkR3BpUm5CV1ZXMTRhMVJzV25WUmFscFlWa1ZLYUZacVJtdFNNV1JaWTBaYWFXRXpRbGxXYlhSWFdWZFdjMWR1UmxOaVIxSnhWRlprVTJWc2JGWmFTRTVYVFZad01WVlhlRWRXTWtWNFkwZG9XRlp0VWxOYVZscGhZMnh3UjFwR2FGTk5NbWcxVm14a01GWXhUWGhhUldSV1lrZFNXVmx0TVZOak1WcDBUVlJDVGsxV2JEVlViR1F3VjBaS2NtSkVUbGRpV0VKVVZqSnplRk5IUmtabFJtUk9ZbTFvYjFacVFtRldNazV6WTBWb1UySkhVbGhVVmxaM1ZXeGFjMXBJWkZSTlZURTBWVEZvYzFVeVJYbGhSemxXWWtaS1dGWXdXbk5rUjFKR1pFVTFhVkp1UVhkV1JscFRVVEZhY2sxV1drNVdSa3BZVm01d1YxWkdXbkZUYTFwc1ZteGFNVlZ0ZUdGaFZrbDRVbGhrVjJKVVJUQlpla3BPWlVkT1JtRkdRbGRpVmtwVlYxZDBWMlF4WkhOWGEyaHNVak5DVUZadGVITk9SbGw1VGxVNWFHSkZjRmxaVlZwelZqSkZlRlpZYUdGU00yaDZWbXBHWVZkWFJrZGhSazVwVW0wNU5GWXhVa05aVjBWNFZXNU9XRmRIZUc5VmExWjNWMFpTVjFkdVpHaFNiRmt5VlcxMGQySkdTbk5UYWtaWFlsaG9URmxXV2t0ak1rNUhZa1prVTJKRmNFbFdXSEJDVFZkTmVGcElTbWhTTTJoVVZGVmFkMkZHV25SalJXUlVUVlZzTkZaWE5VOVhSMHBXVjJ4a1ZtSllhRE5VVlZwaFYwVTFWbFJzWkU1aE0wSktWMVpXVjFVeFduSk5WbVJxVWpKb1lWUldXbmRWUm10NFYyeGthazFYVW5sVWJGcHJWR3hhV0dRemNGZGlXR2hVVlhwQmVGTkdTbGxoUjBaVFZqSm9WbGRYZEd0aU1rbDRWbTVHVW1KVldsaFphMXAzVFZacmQxZHRkR2hOYTNCSVdXdFNUMVl3TVhGV2EzaGFZVEZ3VEZwRldsZGtWMHBIWVVkb1RsZEZTalZXYlRGM1V6RktkRlp1VGxOaWExcFpXV3RrVTJJeFVsaGxSWEJPWWtad1NGWXlNVWRYUjBwWFVtcE9WVlpzY0hKV01HUkxWMGRXU1ZSc2NGZFNWbTk2Vm1wR1lXRXhaRWhXYTJoUVZtdHdUMVp0ZEhkVFZscHpXWHBHVkUxWFVrbFZNblJoWVd4T1JrNVdaRnBpUmtwSVZtdGFkMWRIVmtsVWJHUnBVakZLTmxaclkzaGlNVmw1VWxod1VsZEhhRmhXYlRGT1pVWnNjVkpzY0d4U2JWSmFXVEJrYjFaR1NsbFJiR3hYWWxoU1dGZFdaRmRqTVdSMVVteE9hVkl4U25oV1JscHJWVEpXYzJKR1dtRlRSVFZZVkZaYWQwMVdWbGhsUldSWFRXdFdORmt3Wkc5WFJscDBWV3hPWVZac2NHaFpNbmgzVWpGd1IyRkdUazVOYldjeFZtMTRhMDFHV1hoVVdHaGhVbGRTVjFsclpGTlhWbXgwVFZaT2FrMVdjREJVVmxKRFZHc3hWMkpFVmxWaVIxRjNWakJhUzJOdFNrVlViR1JwVjBWS1ZWWnFTbnBsUms1SVVtdGFiRkp0VWs5WmJURnZZakZhY1ZGdFJsZE5helY2V1RCV2IxVXlTa2hWYkdoVlZteGFNMVpYZUdGak1YQkpXa1pTVGxaVVJUQldWRVp2WXpGVmVWSlliR2hTZW14WFdXdGFTMWRHV1hkWGJrNXJVakZLUjFwRlZURmhWa3AxVVZoa1YxSnNjRlJWVkVaaFkyc3hWMWRyTlZkU2EzQlpWbTB3ZUdJeVZuTlhiazVZWWxoU1ZWVnFSbUZUUmxsNVpVaGtWMDFWY0ZoWmFrNTNWMFphYzFkdGFGZGhhM0JRVm1wR1UyUldWbk5SYkdScFZtdHdWbFl4WkRCV01sRjRXa2hPV0dFeWFITlZhazVEVlVaYWRHVklUazlTYkd3MVZHeFZOV0ZIU2taalJteGFWbFp3ZWxacVNrWmxSbHBaWVVkR1UwMHlhRFpXYlhCSFdWWmtXRkpyYUdwU01uaFlWakJXUzFOR1duUmxSM1JQVWpCV05GWlhOVTlYUm1SSVpVYzVWbUV4V2pOV01GcHpWMGRTUm1SSGNHbFNiR3Q1VmxjeE1FMUhSblJTYWxwWFlrZG9XVmxVUm5kaFJteFhWMnQwYWsxck5VaFphMXB2VmpBd2VXRkhPVmRXZWtJMFZsY3hWMUl4Y0VsV2JGcHBWMFZLVlZadGNFZFRNV1JIVjJ0a1dHSlZXbkpVVlZKSFUwWmFkRTVXVG1oTlZXOHlXV3RhYTFadFNsbGhSRTVWVmxad2VsWnRlR3RqTVZKeldrWmthVk5GU21GV01WcFhWakZWZUZkc2FGUmhNbEp4VldwS2IxWXhVbFphUms1WVVteFdNMVl5ZERCaE1VbDNUbFZrVldKR2NISldSM2hoVjBkUmVtTkdaR2xYUjJoVlZsaHdRbVZHVGtkVWJHeHBVbXMxYjFSWGVFdFdiR1JZVFZod1RsWnNjRmhaYTJoTFdWWktObUpHYUZwaE1YQXpXbGQ0V21WVk5WaGtSbFpvWld0YVdWZFVRbTlqTVZsM1RWaEdVMkV5YUdGV2FrNXZZVVpyZVdONlJsaFdNSEJJV1ZWa2IxUnNaRVpUYkVwWFRWWndhRmRXV2s1bFZsSjFWV3hXYUUxV2NGcFhWM1JyVlRKT1IxWnVSbEpXUlVwUFZXMHhVMWRzYTNkV2JYUlhUV3R3V0ZWdGNFOVdWbHB6VjI1d1dsWldjRXhaTW5NeFYwVTVWMk5IYUU1aVYyaEdWbTF3UjFsWFJYaFhXR2hxVWxaYVUxbHNhRk5qUmxwMFpFWndUbEpzY0hoVk1uQlRWakF4VjFacVZsWk5ibEp5V1ZkNFQxSnJOVmRhUm5CcFVtdHdTVlp0ZEdGVk1WbDRXa2hPV0dKWWFGaFVWVkpTWlZaYVdFMVVVbWxOVmxZMVZXeG9kMVZ0U2xaWGJHaFhZbFJHVDFwVlduTmpWa3B6WTBkNFUySldTbUZYVkVKcllqRmFSMU5zYkZKaVIxSlpWbTE0UzFSR1dsVlNhemxUVFZad01WVnRlRTloVmxwWFkwWndWMkpVUVhoVlZFWlBWakpLUjFkc2FHaGxiWGhaVmtaYVlXUXhUa2RYV0d4c1VqTlNXRlJYZEhkVFZscElZMFpPVjFZd1ZqVldWM2hQV1ZaYWMyTkhhRnBOYm1nelZXcEdkMUl5UmtkVWF6Vk9ZbGRqZUZadE1UUmhNbEY0VWxob2FWSnRhRlpaVkVwVFYwWnNkR1ZGZEdwTlZsWXpWMnRhVDJGck1WaGxTR3hYVFdwV1VGWkVSbUZrVmtaeldrWndWMVl4UmpOV2FrSmhVekpPZEZOclZsVmlSMUp3VmpCV1MxWldXbkZUYm5Cc1VtdHNORlpITlU5VmJVcElWV3M1V2xZelVtaFZNRnByWXpGa2RGSnNaRTVoZWxZMlYxUkNWMkl4VlhsVGEyaFdZWHBzVmxadWNFZGtiRlY1WlVad2JGSnNXbmxaTUdRMFZUSkdObEpVUWxkV1JWcDJXV3BLUjJNeFRuTmhSMmhVVWxWd1dGZFhlRk5TTWxKelYyNUtXR0pWV25GVVYzUmhVakZhU0dWR1RsVmlSbkF4VlZab2ExWXhTbk5qUmxKV1ZrVmFhRmt5YzNoV01XUnlUbFprVTJFelFscFdNV1F3WVRKSmVWVnVUbGhYUjFKWldXeG9VMVpXVm5GUmJVWlVVbTE0ZVZZeU5XdGhSbHAwVld0c1dsWlhUVEZXYWtwTFZsWktWVkZzY0d4aE0wSlJWMWh3UzFReFNuUlNhMlJTWWtkU1QxUlZWbmRXYkZsNFdrUkNhVTFWVmpOVWJGWnJWMGRLY21OSFJsVldSWEJVVmxWYVlXUkhWa2xVYXpsVFlrZDNNVlpIZUZaT1YwWklVMnRhYWxKdGVHRldiRnAzWld4YWNWTnJXbXhTYkhCYVdWVmtSMVV3TUhsaFJGcFhZbGhDU0ZkV1dtdFhSa3B5V2tkb1UyRjZWbmRXVnpBeFVXc3hWMWRZYUZoaVIxSmhWbXBDVjA1R1dsaE9WazVXVFd0d2VWUnNXbk5YYlVWNFkwZG9WMDFHY0hwV2JGcFBZekZPY2s1V1RtbFdhM0JhVm0xd1MwMUZNVWhTYmtwT1ZtMVNWVmxYZEdGWFJsWjFZMFZrYTJKR2NGWlZNblF3VlRBeGNrNVZhRnBoTVhCeVZsUktTMUp0VGtaTlZtaFhUVEJLU1ZaclVrZFhiVlpIWTBWc1ZHSlhhRlJVVkVwdlZsWmFSMVp0Um10TmExcElWakkxVTFSc1RraGhSbVJWVm14YWVsUnJXbUZYUlRWV1QxWm9VMDFJUWxoV2FrbzBZVEZhZEZOc2JHaFNSVFZXVm14YWQyVnNXblJsUjNScVRWWktlbGRyV210aFZrNUdVMnh3VjAxV1NrUlpWRVpLWlVaa2MxcEdhR2xoZWxaNFZsZHdTMkl4YkZkalJtaHJVakJhVDFSV1dtRmxiRmw1WlVkMGFFMVZiRE5VYkZaclZsZEtSMk5JU2xkU00yaG9WakJrVW1WdFRrZGFSMnhZVWpKb1ZsWnNhSGRSYlZaSFZHdGtWR0pIZUc5VmFrSmhWa1phY1ZOdE9WZGlSMUpaV2tWa01HRlZNWEppUkZKWFlsUldTRlpYTVV0V2JHUnpZVVp3YUUxWVFYcFdSbFpoWkRGYWRGSnJhR3RTYkZwdldsZDBZVmRXWkZWUmJUbHFUVlpzTTFSV2FFZFZNa1Y1WVVkR1YyRnJOWFpaVlZweVpWVXhWazlXVGxkaE1XOTNWbGN4TkZReFdYZE5WbHBZVjBoQ1dGbHNVa2ROTVZZMlVtczFiRlpzU2pGV1IzaFhZVmRGZWxGdVdsZFdla0kwVmxSR1lWSXhWbk5XYkZKcFZrZDRkMVpHV21Ga01sWlhWMnhvYTFKRlNsZFVWVkpIVjBac2NsVnNUbGROVlc4eVZtMTRiMVl5U2xWU2EzaFdZbGhvVUZsNlNrZFNNV1IwWWtaT2FFMHdTbUZXYlRGM1VqRnNWMkpHWkZSWFIyaHdWV3RhZDFaR2JITmFSRkpWVFZad2VGVnRkREJXUmxwMFZXeHNZVkpYVWtoV2FrRjRWakZrZFdOR2FHaE5WbkF5VjFaV1lWTXlUWGhVYms1WVlrZFNjRlpyVm1GV1ZscDBaRWRHYTAxWFVrbFdiWFJ6VmxkS1NGVnVRbFpoYTFwTVZHMTRZV05zYTNwaFIyeE9WbXhaTUZacVNqQlpWbVJJVW01T2FsSnRhRmhaVkVaaFpWWndWbGR1VG1wV2EzQjZXVEJrTkZVeVNsZFRiVVpZVmtWS2FGZFdaRWRXTVU1WllrZG9VMkpyU2xsWFYzaFRVbXN4UjJORlZsTmlhelZZVkZkek1WTkdXWGxsUnpsb1ZtMVNTRlV5TlhOV01rcFZVbGhrWVZKRmNGaFpla1pyWkZaV2NrNVdhRk5XUmxwYVZtdGFZVll5VFhkT1dFNXBVbXh3VjFsclpGTlhSbEpXVld0a1dGWnNjRmhaVldRd1YwWktjMk5FUWxkV00yaFFWMVphWVdNeVRraGhSbkJPWW0xbmVsWlhjRWRrTVU1SVUydG9hVkpyTlZsVmJGWnlaVVphZEUxVVVtaE5SRVpJVmpGb2IxWldaRWhsUmxaWFRVZFNkbGt3V2xka1JURlZWVzF3VjJKR2NEWldNblJoVkRKR2NrMVdaR3BTUlVwb1ZteGFXbVF4YkhKYVJYUlRUV3MxUmxWWGVGZFdNVnB5WTBac1YyRnJTbWhWTWpGU1pWWlNjbGR0YUZOaWEwcFFWbGN3TVZFd01YTlhia1pVWW01Q2MxVnRjekZUVmxaMFpFZEdhVkpyY0RCV1YzTTFWMjFLVlZKdVdscGhhMXBvV1RGYVIyUkdTbk5hUlRWb1pXeFpNbFl4VWtOV01rbDRWbGhzVkdFeWFGZFpXSEJ6Vm14YWRXTkZaR3RpUmxZMVdsVmFkMkpHU25OWGJteGFUVWRSTUZaVVNrZE9iRXBWVVd4a1YxSldjREpYVjNCTFVqSk5lRlJ1VG1oU2JIQndWbXBLYjFkR1pGaGxSemxWWWxaYVNGWXhhR3RYUjBwSlVXNUtWVlpzY0ROYVZscDNVbXhhVlZKdGFGZGhNMEY0VmxaYWIyRXhaRWRYYTFwVVlrZG9ZVlpyVm1GamJHdzJVbTEwV0ZadVFraFhhMlJ2WVZaS1dWRnNjRmROVjFGM1dWUktTbVZXVm5WVWJHaFlVakZLV2xkWGVHOVZNVnBYVm01R1VtSlZXbFZWYlhoelRsWndWbUZIZEdoU2JIQXdWbGQwYzFkc1dsaFVWRVpYWVd0d1RGWnNXa3RXVmtaelkwZDRhRTB3U2xKV01XaDNVakpSZUZSc1pGVmliRXB5Vlcxek1WUXhVbFpXYm1SWFlrWnNORmRyVWtOWGJGbDRVbXBPVldKR1duSldNR1JMVTBkR1JrOVdaR2hOVm5CTlZtdFNSMVl5VWtoV2EyeFZZWHBzVkZsclpETk5WbHBJWlVaYVQxWXdXa2xWTW5SaFlXeEtkR1ZIUmxkaVJuQXpXa2Q0WVdOV1RuSmFSM0JvWld4YVdWWnNaRFJoTVZWNFYyNVdVbUZzY0ZoWmJHaHZZVVpXY1ZKdGRGaFNhM0I1VjJ0YVYyRldTWGhUYmxwWFVteEtSRlV5YzNoak1XUjFWVzEwVTAweFNsRldWekI0VGtaa1IxZHVUbWhUUlRWWVZXcENWMDVHYTNkWGJrNVhUVVJHU1ZsVlZsTldNREZIWTBkb1dtVnJXbkphUmxwM1VqRlNjazVXWkdoTlYzUXpWbTB4ZDFNd01VZFZXR2hZWW14S1ZWbFVSbmRXVm14eVYyNWtWMkpHY0hwV01uUnJWR3N4VjFkcmFGWmlSa3A2VmxaYVYxWlZNVVZoZWpBOQ=="
}
```
#### Responses
##### Status: 201 File successfully uploaded.
###### Content-Type: application/json
- **`file_id`**
`string` — The file's unique ID.
**Example:**
```json
{
"file_id": "xBvggqyjQUal6TecwMlYwE"
}
```
##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`124\` \
Invalid access token. \
\*\*Error Code:\*\* \`300\` \
Invalid File type. Exceed max file size: ${maxSize} megabytes. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/).
### Download Imported Whiteboard File
- **Method:** `GET`
- **Path:** `/whiteboards/{whiteboardId}/files/{fileId}`
- **Tags:** File
Download files imported into the whiteboard, including images, PDFs, DOCX, and other supported formats.
**[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard_file:read`,`whiteboard_file:read:admin`
**[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard:read:file`,`whiteboard:read:file:admin`
**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT`
#### Responses
##### Status: 200 Returns a file stream.
##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/).
### Create a new whiteboard by import
- **Method:** `POST`
- **Path:** `/whiteboards/import`
- **Tags:** Import
Creates a new whiteboard for a user by converting Miro, Mural, or Visio files.
**[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard_import:write`,`whiteboard_import:write:admin`
**[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard:write:import`,`whiteboard:write:import:admin`
**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `HEAVY`
**Not supported in Gov cluster**
#### Request Body
##### Content-Type: application/json
- **`file_id` (required)**
`string` — The ID of the file to convert to a whiteboard. Use the \*\*Upload File for Whiteboard Import\*\* API (POST \`/whiteboards/files\`) to upload the file and get the \`file\_id\`. Supported file types: - \*\*Visio\*\*: \`.vsdx\` - \*\*Miro\*\* and \*\*Mural\*\*: \`.pdf\` Maximum file size: \*\*100 MB\*\*. Ensure the file is valid, within the size limit, and in one of the supported formats.
- **`type` (required)**
`number` — The import file original type. Enum: \* \`1\` - Miro \* \`2\` - Visio \* \`3\` - Mural
- **`collaborators`**
`array` — Users or team chat channels to add to a whiteboard.
**Items:**
- **`channel_id`**
`string` — The team chat \`channel ID\` to share with.
- **`email`**
`string`, format: `email` — The \`user email\` address to share with.
- **`role`**
`string`, possible values: `"0", "1", "2", "3", "4"` — Collaborator role type. Enum: - \`0\` - OWNER - \`1\` - CO\_OWNER - \`2\` - EDITOR - \`3\` - COMMENTER - \`4\` - VIEWER
- **`owner_email`**
`string`, format: `email` — The owner email. This field is only available if you have the \`whiteboard:write:import:admin\` scope. Otherwise, it will automatically be set to \`null\` and the document owner will \*\*default to the user who imported the file\*\*.
- **`project_id`**
`string` — qiMWddmtRxqwSFrK22lJPg
- **`skip_notifications`**
`boolean` — \*\*Default is false (notifications will be sent)\*\*. If set to \`true\`, collaborators and owners will not receive direct messages or emails when the whiteboard is imported.
- **`whiteboard_name`**
`string` — The name of the whiteboard created by import.
**Example:**
```json
{
"file_id": "xBvggqyjQUal6TecwMlYwE",
"type": 1,
"whiteboard_name": "Q1 plan",
"skip_notifications": false,
"owner_email": "example@zoom.us",
"collaborators": [
{
"email": "user@example.com",
"role": "2",
"channel_id": "cabc1234567defghijkl01234"
}
],
"project_id": "The Project ID"
}
```
#### Responses
##### Status: 201 The imported file is being converted into a whiteboard.
###### Content-Type: application/json
- **`task_id`**
`string` — Use this ID to check the import status via the \[Get Whiteboard Import Status]\(https\://developers.zoom.us/docs/api/whiteboard/#tag/import/GET/whiteboards/import/task/{taskId}/status) endpoint (GET \`/whiteboards/import/{taskId}/status\`). The unique ID for your import.
**Example:**
```json
{
"task_id": "ce31de9e5a5f440bab9d60c144fd76b7"
}
```
##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`34002\` \
Invalid file type. \
\*\*Error Code:\*\* \`38003\` \
File size exceed limit. \
\*\*Error Code:\*\* \`38004\` \
Conversion settings are not enabled. Please contact your account administrator to allow users to import and convert boards and diagrams from other applications into editable whiteboards via the whiteboard account settings. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/).
### Get whiteboard import status
- **Method:** `GET`
- **Path:** `/whiteboards/import/{taskId}/status`
- **Tags:** Import
Use this API to query the status of new whiteboard by import. Before using this API, confirm that you have invoked the interface for import file to create new whiteboard **Create a new whiteboard by import** and obtained the `task_id`.
**[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard_import:read`,`whiteboard_import:read:admin`
**[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard:read:import:admin`,`whiteboard:read:import`
**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT`
#### Responses
##### Status: 200 Get whiteboards import result.
###### Content-Type: application/json
- **`doc_name`**
`string` — The whiteboard name \`nullable\`. This value is returned only when the \`status\` is \`succeeded\`.
- **`file_name`**
`string` — The file name of import file.
- **`status`**
`string`, possible values: `"processing", "failed", "succeeded"`, default: `"processing"` — The status of the whiteboard created by importing a file. \*\*Enum\*\*: - \`processing\` - The file is converting to whiteboard. - \`succeeded\` - The file convert to whiteboard successfully. - \`failed\` - The file convert to whiteboard failed.
- **`whiteboard_id`**
`string` — The whiteboard ID \`nullable\`. This value is returned only when the \`status\` is \`succeeded\`.
**Example:**
```json
{
"file_name": "miro.pdf",
"status": "succeeded",
"whiteboard_id": "HY8-AC_HSou4SXY1S-OmOg",
"doc_name": "Q1 Plan"
}
```
##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`38002\` \
Failed to convert the file {fileName}. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`38007\` \
The taskId not exist or expired. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/).
### List all projects
- **Method:** `GET`
- **Path:** `/whiteboards/projects`
- **Tags:** Project
Retrieves a list of projects.
**[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard_project:read`,`whiteboard_project:read:admin`
**[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard:read:list_projects:admin`,`whiteboard:read:list_projects`
**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT`
**Not supported in Gov cluster**
#### Responses
##### Status: 200 The list of projects is successfully retrieved.
###### Content-Type: application/json
- **`next_page_token`**
`string` — The next page token paginates through a large set of results. A next page token is returned when the available results exceed the current page size. The expiration period for this token is 15 minutes.
- **`page_size`**
`integer` — The number of records returned per page in a single API call.
- **`projects`**
`array` — The project list.
**Items:**
- **`collaborator`**
`array` — The project collaborators, this API returns only the project collaborators who have the 'owner' role, along with the current user's information.
**Items:**
- **`avatar`**
`string` — Collaborator profile picture.
- **`collaborator_id`**
`string` — The project collaborator ID.
- **`collaborator_name`**
`string` — The project collaborator name.
- **`collaborator_type`**
`integer`, possible values: `0, 1` — Collaborator type. Enum: - \`0\` - SAME\_ACCOUNT\_USER - \`1\` - EXTERNAL\_USER
- **`role`**
`integer`, possible values: `0, 1, 2, 3, 4` — Collaborator role type. Role Enum Values: - \`0\` - OWNER - \`1\` - CO\_OWNER - \`2\` - EDITOR - \`3\` - COMMENTER - \`4\` - VIEWER
- **`user_id`**
`string` — \`nullable\` User ID. This response only returns if the \`collaborator\_type\` is 0. If the \`collaborator\_type\` is not 0, this returns null value.
- **`created_date`**
`string`, format: `date-time` — The project create date-time in UTC/GMT. Example: \`2020-03-31T12:02:00Z\`
- **`modified_date`**
`string`, format: `date-time` — The project update date-time in UTC/GMT. Example: \`2020-03-31T12:02:00Z\`
- **`owner_display_name`**
`string` — The project owner display name.
- **`project_id`**
`string` — The Project ID
- **`project_link`**
`string` — The project redirect link.
- **`project_name`**
`string` — The project name.
- **`starred`**
`boolean` — Indicates whether the project is starred. \`true\`: starred \`false\`: not starred
- **`total_records`**
`integer` — The total number of records found.
**Example:**
```json
{
"projects": [
{
"collaborator": [
{
"collaborator_id": "x4g6hy789k0o878k",
"collaborator_name": "Jack",
"user_id": "wf3h7uo1dk0v53bl",
"avatar": "https://content.zoom.us/swerwerw.jpeg",
"role": 2,
"collaborator_type": 0
}
],
"created_date": "2020-03-31T12:02:00Z",
"modified_date": "2020-03-31T12:02:00Z",
"project_name": "Untitle",
"project_id": "qiMWddmtRxqwSFrK22lJPg",
"starred": false,
"owner_display_name": "Example Name",
"project_link": "https://zoom.us/wb#/project/i1Ts2cRpSASonwbvTiPlUQ"
}
],
"next_page_token": "qUEQqB1V0HVhJmwKFQrGOD",
"page_size": 10,
"total_records": 100
}
```
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/).
### Create a new project
- **Method:** `POST`
- **Path:** `/whiteboards/projects`
- **Tags:** Project
This API endpoint allows you to create a new project for a user, optionally adding collaborators and initializing it with existing whiteboards.
**[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard_project:write`,`whiteboard_project:write:admin`
**[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard:write:project`,`whiteboard:write:project:admin`
**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT`
#### Request Body
##### Content-Type: application/json
- **`project_name` (required)**
`string` — The project name.
- **`collaborators`**
`array` — Array of collaborator objects to be added to the project.
**Items:**
- **`email`**
`string` — The user's email to be added to the project.
- **`role`**
`integer`, possible values: `0, 1, 2, 3, 4`, default: `2` — Collaborator role type. When assigning a new \`OWNER\` or \`CO\_OWNER\`, the specified user must belong to the same account as the original \`OWNER\`. If a new owner is designated for a project, the original owner will automatically be demoted to \`CO\_OWNER\`. Role Enum Values: - \`0\` - OWNER - \`1\` - CO\_OWNER - \`2\` - EDITOR - \`3\` - COMMENTER - \`4\` - VIEWER
- **`invite_message`**
`string` — The invite message.
- **`owner_email`**
`string`, format: `email` — The owner email. This field is only available if you have the \`whiteboard\_project:write:admin\` scope. Otherwise, it will automatically be set to \`null\` and the project owner will default to the request user.
- **`skip_notifications`**
`boolean` — \*\*Default is false (notifications will be sent)\*\*. If set to \`true\`, collaborators and owners will not receive direct messages or emails when the project is created.
- **`whiteboard_ids`**
`array` — The whiteboard ID list that you want to add to the project.
**Items:**
`string` — The whiteboard ID.
**Example:**
```json
{
"project_name": "Untitle",
"skip_notifications": false,
"invite_message": "I'm glad to invite you to join this project.",
"collaborators": [
{
"email": "user@example.com",
"role": 2
}
],
"whiteboard_ids": [
"J7XZFDEQTkWSsMsmO_M1Xa"
],
"owner_email": "owner@example.com"
}
```
#### Responses
##### Status: 201 The project has been successfully created.
###### Content-Type: application/json
- **`collaborator`**
`array` — The project collaborators.
**Items:**
- **`avatar`**
`string` — Collaborator profile picture.
- **`collaborator_id`**
`string` — The project collaborator ID.
- **`collaborator_name`**
`string` — The project collaborator name.
- **`collaborator_type`**
`integer`, possible values: `0, 1` — Collaborator type. Enum: - \`0\` - SAME\_ACCOUNT\_USER - \`1\` - EXTERNAL\_USER
- **`role`**
`integer`, possible values: `0, 1, 2, 3, 4` — Collaborator role type. Role Enum Values: - \`0\` - OWNER - \`1\` - CO\_OWNER - \`2\` - EDITOR - \`3\` - COMMENTER - \`4\` - VIEWER
- **`user_id`**
`string` — \`nullable\` User ID. This response only returns if the \`collaborator\_type\` is 0. If the \`collaborator\_type\` is not 0, this returns null value.
- **`created_date`**
`string`, format: `date-time` — The project creation date-time in UTC/GMT. Example: \`2020-03-31T12:02:00Z\`.
- **`modified_date`**
`string`, format: `date-time` — The whiteboard update date-time in UTC/GMT. Example: \`2020-03-31T12:02:00Z\`.
- **`project_id`**
`string` — The Project ID
- **`project_link`**
`string` — The project redirect link.
- **`project_name`**
`string` — The project name.
- **`starred`**
`boolean` — Indicates whether the project is starred. \`true\`: starred, \`false\`: not starred.
**Example:**
```json
{
"collaborator": [
{
"collaborator_id": "x4g6hy789k0o878k",
"collaborator_name": "Jack",
"user_id": "wf3h7uo1dk0v53bl",
"avatar": "https://content.zoom.us/swerwerw.jpeg",
"role": 2,
"collaborator_type": 0
}
],
"created_date": "2020-03-31T12:02:00Z",
"modified_date": "2020-03-31T12:02:00Z",
"project_name": "Untitle",
"project_id": "qiMWddmtRxqwSFrK22lJPg",
"starred": false,
"project_link": "https://zoom.us/wb#/project/i1Ts2cRpSASonwbvTiPlUQ"
}
```
##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/).
### Get a project
- **Method:** `GET`
- **Path:** `/whiteboards/projects/{projectId}`
- **Tags:** Project
Retrieves detailed information about a specific project.
**[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard_project:read`,`whiteboard_project:read:admin`
**[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard:read:project`,`whiteboard:read:project:admin`
**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT`
#### Responses
##### Status: 200 The project information has been successfully retrieved.
###### Content-Type: application/json
- **`collaborator`**
`array` — The project collaborators. This API returns only the project collaborators who have the 'owner' role, along with the current user's information.
**Items:**
- **`avatar`**
`string` — Collaborator profile picture.
- **`collaborator_id`**
`string` — The project collaborator ID.
- **`collaborator_name`**
`string` — The project collaborator name.
- **`collaborator_type`**
`integer`, possible values: `0, 1` — Collaborator type. Enum: - \`0\` - SAME\_ACCOUNT\_USER - \`1\` - EXTERNAL\_USER
- **`role`**
`integer`, possible values: `0, 1, 2, 3, 4` — Collaborator role type. Role Enum Values: - \`0\` - OWNER - \`1\` - CO\_OWNER - \`2\` - EDITOR - \`3\` - COMMENTER - \`4\` - VIEWER
- **`user_id`**
`string` — \`nullable\` User ID. This response only returns if the \`collaborator\_type\` is 0. If the \`collaborator\_type\` is not 0, this returns null value.
- **`created_date`**
`string`, format: `date-time` — The project create date-time in UTC/GMT. Example: \`2020-03-31T12:02:00Z\`
- **`modified_date`**
`string`, format: `date-time` — The project update date-time in UTC/GMT. Example: \`2020-03-31T12:02:00Z\`
- **`owner_display_name`**
`string` — The project owner display name.
- **`parent_project_id`**
`string` — The ID of the parent project. This field is only populated when the current project is a subproject; otherwise, it will be null.
- **`project_id`**
`string` — The Project ID
- **`project_link`**
`string` — The project redirect link.
- **`project_name`**
`string` — The project name.
- **`starred`**
`boolean` — Indicates whether the project is starred. \`true\`: starred \`false\`: not starred
**Example:**
```json
{
"collaborator": [
{
"collaborator_id": "x4g6hy789k0o878k",
"collaborator_name": "Jack",
"user_id": "wf3h7uo1dk0v53bl",
"avatar": "https://content.zoom.us/swerwerw.jpeg",
"role": 2,
"collaborator_type": 0
}
],
"created_date": "2020-03-31T12:02:00Z",
"modified_date": "2020-03-31T12:02:00Z",
"project_name": "Untitle",
"project_id": "qiMWddmtRxqwSFrK22lJPg",
"starred": false,
"owner_display_name": "Example Name",
"project_link": "https://zoom.us/wb#/project/i1Ts2cRpSASonwbvTiPlUQ",
"parent_project_id": "parent123abc"
}
```
##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`111804\` \
Permission is needed to access this project. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`38007\` \
The projectId is not exist. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/).
### Delete a project
- **Method:** `DELETE`
- **Path:** `/whiteboards/projects/{projectId}`
- **Tags:** Project
This API endpoint allows you to delete a specified project. Deleting a project removes all associated whiteboards from the project, setting them to have no project assignment.
**[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard_project:write:admin`,`whiteboard_project:write`
**[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard:delete:project`,`whiteboard:delete:project:admin`
**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT`
#### Responses
##### Status: 204 The project has been successfully deleted. No content is returned in the response body.
##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`111804\` \
Permission is needed to access this project. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`38007\` \
The projectId is not exist. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/).
### Update project basic information
- **Method:** `PATCH`
- **Path:** `/whiteboards/projects/{projectId}`
- **Tags:** Project
This API endpoint allows you to update the basic information of a specific project.
**[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard_project:write:admin`,`whiteboard_project:write`
**[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard:update:project:admin`,`whiteboard:update:project`
**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT`
#### Request Body
##### Content-Type: application/json
- **`project_name`**
`string` — The new project name.
**Example:**
```json
{
"project_name": "New Project Name"
}
```
#### Responses
##### Status: 204 The project's basic information has been successfully updated. No content is returned in the response body.
##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`38002\` \
The project name is invalid. \
##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`111804\` \
Permission is needed to access this project. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`38007\` \
The project ID does not exist. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/).
### Get collaborators of a project
- **Method:** `GET`
- **Path:** `/whiteboards/projects/{projectId}/collaborators`
- **Tags:** Project
Returns a list of a project collaborators.
**[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard_project_collaborator:read`,`whiteboard_project_collaborator:read:admin`
**[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard:read:project_collaborator`,`whiteboard:read:project_collaborator:admin`
**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT`
#### Responses
##### Status: 200 Get collaborators of a project.
###### Content-Type: application/json
**Array of:**
- **`collaborator_id` (required)**
`string` — \`not nullable\` The collaborator's unique ID.
- **`avatar`**
`string` — The collaborator profile picture.0
- **`collaborator_name`**
`string` — The collaborator's display name.
- **`collaborator_type`**
`integer`, possible values: `0, 1` — The collaborator type. Enum: \* \`0\` - SAME\_ACCOUNT\_USER \* \`1\` - EXTERNAL\_USER
- **`email`**
`string` — \`nullable\` Email. This response only returns if the \`collaborator\_type\` is \`0\`. If the \`collaborator\_type\` is \*\*not\*\* \`0\`, this returns null value.
- **`role`**
`integer`, possible values: `0, 1, 2, 3, 4` — The collaborator role type. Enum: \* \`0\` - OWNER \* \`1\` - CO\_OWNER \* \`2\` - EDITOR \* \`3\` - COMMENTER \* \`4\` - VIEWER
- **`user_id`**
`string` — \`nullable\` User ID. This response only returns if the \`collaborator\_type\` is \`0\`. If the \`collaborator\_type\` is \*\*not\*\* \`0\`, this returns null value.
**Example:**
```json
[
{
"collaborator_id": "x4g6hy789k0o878k",
"collaborator_name": "Jack",
"user_id": "wf3h7uo1dk0v53bl",
"avatar": "https://content.zoom.us/swerwerw.jpeg",
"role": 2,
"collaborator_type": 0,
"email": "user@example.com"
}
]
```
##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`111804\` \
Permission is needed to access this project. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`38007\` \
The projectId is not exist. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/).
### Share a project to new users
- **Method:** `POST`
- **Path:** `/whiteboards/projects/{projectId}/collaborators`
- **Tags:** Project
Add new collaborators to a specified project. Project owners or authorized users can invite team members or external users to collaborate on a project with specified roles and permissions.
**[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard_project_collaborator:write`,`whiteboard_project_collaborator:write:admin`
**[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard:write:project_collaborator`,`whiteboard:write:project_collaborator:admin`
**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT`
#### Request Body
##### Content-Type: application/json
- **`collaborators` (required)**
`array` — List of users to add as collaborators to the project.
**Items:**
- **`email`**
`string` — \*\*User Email Address\*\*: The email address of the user you want to share the project with.
- **`role`**
`integer` — Collaborator role type. When assigning a new \`OWNER\` or \`CO\_OWNER\`, the specified user must belong to the same account as the original \`OWNER\`. If a new owner is designated for a project, the original owner will automatically be demoted to \`CO\_OWNER\`. Role Enum Values: \* \`0\` - OWNER \* \`1\` - CO\_OWNER \* \`2\` - EDITOR \* \`3\` - COMMENTER \* \`4\` - VIEWER
- **`invite_message`**
`string` — A custom message to include with the project invitation.
- **`skip_notifications`**
`boolean` — \*\*Default is false (notifications will be sent)\*\*. If set to \`true\`, collaborators and owners will not receive direct messages or emails when the project is shared.
**Example:**
```json
{
"skip_notifications": false,
"invite_message": "I'm glad to invite you to join this project.",
"collaborators": [
{
"email": "user@example.com.",
"role": 1
}
]
}
```
#### Responses
##### Status: 201 The collaborators have been successfully added to the project.
###### Content-Type: application/json
**Array of:**
- **`avatar`**
`string` — Collaborator profile picture.
- **`collaborator_id`**
`string` — \`not nullable\` The collaborator's unique ID.
- **`collaborator_name`**
`string` — The collaborator's display name.
- **`collaborator_type`**
`integer` — Collaborator type. Enum: \* \`0\` - SAME\_ACCOUNT\_USER \* \`1\` - EXTERNAL\_USER
- **`role`**
`integer` — Collaborator role type. Enum: \* \`0\` - OWNER \* \`1\` - CO\_OWNER \* \`2\` - EDITOR \* \`3\` - COMMENTER \* \`4\` - VIEWER
- **`user_id`**
`string` — \`nullable\` User ID. This response only returns if the \`collaborator\_type\` is \`0\`. If the \`collaborator\_type\` is \*\*not\*\* \`0\`, this returns null value.
**Example:**
```json
[
{
"collaborator_id": "x4g6hy789k0o878k",
"collaborator_name": "Jack",
"user_id": "wf3h7uo1dk0v53bl",
"avatar": "https://content.zoom.us/swerwerw.jpeg",
"role": 1,
"collaborator_type": 1
}
]
```
##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request
##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/).
### Update project collaborators
- **Method:** `PATCH`
- **Path:** `/whiteboards/projects/{projectId}/collaborators`
- **Tags:** Project
Updates the role of a collaborator in a project, which allows you to modify the permissions of an existing collaborator in a specific project. Note that when assigning a new `OWNER` or `CO_OWNER`, the specified user must belong to the same account as the original `OWNER`. The original owner will automatically be demoted to `CO_OWNER` if a new owner is designated.
**[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard_project_collaborator:write`,`whiteboard_project_collaborator:write:admin`
**[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard:update:project_collaborator`,`whiteboard:update:project_collaborator:admin`
**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT`
#### Request Body
##### Content-Type: application/json
- **`collaborators` (required)**
`array` — An array of collaborator objects.
**Items:**
- **`collaborator_id` (required)**
`string` — The collaborator's unique ID \`not nullable\` .
- **`role` (required)**
`integer`, possible values: `0, 1, 2, 3, 4`, default: `2` — Collaborator role type. When assigning a new \`OWNER\` or \`CO\_OWNER\`, the specified user must belong to the same account as the original \`OWNER\`. If a new owner is designated for a project, the original owner will automatically be demoted to \`CO\_OWNER\`. Role Enum Values: 0 - OWNER 1 - CO\_OWNER 2 - EDITOR 3 - COMMENTER 4 - VIEWER
**Example:**
```json
{
"collaborators": [
{
"collaborator_id": "x4g6hy789k0o878k",
"role": 2
}
]
}
```
#### Responses
##### Status: 204 Project collaborators updated successfully.
##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`34002\` \
Invalid collaborator\_id {collaboratorId}. \
##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`111804\` \
Permission is needed to access this project. \
\*\*Error Code:\*\* \`34001\` \
You do not have permission to update the role of collaborator {collaboratorId}. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`35004\` \
The project ID {projectID} is not exist. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/).
### Remove the collaborator from a project
- **Method:** `DELETE`
- **Path:** `/whiteboards/projects/{projectId}/collaborators/{collaboratorId}`
- **Tags:** Project
This API endpoint allows you to remove a specific collaborator from a designated project. It enables project managers or authorized users to revoke access or remove a user from a project, enhancing project management and access control capabilities.
**[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard_project_collaborator:write`,`whiteboard_project_collaborator:write:admin`
**[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard:delete:project_collaborator:admin`,`whiteboard:delete:project_collaborator`
**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT`
#### Responses
##### Status: 204 The collaborator has been successfully removed from the project. No content is returned in the response body.
##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`111804\` \
Permission is needed to access this project. \
\*\*Error Code:\*\* \`34001\` \
You do not have permission to remove the collaborator {collaboratorId} from the project. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`38004\` \
The project ID {projectID} is not exist. \
\*\*Error Code:\*\* \`34005\` \
The collaborator ID {collaboratorId} is not exist. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/).
### List subprojects
- **Method:** `GET`
- **Path:** `/whiteboards/projects/{projectId}/subprojects`
- **Tags:** Project
Retrieves a list of all subprojects under a parent project. Returns all direct subprojects without pagination.
**Project Hierarchy Constraints**
- Project hierarchy supports up to 20 levels of nesting
- Each project node can contain a maximum of 1,000 direct subprojects
**[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard_project:read`,`whiteboard_project:read:admin`
**[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard:read:subproject`,`whiteboard:read:subproject:admin`
**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT`
#### Responses
##### Status: 200 List of subprojects retrieved successfully.
###### Content-Type: application/json
- **`projects`**
`array` — Array of subprojects.
**Items:**
- **`create_time` (required)**
`string`, format: `date-time` — The date and time when the project was created, in ISO 8601 format (UTC/GMT).
- **`parent_project_id` (required)**
`string` — The ID of the parent project.
- **`project_id` (required)**
`string` — The Project ID
- **`project_link` (required)**
`string` — The project redirect link.
- **`project_name` (required)**
`string` — The name of the project.
- **`starred` (required)**
`boolean` — Whether the project is starred by the current user.
- **`update_time` (required)**
`string`, format: `date-time` — The date and time when the project was last updated, in ISO 8601 format (UTC/GMT).
**Example:**
```json
{
"projects": [
{
"project_id": "qiMWddmtRxqwSFrK22lJPg",
"project_name": "Q1 Planning",
"starred": false,
"parent_project_id": "parent123abc",
"create_time": "2024-03-15T09:00:00Z",
"update_time": "2024-03-15T10:30:00Z",
"project_link": "https://zoom.us/wb#/project/i1Ts2cRpSASonwbvTiPlUQ"
}
]
}
```
##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`34002\` \
Invalid parameter {field\_name}. \
##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`111804\` \
Permission is needed to access this project. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`34000\` \
The project does not exist. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/).
### Create a subproject
- **Method:** `POST`
- **Path:** `/whiteboards/projects/{projectId}/subprojects`
- **Tags:** Project
Creates a new subproject under the specified parent project.
**Project Hierarchy Constraints**
- Project hierarchy supports up to 20 levels of nesting
- Each project node can contain a maximum of 1,000 direct subprojects
**[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard_project:write:admin`,`whiteboard_project:write`
**[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard:write:subproject`,`whiteboard:write:subproject:admin`
**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT`
**Not supported in Gov cluster**
#### Request Body
##### Content-Type: application/json
- **`project_name` (required)**
`string` — The name of the subproject to create.
**Example:**
```json
{
"project_name": "Q1 Planning."
}
```
#### Responses
##### Status: 201 Subproject created successfully.
###### Content-Type: application/json
- **`create_time` (required)**
`string`, format: `date-time` — The date and time when the project was created, in ISO 8601 format (UTC/GMT).
- **`parent_project_id` (required)**
`string` — The ID of the parent project.
- **`project_id` (required)**
`string` — The Project ID
- **`project_name` (required)**
`string` — The name of the project.
- **`starred` (required)**
`boolean` — Whether the project is starred by the current user.
- **`update_time` (required)**
`string`, format: `date-time` — The date and time when the project was last updated, in ISO 8601 format (UTC/GMT).
- **`project_link`**
`string` — The project redirect link.
**Example:**
```json
{
"project_id": "qiMWddmtRxqwSFrK22lJPg",
"project_name": "Q1 Planning",
"starred": false,
"parent_project_id": "parent123abc",
"create_time": "2024-03-15T09:00:00Z",
"update_time": "2024-03-15T10:30:00Z",
"project_link": "https://zoom.us/wb#/project/i1Ts2cRpSASonwbvTiPlUQ"
}
```
##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`34002\` \
Invalid prameter. \
\*\*Error Code:\*\* \`34003\` \
Maximum subproject depth of 20 levels exceeded. \
\*\*Error Code:\*\* \`34004\` \
Maximum subprojects limit of 1000 per node exceeded. \
##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`111804\` \
Permission is needed to access this project. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`34000\` \
The project is not exist. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/).
### Move whiteboards to a project
- **Method:** `POST`
- **Path:** `/whiteboards/projects/{projectId}/whiteboards`
- **Tags:** Project
This API endpoint allows you to move one or more whiteboards to a specified project. It enables users to organize their whiteboards by associating them with a specific project, enhancing project management capabilities.
**[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard_project:write:admin`,`whiteboard_project:write`
**[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard:write:project_whiteboard`,`whiteboard:write:project_whiteboard:admin`
**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT`
#### Request Body
##### Content-Type: application/json
- **`whiteboard_ids` (required)**
`array` — The whiteboard ID list
**Items:**
`string` — The whiteboard ID.
**Example:**
```json
{
"whiteboard_ids": [
"dZO3Wd9XT4mgXdNPbMm6tw"
]
}
```
#### Responses
##### Status: 201 The whiteboards have been successfully moved to the project.
###### Content-Type: application/json
- **`whiteboard_ids`**
`array` — The whiteboard ID list
**Items:**
`string` — The whiteboard ID.
**Example:**
```json
{
"whiteboard_ids": [
"dZO3Wd9XT4mgXdNPbMm6tw"
]
}
```
##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`111804\` \
Permission is needed to access this project. \
\*\*Error Code:\*\* \`34001\` \
You do not have permission to move {whiteboardID} to the project. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`38007\` \
The projectId is not exist. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/).
### Remove whiteboards from a project
- **Method:** `DELETE`
- **Path:** `/whiteboards/projects/{projectId}/whiteboards`
- **Tags:** Project
This API endpoint allows you to remove one or more whiteboards from a specified project.
**[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard_project:write:admin`,`whiteboard_project:write`
**[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard:delete:project_whiteboard`,`whiteboard:delete:project_whiteboard:admin`
**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `LIGHT`
#### Request Body
##### Content-Type: application/json
- **`whiteboard_ids` (required)**
`array` — The whiteboard ID list.
**Items:**
`string` — The whiteboard ID.
**Example:**
```json
{
"whiteboard_ids": [
"W6Uuv4qUSfuJlp_GXGi36A"
]
}
```
#### Responses
##### Status: 204 The whiteboards have been successfully removed from the project. No content is returned in the response body.
##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`111804\` \
Permission is needed to access this project. \
\*\*Error Code:\*\* \`34001\` \
You have no permission to add {whiteboardID} to the project. \
##### Status: 404 \*\*HTTP Status Code:\*\* \`404\` \
Not Found \*\*Error Code:\*\* \`38007\` \
The project ID does not exist. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rate-limits/).
### Update whiteboard share setting
- **Method:** `PATCH`
- **Path:** `/whiteboards/{whiteboardId}/share_setting`
- **Tags:** Settings
Updates the whiteboard share setting.
**[Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard_share_setting:write`,`whiteboard_share_setting:write:admin`
**[Granular Scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-overview/):** `whiteboard:update:share_setting:admin`,`whiteboard:update:share_setting`
**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `MEDIUM`
#### Request Body
##### Content-Type: application/json
- **`share_link_setting`**
`object` — The access level and access type of a current whiteboard's share link.
- **`share_role`**
`integer`, possible values: `2, 3, 4` — The access level of a whiteboard share link. Use this field with \`share\_scope\`. If \`share\_scope\` set \`0\` - \`Restricted\`, this field is null. If \`share\_scope\` set \`1\` - \`Same account\` or \`2\` - \`Anyone\`, this filed can be \`2\` - \`Editor\`, \`3\` - \`Commenter\` or \`4\` - \`Viewer\`. \* Enum: \* \`2\` - \`Editor\` \* \`3\` - \`Commenter\` \* \`4\` - Viewer
- **`share_scope`**
`integer`, possible values: `0, 1, 2, 3`, default: `0` — The access type of whiteboard share link. \* Enum: \* \`0\` - \`Restricted\`, Only people added can open with this link \* \`1\` - \`Same account\` \* \`2\` - Anyone \* \`3\` - SAME\_ACCOUNT\_EXTERNAL\_AUTH
**Example:**
```json
{
"share_link_setting": {
"share_scope": 0,
"share_role": 2
}
}
```
#### Responses
##### Status: 204 \*\*HTTP Status Code\*\*: \`204\` Whiteboard share setting updated successfully.
##### Status: 400 \*\*HTTP Status Code:\*\* \`400\` \
Bad Request \*\*Error Code:\*\* \`34002\` \
Share role must be viewer for everyone. \
\*\*Error Code:\*\* \`34002\` \
Share role can't be null, owner, or co-owner for same account. \
##### Status: 403 \*\*HTTP Status Code:\*\* \`403\` \
Forbidden \*\*Error Code:\*\* \`111804\` \
Permission is needed to access this document. \
##### Status: 429 \*\*HTTP Status Code:\*\* \`429\` \
Too Many Requests. For more information, see \[rate limits]\(https\://developers.zoom.us/docs/api/rest/rate-limits/).