---
title: "List tasks with optional status filter and pagination"
method: GET
path: "/api/v0/tasks"
tags: ["Tasks"]
---

# List tasks with optional status filter and pagination

`GET /api/v0/tasks`

## Request

- Base URL: `https://app.vibeflow.tools`
- URL: `https://app.vibeflow.tools/api/v0/tasks`
- Auth: HTTP bearer

v0 returns task summary + counts with { items, nextCursor }; local returns { tasks: [...] } with commentCount/fileCount today.

## Query parameters

- `status` 'backlog' | 'todo' | 'in-progress' | 'review' | 'done' | 'cancelled'
- `limit` integer
- `cursor` string

## Response `200`

List tasks with optional status filter and pagination — success

- TaskList
  - `items` TaskSummary[], required
    - `id` string, required
    - `externalId` string, required
    - `title` string, required
    - `status` 'backlog' | 'todo' | 'in-progress' | 'review' | 'done' | 'cancelled', required
    - `commentCount` integer
    - `fileCount` integer
    - `createdAt` string, date-time
  - `nextCursor` string, nullable

## Other responses

- `401`: Missing or invalid principal
- `403`: Lacking scope or membership
- `429`: Rate limited — cloud per-token quota exceeded (reads 300/min, writes 60/min, token creation 10/hour); counters are per-replica, so the effective limit is the configured value × replicas. The response carries Retry-After.

---

[API](https://skmtc.dev/vibeflow/apis/vibeflow-api-v0.md) · [All operations](https://skmtc.dev/vibeflow/apis/vibeflow-api-v0/llms.txt) · [OpenAPI document](https://skmtc.dev/vibeflow/apis/vibeflow-api-v0/revisions/efd4ba944b0b?raw)
