Tasks
- OpenAPI Version:
3.1.1 - API Version:
2
The Zoom Tasks APIs let you manage and automate tasks within the Zoom ecosystem. Create, view, update, and delete tasks that help teams stay organized across meetings and projects. The Zoom Tasks REST API lets developers programmatically integrate task management into their workflows, enabling seamless coordination and productivity directly through Zoom.
Servers
- URL:
https://api.zoom.us/v2
Operations
Get assignees of a task
- Method:
GET - Path:
/tasks/items/{taskId}/assignees - Tags: Assignee
Retrieves the list of assignees of a specified task.
Scopes: tasks_assignee:read:admin,tasks_assignee:read
Granular Scopes: tasks:read:assignees,tasks:read:assignees:admin
Rate Limit Label: LIGHT
Responses
Status: 200 Assignees retrieved successfully.
Content-Type: application/json
-
assigneesarray— A list of all assignees associated with the task.Items:
-
display_name(required)string— The display name of the assignee. -
user_id(required)string— The Zoom user ID of the task assignee. -
avatarstring, format:uri— The assignee's avatar image URL. -
emailstring, format:email— The email address of the assignee.
-
-
task_idstring— The unique ID of the task.
Example:
{
"task_id": "z2vo9qNRRHKArlJqkVHNUw",
"assignees": [
{
"user_id": "CcrEGgmeQem1uyJsuIRKwA",
"display_name": "John Doe",
"email": "john.doe@example.com",
"avatar": "https://example.com/avatar.jpg"
}
]
}
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `111800` <br> You don't have permission to request the task <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `112100` <br> The resource not found. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rate-limits/).
Add assignees to a task
- Method:
POST - Path:
/tasks/items/{taskId}/assignees - Tags: Assignee
Add one or more assignees to a specified task. If a user is an assignee, they are also considered a collaborator.
Scopes: tasks_assignee:write,tasks_assignee:write:admin
Granular Scopes: tasks:write:assignees,tasks:write:assignees:admin
Rate Limit Label: LIGHT
Request Body
Content-Type: application/json
-
assignees(required)array— The email address of the assignee to add. The user must belong to the same account as the requesting user.Items:
-
email(required)string, format:email— The email address of the assignee to invite.
-
-
invite_messagestring— An optional message to include with the assignee invitation. -
skip_notificationsboolean, default:false— Whether to skip sending notifications to the added assignees. By default, notifications are sent.
Example:
{
"invite_message": "Please help with this task.",
"skip_notifications": false,
"assignees": [
{
"email": "user@example.com"
}
]
}
Responses
Status: 201 Assignees added successfully.
Content-Type: application/json
-
assignees(required)array— A list of all assignees associated with the task.Items:
-
display_name(required)string— The assignee's Zdisplay name. -
user_id(required)string— The assignee's Zoom user ID. -
avatarstring, format:uri— The assignee's Zavatar image URL. -
emailstring, format:email— The assignee's Zemail address.
-
-
task_id(required)string— The task's unique ID.
Example:
{
"task_id": "z2vo9qNRRHKArlJqkVHNUw",
"assignees": [
{
"user_id": "CcrEGgmeQem1uyJsuIRKwA",
"display_name": "John Doe",
"email": "john.doe@example.com",
"avatar": "https://example.com/avatar.jpg"
}
]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `34002` <br> Invalid email {email}. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `111800` <br> You are no permission to request the task. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `112100` <br> The resource not found. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rate-limits/).
Remove Assignee from task
- Method:
DELETE - Path:
/tasks/items/{taskId}/assignees/{userId} - Tags: Assignee
Removes a specific assignee from a task.
Scopes: tasks_assignee:write,tasks_assignee:write:admin
Granular Scopes: tasks:delete:assignees,tasks:delete:assignees:admin
Rate Limit Label: LIGHT
Responses
Status: 204 Collaborator removed successfully
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `111800` <br> You do not have permission to operate on the task. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `112100` <br> The task not found. <br> **Error Code:** `112100` <br> The assignee not found. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rate-limits/).
Get collaborators of a task
- Method:
GET - Path:
/tasks/items/{taskId}/collaborators - Tags: Collaborator
Retrieves all collaborators of a specified task.
Scopes: tasks_collaborator:read:admin,tasks_collaborator:read
Granular Scopes: tasks:read:list_collaborators,tasks:read:list_collaborators:admin
Rate Limit Label: LIGHT
Responses
Status: 200 Collaborators retrieved successfully.
Content-Type: application/json
-
collaboratorsarray— A list of all collaborators associated with the task.Items:
-
display_name(required)string— The display name of the collaborator. -
user_id(required)string— The Zoom user ID of the collaborator. -
avatarstring, format:uri— The avatar image URL of the collaborator. -
emailstring, format:email— The email address of the collaborator.
-
-
task_idstring— The unique ID of the task.
Example:
{
"task_id": "z2vo9qNRRHKArlJqkVHNUw",
"collaborators": [
{
"user_id": "CcrEGgmeQem1uyJsuIRKwA",
"display_name": "John Doe",
"email": "john.doe@example.com",
"avatar": "https://example.com/avatar.jpg"
}
]
}
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `111800` <br> You don't have permission to request the task. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `112100` <br> The resource not found. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rate-limits/).
Add collaborators to a task
- Method:
POST - Path:
/tasks/items/{taskId}/collaborators - Tags: Collaborator
Add one or more collaborators to a specified task.
Scopes: tasks_collaborator:write,tasks_collaborator:write:admin
Granular Scopes: tasks:write:collaborators,tasks:write:collaborators:admin
Rate Limit Label: LIGHT
Request Body
Content-Type: application/json
-
collaborators(required)array— A list of collaborators to add to the task. The user must belong to the same account as the requesting user.Items:
-
email(required)string, format:email— The email address of the collaborator to invite.
-
-
invite_messagestring— An optional message to include with the collaborator invitation. -
skip_notificationsboolean— Whether to skip sending notifications to the added collaborators. By default, notifications are sent.
Example:
{
"invite_message": "Please help with this task.",
"skip_notifications": false,
"collaborators": [
{
"email": "jchill@example.com"
}
]
}
Responses
Status: 201 Collaborators added successfully.
Content-Type: application/json
-
collaborators(required)array— A list of all collaborators associated with the task.Items:
-
display_name(required)string— The collaborator's display name. -
user_id(required)string— The collaborator's Zoom user ID. -
avatarstring, format:uri— The collaborator's avatar image URL. -
emailstring, format:email— The collaborator's email address.
-
-
task_id(required)string— The task's unique ID.
Example:
{
"task_id": "z2vo9qNRRHKArlJqkVHNUw",
"collaborators": [
{
"user_id": "CcrEGgmeQem1uyJsuIRKwA",
"display_name": "John Doe",
"email": "john.doe@example.com",
"avatar": "https://example.com/avatar.jpg"
}
]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `34002` <br> Invalid email {email}. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `111800` <br> You are no permission to request the task. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `112100` <br> The resource not found. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rate-limits/).
Remove collaborator from task
- Method:
DELETE - Path:
/tasks/items/{taskId}/collaborators/{userId} - Tags: Collaborator
Removes a specific collaborator from a task. This operation will completely remove the user's access to the task.
Scopes: tasks_collaborator:write,tasks_collaborator:write:admin
Granular Scopes: tasks:delete:collaborator:admin,tasks:delete:collaborator
Rate Limit Label: LIGHT
Responses
Status: 204 Collaborator removed successfully
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `111800` <br> You do not have permission to operate on the task. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `112100` <br> The task not found. <br> **Error Code:** `112100` <br> The assignee not found. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rate-limits/).
Get a task's comments
- Method:
GET - Path:
/tasks/items/{taskId}/comments - Tags: Comment
Retrieves all comments associated with a specific task.
Scopes: tasks_comment:read,tasks_comment:read:admin
Granular Scopes: tasks:read:comments,tasks:read:comments:admin
Rate Limit Label: LIGHT
Responses
Status: 200 Task comments retrieved successfully.
Content-Type: application/json
-
commentsarray— The list of comments associated with the task.Items:
-
comment_idstring— The unique identifier of the comment. -
contentarray— The array of content fragments that make up the comment. Each fragment must define its order and contain either plain text or a mention. Fragments may also include attributes such as a hyperlink.Items:
-
order(required)number— The position of the fragment within the comment. Must be unique within the `content` array. Defines the sequence for rendering. -
attributesobject— Optional metadata for the fragment. Currently supports only hyperlinks.-
linkstring— The URL associated with the fragment's text. Typically an absolute `http://` or `https://` link.
-
-
mentionobject— Represents a mention of an entity (e.g., a user). If present, the fragment represents a mention instead of plain text.-
avatarstring, format:uri— The avatar image URL of the user. -
display_namestring— The display name of the user. -
emailstring— The email address of the user being mentioned. -
user_idstring— The user ID of the user being mentioned.
-
-
textstring— The plain text fragment. May include letters, numbers, symbols, or emoji. Required if no `mention` is provided. If combined with `attributes.link`, this text is rendered as a hyperlink.
-
-
content_textstring— A plain text version of the entire comment content. -
create_timeinteger, format:int64— Creation timestamp in milliseconds.
-
-
next_page_tokenstring— Use the next page token to paginate through a large set of results. A next page token is returned when the available results exceed the current page size. This token's expiration period is 15 minutes. -
page_sizeinteger— The number of records returned per page in a single API call. -
total_recordsinteger— The total number of records found.
Example:
{
"comments": [
{
"comment_id": "comment_abc123def456",
"content": [
{
"text": "the text demo",
"order": 0,
"attributes": {
"link": "https://google.cn"
},
"mention": {
"email": "example@zoom.us",
"user_id": "3afwV0HiZS9mCLpxSQQbVz",
"display_name": "John Doe",
"avatar": "https://example.com/avatar.jpg"
}
}
],
"content_text": "the text demo",
"create_time": 1752715586000
}
],
"next_page_token": "qUEQqB1V0HVhJmwKFQrGOD",
"page_size": 10,
"total_records": 2
}
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `111800` <br> You don't have permission to operate on the task. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `112100` <br> The task not found. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rate-limits/).
Add a comment to a task
- Method:
POST - Path:
/tasks/items/{taskId}/comments - Tags: Comment
Adds a comment to a specific task.
Scopes: tasks_comment:write,tasks_comment:write:admin
Granular Scopes: tasks:write:comment:admin,tasks:write:comment
Rate Limit Label: LIGHT
Request Body
Content-Type: application/json
-
content(required)array— The array of content fragments that make up the comment. Each fragment must define its order and contain either plain text or a mention. Fragments may also include attributes such as hyperlinks.Items:
-
order(required)number— The position of the fragment within the comment. Must be unique within the `content` array. Defines the sequence for rendering. -
attributesobject— Optional metadata for the fragment. Currently supports only hyperlinks.-
linkstring— The URL associated with the fragment's text, typically an absolute http:// or https:// link.
-
-
mentionobject— Represents a user mention. Provide either the email or the user ID. If present, the fragment will be treated as a mention instead of plain text.-
emailstring, format:email— The email address of the user being mentioned. -
user_idstring— The user ID of the user being mentioned.
-
-
textstring— A plain text fragment that may include letters, numbers, symbols, or emoji. Required if no mention is provided. If combined with attributes.link, this text is rendered as a hyperlink.
-
-
content_text(required)string— A plain text version of the entire comment content.
Example:
{
"content": [
{
"text": "the text demo",
"order": 0,
"attributes": {
"link": "https://google.cn"
},
"mention": {
"email": "example@zoom.us",
"user_id": "3afwV0HiZS9mCLpxSQQbV"
}
}
],
"content_text": "the text demo"
}
Responses
Status: 201 Comment added successfully
Content-Type: application/json
-
comment_id(required)string— The unique identifier of the created comment. -
content(required)array— The array of content fragments that make up the comment. Each fragment must define its order and contain either plain text or a mention. Fragments may also include attributes such as a hyperlink.Items:
-
order(required)number— The position of the fragment within the comment. Must be unique within the `content` array. Defines the sequence for rendering. -
attributesobject— Optional metadata for the fragment. Currently supports only hyperlinks.-
linkstring— The URL associated with the fragment's text, typically an absolute http:// or https:// link.
-
-
mentionobject— Represents a mention of an entity (e.g., a user). If present, the fragment represents a mention instead of plain text.-
avatarstring, format:uri— The avatar image URL of the user. -
display_namestring— The display name of the user. -
emailstring— The email address of the user being mentioned. -
user_idstring— The user ID of the user being mentioned.
-
-
textstring— A plain text fragment that may include letters, numbers, symbols, or emoji. Required if no mention is provided. If combined with attributes.link, this text is rendered as a hyperlink.
-
-
content_textstring— A plain text version of the entire comment content. -
create_timeinteger, format:int64— Creation timestamp in milliseconds.
Example:
{
"comment_id": "comment_abc123def456",
"content": [
{
"text": "the text demo",
"order": 0,
"attributes": {
"link": "https://google.cn"
},
"mention": {
"email": "example@zoom.us",
"user_id": "3afwV0HiZS9mCLpxSQQbV",
"display_name": "John Doe",
"avatar": "https://example.com/avatar.jpg"
}
}
],
"content_text": "the text demo",
"create_time": 1752715586000
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `34002` <br> Invalid request body. Please verify the content and try again. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `111800` <br> You don't have permission to request the task. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `112100` <br> The resource not found. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rate-limits/).
Delete a task's comment
- Method:
DELETE - Path:
/tasks/items/{taskId}/comments/{commentId} - Tags: Comment
Deletes a specific comment from a task by its ID.
Scopes: tasks_comment:write,tasks_comment:write:admin
Granular Scopes: tasks:delete:comment:admin,tasks:delete:comment
Rate Limit Label: LIGHT
Responses
Status: 204 Comment deleted successfully. No content is returned.
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `111800` <br> You don't have permission to operate on the task. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `112100` <br> The task not found. <br> **Error Code:** `112100` <br> The comment not found. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rate-limits/).
Upload a file in tasks
- Method:
POST - Path:
/tasks/files - Tags: File
Uploads a file to tasks. 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
.json. - For an account-level OAuth app, this API can only be used on behalf of a user who is assigned a role with Edit permission for Tasks Management.
Scopes: tasks_file:write,tasks_file:write:admin
Granular Scopes: tasks:write:file,tasks:write:file:admin
Rate Limit Label: HEAVY
Not supported in Gov cluster
Request Body
Content-Type: multipart/form-data
-
file(required)string— The upload file in binary format. The maximum file size is 10 MB.
Example:
{
"file": "Vm0wd2QyUXlVWGxWV0d4V1YwZDRWMVl3WkRSV01WbDNXa1JTVjAxV2JETlhhMUpUVmpBeFYySkVUbGhoTVVwVVZtcEJlRll5U2tWVWJHaG9UVlZ3VlZadGNFSmxSbGw1VTJ0V1ZXSkhhRzlVVmxaM1ZsWmFkR05GU214U2JHdzFWVEowVjFaWFNraGhSemxWVm14YU0xWnNXbUZrUjA1R1UyMTRVMkpIZHpGV1ZFb3dWakZhV0ZOcmFHaFNlbXhXVm0xNFlVMHhXbk5YYlVaclVqQTFSMVV5TVRSVk1rcElaSHBHVjFaRmIzZFdha1poVjBaT2NtRkhhRk5sYlhoWFZtMHhORmxWTUhoWGJrNVlZbFZhY2xWcVFURlNNVlY1VFZSU1ZrMXJjRWxhU0hCSFZqRmFSbUl6WkZkaGExcG9WakJhVDJOdFJraGhSazVzWWxob1dGWnRNSGhPUm14V1RVaG9XR0pyTlZsWmJGWmhZMVphZEdSSFJrNVNiRm93V2xWYVQxWlhTbFpqUldSYVRVWmFNMVpxU2t0V1ZrcFpXa1p3VjFKV2NIbFdWRUpoVkRKT2MyTkZhR3BTYkVwVVZteG9RMWRzV1hoWGJFNVRUV3hHTlZWdGRHdGhiRXAwVld4c1dtSkdXbWhaTW5oWFl6RldjbHBHWkdsU2JrSmFWMnhXWVZReFdsaFRiRnBZVmtWd1YxbHJXa3RUUmxweFUydGFiRlpzV2xwWGExcDNZa2RGZWxGcmJGaFhTRUpJVmtSS1UxWXhXblZWYldoVFlYcFdlbGRYZUc5aU1XUkhWMjVTVGxOSFVuTlZha0p6VGtaVmVXUkhkRmhTTUhCSlZsZDRjMWR0U2tkWGJXaGFUVlp3YUZwRlpGTlRSa3B5VGxaT2FWSnRPVE5XTW5oWFlqSkZlRmRZWkU1V1ZscFVXVlJHZDFZeGJISlhhM1JVVW14d2VGVnRNVWRWTWtwV1lrUmFXR0V4Y0hKWlZXUkdaVWRPU0U5V1pHaGhNSEJ2Vm10U1MxUXlVa2RUYmtwb1VqSm9WRmxZY0ZkbGJHUllaVWM1YVUxWFVraFdNalZUVkd4a1NGVnNXbFZXYkhCSVZGUkdVMVp0UmtoUFYyaHBVbGhDTmxkVVFtRmpNV1IwVTJ0a1dHSlhhR0ZVVmxwM1lVWndSbHBHVGxSU2EzQjVWR3hhVDJGV1NuUlBWRTVYVFc1b1dGbHFTa1psUm1SWldrVTFWMVpzY0ZWWFZsSkhaREZaZUdKSVNsaGhNMUpWVlcxNGQyVkdWblJOVldSV1RXdHdWMWxyVW1GWFIwVjRZMGhLV2xaWFVrZGFWV1JQVTBVNVYxcEhhR2hOU0VKMlZtMTBVMU14VVhsVmEyUlVZbXR3YjFWcVNtOVdSbXhaWTBaa2JHSkhVbGxhVldNMVlWVXhXRlZyYUZkTmFsWlVWa2Q0VDFOSFJrZFJiRnBwVmtWVmQxWnRjRWRWTVZwMFVtdG9VRlp0YUZSVVZXaERUbFphU0dWSFJtcE5WMUl3VlRKMGExZEhTbGhoUjBaVlZucFdkbFl3V25KbFJtUnlXa1prVjJFelFqWldhMlI2VFZaWmQwMVdXbWxsYTFwWVdXeG9RMVJHVW5KWGJFcHNVbTFTZWxsVldsTmhWa3AxVVd4d1YySllVbGhhUkVaYVpVZEtTVk5zYUdoTk1VcFdWbGN4TkdReVZrZFdibEpPVmxkU1YxUlhkSGRXTVd4eVZXMUdXRkl3VmpSWk1HaExWMnhhV0ZWclpHRldWMUpRVlRCVk5WWXhjRWhoUjJoT1UwVktNbFp0TVRCVk1VMTRWVmhzVm1FeVVsVlpiWFIzWWpGV2NWTnRPVmRTYlhoYVdUQmFhMkpIU2toVmJHeGhWbGROTVZsV1ZYaFhSbFp5WVVaa1RtRnNXbFZXYTJRMFlURk9SMVp1VGxoaVJscFlXV3RvUTFOV1drZFZhMlJXVFZad01GVnRkRzlWUmxsNVlVaENWbUpIYUVSVWJYaHJWbFpHZEZKdGNFNVdNVWwzVmxSS01HRXhaRWhUYkdob1VqQmFWbFp1Y0Zka2JGbDNWMjVLYkZKdFVubFhhMXByVmpKRmVsRnFXbGRoTWxJMlZGWmFhMUl4VG5OWGJYQlRWak5vV1ZkWGVHOVJNVkpIVlc1S1dHSkZjSE5WYlRGVFpXeHNWbGRzVG1oU1ZFWjZWVEkxYjFZeFdqWlJhbEpWWVRKU1NGVnFSbUZYVm5CSVlVWk9WMVpHV2xkV2JHTjRUa2RSZVZaclpGZGliRXBQVm14a1UxWXhVbGhrU0dSWFRWZDRlVlpYTVVkWFJrbDNWbXBTV2sxSGFFeFdNbmhoVjBaV2NscEhSbGRXTVVwUlZsUkNWazVXV1hoalJXaG9VakpvVDFVd1ZrdE5iRnAwVFZSQ1ZrMVZNVFJXVm1oelZtMUZlVlZzVmxwaVdGSXpXV3BHVjJOV1RuUlBWbVJUWWxob1lWZFVRbUZoTWtwSVUydG9WbUpIZUdoV2JHUk9UVlpzVjFaWWFGaFNiRnA1V1ZWYWExUnRSbk5YYkZaWFlUSlJNRlpFUms5VFJrcHlXa1pLYVZKdVFuZFdiWFJYVm0xUmVGZHVVbXBTVjFKWFZGWmFkMDFHVm5Sa1J6bFdVbXh3TUZsVldsTldWbHBZWVVWU1ZXSkdjR2hWTUdSWFUwWktkR05GTlZkTlZXd3pWbXhTUzAxSFJYaGFSV2hVWWtkb2IxVnFRbUZXYkZwMVkwWmthMkpHYkROV01qVkxZa1pLZEZWdWJGaGhNWEJ5Vm1wS1JtVnNSbkZYYkdSb1RXeEpNbFpHV21GaE1VbDRWRzVPV0dKWVFsUldhazV2VjFaa1dHVkhPVkpOVmtwSVZsYzFTMWRIU2taalNFNVdZbFJHVkZwWGVITldiR1J6Vkcxb1UxWkZXalpXVkVreFlqRlplRmRxV2xOV1JVcG9WV3RXWVdOc1ZuRlRhM1JVVm14S01GbFZXazloUjFaelYyeEdWMkV4Y0doWFZtUlNaVlphY2xwR1pGaFNNMmg1VmxkMFYxTXhaRWRWYkdSWVltMVNjMVp0TVRCTk1WbDVUbGQwV0ZKcmJETldiWEJUVjJzeFIxTnNRbGRoYTNCSVdUSjRhMk50VmtkYVIyaG9UVEJLVWxac1VrZGhNVTE0VTFob2FsSlhVbWhWYlhNeFYwWlpkMVpyZEU1aVJuQXdWRlpTUTFack1WWk5WRkpYVm0xb2VsWnNXbXRUUjFaSFYyeHdWMUpXYjNwWFYzQkhWakpPVjFWdVNsVmlSMUpVV1d4b2IxbFdaRlZSYlVab1RWZFNTRll5TlU5aGJFcDBaVWRHVlZaV2NGZFVWbHB6VmpGYVdXRkhjR2xXV0VKSFZteGtOR0V4VW5SU2JrNVlZa1phV0ZsVVNsSk5SbXhWVW1zNVUwMVdjREZXUjNodllWWktjMk5HYkZoV00xSjJWVlJHYTFZeFpISmhSM1JUVFVad1dWZFhlR0ZaVms1WFZtNVNhMUo2YkZkVmJYaHpUbFpzVm1GRlRsZGlWWEJKV1ZWV1UxWlhTbGxoU0VwWFlrWndTRnBGV2t0a1IwNUdUbFprVGxaWGQzcFdiWGhUVXpBeFNGSllhR0ZTVjJoVldXdGtiMkl4Vm5GUmJVWlhZa1p3TVZrd1dtdGhNa3BIWWtST1YwMXFWa3haYTFwTFpFWldkV0pHYUdoTldFSjVWbTF3UzFKdFZuTlNia1pZWWtkU2IxUlhlRXBOYkZwSFYyMUdXR0pXUmpOVVZscHJWMGRLV0dWSVRscFdSVm96VmpGYWExZEhWa2hQVmtwT1ZsUkZNRlpzWkRSaE1XeFhVMnhrYWxORk5WZFpiRkpIVmtaWmVXVkhkR3BpUm5CV1ZXMTRhMVJzV25WUmFscFlWa1ZLYUZacVJtdFNNV1JaWTBaYWFXRXpRbGxXYlhSWFdWZFdjMWR1UmxOaVIxSnhWRlprVTJWc2JGWmFTRTVYVFZad01WVlhlRWRXTWtWNFkwZG9XRlp0VWxOYVZscGhZMnh3UjFwR2FGTk5NbWcxVm14a01GWXhUWGhhUldSV1lrZFNXVmx0TVZOak1WcDBUVlJDVGsxV2JEVlViR1F3VjBaS2NtSkVUbGRpV0VKVVZqSnplRk5IUmtabFJtUk9ZbTFvYjFacVFtRldNazV6WTBWb1UySkhVbGhVVmxaM1ZXeGFjMXBJWkZSTlZURTBWVEZvYzFVeVJYbGhSemxXWWtaS1dGWXdXbk5rUjFKR1pFVTFhVkp1UVhkV1JscFRVVEZhY2sxV1drNVdSa3BZVm01d1YxWkdXbkZUYTFwc1ZteGFNVlZ0ZUdGaFZrbDRVbGhrVjJKVVJUQlpla3BPWlVkT1JtRkdRbGRpVmtwVlYxZDBWMlF4WkhOWGEyaHNVak5DVUZadGVITk9SbGw1VGxVNWFHSkZjRmxaVlZwelZqSkZlRlpZYUdGU00yaDZWbXBHWVZkWFJrZGhSazVwVW0wNU5GWXhVa05aVjBWNFZXNU9XRmRIZUc5VmExWjNWMFpTVjFkdVpHaFNiRmt5VlcxMGQySkdTbk5UYWtaWFlsaG9URmxXV2t0ak1rNUhZa1prVTJKRmNFbFdXSEJDVFZkTmVGcElTbWhTTTJoVVZGVmFkMkZHV25SalJXUlVUVlZzTkZaWE5VOVhSMHBXVjJ4a1ZtSllhRE5VVlZwaFYwVTFWbFJzWkU1aE0wSktWMVpXVjFVeFduSk5WbVJxVWpKb1lWUldXbmRWUm10NFYyeGthazFYVW5sVWJGcHJWR3hhV0dRemNGZGlXR2hVVlhwQmVGTkdTbGxoUjBaVFZqSm9WbGRYZEd0aU1rbDRWbTVHVW1KVldsaFphMXAzVFZacmQxZHRkR2hOYTNCSVdXdFNUMVl3TVhGV2EzaGFZVEZ3VEZwRldsZGtWMHBIWVVkb1RsZEZTalZXYlRGM1V6RktkRlp1VGxOaWExcFpXV3RrVTJJeFVsaGxSWEJPWWtad1NGWXlNVWRYUjBwWFVtcE9WVlpzY0hKV01HUkxWMGRXU1ZSc2NGZFNWbTk2Vm1wR1lXRXhaRWhXYTJoUVZtdHdUMVp0ZEhkVFZscHpXWHBHVkUxWFVrbFZNblJoWVd4T1JrNVdaRnBpUmtwSVZtdGFkMWRIVmtsVWJHUnBVakZLTmxaclkzaGlNVmw1VWxod1VsZEhhRmhXYlRGT1pVWnNjVkpzY0d4U2JWSmFXVEJrYjFaR1NsbFJiR3hYWWxoU1dGZFdaRmRqTVdSMVVteE9hVkl4U25oV1JscHJWVEpXYzJKR1dtRlRSVFZZVkZaYWQwMVdWbGhsUldSWFRXdFdORmt3Wkc5WFJscDBWV3hPWVZac2NHaFpNbmgzVWpGd1IyRkdUazVOYldjeFZtMTRhMDFHV1hoVVdHaGhVbGRTVjFsclpGTlhWbXgwVFZaT2FrMVdjREJVVmxKRFZHc3hWMkpFVmxWaVIxRjNWakJhUzJOdFNrVlViR1JwVjBWS1ZWWnFTbnBsUms1SVVtdGFiRkp0VWs5WmJURnZZakZhY1ZGdFJsZE5helY2V1RCV2IxVXlTa2hWYkdoVlZteGFNMVpYZUdGak1YQkpXa1pTVGxaVVJUQldWRVp2WXpGVmVWSlliR2hTZW14WFdXdGFTMWRHV1hkWGJrNXJVakZLUjFwRlZURmhWa3AxVVZoa1YxSnNjRlJWVkVaaFkyc3hWMWRyTlZkU2EzQlpWbTB3ZUdJeVZuTlhiazVZWWxoU1ZWVnFSbUZUUmxsNVpVaGtWMDFWY0ZoWmFrNTNWMFphYzFkdGFGZGhhM0JRVm1wR1UyUldWbk5SYkdScFZtdHdWbFl4WkRCV01sRjRXa2hPV0dFeWFITlZhazVEVlVaYWRHVklUazlTYkd3MVZHeFZOV0ZIU2taalJteGFWbFp3ZWxacVNrWmxSbHBaWVVkR1UwMHlhRFpXYlhCSFdWWmtXRkpyYUdwU01uaFlWakJXUzFOR1duUmxSM1JQVWpCV05GWlhOVTlYUm1SSVpVYzVWbUV4V2pOV01GcHpWMGRTUm1SSGNHbFNiR3Q1VmxjeE1FMUhSblJTYWxwWFlrZG9XVmxVUm5kaFJteFhWMnQwYWsxck5VaFphMXB2VmpBd2VXRkhPVmRXZWtJMFZsY3hWMUl4Y0VsV2JGcHBWMFZLVlZadGNFZFRNV1JIVjJ0a1dHSlZXbkpVVlZKSFUwWmFkRTVXVG1oTlZXOHlXV3RhYTFadFNsbGhSRTVWVmxad2VsWnRlR3RqTVZKeldrWmthVk5GU21GV01WcFhWakZWZUZkc2FGUmhNbEp4VldwS2IxWXhVbFphUms1WVVteFdNMVl5ZERCaE1VbDNUbFZrVldKR2NISldSM2hoVjBkUmVtTkdaR2xYUjJoVlZsaHdRbVZHVGtkVWJHeHBVbXMxYjFSWGVFdFdiR1JZVFZod1RsWnNjRmhaYTJoTFdWWktObUpHYUZwaE1YQXpXbGQ0V21WVk5WaGtSbFpvWld0YVdWZFVRbTlqTVZsM1RWaEdVMkV5YUdGV2FrNXZZVVpyZVdONlJsaFdNSEJJV1ZWa2IxUnNaRVpUYkVwWFRWWndhRmRXV2s1bFZsSjFWV3hXYUUxV2NGcFhWM1JyVlRKT1IxWnVSbEpXUlVwUFZXMHhVMWRzYTNkV2JYUlhUV3R3V0ZWdGNFOVdWbHB6VjI1d1dsWldjRXhaTW5NeFYwVTVWMk5IYUU1aVYyaEdWbTF3UjFsWFJYaFhXR2hxVWxaYVUxbHNhRk5qUmxwMFpFWndUbEpzY0hoVk1uQlRWakF4VjFacVZsWk5ibEp5V1ZkNFQxSnJOVmRhUm5CcFVtdHdTVlp0ZEdGVk1WbDRXa2hPV0dKWWFGaFVWVkpTWlZaYVdFMVVVbWxOVmxZMVZXeG9kMVZ0U2xaWGJHaFhZbFJHVDFwVlduTmpWa3B6WTBkNFUySldTbUZYVkVKcllqRmFSMU5zYkZKaVIxSlpWbTE0UzFSR1dsVlNhemxUVFZad01WVnRlRTloVmxwWFkwWndWMkpVUVhoVlZFWlBWakpLUjFkc2FHaGxiWGhaVmtaYVlXUXhUa2RYV0d4c1VqTlNXRlJYZEhkVFZscElZMFpPVjFZd1ZqVldWM2hQV1ZaYWMyTkhhRnBOYm1nelZXcEdkMUl5UmtkVWF6Vk9ZbGRqZUZadE1UUmhNbEY0VWxob2FWSnRhRlpaVkVwVFYwWnNkR1ZGZEdwTlZsWXpWMnRhVDJGck1WaGxTR3hYVFdwV1VGWkVSbUZrVmtaeldrWndWMVl4UmpOV2FrSmhVekpPZEZOclZsVmlSMUp3VmpCV1MxWldXbkZUYm5Cc1VtdHNORlpITlU5VmJVcElWV3M1V2xZelVtaFZNRnByWXpGa2RGSnNaRTVoZWxZMlYxUkNWMkl4VlhsVGEyaFdZWHBzVmxadWNFZGtiRlY1WlVad2JGSnNXbmxaTUdRMFZUSkdObEpVUWxkV1JWcDJXV3BLUjJNeFRuTmhSMmhVVWxWd1dGZFhlRk5TTWxKelYyNUtXR0pWV25GVVYzUmhVakZhU0dWR1RsVmlSbkF4VlZab2ExWXhTbk5qUmxKV1ZrVmFhRmt5YzNoV01XUnlUbFprVTJFelFscFdNV1F3WVRKSmVWVnVUbGhYUjFKWldXeG9VMVpXVm5GUmJVWlVVbTE0ZVZZeU5XdGhSbHAwVld0c1dsWlhUVEZXYWtwTFZsWktWVkZzY0d4aE0wSlJWMWh3UzFReFNuUlNhMlJTWWtkU1QxUlZWbmRXYkZsNFdrUkNhVTFWVmpOVWJGWnJWMGRLY21OSFJsVldSWEJVVmxWYVlXUkhWa2xVYXpsVFlrZDNNVlpIZUZaT1YwWklVMnRhYWxKdGVHRldiRnAzWld4YWNWTnJXbXhTYkhCYVdWVmtSMVV3TUhsaFJGcFhZbGhDU0ZkV1dtdFhSa3B5V2tkb1UyRjZWbmRXVnpBeFVXc3hWMWRZYUZoaVIxSmhWbXBDVjA1R1dsaE9WazVXVFd0d2VWUnNXbk5YYlVWNFkwZG9WMDFHY0hwV2JGcFBZekZPY2s1V1RtbFdhM0JhVm0xd1MwMUZNVWhTYmtwT1ZtMVNWVmxYZEdGWFJsWjFZMFZrYTJKR2NGWlZNblF3VlRBeGNrNVZhRnBoTVhCeVZsUktTMUp0VGtaTlZtaFhUVEJLU1ZaclVrZFhiVlpIWTBWc1ZHSlhhRlJVVkVwdlZsWmFSMVp0Um10TmExcElWakkxVTFSc1RraGhSbVJWVm14YWVsUnJXbUZYUlRWV1QxWm9VMDFJUWxoV2FrbzBZVEZhZEZOc2JHaFNSVFZXVm14YWQyVnNXblJsUjNScVRWWktlbGRyV210aFZrNUdVMnh3VjAxV1NrUlpWRVpLWlVaa2MxcEdhR2xoZWxaNFZsZHdTMkl4YkZkalJtaHJVakJhVDFSV1dtRmxiRmw1WlVkMGFFMVZiRE5VYkZaclZsZEtSMk5JU2xkU00yaG9WakJrVW1WdFRrZGFSMnhZVWpKb1ZsWnNhSGRSYlZaSFZHdGtWR0pIZUc5VmFrSmhWa1phY1ZOdE9WZGlSMUpaV2tWa01HRlZNWEppUkZKWFlsUldTRlpYTVV0V2JHUnpZVVp3YUUxWVFYcFdSbFpoWkRGYWRGSnJhR3RTYkZwdldsZDBZVmRXWkZWUmJUbHFUVlpzTTFSV2FFZFZNa1Y1WVVkR1YyRnJOWFpaVlZweVpWVXhWazlXVGxkaE1XOTNWbGN4TkZReFdYZE5WbHBZVjBoQ1dGbHNVa2ROTVZZMlVtczFiRlpzU2pGV1IzaFhZVmRGZWxGdVdsZFdla0kwVmxSR1lWSXhWbk5XYkZKcFZrZDRkMVpHV21Ga01sWlhWMnhvYTFKRlNsZFVWVkpIVjBac2NsVnNUbGROVlc4eVZtMTRiMVl5U2xWU2EzaFdZbGhvVUZsNlNrZFNNV1IwWWtaT2FFMHdTbUZXYlRGM1VqRnNWMkpHWkZSWFIyaHdWV3RhZDFaR2JITmFSRkpWVFZad2VGVnRkREJXUmxwMFZXeHNZVkpYVWtoV2FrRjRWakZrZFdOR2FHaE5WbkF5VjFaV1lWTXlUWGhVYms1WVlrZFNjRlpyVm1GV1ZscDBaRWRHYTAxWFVrbFdiWFJ6VmxkS1NGVnVRbFpoYTFwTVZHMTRZV05zYTNwaFIyeE9WbXhaTUZacVNqQlpWbVJJVW01T2FsSnRhRmhaVkVaaFpWWndWbGR1VG1wV2EzQjZXVEJrTkZVeVNsZFRiVVpZVmtWS2FGZFdaRWRXTVU1WllrZG9VMkpyU2xsWFYzaFRVbXN4UjJORlZsTmlhelZZVkZkek1WTkdXWGxsUnpsb1ZtMVNTRlV5TlhOV01rcFZVbGhrWVZKRmNGaFpla1pyWkZaV2NrNVdhRk5XUmxwYVZtdGFZVll5VFhkT1dFNXBVbXh3VjFsclpGTlhSbEpXVld0a1dGWnNjRmhaVldRd1YwWktjMk5FUWxkV00yaFFWMVphWVdNeVRraGhSbkJPWW0xbmVsWlhjRWRrTVU1SVUydG9hVkpyTlZsVmJGWnlaVVphZEUxVVVtaE5SRVpJVmpGb2IxWldaRWhsUmxaWFRVZFNkbGt3V2xka1JURlZWVzF3VjJKR2NEWldNblJoVkRKR2NrMVdaR3BTUlVwb1ZteGFXbVF4YkhKYVJYUlRUV3MxUmxWWGVGZFdNVnB5WTBac1YyRnJTbWhWTWpGU1pWWlNjbGR0YUZOaWEwcFFWbGN3TVZFd01YTlhia1pVWW01Q2MxVnRjekZUVmxaMFpFZEdhVkpyY0RCV1YzTTFWMjFLVlZKdVdscGhhMXBvV1RGYVIyUkdTbk5hUlRWb1pXeFpNbFl4VWtOV01rbDRWbGhzVkdFeWFGZFpXSEJ6Vm14YWRXTkZaR3RpUmxZMVdsVmFkMkpHU25OWGJteGFUVWRSTUZaVVNrZE9iRXBWVVd4a1YxSldjREpYVjNCTFVqSk5lRlJ1VG1oU2JIQndWbXBLYjFkR1pGaGxSemxWWWxaYVNGWXhhR3RYUjBwSlVXNUtWVlpzY0ROYVZscDNVbXhhVlZKdGFGZGhNMEY0VmxaYWIyRXhaRWRYYTFwVVlrZG9ZVlpyVm1GamJHdzJVbTEwV0ZadVFraFhhMlJ2WVZaS1dWRnNjRmROVjFGM1dWUktTbVZXVm5WVWJHaFlVakZLV2xkWGVHOVZNVnBYVm01R1VtSlZXbFZWYlhoelRsWndWbUZIZEdoU2JIQXdWbGQwYzFkc1dsaFVWRVpYWVd0d1RGWnNXa3RXVmtaelkwZDRhRTB3U2xKV01XaDNVakpSZUZSc1pGVmliRXB5Vlcxek1WUXhVbFpXYm1SWFlrWnNORmRyVWtOWGJGbDRVbXBPVldKR1duSldNR1JMVTBkR1JrOVdaR2hOVm5CTlZtdFNSMVl5VWtoV2EyeFZZWHBzVkZsclpETk5WbHBJWlVaYVQxWXdXa2xWTW5SaFlXeEtkR1ZIUmxkaVJuQXpXa2Q0WVdOV1RuSmFSM0JvWld4YVdWWnNaRFJoTVZWNFYyNVdVbUZzY0ZoWmJHaHZZVVpXY1ZKdGRGaFNhM0I1VjJ0YVYyRldTWGhUYmxwWFVteEtSRlV5YzNoak1XUjFWVzEwVTAweFNsRldWekI0VGtaa1IxZHVUbWhUUlRWWVZXcENWMDVHYTNkWGJrNVhUVVJHU1ZsVlZsTldNREZIWTBkb1dtVnJXbkphUmxwM1VqRlNjazVXWkdoTlYzUXpWbTB4ZDFNd01VZFZXR2hZWW14S1ZWbFVSbmRXVm14eVYyNWtWMkpHY0hwV01uUnJWR3N4VjFkcmFGWmlSa3A2VmxaYVYxWlZNVVZoZWpBOQ=="
}
Responses
Status: 201 File successfully uploaded.
Content-Type: application/json
-
file_idstring— The file's unique ID.
Example:
{
"file_id": "xBvggqyjQUal6TecwMlYwE"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `124` <br> Invalid access token. <br> **Error Code:** `300` <br> Invalid File type. Exceed max file size: ${maxSize} megabytes. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rate-limits/).
Submit a task import job
- Method:
POST - Path:
/tasks/imports - Tags: Import
Submit an asynchronous import job to import tasks from an external platform into Zoom Tasks. Use the file_id returned from the Upload an import file endpoint.
The import job is processed asynchronously. Use Get import job status to poll the progress and results.
Field mapping (Slack Lists to Zoom Tasks)
Slack Lists has two schema patterns. This endpoint supports both.
- Todo mode - schema contains task-oriented columns such as
todo_completed,todo_due_date, andtodo_assignee. - Normal mode - schema does not contain
todo_completed. Status is inferred fromselectcolumns whenstatus_mappingis provided.
| Slack Column Type | Zoom Tasks Field | Notes |
|---|---|---|
text + is_primary_column: true | Title | Required. The main task name column. |
text + is_primary_column: false | Description | Non-primary text columns (for example, "Description"). |
todo_assignee / user | Assignee | Slack user ID is mapped to Zoom user by email. See user_mapping. |
todo_due_date / date | Due date | Mapped as-is in yyyy-MM-dd format. |
todo_completed | Status | Todo mode only. true -> done, false -> to_do when no status_mapping match is found. |
select | Status | Used in both modes. Option label is matched against status_mapping keys. In normal mode, this is the primary status source. |
rating | Priority | 1 star -> Low, 2 stars -> Medium, 3 stars -> High. |
number / checkbox / email / phone / channel / link / message / vote / reference / attachment / canvas | Description (appended) | Preserved as custom fields. Custom Fields: {column name}: {value}. |
Status precedence if status_mapping resolves a value from select, that value is used first; otherwise the importer falls back to todo_completed and then to_do as the default.
Scopes: tasks:write,tasks:write:admin
Granular Scopes: tasks:write:import,tasks:write:import:admin
Rate Limit Label: LIGHT
Request Body
Content-Type: application/json
-
file_id(required)string— The uploaded file's unique identifier. Obtain this value from the [**Upload an import file**](/docs/api-reference/tasks/methods#operation/uploadTasksImportFile) endpoint. -
source(required)string, possible values:"slack_lists"— The import file's source platform. -
status_mappingobject— Optional. A mapping from source platform status names to Zoom Tasks status display names. This mapping is resolved from Slack `select` option labels. Allowed values are `To do`, `In progress`, `Done`, and `Blocked`. If no mapping is resolved, the importer falls back to `todo_completed` in todo mode (`true` -> `Done`) and defaults to `To do` in normal mode. -
user_mappingobject— Optional. A mapping from source platform user IDs to Zoom user email addresses. If not provided, the service attempts to match users by email address automatically. Unmatched users will be recorded in the import result.
Example:
{
"file_id": "Fxxxxxxxxxxxxxxx",
"source": "slack_lists",
"user_mapping": {
"U09QEC12GE5": "user1@example.com",
"U09PZDF6H3Q": "user2@example.com"
},
"status_mapping": {
"Not started": "To do",
"In progress": "In progress",
"Blocked": "Blocked",
"Done": "Done"
}
}
Responses
Status: 202 Import job submitted successfully. The job is being processed asynchronously.
Content-Type: application/json
-
import_id(required)string— The import job's unique identifier. Use this to poll the job status. -
statusstring, possible values:"pending"— The import job's initial status. -
submitted_atstring, format:date-time— The date and time the import job was submitted, in ISO 8601 format.
Example:
{
"import_id": "imp_abc123",
"status": "pending",
"submitted_at": "2026-04-15T10:06:30Z"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `34002` <br> Invalid parameter. Possible reasons: `file_id` is invalid or expired, `source` is not supported, or a `status_mapping` value is not one of the allowed statuses. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `111800` <br> You do not have permission to submit an import job, or the `file_id` does not belong to the current user. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rate-limits/).
Get import job status
- Method:
GET - Path:
/tasks/imports/{importId} - Tags: Import
Retrieve an import job's current status and results. Poll this endpoint after submitting an import job via Submit a task import job.
Job lifecycle pending > processing > completed or failed
Polling recommendation Poll every 3-5 seconds. Stop when status is completed or failed. Import job results are retained for 7 days.
Scopes: tasks:read,tasks:read:admin
Granular Scopes: tasks:read:import,tasks:read:import:admin
Rate Limit Label: LIGHT
Not supported in Gov cluster
Responses
Status: 200 Import job status retrieved successfully.
Content-Type: application/json
-
import_id(required)string— The import job's unique identifier. -
source(required)string, possible values:"slack_lists"— The import's source platform. -
status(required)string, possible values:"pending", "processing", "completed", "failed"— The import job's current status. -
submitted_at(required)string, format:date-time— The date and time the import job was submitted, in ISO 8601 format. -
total_tasks(required)integer— Total number of tasks found in the source file. Present when status is `processing`, `completed`, or `failed`. -
completed_atstring, format:date-time— The date and time the import job was completed, in ISO 8601 format. Only present when status is `completed` or `failed`. -
errorstring— The reason the entire import job failed. Only present when status is `failed`. -
failed_task_detailsarray— Details of tasks that failed to import. Only present when status is `completed` and `failed_tasks` > 0.Items:
-
errorstring— The reason the task failed to import. -
record_idstring— The failed task's record ID in the source platform. -
titlestring— The failed task's title.
-
-
failed_tasksinteger— Number of tasks that failed to import. Present when status is `processing` or `completed`. -
processed_tasksinteger— Number of tasks processed so far. Only present when status is `processing`. -
project_idstring— The ID of the imported project from the source platform. Only present when status is `completed`. -
project_linkstring— The link of the imported project from the source platform. Only present when status is `completed`. -
project_namestring— The title of the imported list from the source platform. Only present when status is `completed`. -
successful_tasksinteger— Number of tasks successfully imported into Zoom Tasks. Present when status is `processing` or `completed`. -
unmapped_usersarray— List of source platform user IDs that could not be mapped to a Zoom user. Only present when status is `completed`.Items:
string -
warningsarray— Non-fatal warnings encountered during import. Only present when status is `completed`.Items:
string
Example:
{
"import_id": "imp_abc123",
"status": "completed",
"source": "slack_lists",
"submitted_at": "2026-04-15T10:06:30Z",
"completed_at": "2026-04-15T10:06:45Z",
"project_name": "Project tracker",
"project_id": "project_id_123",
"project_link": "https://tasks.example.com/project/project_id_123",
"total_tasks": 1000,
"processed_tasks": 430,
"successful_tasks": 993,
"failed_tasks": 7,
"failed_task_details": [
{
"record_id": "Rec0ABEDKGPQC",
"title": "Print welcome banner",
"error": "Invalid due date format"
}
],
"unmapped_users": [
"U09XYZ",
"U08ABC"
],
"warnings": [
"2 tasks created without due date"
],
"error": "Invalid file format: missing required field list_metadata"
}
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `111800` <br> You do not have permission to access this import job. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `112100` <br> The import job was not found. It may have expired (results are retained for 7 days) or the ID is invalid. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rate-limits/).
List tasks
- Method:
GET - Path:
/tasks/items - Tags: Tasks
Retrieves tasks assigned to, or created by, the current user with advanced filtering, sorting, and pagination options.
Scopes: tasks:read,tasks:read:admin
Granular Scopes: tasks:read:list_tasks:admin,tasks:read:list_tasks
Rate Limit Label: LIGHT
Responses
Status: 200 Tasks retrieved successfully
Content-Type: application/json
-
tasks(required)array— List of tasks matching the query criteria.Items:
-
ai_generated(required)boolean— Whether the task was generated by AI. -
create_time(required)string, format:date-time— The task create date-time in UTC/GMT. -
is_public(required)boolean, default:false— Determines the task's visibility. * `true` - The task is accessible to all members of your organization. * `false` - The task is accessible only to the assigned users and collaborators. -
modify_time(required)string, format:date-time— The task modify date-time in UTC/GMT. -
priority(required)string, possible values:"Low", "Medium", "High", "Highest", default:"Medium"— The task's priority level. -
source_type(required)string, possible values:"user", "aic_meeting_summary", "whiteboard", "notes", "docs", "phone", "chat", "email", "meeting", "aic"— Type of the source that created the task. -
starred(required)boolean— Whether the task is starred by the user. -
status(required)string, possible values:"To do", "In progress", "Done", "Blocked", "Recommended", default:"To do"— The task's current status. -
task_id(required)string— The unique identifier of the task. -
title(required)string— The title of the task. -
assigneesarray— A list of all assignees associated with the task. Only the first 5 assignees are returned.Items:
-
display_name(required)string— The display name of the assignee. -
user_id(required)string— The Zoom user ID of the assignee. -
avatarstring, format:uri— The avatar image URL of the assignee. -
emailstring, format:email— The email address of the assignee.
-
-
collaboratorsarray— A list of all collaborators associated with the task. Only the first 5 collaborators are returned.Items:
-
display_name(required)string— The display name of the collaborator. -
user_id(required)string— The Zoom user ID of the collaborator. -
avatarstring, format:uri— The avatar image URL of the collaborator. -
emailstring, format:email— The email address of the collaborator.
-
-
descriptionstring— A description of the task that will be truncated. The maximum length is 200 characters. -
due_datestring, format:date— The task's due date in UTC, formatted as `yyyy-MM-dd`. -
friendly_task_idstring— The task friendly ID. -
linkstring— The task share link. -
unreadboolean— Whether the task is unread by the current user.
-
-
total_records(required)integer— The total number of records found. -
next_page_tokenstring— Use the next page token to paginate through a large set of results. A next page token is returned when the available results exceed the current page size. This token's expiration period is 15 minutes. -
page_sizeinteger— The number of records returned per page in a single API call.
Example:
{
"next_page_token": "qUEQqB1V0HVhJmwKFQrGOD",
"page_size": 10,
"total_records": 2,
"tasks": [
{
"task_id": "z2vo9qNRRHKArlJqkVHNUw",
"title": "Complete project documentation",
"description": "Write comprehensive documentation for the new API endpoints...",
"priority": "Medium",
"status": "To do",
"is_public": false,
"due_date": "2025-09-24",
"ai_generated": false,
"starred": true,
"unread": false,
"assignees": [
{
"user_id": "CcrEGgmeQem1uyJsuIRKwA",
"display_name": "John Doe",
"email": "john.doe@example.com",
"avatar": "https://example.com/avatar.jpg"
}
],
"collaborators": [
{
"user_id": "CcrEGgmeQem1uyJsuIRKwA",
"display_name": "John Doe",
"email": "john.doe@example.com",
"avatar": "https://example.com/avatar.jpg"
}
],
"friendly_task_id": "Task-1",
"link": "https://tasks.zoomdev.us/ws53iQgOOkOdzVTxZaVoRA/TASK-1",
"create_time": "2025-03-31T12:02:00Z",
"modify_time": "2025-03-31T12:02:00Z",
"source_type": "user"
}
]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `38004` <br> invalid params {params_name} <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rate-limits/).
Create a new task
- Method:
POST - Path:
/tasks/items - Tags: Tasks
Provide essential details to create a new task without file attachments.
Scopes: tasks:write
Granular Scopes: tasks:write:task
Rate Limit Label: LIGHT
Request Body
Content-Type: application/json
-
title(required)string— The tasks's title. Maximum 500 characters. -
assigneesarray— A list of assignees to add to the task. Maximum of 20. If empty, the request user is added by default.Items:
-
emailstring— The email address of the assignee to invite. The potential assignee must belong to the same account as the requesting user.
-
-
collaboratorsarray— A list of collaborators to invite to the task. Maximum 20.Items:
-
emailstring— The email address of the collaborator to invite. The potential collaborator must belong to the same account as the requesting user.
-
-
descriptionstring— The task's detailed description. Maximum 10,000 characters. -
due_datestring, format:date— The task's due date in UTC, formatted as `yyyy-MM-dd`. -
invite_messagestring— Include an optional message when inviting a user as a collaborator or assignee. Maximum length is 200 characters. -
is_publicboolean, default:false— Determines the task's visibility. * `true` - The task is accessible to all members of your organization. * `false` - The task is accessible only to the assigned users and collaborators. -
prioritystring, possible values:"Low", "Medium", "High", "Highest", default:"Medium"— The task's priority level. -
skip_notificationsboolean— Whether to skip sending notifications to collaborators. -
starredboolean, default:false— Whether the task is starred. -
statusstring, possible values:"To do", "In progress", "Done", "Blocked", "Recommended", default:"To do"— The task's current status.
Example:
{
"title": "Complete project documentation",
"description": "Write comprehensive documentation for the new API endpoints",
"priority": "Medium",
"status": "To do",
"due_date": "2025-09-24",
"is_public": false,
"starred": false,
"collaborators": [
{
"email": "potential-collaborator@example.com"
}
],
"invite_message": "Please join this task to help review the API documentation.",
"skip_notifications": false,
"assignees": [
{
"email": "invited-assignee@example.com"
}
]
}
Responses
Status: 201 Task created successfully.
Content-Type: application/json
-
create_time(required)string, format:date-time— The creation date and time in UTC/GMT format. -
is_public(required)boolean, default:false— Determines the task's visibility. * `true` - The task is accessible to all members of your organization. * `false` - The task is accessible only to the assigned users and collaborators. -
priority(required)string, possible values:"Low", "Medium", "High", "Highest", default:"Medium"— The task's priority level. -
starred(required)boolean— Indicates whether the task is starred by the user. -
status(required)string, possible values:"To do", "In progress", "Done", "Blocked", "Recommended", default:"To do"— The task's current status. -
task_id(required)string— The created task's unique identifier. -
title(required)string— The task's title. -
assigneesarray— A list of all assignees associated with the task.Items:
-
user_id(required)string— The assignee's Zoom user ID. -
emailstring— The email address of the assignee.
-
-
collaboratorsarray— A list of collaborators associated with the task.Items:
-
user_id(required)string— The collaborator's Zoom user ID. -
emailstring— The email address of the collaborator.
-
-
descriptionstring— The task's detailed description. -
due_datestring, format:date— The task's due date in UTC, formatted as `yyyy-MM-dd`. -
friendly_task_idstring— The human-readable identifier of the task. -
linkstring— The direct URL link to the task.
Example:
{
"task_id": "z2vo9qNRRHKArlJqkVHNUw",
"title": "Complete project documentation",
"description": "Write comprehensive documentation for the new API endpoints",
"priority": "Medium",
"status": "To do",
"is_public": false,
"due_date": "2025-09-24",
"starred": false,
"collaborators": [
{
"user_id": "w0RChiauQeqRlv5fgxYULQ",
"email": "john.doe@example.com"
}
],
"assignees": [
{
"user_id": "w0RChiauQeqRlv5fgxYULQ",
"email": "invited-assignee@example.com"
}
],
"create_time": "2025-03-25T07:29:29Z",
"friendly_task_id": "Task-1",
"link": "https://tasks.example.com/ws53iQgOOkOdzVTxZaVoRA/TASK-1"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `34002` <br> Invalid email {email}. <br> **Error Code:** `34002` <br> The title is too long. <br> **Error Code:** `34002` <br> The description is too long. <br> **Error Code:** `34002` <br> Invalid field {field_name}. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rate-limits/).
Get task details
- Method:
GET - Path:
/tasks/items/{taskId} - Tags: Tasks
Retrieves detailed information about a specific task by it’s ID
Scopes: tasks:read,tasks:read:admin
Granular Scopes: tasks:read:task,tasks:read:task:admin
Rate Limit Label: LIGHT
Responses
Status: 200 Task details retrieved successfully
Content-Type: application/json
-
create_time(required)string, format:date-time— The task create date-time in UTC/GMT. -
is_ai_generated(required)boolean— Whether the task was generated by AI. -
is_public(required)boolean, default:false— Determines the task's visibility. * `true` - The task is accessible to all members of your organization. * `false` - The task is accessible only to the assigned users and collaborators. -
modify_time(required)string, format:date-time— The task modify date-time in UTC/GMT. -
priority(required)string, possible values:"Low", "Medium", "High", "Highest", default:"Medium"— The task's priority level. -
source_type(required)string, possible values:"user", "aic_meeting_summary", "whiteboard", "notes", "docs", "phone", "chat", "email", "meeting", "aic"— Type of the source that created the task. -
starred(required)boolean— Whether the task is starred by the user. -
status(required)string, possible values:"To do", "In progress", "Done", "Blocked", "Recommended", default:"To do"— The task's current status. -
task_id(required)string— The unique identifier of the task. -
title(required)string— The title of the task. -
assigneesarray— A list of all assignees associated with the task.Items:
-
display_name(required)string— The display name of the assignee. -
user_id(required)string— The Zoom user ID of the assignee. -
avatarstring, format:uri— The avatar image URL of the assignee. -
emailstring, format:email— The email address of the assignee.
-
-
associated_meetingobject— Associated meeting information-
idinteger, format:int64— [Meeting ID](https://support.zoom.us/hc/en-us/articles/201362373-What-is-a-Meeting-ID-): Unique identifier of the meeting in **long** format, represented as int64 data type in JSON, also known as the meeting number. -
meeting_datestring, format:date-time— The meeting start date-time in UTC/GMT. -
topicstring— The topic of the associated meeting -
uuidstring— The unique Meeting ID. Each meeting instance will generate its own Meeting UUID.
-
-
collaboratorsarray— A list of all collaborators associated with the task.Items:
-
display_name(required)string— The display name of the collaborator. -
user_id(required)string— The Zoom user ID of the collaborator. -
avatarstring, format:uri— The avatar image URL of the collaborator. -
emailstring, format:email— The email address of the collaborator.
-
-
descriptionstring— A detailed description of the task. -
due_datestring, format:date— The task's due date in UTC, formatted as `yyyy-MM-dd`. -
friendly_task_idstring— The task friendly ID. -
linkstring— The task share link. -
tasks_attachmentsarray— List of attachments associated with the taskItems:
-
attachment_idstring— The unique identifier of the attachment. -
download_urlstring— The download link for the attachment will remain valid for 7,200 seconds. -
file_namestring— The name of the attached file. -
file_sizeinteger— The size of the file in bytes. -
mime_typestring— The MIME type of the file. -
upload_timestring, format:date-time— The file upload date-time in UTC/GMT.
-
Example:
{
"task_id": "z2vo9qNRRHKArlJqkVHNUw",
"title": "the tasks title demo",
"description": "the task description",
"priority": "Medium",
"status": "To do",
"is_public": false,
"due_date": "2025-09-24",
"is_ai_generated": false,
"starred": false,
"tasks_attachments": [],
"assignees": [
{
"user_id": "w0RChiauQeqRlv5fgxYULQ",
"display_name": "John Doe",
"email": "john.doe@example.com",
"avatar": "https://example.com/avatar.jpg"
}
],
"collaborators": [
{
"user_id": "w0RChiauQeqRlv5fgxYULQ",
"display_name": "John Doe",
"email": "john.doe@example.com",
"avatar": "https://example.com/avatar.jpg"
}
],
"source_type": "user",
"friendly_task_id": "Task-1",
"link": "https://tasks.zoomdev.us/ws53iQgOOkOdzVTxZaVoRA/TASK-1",
"associated_meeting": {
"id": 97763643886,
"uuid": "aDYlohsHRtCd4ii1uC2+hA==",
"topic": "Tasks Meeting",
"meeting_date": "2025-03-31T12:02:00Z"
},
"create_time": "2025-03-31T12:02:00Z",
"modify_time": "2025-03-31T12:02:00Z"
}
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `111800` <br> You don't have permission to request the task. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `112100` <br> The resource not found. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rate-limits/).
Delete a task
- Method:
DELETE - Path:
/tasks/items/{taskId} - Tags: Tasks
Permanently delete a task and all its associated data including descriptions, attachments, collaborators, and integrations. This operation cannot be undone.
Scopes: tasks:delete,tasks:delete:admin
Granular Scopes: tasks:delete:task:admin,tasks:delete:task
Rate Limit Label: LIGHT
Responses
Status: 204 Task deleted successfully
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `111800` <br> You don't have permission to request the task. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `112100` <br> The resource not found. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rate-limits/).
Update task fields
- Method:
PATCH - Path:
/tasks/items/{taskId} - Tags: Tasks
Updates specific fields of an existing task. Only provided fields will be updated, others will remain unchanged.
Scopes: tasks:write,tasks:write:admin
Granular Scopes: tasks:update:task,tasks:update:task:admin
Rate Limit Label: LIGHT
Request Body
Content-Type: application/json
-
descriptionstring— A detailed description of the task. Maximum 10,000 characters. -
due_datestring, format:date— The task's due date in UTC, formatted as `yyyy-MM-dd`. -
is_publicboolean, default:false— Determines the task's visibility. * `true` - The task is accessible to all members of your organization. * `false` - The task is accessible only to the assigned users and collaborators. -
prioritystring, possible values:"Low", "Medium", "High", "Highest", default:"Medium"— The task's priority level. -
starredboolean— Whether the task should be starred. -
statusstring, possible values:"To do", "In progress", "Done", "Blocked", "Recommended", default:"To do"— The task's current status. -
titlestring— The title of the task. Maximum 500 characters.
Example:
{
"title": "Complete project documentation",
"description": "Write comprehensive documentation for the new API endpoints",
"priority": "Medium",
"status": "To do",
"due_date": "2025-09-24",
"is_public": false,
"starred": true
}