/api/v1/tasksList tasks, filtered by view/tag, or full-text search
Requires read scope.
| Parameter | In | Type | Required | Notes |
|---|---|---|---|---|
limit | query | integer | no | Defaults to 50. |
cursor | query | string | no | Opaque page token from a previous response's nextCursor. Search results (q) and list results use different cursor shapes; a cursor from one is rejected by the other with validation_failed. |
view | query | today, upcoming, all, completed | no | One of today, upcoming, all, completed. Defaults to all. today returns open tasks due by the end of today in the caller's timezone, which includes anything already overdue; upcoming starts at tomorrow. all is returned in the user's manual order (see PUT /api/v1/tasks/{id}/position); the other three are ordered by createdAt. |
tag | query | string | no | — |
q | query | string | no | Full-text search over title and notes. Takes over the whole listing — view and tag are ignored when q is set, and results are ranked by relevance rather than recency. Paginated like every other list: follow nextCursor to reach the rest of the matches. |
{
"items": [
{
"id": "string",
"title": "string",
"notes": "string",
"priority": "high",
"dueAt": "2026-08-21T09:00:00.000Z",
"completedAt": "2026-08-21T09:00:00.000Z",
"tags": [
"string"
],
"createdAt": "2026-08-21T09:00:00.000Z",
"updatedAt": "2026-08-21T09:00:00.000Z",
"parentId": "string",
"goalId": "string",
"recurrence": "string",
"location": "string",
"assigneeId": "string",
"subtasks": [
{
"id": "string",
"title": "string",
"notes": "string",
"priority": "high",
"dueAt": "2026-08-21T09:00:00.000Z",
"completedAt": "2026-08-21T09:00:00.000Z",
"tags": [
"string"
],
"createdAt": "2026-08-21T09:00:00.000Z",
"updatedAt": "2026-08-21T09:00:00.000Z",
"parentId": "string",
"goalId": "string",
"recurrence": "string",
"location": "string",
"assigneeId": "string"
}
],
"progress": {
"completed": 1,
"total": 1,
"allComplete": false
}
}
],
"nextCursor": "string"
}Errors: 400 Malformed cursor, view, or query param. · 401 No valid session. · 403 Cross-origin request without an API key (docs/adr/0021-bearer-keys-may-cross-origins.md), or an API key lacking the scope this route needs. · 429 Rate limited.