Tracks
Create, update, search, delete, and bulk apply tasks and goals.
Use track endpoints for active work.
Create a task
POST /v1/tracks
Authorization: Bearer <token>
Content-Type: application/json
{
"type": "task",
"title": "Review docs",
"scope": { "type": "personal" },
"task": { "status": "todo", "dueDate": "2026-06-05" }
}Create a goal
{
"type": "goal",
"title": "Ship documentation v1",
"scope": { "type": "projects", "ids": ["project-id"] },
"goal": { "status": "on_track", "progress": 40 }
}Search
Task filters include status, assignee, goalId, parentId, dependsOn, date ranges, and doneAt ranges. Goal filters include status, progressMin, progressMax, and date ranges.
When type is task, goal-only filters such as progressMin and progressMax are invalid. When type is goal, task-only filters such as assignee, goalId, parentId, dependsOn, and doneAtFrom / doneAtTo are invalid.
POST /v1/tracks/search consumes credits as a search call. Use search results to narrow the target set before fetching individual tracks.
Bulk apply
{
"scope": { "type": "personal" },
"updateDrafts": [
{ "id": "t001", "title": "Task A", "task": { "status": "todo" } },
{ "id": "t002", "title": "Task B", "task": { "status": "todo", "dependsOn": ["t001"] } }
]
}Non-UUID draft IDs create new records. UUID draft IDs update existing records.
In updateDrafts, type is inferred from task or goal. Passing both is invalid. New drafts require title; UUID drafts keep omitted fields unchanged.