Boards API

Every project in ProBeya has a primary board — the visual workspace where items (cards), groups (swimlanes), and columns (custom fields) are managed. The Boards API returns the complete board state in a single call, optimized for rendering Kanban, table, and visual board views.

Endpoints


GET /api/v1/boards/:id

Fetch the primary board for a project by its project ID. Returns the board with all groups, columns, items, and item values in a single payload.

tRPC: boards.getByProjectId Auth: Bearer token required (scope: read:items) or session cookie Org context: Required Board permission: Requires view access on the board

Parameters:

NameTypeRequiredDescription
idstring (path)YesThe project ID (not the board ID)

Example:

curl -H "Authorization: Bearer probeya_sk_live_..." \
     https://acme.probeya.com/api/v1/boards/clx9pj001

Response:

{
  "data": {
    "id": "clx9bd001",
    "name": "Main Board",
    "projectId": "clx9pj001",
    "organizationId": "clx9abc123def",
    "canvasLayout": null,
    "createdAt": "2026-02-01T10:00:00.000Z",
    "groups": [
      {
        "id": "clx9gr001",
        "boardId": "clx9bd001",
        "name": "To Do",
        "color": "#579bfc",
        "sortOrder": 0,
        "collapsed": false
      },
      {
        "id": "clx9gr002",
        "boardId": "clx9bd001",
        "name": "In Progress",
        "color": "#fdab3d",
        "sortOrder": 1,
        "collapsed": false
      },
      {
        "id": "clx9gr003",
        "boardId": "clx9bd001",
        "name": "Done",
        "color": "#00c875",
        "sortOrder": 2,
        "collapsed": false
      }
    ],
    "columns": [
      {
        "id": "clx9co001",
        "boardId": "clx9bd001",
        "name": "Status",
        "type": "status",
        "sortOrder": 0,
        "settings": null,
        "formula": null
      },
      {
        "id": "clx9co002",
        "boardId": "clx9bd001",
        "name": "Person",
        "type": "person",
        "sortOrder": 1,
        "settings": null,
        "formula": null
      },
      {
        "id": "clx9co003",
        "boardId": "clx9bd001",
        "name": "Date",
        "type": "date",
        "sortOrder": 2,
        "settings": null,
        "formula": null
      },
      {
        "id": "clx9co004",
        "boardId": "clx9bd001",
        "name": "Priority",
        "type": "priority",
        "sortOrder": 3,
        "settings": null,
        "formula": null
      }
    ],
    "items": [
      {
        "id": "clx9it001",
        "boardId": "clx9bd001",
        "groupId": "clx9gr001",
        "name": "Draft SOP v2.0",
        "sortOrder": 0,
        "assigneeId": "clx9us001",
        "createdById": "clx9us002",
        "createdAt": "2026-02-10T09:15:00.000Z",
        "updatedAt": "2026-03-28T11:00:00.000Z"
      }
    ],
    "itemValues": [
      {
        "id": "clx9iv001",
        "itemId": "clx9it001",
        "columnId": "clx9co001",
        "value": "Working on it"
      }
    ]
  }
}

Errors:

CodeDescription
401Missing or invalid authentication
403Insufficient board permission (requires view)
404No board found for the given project ID

Response Structure

The board response is a denormalized payload designed for single-fetch rendering:

FieldTypeDescription
idstringBoard ID (cuid2)
namestringBoard display name (default: “Main Board”)
projectIdstringParent project ID
organizationIdstringTenant ID
canvasLayoutobject or nullVisual board builder state (widgets, pan, zoom)
groupsarraySwimlane groups ordered by sortOrder
columnsarrayCustom field definitions ordered by sortOrder
itemsarrayAll items (cards) on the board ordered by sortOrder
itemValuesarrayCell values linking items to columns (EAV pattern)

Column Types

ProBeya supports a rich set of column types for custom fields:

TypeDescription
statusDropdown status labels with colors
personUser assignment (references user ID)
dateDate picker
priorityPriority level (critical, high, medium, low)
textFree-text field
numberNumeric value
checkboxBoolean toggle
dropdownCustom dropdown options
ratingStar rating (1-5)
formulaComputed column referencing other columns
linkURL field
fileFile attachment reference
timelineDate range (start + end)
colorColor picker

tRPC-Only Board Procedures

The following board operations are available via tRPC but not yet exposed through the REST API:

ProcedureDescription
boards.listList all boards visible to the user in the org
boards.getFetch a board by its board ID (not project ID)
boards.getItemsFetch items with values for a specific board
boards.createGroupCreate a new group (swimlane)
boards.updateGroupUpdate group name, color, collapsed state
boards.deleteGroupDelete a group and its items
boards.reorderGroupsReorder groups within a board
boards.createColumnCreate a new custom field column
boards.updateColumnUpdate column properties
boards.deleteColumnDelete a column
boards.reorderColumnsReorder columns within a board
boards.getPermissionsList explicit board permissions
boards.setPermissionGrant/update user permission on a board
boards.removePermissionRevoke explicit board permission
boards.validateFormulaValidate a formula expression
boards.saveCanvasLayoutSave visual board builder state
boards.getCanvasLayoutFetch visual board builder state