# List tasks

`GET /v1/tasks`

Required OAuth scopes: `tasks:read`

## Parameters

- `status` (query, "idle" | "queued" | "running" | "awaiting_input" | "completed" | "cancelled" | "failed")
- `projectId` (query, string (uuid))
- `cursor` (query, string): Opaque cursor returned by the previous page
- `limit` (query, integer)

## Responses

- `200`
  - `tasks` (object[], required)
    - `id` (string, required)
    - `title` (string, required)
    - `status` ("idle" | "queued" | "running" | "awaiting_input" | "completed" | "cancelled" | "failed", required)
    - `executionMode` ("adam" | "external")
    - `projectId` (string | null, required)
    - `model` (object | null, required)
    - `pendingInteraction` (object | null, required)
    - `createdAt` (string, required)
    - `updatedAt` (string, required)
  - `nextCursor` (string | null, required)
- `400`: Invalid request
- `401`: Missing or invalid Bearer credential
- `402`: Payment or subscription required
- `403`: Credential is missing a required scope
- `404`: Resource not found
- `409`: Request conflict
- `429`: Rate limit exceeded
- `500`: Internal API error
