Tasks
The Tasks API provides CRUD access to project tasks, plus ancillary actions for status, assignment, tags, archive/activate, clone, comments and timers.New to the API? Start with Getting started (base URL, response envelope, errors, pagination) and Authentication (API keys). Those conventions apply to every endpoint below and are not repeated here.
Identifier note: tasks are addressed by their numerictask_idand always belong to a project (task_projectid).task_statusis ataskstatus_idandtask_priorityis ataskpriority_id.
Scope: starting/stopping individual timers, recurring settings, task dependencies, per-user
notes, attachments/cover image, kanban position, bulk actions and pinning are managed in-app
and are not part of this API. Checklists on a task are handled by the
Checklists API (resource_type=task). Timers are read-only here, plus a
stop-all command.
The task object
| Field | Type | Notes |
|---|---|---|
id | integer | Task id. |
title | string | |
description | string|null | |
status | object | { id, title, color } — id is the taskstatus_id. |
priority | object | { id, title, color } — id is the taskpriority_id. |
active_state | string | active or archived. |
client_visibility | string | yes/no (visible to the client). |
billable | string | yes/no. |
project | object | { id, title }. |
client | object | { id, name } (derived from the project). |
milestone | object | { id, name }. |
dates | object | start, due, created, updated. |
time_logged | integer | Total logged time (seconds). |
assigned | array | Assigned team members — set via the assigned action. |
tags | array | Tag titles. |
List / search tasks
| Parameter | Type | Description |
|---|---|---|
project_id | integer | Filter by project. |
client_id | integer | Filter by client. |
status | integer | Filter by taskstatus_id. |
priority | integer | Filter by taskpriority_id. |
milestone_id | integer | Filter by milestone. |
active_state | string | active or archived. |
assigned_user_id | integer | Filter by an assigned team user. |
search | string | Free-text on the title. |
sort | string | task_title, task_date_due, task_created, task_position. |
order | string | asc or desc (default desc). |
limit / page | integer | Pagination (limit max 100). |
{ data, meta, message } (200).
Get a task
200), message “Task retrieved successfully.”
Create a task
| Parameter | Type | Required | Notes |
|---|---|---|---|
task_projectid | integer | yes | Existing project id. |
task_title | string | yes | |
task_status | integer | yes | A taskstatus_id. |
task_priority | integer | yes | A taskpriority_id. |
task_milestoneid | integer | no | Must belong to the project. Defaults to uncategorised. |
task_date_start / task_date_due | date | no | Due must be on/after start. |
task_description | string | no | |
task_client_visibility | string | no | on to make visible to the client. |
task_billable | string | no | on to mark billable. |
201), message “Task created successfully.”
Update a task
200), message “Task updated successfully.”
Delete a task
{ "data": { "id": 120 }, "message": "Task deleted successfully." }.
Change status
| Parameter | Type | Required | Notes |
|---|---|---|---|
status | integer | yes | A taskstatus_id. |
200), message “Task status updated successfully.”
Set assigned team members
| Parameter | Type | Required | Notes |
|---|---|---|---|
assigned | array of integers | yes | Team user ids. |
200), message “Task assignees updated successfully.”
Set tags
Archive / activate
active_state between archived and active.
Clone a task
| Parameter | Type | Required | Notes |
|---|---|---|---|
task_title | string | yes | |
task_status | integer | yes | A taskstatus_id. |
project_id | integer | yes | Target project. |
task_milestoneid | integer | yes | Must belong to the target project. |
copy_checklist | string | no | on to copy checklist items. |
copy_files | string | no | on to copy files. |
201), message “Task cloned successfully.”
Timers
Timers are read-only via the API, plus a stop-all command.List timers
[{ id, user: {id,name}, started, stopped, time, status, billing_status }].
Stop all running timers
{ "data": { "id": 120 }, "message": "..." }.
Comments
List comments
Add a comment
| Parameter | Type | Required | Notes |
|---|---|---|---|
comment | string | yes | The comment text. |
Delete a comment
Errors
See Getting started for the shared error format. Task-specific:| Status | Meaning |
|---|---|
404 Not Found | The task (or comment) id does not exist. |
409 Conflict | Invalid milestone for the project, or the project has no default milestone. |
422 Unprocessable Entity | Validation failed (e.g. missing project/title/status/priority). |