Skip to content

Get a board with its full working set

GET
/boards/{board}
curl --request GET \
--url https://projects.work.optidata.cloud/api/boards/1 \
--header 'Authorization: Bearer <token>'

Returns the board with its members, tags, columns, cards, custom field definitions, plus the caller’s permissions and per-board preferences — everything needed to render the kanban view. When attributes[] is given, returns only those board attributes instead (wrapped in a board key). Requires view permission.

board
required
integer

Board id.

attributes[]
Array<string>

Return only these board attributes (must be valid board attribute names).

Full board payload (or partial when attributes[] was used).

Media typeapplication/json
Any of:
object
id
integer
user_id

Owner user id.

integer | null
group_id
integer | null
cuid

Tenant/company identifier the board belongs to.

string
parent_id

Parent board id (null for root boards).

integer | null
name
string
<= 80 characters
description
string | null
<= 600 characters
icon

Emoji icon.

string | null
visibility
string
Allowed values: private public
order_cards_by

Default card sort field for new columns.

string | null
order_cards_direction
string | null
Allowed values: asc desc
archived_at
string | null format: date-time
created_at
string format: date-time
updated_at
string format: date-time
deleted_at
string | null format: date-time
members

Map of user id → member (with pivot membership info).

object
key
additional properties
object
id
integer
uuid
string format: uuid
name
string
email
string format: email
avatar_url
string | null format: uri
username
string
company_name
string | null
role
string | null
status
string | null
deleted_at
string | null format: date-time
pivot

Membership metadata.

object
board_id
integer
user_id
integer
permission
string
Allowed values: view interact edit manage
view_mode
string | null
Allowed values: view_kanban view_list
created_at
string format: date-time
updated_at
string format: date-time
tags

Map of tag id → tag (board tags plus common tags).

object
key
additional properties

A label. board_id null means a common (tenant-wide) tag.

object
id
integer
board_id
integer | null
name
string
>= 2 characters <= 40 characters
description
string | null
>= 3 characters <= 250 characters
color

Hex color (e.g. #52eb00).

string
created_at
string format: date-time
updated_at
string format: date-time
columns

Map of column id → column.

object
key
additional properties

A task list within a board.

object
id
integer
board_id
integer
name
string
<= 80 characters
description
string | null
<= 300 characters
icon
string | null
<= 255 characters
color

Column accent color (fixed palette).

string | null
Allowed values: #ef4444 #f97316 #f59e0b #84cc16 #10b981 #06b6d4 #3b82f6 #8b5cf6 #ec4899 #64748b
order

Position within the board.

integer
sort_order

Sticky automatic card sort applied to this column, when set.

string | null
archived_at
string | null format: date-time
created_at
string format: date-time
updated_at
string format: date-time
deleted_at
string | null format: date-time
cards

The board’s cards (listing attributes).

Array<object>

A task. Derived attributes (tags_ids, assignees_ids, *_count, human_*, due_date_status, is_time_tracking) are present on single card reads; list contexts may return a subset of attributes.

object
id
integer
board_id
integer
column_id
integer
user_id

Creator user id.

integer | null
title
string
<= 255 characters
content

Rich-text description (serialized editor document, JSON string).

string | null
type
string
Allowed values: ORDINARY CHECKLIST_ITEM
status
string | null
Allowed values: OPEN CLOSED ARCHIVED
icon
string | null
order

Position within its column.

integer
number

Sequential card number within the board.

integer
due_date
string | null format: date-time
due_date_hash

Opaque id tied to the current due date (used for calendar sync).

string | null
pinned_at
string | null format: date-time
completed_at
string | null format: date-time
archived_at
string | null format: date-time
deleted_at
string | null format: date-time
checklist_id

Owning checklist (checklist-item cards only).

integer | null
checklist_items

Cached count of checklist items on this card.

integer | null
checklist_items_completed
integer | null
card_recurrence_id
integer | null
cover_color
string | null
Allowed values: #ef4444 #f97316 #eab308 #22c55e #06b6d4 #3b82f6 #8b5cf6 #ec4899 #6b7280 #000000
created_at
string format: date-time
updated_at
string format: date-time
tags_ids

Ids of the card’s tags (as strings; may contain null when empty).

Array<string | null> | null
assignees_ids

Ids of the card’s assignees (as strings; may contain null when empty).

Array<string | null> | null
is_time_tracking

Truthy when the caller has a running timer on this card.

boolean | integer | null
comments_count
integer
files_count
integer
custom_fields_count
integer
due_date_status
string | null
Allowed values: OVERDUE NEAR FAR
human_due_date

Localized short due date (e.g. Aug 1, 2026).

string | null
short_locale_date
string | null
human_verbose_due_date
string | null
is_completed
boolean
is_recurrent
boolean
cards_summary

Per-card counters (present on search responses).

object
key
additional properties
any
custom_field_definitions
Array<object>

Definition of a custom field. board_id null (and is_global true) means tenant-wide.

object
id
integer
board_id
integer | null
name
string
>= 1 characters <= 60 characters
type
string
Allowed values: text number select checkbox date person
description
string | null
<= 250 characters
config

Type-specific configuration. Examples — text: {multiline, max_length, placeholder, default_value}; select: {options: [{id, label, color}]}; checkbox: {default_value}.

object | null
order
integer
is_required

Required fields block card interactions (comments, files, timers) until filled.

boolean
is_active
boolean
is_global
boolean
created_at
string format: date-time
updated_at
string format: date-time
deleted_at
string | null format: date-time
permissions

The caller’s effective abilities on this board (ability → boolean).

object
key
additional properties
boolean
preferences

The caller’s per-board preferences.

object
view_mode
string
Allowed values: view_kanban view_list
notification
object
notification_mode
string
Allowed values: all assignee mentions silent
is_notified_through_app
boolean
is_notified_through_email
boolean
Examples

Full board

{
"id": 42,
"user_id": 7,
"group_id": null,
"cuid": "a1b2c3d4-0000-4111-8222-333344445555",
"name": "Website Redesign",
"description": null,
"icon": "🎨",
"parent_id": null,
"archived_at": null,
"visibility": "private",
"order_cards_by": "order",
"order_cards_direction": "asc",
"created_at": "2026-03-10T17:09:05.000000Z",
"updated_at": "2026-03-10T17:09:05.000000Z",
"deleted_at": null,
"members": {
"7": {
"id": 7,
"uuid": "0b0d2f1e-6a3c-4f7d-9a21-7c1f2e3d4a5b",
"name": "Jane Doe",
"avatar_url": "https://cdn.example/avatars/jane.webp",
"pivot": {
"board_id": 42,
"user_id": 7,
"permission": "manage",
"view_mode": "view_kanban"
}
}
},
"tags": {
"88": {
"id": 88,
"name": "frontend",
"description": null,
"color": "#52eb00"
}
},
"columns": {
"301": {
"id": 301,
"board_id": 42,
"name": "To do",
"description": "",
"icon": null,
"order": 1,
"archived_at": null,
"sort_order": null,
"color": null
}
},
"cards": [
{
"id": 9001,
"board_id": 42,
"column_id": 301,
"title": "Draft homepage copy",
"number": 1,
"order": 1,
"status": null,
"due_date": null
}
],
"custom_field_definitions": [],
"permissions": {
"view": true,
"interact": true,
"edit": true,
"manage": true
},
"preferences": {
"view_mode": "view_kanban",
"notification": {
"notification_mode": "all",
"is_notified_through_app": true,
"is_notified_through_email": true
}
}
}

Missing, invalid or expired bearer passport.

Media typeapplication/json
object
error
string
Example
{
"error": "JWT passport exception: Missing bearer token in request"
}

The authenticated user lacks the required board permission.

Media typeapplication/json
object
message
string
Example
{
"message": "This action is unauthorized."
}

Resource not found, or a nested resource does not belong to its parent in the path.

Media typeapplication/json
object
message
string
Example
{
"message": "Not found."
}