---
title: "Get a card from a readable board"
method: GET
path: "/api/cards/{cardId}"
tags: ["Cards"]
---

# Get a card from a readable board

`GET /api/cards/{cardId}`

## Request

- Base URL: `https://tre-app.com`
- URL: `https://tre-app.com/api/cards/{cardId}`
- Auth: HTTP bearer

The only operation that returns `CardDetail`: the card plus its ordered `subtasks` (dated sub-work), `seq` (the card's last retained event seq, 0 when none — pass it back as `expectedSeq` on updateCard), and `cites` (the cards it cites) and `citedBy` (the cards citing it), each `{ card, title }` where `card` is a cardKey, capped at 50 and ordered by cardKey — `citedBy` with the `digest` cards after every other kind, and `citedByDigests` counting the digests citing the card, those past the cap included (since 2026-10-16). Citations are read from the description, every comment and every checklist item; a card named before it exists is linked when it is created. Both citation lists are filtered to boards the caller can read, so a neighbour on a private board appears in neither — its key and title are absent entirely, not redacted. That filter is archived-inclusive while this route's own gate is not, so a listed key is usually, not always, spendable here: a neighbour on an ARCHIVED board answers 404 unless the caller is one of its explicit members.

## Response `200`

Success

- CardDetail
  - `id` string, uuid, required
  - `boardId` string, uuid, required
  - `listId` string, uuid, required
  - `cardNumber` integer, required
  - `cardKey` string, required
  - `title` string, required
  - `description` string, required
  - `color` string, required
  - `order` integer, required
  - `startDate` string, date, nullable, required
  - `endDate` string, date, nullable, required
  - `scheduleState` 'unclassified' | 'planned' | 'suspended' | 'cancelled', required: Meaning of the retained schedule. Unclassified means its intent has not been reviewed; suspended/cancelled retain the plan for retrospective comparison.
  - `actualStartDate` string, date, nullable, required: Observed start, explicitly recorded from evidence. Independent of the schedule; null means unknown, never not started.
  - `actualEndDate` string, date, nullable, required: Observed end, explicitly recorded from evidence. May fall outside the plan. Null means unknown, never incomplete.
  - `verifiedOn` string, date, nullable, required: Day the named source was actually checked, never later than the server UTC day. Independent of updatedAt and the status date in the description; never advance for editorial work.
  - `verificationSource` string, nullable, required: Source reference and scope of the last factual verification (document, record, URL or cardKey). Set or clear together with verifiedOn.
  - `links` object[], required
    - `label` string, required
    - `url` string, required
  - `createdAt` string, date-time, required
  - `updatedAt` string, date-time, required
  - `createdByUserId` string, uuid, nullable, required
  - `assigneeUserIds` string[], required
  - `kind` 'control' | 'work' | 'reference' | 'decision' | 'digest' | 'guidance', nullable, required
  - `seq` integer, required
  - `cites` object[], required
    - `card` string, required
    - `title` string, required
  - `citedBy` object[], required
    - `card` string, required
    - `title` string, required
  - `citedByDigests` integer, required: The number of digest cards (kind: digest) citing this card on boards you can read, including those beyond the 50-row cap of citedBy, which lists digests last.
  - `subtasks` object[], required
    - `id` string, uuid, required
    - `cardId` string, uuid, required
    - `title` string, required
    - `startDate` string, date, nullable, required
    - `endDate` string, date, nullable, required
    - `scheduleState` 'unclassified' | 'planned' | 'suspended' | 'cancelled', required: Meaning of the retained schedule. Unclassified means its intent has not been reviewed; suspended/cancelled retain the plan for retrospective comparison.
    - `actualStartDate` string, date, nullable, required: Observed start, explicitly recorded from evidence. Independent of the schedule; null means unknown, never not started.
    - `actualEndDate` string, date, nullable, required: Observed end, explicitly recorded from evidence. May fall outside the plan. Null means unknown, never incomplete.
    - `order` integer, required
    - `color` string, required
    - `createdAt` string, date-time, required

## Other responses

- `400`: Invalid request
- `401`: Unauthenticated
- `403`: Forbidden: insufficient role or token scope; scope denials name the held scope and the operation
- `404`: Not found
- `409`: Conflict
- `429`: Rate limited
- `500`: Internal server error
- `503`: Temporarily unavailable

---

[API](https://skmtc.dev/tre-app/apis/tre-rest-api.md) · [All operations](https://skmtc.dev/tre-app/apis/tre-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/tre-app/apis/tre-rest-api/revisions/26a7187a05fc?raw)
