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
  • assignees

    array — 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.

    • avatar

      string, format: uri — The assignee's avatar image URL.

    • email

      string, format: email — The email address of the assignee.

  • task_id

    string — 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_message

    string — An optional message to include with the assignee invitation.

  • skip_notifications

    boolean, 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.

    • avatar

      string, format: uri — The assignee's Zavatar image URL.

    • email

      string, 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
  • collaborators

    array — 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.

    • avatar

      string, format: uri — The avatar image URL of the collaborator.

    • email

      string, format: email — The email address of the collaborator.

  • task_id

    string — 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_message

    string — An optional message to include with the collaborator invitation.

  • skip_notifications

    boolean — 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.

    • avatar

      string, format: uri — The collaborator's avatar image URL.

    • email

      string, 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
  • comments

    array — The list of comments associated with the task.

    Items:

    • comment_id

      string — The unique identifier of the comment.

    • content

      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.

      • attributes

        object — Optional metadata for the fragment. Currently supports only hyperlinks.

        • link

          string — The URL associated with the fragment's text. Typically an absolute `http://` or `https://` link.

      • mention

        object — Represents a mention of an entity (e.g., a user). If present, the fragment represents a mention instead of plain text.

        • avatar

          string, format: uri — The avatar image URL of the user.

        • display_name

          string — The display name of the user.

        • email

          string — The email address of the user being mentioned.

        • user_id

          string — The user ID of the user being mentioned.

      • text

        string — 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_text

      string — A plain text version of the entire comment content.

    • create_time

      integer, format: int64 — Creation timestamp in milliseconds.

  • next_page_token

    string — 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_size

    integer — The number of records returned per page in a single API call.

  • total_records

    integer — 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.

    • attributes

      object — Optional metadata for the fragment. Currently supports only hyperlinks.

      • link

        string — The URL associated with the fragment's text, typically an absolute http:// or https:// link.

    • mention

      object — 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.

      • email

        string, format: email — The email address of the user being mentioned.

      • user_id

        string — The user ID of the user being mentioned.

    • text

      string — 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.

    • attributes

      object — Optional metadata for the fragment. Currently supports only hyperlinks.

      • link

        string — The URL associated with the fragment's text, typically an absolute http:// or https:// link.

    • mention

      object — Represents a mention of an entity (e.g., a user). If present, the fragment represents a mention instead of plain text.

      • avatar

        string, format: uri — The avatar image URL of the user.

      • display_name

        string — The display name of the user.

      • email

        string — The email address of the user being mentioned.

      • user_id

        string — The user ID of the user being mentioned.

    • text

      string — 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

    string — A plain text version of the entire comment content.

  • create_time

    integer, 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_id

    string — 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.

  1. Todo mode - schema contains task-oriented columns such as todo_completed, todo_due_date, and todo_assignee.
  2. Normal mode - schema does not contain todo_completed. Status is inferred from select columns when status_mapping is provided.
Slack Column TypeZoom Tasks FieldNotes
text + is_primary_column: trueTitleRequired. The main task name column.
text + is_primary_column: falseDescriptionNon-primary text columns (for example, "Description").
todo_assignee / userAssigneeSlack user ID is mapped to Zoom user by email. See user_mapping.
todo_due_date / dateDue dateMapped as-is in yyyy-MM-dd format.
todo_completedStatusTodo mode only. true -> done, false -> to_do when no status_mapping match is found.
selectStatusUsed in both modes. Option label is matched against status_mapping keys. In normal mode, this is the primary status source.
ratingPriority1 star -> Low, 2 stars -> Medium, 3 stars -> High.
number / checkbox / email / phone / channel / link / message / vote / reference / attachment / canvasDescription (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_mapping

    object — 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_mapping

    object — 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.

  • status

    string, possible values: "pending" — The import job's initial status.

  • submitted_at

    string, 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_at

    string, format: date-time — The date and time the import job was completed, in ISO 8601 format. Only present when status is `completed` or `failed`.

  • error

    string — The reason the entire import job failed. Only present when status is `failed`.

  • failed_task_details

    array — Details of tasks that failed to import. Only present when status is `completed` and `failed_tasks` > 0.

    Items:

    • error

      string — The reason the task failed to import.

    • record_id

      string — The failed task's record ID in the source platform.

    • title

      string — The failed task's title.

  • failed_tasks

    integer — Number of tasks that failed to import. Present when status is `processing` or `completed`.

  • processed_tasks

    integer — Number of tasks processed so far. Only present when status is `processing`.

  • project_id

    string — The ID of the imported project from the source platform. Only present when status is `completed`.

  • project_link

    string — The link of the imported project from the source platform. Only present when status is `completed`.

  • project_name

    string — The title of the imported list from the source platform. Only present when status is `completed`.

  • successful_tasks

    integer — Number of tasks successfully imported into Zoom Tasks. Present when status is `processing` or `completed`.

  • unmapped_users

    array — List of source platform user IDs that could not be mapped to a Zoom user. Only present when status is `completed`.

    Items:

    string

  • warnings

    array — 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.

    • assignees

      array — 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.

      • avatar

        string, format: uri — The avatar image URL of the assignee.

      • email

        string, format: email — The email address of the assignee.

    • collaborators

      array — 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.

      • avatar

        string, format: uri — The avatar image URL of the collaborator.

      • email

        string, format: email — The email address of the collaborator.

    • description

      string — A description of the task that will be truncated. The maximum length is 200 characters.

    • due_date

      string, format: date — The task's due date in UTC, formatted as `yyyy-MM-dd`.

    • friendly_task_id

      string — The task friendly ID.

    • link

      string — The task share link.

    • unread

      boolean — Whether the task is unread by the current user.

  • total_records (required)

    integer — The total number of records found.

  • next_page_token

    string — 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_size

    integer — 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.

  • assignees

    array — A list of assignees to add to the task. Maximum of 20. If empty, the request user is added by default.

    Items:

    • email

      string — The email address of the assignee to invite. The potential assignee must belong to the same account as the requesting user.

  • collaborators

    array — A list of collaborators to invite to the task. Maximum 20.

    Items:

    • email

      string — The email address of the collaborator to invite. The potential collaborator must belong to the same account as the requesting user.

  • description

    string — The task's detailed description. Maximum 10,000 characters.

  • due_date

    string, format: date — The task's due date in UTC, formatted as `yyyy-MM-dd`.

  • invite_message

    string — Include an optional message when inviting a user as a collaborator or assignee. Maximum length is 200 characters.

  • is_public

    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

    string, possible values: "Low", "Medium", "High", "Highest", default: "Medium" — The task's priority level.

  • skip_notifications

    boolean — Whether to skip sending notifications to collaborators.

  • starred

    boolean, default: false — Whether the task is starred.

  • status

    string, 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.

  • assignees

    array — A list of all assignees associated with the task.

    Items:

    • user_id (required)

      string — The assignee's Zoom user ID.

    • email

      string — The email address of the assignee.

  • collaborators

    array — A list of collaborators associated with the task.

    Items:

    • user_id (required)

      string — The collaborator's Zoom user ID.

    • email

      string — The email address of the collaborator.

  • description

    string — The task's detailed description.

  • due_date

    string, format: date — The task's due date in UTC, formatted as `yyyy-MM-dd`.

  • friendly_task_id

    string — The human-readable identifier of the task.

  • link

    string — 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.

  • assignees

    array — 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.

    • avatar

      string, format: uri — The avatar image URL of the assignee.

    • email

      string, format: email — The email address of the assignee.

  • associated_meeting

    object — Associated meeting information

    • id

      integer, 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_date

      string, format: date-time — The meeting start date-time in UTC/GMT.

    • topic

      string — The topic of the associated meeting

    • uuid

      string — The unique Meeting ID. Each meeting instance will generate its own Meeting UUID.

  • collaborators

    array — 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.

    • avatar

      string, format: uri — The avatar image URL of the collaborator.

    • email

      string, format: email — The email address of the collaborator.

  • description

    string — A detailed description of the task.

  • due_date

    string, format: date — The task's due date in UTC, formatted as `yyyy-MM-dd`.

  • friendly_task_id

    string — The task friendly ID.

  • link

    string — The task share link.

  • tasks_attachments

    array — List of attachments associated with the task

    Items:

    • attachment_id

      string — The unique identifier of the attachment.

    • download_url

      string — The download link for the attachment will remain valid for 7,200 seconds.

    • file_name

      string — The name of the attached file.

    • file_size

      integer — The size of the file in bytes.

    • mime_type

      string — The MIME type of the file.

    • upload_time

      string, 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
  • description

    string — A detailed description of the task. Maximum 10,000 characters.

  • due_date

    string, format: date — The task's due date in UTC, formatted as `yyyy-MM-dd`.

  • is_public

    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

    string, possible values: "Low", "Medium", "High", "Highest", default: "Medium" — The task's priority level.

  • starred

    boolean — Whether the task should be starred.

  • status

    string, possible values: "To do", "In progress", "Done", "Blocked", "Recommended", default: "To do" — The task's current status.

  • title

    string — 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
}

Responses

Status: 204 Task updated successfully
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `34002` <br> Invalid field {field_name}. <br> **Error Code:** `34002` <br> The title is too long. <br> **Error Code:** `34002` <br> The description is too long. <br>
Status: 403 **HTTP Status Code:** `403` <br> Forbidden **Error Code:** `111800` <br> You don't have permission to request the task. <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/).