Skip to main content

List tasks for a project

GET 

/api/projects/:id/tasks

List tasks for a project. When called without query params, returns the full task list (with relations). Requires tasks.read. Pass ?fields=minimal to receive only id, title, taskNumber, and taskKey (used for gate criterion linking and MCP key resolution) — that mode accepts full-scope tasks.read, gates.create, or gates.update. The .own scope on tasks.read does NOT grant access here, since minimal mode returns every task in the project regardless of ownership. PT-602/PT-684/PT-685/PT-905: ?ready=true, ?review=true, ?blocked=true, and ?awaiting_decision=true (mutually exclusive) switch to the flow views — the response becomes { data: FlowTaskRow[], pagination }, the same row shape registered under taskListResponseSchema for GET /api/tasks. Every flow row carries epic and slaUrgency. Review rows additionally carry reviewWaitMinutes and pullRequestUrl (the open pr_link value, or null when the review row has no PR). Blocked-reveal rows additionally carry blockedBy. Decisions rows (ADR-028) additionally carry decisionWaitMinutes, decisionQuestion, decisionOptions, decisionRequestId, and decisionAskedByUserId, ordered oldest-first by asked_at.

Request

Responses

Successful response