Skip to content

Create a task

POST /v1/tasks

Creates a new task in the team the API key is bound to. The task is auto-numbered. If taskStatusId is omitted, the team’s default status is used. Pass taskListIds to attach the task to one or more lists, parentId to make it a subtask, and description for a markdown body that the web app’s collaborative editor will render.

Connected web clients in the team receive a realtime event so the new task shows up in their UI without a refresh.

No path parameters.

Content-Type: application/json

FieldTypeRequiredDescription
titlestringyesTask title. Must contain at least one non-whitespace character.
descriptionstringnoCommonMark markdown body. Headings, bold, italic, lists, code blocks, and links are preserved. Inline code, blockquotes, images, and horizontal rules are stripped.
prioritystring | nullnoOne of low, medium, high, urgent, or null to leave unset.
dueDatestring | nullnoISO 8601 date string (e.g. 2026-05-12) or null.
assigneeIdsarray of stringnoUser IDs (UUIDs) to assign. Defaults to nobody if omitted.
taskStatusIdnumbernoNumeric status ID. Falls back to the team’s default status if not provided.
parentIdnumbernoIf provided, the new task is created as a subtask of this parent.
taskListIdsarray of numbernoNumeric IDs of lists to attach the task to. The task can be created with no lists.
{
  "title": "Wire up onboarding email",
  "description": "## Steps\n\n- Configure SMTP\n- Send via **Resend**",
  "priority": "high",
  "dueDate": "2026-05-12",
  "assigneeIds": ["u_abc123"],
  "taskListIds": [12, 19],
  "parentId": 200
}

201 Created — the created task:

FieldTypeDescription
idnumberNumeric ID of the new task.
titlestringTask title (trimmed).
numbernumberAuto-incrementing task number within the team.
keystringStable UUID key for the task.
prioritystring | nullThe priority you sent, or null.
dueDatestring | nullThe due date you sent, or null.
parentIdnumber | nullParent task ID if this is a subtask, otherwise null.
createdAtstringISO 8601 timestamp of creation.
updatedAtstringISO 8601 timestamp of the last update.
statusobjectThe applied status — see below.
status.idnumberNumeric ID of the status.
status.namestringDisplay name of the status.
assigneesarray of objectsUsers now assigned to the task.
assignees[].idstringUser ID (UUID).
assignees[].namestringUser’s display name.
assignees[].emailstringUser’s email address.
taskListsarray of objectsLists the task is now attached to. May be empty.
taskLists[].idnumberNumeric ID of the list.
taskLists[].namestringDisplay name of the list.

400 Bad Request is returned with { "error": "..." } when:

  • title is missing or empty
  • One or more taskListIds don’t belong to your team
  • parentId doesn’t belong to your team
  • taskStatusId doesn’t belong to your team