Items API
Create, update, delete, move, and set values on board items (cards).
Items API
Items are the core work units in ProBeya — cards on a Kanban board. Each item belongs to a board and a group (swimlane), and stores custom field data through the EAV (Entity-Attribute-Value) pattern via item values. In pharma contexts, items represent deviations, batch records, calibration tasks, CAPAs, or any trackable work unit.
All item mutations trigger automations (fire-and-forget), log activity events for the audit trail, and fire webhooks when configured.
Quick Start
Create a deviation item, set its priority and status, then move it to the “In Progress” column:
Endpoints
POST /api/v1/items
Create a new item on a board within a specific group.
tRPC: items.create | Scope: write:items | Org context: Required
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
boardId | string | Yes | The board to create the item on |
groupId | string | Yes | The group (swimlane) to place the item in |
name | string | Yes | Item display name |
assigneeId | string | No | User ID to assign the item to |
Response:
{
"data": {
"id": "clx9it010",
"boardId": "clx9bd001",
"groupId": "clx9gr001",
"name": "DEV-2026-0847: pH excursion on Batch BX-4471",
"sortOrder": 5,
"assigneeId": null,
"createdById": "clx9us001",
"organizationId": "clx9abc123def",
"createdAt": "2026-04-13T08:15:00.000Z",
"updatedAt": "2026-04-13T08:15:00.000Z"
}
}
Side effects:
- Triggers
item_createdautomations on the board (fire-and-forget) - Logs activity event for audit trail
- Fires
item.createdwebhook - Dispatches integration events to connected systems
Errors:
| Code | Description | Cause | Fix |
|---|---|---|---|
| 400 | BAD_REQUEST | Missing boardId, groupId, or name | Provide all required fields |
| 401 | UNAUTHORIZED | Missing or invalid authentication | Check your Bearer token |
| 403 | FORBIDDEN | Insufficient scope | API key needs write:items scope |
| 404 | NOT_FOUND | Board or group not found in this org | Verify IDs belong to your organization |
PATCH /api/v1/items/:id
Update an existing item. Partial updates are supported — only include the fields you want to change.
tRPC: items.update | Scope: write:items | Org context: Required
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
id | string (path) | Yes | The item ID to update |
name | string | No | New display name |
assigneeId | string | No | New assignee user ID |
groupId | string | No | Move to a different group |
Response:
{
"data": {
"id": "clx9it010",
"name": "DEV-2026-0847: pH excursion on Batch BX-4471 (CAPA required)",
"assigneeId": "clx9us003",
"updatedAt": "2026-04-13T08:20:00.000Z"
}
}
Side effects:
- Notifies the new assignee (unless self-assignment)
- Sends assignment email notification
- Triggers
value_changedautomations - Fires
item.updatedwebhook with changed fields
Errors:
| Code | Description | Cause | Fix |
|---|---|---|---|
| 401 | UNAUTHORIZED | Missing or invalid authentication | Check your Bearer token |
| 403 | FORBIDDEN | Insufficient scope or column ACL restriction | Verify scope and column permissions |
| 404 | NOT_FOUND | Item not found in this organization | Verify the item ID and org context |
DELETE /api/v1/items/:id
Permanently delete an item and all its associated values and comments (cascade). This cannot be undone.
tRPC: items.delete | Scope: write:items | Org context: Required
Response:
{
"data": {
"id": "clx9it010",
"name": "DEV-2026-0847: pH excursion on Batch BX-4471 (CAPA required)"
}
}
Side effects:
- Cascades deletion to
item_valuesandcomments - Logs activity event with item name for audit trail
- Fires
item.deletedwebhook
In GxP-regulated environments, consider moving items to a “Closed” or “Archived” group instead of deleting them. Deletion removes the audit trail entry for the item’s values and comments. The item creation and deletion events themselves are preserved in the activity log.
PUT /api/v1/items/:id/values
Set multiple custom field values on an item in a single call. Uses upsert semantics — existing values are overwritten, new values are created.
tRPC: items.setValues | Scope: write:items | Org context: Required
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
id | string (path) | Yes | The item ID |
values | array | Yes | Array of { columnId, value } objects |
Value formats by column type:
| Column Type | Value Format | Example |
|---|---|---|
| Status | JSON object | {"label": "Done", "color": "#00c875"} |
| Priority | JSON object | {"label": "Critical", "color": "#e2445c"} |
| Date | ISO string | "2026-04-18" |
| Person | JSON object | {"id": "clx9us003", "name": "Dr. Chen"} |
| Text | Plain string | "Batch BX-4471" |
| Number | Numeric string | "87.3" |
Response:
{
"data": [
{ "id": "clx9iv040", "itemId": "clx9it010", "columnId": "clx9co001", "value": {"label": "In Review", "color": "#fdab3d"} },
{ "id": "clx9iv041", "itemId": "clx9it010", "columnId": "clx9co003", "value": "2026-04-18" },
{ "id": "clx9iv042", "itemId": "clx9it010", "columnId": "clx9co004", "value": {"label": "Critical", "color": "#e2445c"} },
{ "id": "clx9iv043", "itemId": "clx9it010", "columnId": "clx9co005", "value": "Batch BX-4471 — pH 7.8 vs spec 7.0-7.4" }
]
}
POST /api/v1/items/:id/move
Move an item to a different group and/or position. Triggers item_moved automations with old and new group context.
tRPC: items.move | Scope: write:items | Org context: Required
| Name | Type | Required | Description |
|---|---|---|---|
id | string (path) | Yes | The item ID to move |
groupId | string | Yes | Target group ID |
sortOrder | number | Yes | Position within the target group (0 = top) |
Response:
{
"data": {
"id": "clx9it010",
"groupId": "clx9gr003",
"sortOrder": 0,
"updatedAt": "2026-04-13T09:00:00.000Z"
}
}
Pharma Integration Scenarios
Item Visibility Filtering
When a board has an active visibility rule, non-admin users only see items where the person column includes their userId. This is useful for boards where items contain sensitive data (e.g., HR actions, individual performance items). The visibility filter is applied server-side and cannot be bypassed via the API.
tRPC-Only Item Procedures
| Procedure | Description |
|---|---|
items.list | List all items for a board (with cell values), respecting visibility rules |
items.setValue | Set a single cell value (item + column) with automation triggers |
items.reorder | Reorder items within a group |
items.myCards | List all items assigned to the current user across all boards |
Rate Limiting
| Plan | Requests/min | Batch values/call |
|---|---|---|
| Free | 60 | 10 |
| Starter | 120 | 25 |
| Pro | 300 | 50 |
| Enterprise | 600 | 100 |
Was this page helpful?