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.