API
The Task exposes a JSON API for reading projects, lists, tasks, and subtasks, and for updating the status of projects and tasks. Access is authenticated with a personal API key scoped to the organizations you choose.
Authentication
Create a key under Settings → API Keys, choosing which of your organizations it may access. The full key is shown once at creation — store it safely. Send it as a Bearer token on every request:
Authorization: Bearer qt_your_key_here
Accept: application/json
A key can only reach the organizations it was granted, further limited to organizations you are still a member of. Write operations require an admin or member role in the target organization. All endpoints are versioned under /api/v1.
Read tasks
GET /api/v1/tasks
Returns top-level tasks with their subtasks nested and full task info. Optional query parameters: organization_id, project_id, list_id, status, and include_completed (default true).
{
"data": [
{
"id": 12,
"title": "Design homepage",
"status": "in_progress",
"priority": "high",
"project_id": 3,
"list_id": 7,
"is_subtask": false,
"assignee": { "id": 5, "name": "Ada" },
"progress": { "total_subtasks": 2, "completed_subtasks": 1, "percentage": 50 },
"subtasks": [
{ "id": 18, "title": "Wireframe", "status": "completed", "is_subtask": true }
]
}
]
}
Read projects
GET /api/v1/projects # all accessible projects, lists → tasks → subtasks
GET /api/v1/projects/{id} # a single project tree
Each project includes its lists (with a subtask-weighted completion_percentage), and each list includes its tasks with nested subtasks.
Update status
Update one or many records in a single request. Tasks and subtasks share the tasks endpoint.
POST /api/v1/tasks
{ "tasks": [ { "id": 12, "status": "completed" }, { "id": 18, "status": "in_progress" } ] }
POST /api/v1/projects
{ "projects": [ { "id": 3, "status": "active" } ] }
Valid task statuses: pending, in_progress, in_review, completed, cancelled.
Valid project statuses: planning, active, on_hold, completed, archived.
The response returns the updated records under data and any items that could not be updated under errors. If every item succeeds the status is 200; if some items fail (e.g. an id outside your key's organizations) the status is 207. Lists do not have a status and cannot be updated.