# Cards
Cards are tasks or items of work on a board. They can be organized into columns, tagged, assigned to users, and have comments.
## `GET /:account_slug/cards`
Returns a paginated list of cards you have access to. Results can be filtered using query parameters.
__Query Parameters:__
| Parameter | Description |
|-----------|-------------|
| `board_ids[]` | Filter by board ID(s) |
| `tag_ids[]` | Filter by tag ID(s) |
| `assignee_ids[]` | Filter by assignee user ID(s) |
| `creator_ids[]` | Filter by card creator ID(s) |
| `closer_ids[]` | Filter by user ID(s) who closed the cards |
| `card_ids[]` | Filter to specific card ID(s) |
| `indexed_by` | Filter by: `all` (default), `closed`, `not_now`, `stalled`, `postponing_soon`, `golden` |
| `sorted_by` | Sort order: `latest` (default), `newest`, `oldest` |
| `assignment_status` | Filter by assignment status: `unassigned` |
| `creation` | Filter by creation date: `today`, `yesterday`, `thisweek`, `lastweek`, `thismonth`, `lastmonth`, `thisyear`, `lastyear` |
| `closure` | Filter by closure date: `today`, `yesterday`, `thisweek`, `lastweek`, `thismonth`, `lastmonth`, `thisyear`, `lastyear` |
| `terms[]` | Search terms to filter cards |
__Response:__
```json
[
{
"id": "03f5vaeq985jlvwv3arl4srq2",
"number": 1,
"title": "First!",
"status": "published",
"description": "Hello, World!",
"description_html": "
",
"image_url": null,
"has_attachments": false,
"tags": ["programming"],
"golden": false,
"last_active_at": "2025-12-05T19:38:48.553Z",
"created_at": "2025-12-05T19:38:48.540Z",
"url": "http://app.fizzy.localhost:3006/897362094/cards/4",
"board": {
"id": "03f5v9zkft4hj9qq0lsn9ohcm",
"name": "Fizzy",
"all_access": true,
"created_at": "2025-12-05T19:36:35.534Z",
"auto_postpone_period_in_days": 30,
"url": "http://app.fizzy.localhost:3006/897362094/boards/03f5v9zkft4hj9qq0lsn9ohcm",
"creator": {
"id": "03f5v9zjw7pz8717a4no1h8a7",
"name": "David Heinemeier Hansson",
"role": "owner",
"active": true,
"email_address": "david@example.com",
"created_at": "2025-12-05T19:36:35.401Z",
"url": "http://app.fizzy.localhost:3006/897362094/users/03f5v9zjw7pz8717a4no1h8a7"
}
},
"creator": {
"id": "03f5v9zjw7pz8717a4no1h8a7",
"name": "David Heinemeier Hansson",
"role": "owner",
"active": true,
"email_address": "david@example.com",
"created_at": "2025-12-05T19:36:35.401Z",
"url": "http://app.fizzy.localhost:3006/897362094/users/03f5v9zjw7pz8717a4no1h8a7"
},
"comments_url": "http://app.fizzy.localhost:3006/897362094/cards/4/comments",
"reactions_url": "http://app.fizzy.localhost:3006/897362094/cards/4/reactions"
}
]
```
## `GET /:account_slug/cards/:card_number`
Returns a specific card by its number.
__Response:__
```json
{
"id": "03f5vaeq985jlvwv3arl4srq2",
"number": 1,
"title": "First!",
"status": "published",
"description": "Hello, World!",
"description_html": "",
"image_url": null,
"has_attachments": false,
"tags": ["programming"],
"closed": false,
"golden": false,
"last_active_at": "2025-12-05T19:38:48.553Z",
"created_at": "2025-12-05T19:38:48.540Z",
"url": "http://app.fizzy.localhost:3006/897362094/cards/4",
"board": {
"id": "03f5v9zkft4hj9qq0lsn9ohcm",
"name": "Fizzy",
"all_access": true,
"created_at": "2025-12-05T19:36:35.534Z",
"auto_postpone_period_in_days": 30,
"url": "http://app.fizzy.localhost:3006/897362094/boards/03f5v9zkft4hj9qq0lsn9ohcm",
"creator": {
"id": "03f5v9zjw7pz8717a4no1h8a7",
"name": "David Heinemeier Hansson",
"role": "owner",
"active": true,
"email_address": "david@example.com",
"created_at": "2025-12-05T19:36:35.401Z",
"url": "http://app.fizzy.localhost:3006/897362094/users/03f5v9zjw7pz8717a4no1h8a7"
}
},
"column": {
"id": "03f5v9zkft4hj9qq0lsn9ohcn",
"name": "In Progress",
"color": {
"name": "Lime",
"value": "var(--color-card-4)"
},
"created_at": "2025-12-05T19:36:35.534Z"
},
"creator": {
"id": "03f5v9zjw7pz8717a4no1h8a7",
"name": "David Heinemeier Hansson",
"role": "owner",
"active": true,
"email_address": "david@example.com",
"created_at": "2025-12-05T19:36:35.401Z",
"url": "http://app.fizzy.localhost:3006/897362094/users/03f5v9zjw7pz8717a4no1h8a7"
},
"comments_url": "http://app.fizzy.localhost:3006/897362094/cards/4/comments",
"reactions_url": "http://app.fizzy.localhost:3006/897362094/cards/4/reactions",
"steps": [
{
"id": "03f8huu0sog76g3s975963b5e",
"content": "This is the first step",
"completed": false
},
{
"id": "03f8huu0sog76g3s975969734",
"content": "This is the second step",
"completed": false
}
]
}
```
> **Note:** The `closed` field indicates whether the card is in the "Done" state. The `column` field is only present when the card has been triaged into a column; cards in "Maybe?", "Not Now" or "Done" will not have this field.
## `POST /:account_slug/boards/:board_id/cards`
Creates a new card in a board.
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `title` | string | Yes | The title of the card |
| `description` | string | No | Rich text description of the card |
| `status` | string | No | Initial status: `published` (default), `drafted` |
| `image` | file | No | Header image for the card |
| `tag_ids` | array | No | Array of tag IDs to apply to the card |
| `created_at` | datetime | No | Override creation timestamp (ISO 8601 format) |
| `last_active_at` | datetime | No | Override last activity timestamp (ISO 8601 format) |
__Request:__
```json
{
"card": {
"title": "Add dark mode support",
"description": "We need to add dark mode to the app"
}
}
```
__Response:__
Returns `201 Created` with a `Location` header pointing to the new card.
## `PUT /:account_slug/cards/:card_number`
Updates a card.
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `title` | string | No | The title of the card |
| `description` | string | No | Rich text description of the card |
| `status` | string | No | Card status: `drafted`, `published` |
| `image` | file | No | Header image for the card |
| `tag_ids` | array | No | Array of tag IDs to apply to the card |
| `last_active_at` | datetime | No | Override last activity timestamp (ISO 8601 format) |
__Request:__
```json
{
"card": {
"title": "Add dark mode support (Updated)"
}
}
```
__Response:__
Returns the updated card.
## `DELETE /:account_slug/cards/:card_number`
Deletes a card. Only the card creator or board administrators can delete cards.
__Response:__
Returns `204 No Content` on success.
## `DELETE /:account_slug/cards/:card_number/image`
Removes the header image from a card.
__Response:__
Returns `204 No Content` on success.
## `POST /:account_slug/cards/:card_number/closure`
Closes a card.
__Response:__
Returns `204 No Content` on success.
## `DELETE /:account_slug/cards/:card_number/closure`
Reopens a closed card.
__Response:__
Returns `204 No Content` on success.
## `POST /:account_slug/cards/:card_number/not_now`
Moves a card to "Not Now" status.
__Response:__
Returns `204 No Content` on success.
## `POST /:account_slug/cards/:card_number/triage`
Moves a card into a column.
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `column_id` | string | Yes | The ID of the column to move the card into |
__Response:__
Returns `204 No Content` on success.
## `DELETE /:account_slug/cards/:card_number/triage`
Sends a card back to triage.
__Response:__
Returns `204 No Content` on success.
## `POST /:account_slug/cards/:card_number/taggings`
Toggles a tag on or off for a card. If the tag doesn't exist, it will be created.
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `tag_title` | string | Yes | The title of the tag (leading `#` is stripped) |
__Response:__
Returns `204 No Content` on success.
## `POST /:account_slug/cards/:card_number/assignments`
Toggles assignment of a user to/from a card.
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `assignee_id` | string | Yes | The ID of the user to assign/unassign |
__Response:__
Returns `204 No Content` on success.
## `POST /:account_slug/cards/:card_number/watch`
Subscribes the current user to notifications for this card.
__Response:__
Returns `204 No Content` on success.
## `DELETE /:account_slug/cards/:card_number/watch`
Unsubscribes the current user from notifications for this card.
__Response:__
Returns `204 No Content` on success.
## `POST /:account_slug/cards/:card_number/goldness`
Marks a card as golden.
__Response:__
Returns `204 No Content` on success.
## `DELETE /:account_slug/cards/:card_number/goldness`
Removes golden status from a card.
__Response:__
Returns `204 No Content` on success.