---
title: "List board items"
method: GET
path: "/board-items"
tags: ["board-items"]
---

# List board items

`GET /board-items`

## Request

- Base URL: `https://api.cogram.com/v1`
- URL: `https://api.cogram.com/v1/board-items`
- Auth: HTTP bearer

List kanban board items in the organization.

Returns a paginated list across every project in the organization.
By default, only non-archived items are included.

Use `project_id` to scope to a single project, `meeting_id` to find
items originated by a meeting, or `meeting_series_uid` to correlate
items tied to the same recurring meeting series.

Use `q` to search `title` and `body` and `assignee` for partial
name matching (both case-insensitive).

Sorting by nullable fields (`assignee`, `last_status_changed_at`)
always places items with no value at the bottom, regardless of sort
direction.

Unknown `project_id` or `meeting_id` values return an empty list, not 404.

## Query parameters

- `page` integer: Page number (1-indexed).
- `page_size` integer
- `status` 'TODO' | 'IN_PROGRESS' | 'DONE' | 'DISMISSED', nullable
- `include_archived` boolean
- `project_id` string, nullable
- `meeting_id` string, nullable: Filter on `source_meeting_id` — items this meeting created.
- `meeting_series_uid` string, nullable
- `assignee` string, nullable: Case-insensitive partial match on assignee name.
- `q` string, nullable: Case-insensitive search in `title` and `body`.
- `sort_by` 'created_at' | 'updated_at' | 'last_status_changed_at' | 'status' | 'title' | 'assignee': Fields that board items can be sorted by.
- `sort_dir` 'asc' | 'desc'

## Response `200`

Successful Response

- BoardItemListV1: Paginated board item list response.
  - `data` BoardItemV1[], required
    - `id` string, required
    - `project_id` string, required
    - `project_name` string, required
    - `title` string, required
    - `body` string, nullable, required: Markdown.
    - `status` 'TODO' | 'IN_PROGRESS' | 'DONE' | 'DISMISSED', required
    - `priority` 'URGENT' | 'HIGH' | 'NORMAL' | 'LOW', nullable, required
    - `due_date` string, date, nullable, required: Calendar date, no time component.
    - `assignee` string, nullable, required: Free-text name; may differ from the linked user's name.
    - `assignee_user_id` string, uuid, nullable, required: Set only when the assignee name matched a Cogram user.
    - `source_meeting_id` string, nullable, required
    - `source_meeting_name` string, nullable, required
    - `meeting_series_uid` string, nullable, required
    - `archived` boolean, required
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, nullable, required: Null if never updated.
    - `last_status_changed_at` string, date-time, nullable, required: Timestamp of the newest history entry.
  - `total` integer, required: Total matches across all pages, not just this page.
  - `page` integer, required
  - `page_size` integer, required

## Other responses

- `401`: Unauthorized
- `422`: Validation error
- `429`: Rate limit exceeded
- `500`: Internal server error

---

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