---
title: "List cards in a project"
method: GET
path: "/projects/{id}/cards"
---

# List cards in a project

`GET /projects/{id}/cards`

## Request

- Base URL: `https://craaft.io/api/v1`
- URL: `https://craaft.io/api/v1/projects/{id}/cards`
- Auth: HTTP bearer

## Response `200`

Ordered by (column, position, createdAt). Description is omitted; fetch GET /cards/{id} or /detail for the body.

- Card[]
  - `id` string, uuid, required
  - `projectId` string, uuid, required
  - `column` string, required
  - `title` string, required
  - `description` string: Full body on GET /cards/{id}, PATCH, create, and /detail. Omitted from GET /projects/{id}/cards and lean SSE card.updated events (position-only moves).
  - `position` number, required
  - `dueDate` string, date-time, nullable
  - `assignedUserId` string, uuid, nullable
  - `assignedUserName` string, nullable
  - `size` integer, nullable: Optional integer size estimate; null when unset
  - `priority` 'low' | 'medium' | 'high' | 'urgent' | 'null', nullable
  - `createdBy` string, uuid, nullable
  - `createdByName` string, nullable
  - `updatedBy` string, uuid, nullable
  - `updatedByName` string, nullable
  - `attachmentCount` integer
  - `checklistDone` integer: Completed checklist items (denormalized count)
  - `checklistTotal` integer: Total checklist items (denormalized count)
  - `tags` string[]
  - `following` boolean: Whether the authenticated caller follows this card
  - `createdAt` string, date-time, required
  - `updatedAt` string, date-time, required

---

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