Action Items
Action items are tasks assigned to board members during meetings.
Action items are tasks assigned to board members during a meeting. They belong to a meeting (see Meetings), but can be listed and updated either cross-board (by the assignee) or scoped to a single board.
Relationship to Meetings
Every action item belongs to exactly one meeting and, transitively, one board. Creating an action item is a meeting-scoped operation. Reading and updating action items is available both cross-board (for "my action items" views) and board-scoped.
Mixed API surface
Only creating an action item is a versioned /api/v1 endpoint. The four
read/update endpoints below are legacy surfaces that predate /api/v1 — their
paths do not carry a /api/v1 prefix and they are not reachable at one.
They are documented here as-is (stable, but not versioned) rather than
silently omitted. See Versioning for what
"legacy" means in this API.
Endpoints
| Method | Path | Description |
|---|---|---|
POST | /api/v1/boards/:boardId/meetings/:meetingId/action-items | Create an action item |
GET | /api/action-items/my | List my action items across all boards (legacy) |
PATCH | /api/action-items/:actionItemId/status | Update an action item's status (legacy) |
GET | /api/board/:boardId/action-items | List a board's action items (legacy) |
PATCH | /api/board/:boardId/action-items/:actionItemId | Update a board-scoped action item's status (legacy) |
Action Item Object
The shape below is the canonical stored object, returned in full by the create endpoint. The legacy read/update endpoints below return partial or projected shapes — see each endpoint for its exact response.
{
"_id": "60d5ec49f1a2c8b1f8e4e1a1",
"boardId": "60d5ec49f1a2c8b1f8e4e1b1",
"meetingId": "60d5ec49f1a2c8b1f8e4e1c1",
"order": 0,
"title": "Prepare Q3 financial report",
"notes": null,
"assigneeUserId": "507f1f77bcf86cd799439011",
"assigneeName": "Jane Doe",
"status": "in_progress",
"createdBy": "507f1f77bcf86cd799439012",
"createdVia": "web",
"updatedBy": null,
"createdAt": "2025-06-01T10:00:00.000Z",
"updatedAt": "2025-06-10T09:30:00.000Z"
}Fields
| Field | Type | Description |
|---|---|---|
_id | string | Opaque action item ID |
boardId | string | The board this action item belongs to |
meetingId | string | The meeting where this action item was created |
order | number | null | Display order within the meeting's action item list |
title | string | Description of the action item (max 300 characters) |
notes | object | null | Rich-text notes (BlockNote document), if any |
assigneeUserId | string | null | User ID of the assigned person, if they have an account |
assigneeName | string | null | Free-text assignee name (max 100 characters), used when the assignee has no account |
status | string | One of: in_progress, completed, cancelled |
createdBy | string | User ID of whoever created the action item |
createdVia | string | null | "web" or "agent" — "agent" when created through an API token |
updatedBy | string | null | User ID of whoever last updated the action item |
createdAt | string | ISO-8601 timestamp |
updatedAt | string | ISO-8601 timestamp |
Status Values
| Value | Meaning |
|---|---|
in_progress | Currently being worked on |
completed | Done |
cancelled | No longer needed |
Create an Action Item
POST /api/v1/boards/:boardId/meetings/:meetingId/action-itemsCreates an action item on a meeting. Requires board collaborator access. Items created via an API token are attributed to the agent (createdVia: "agent").
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
title | string | Yes | Description of the action item (max 300 characters, no control characters) |
notes | object | No | Rich-text notes (BlockNote document) |
assigneeUserId | string | No | User ID of the assignee (must be a valid ObjectId) |
assigneeName | string | No | Free-text assignee name (max 100 characters) |
status | string | No | One of in_progress, completed, cancelled (defaults to in_progress) |
order | number | No | Display order |
Unknown fields in the request body are rejected.
Response
Returns 201 with the created action item wrapped in the standard single-resource envelope:
{
"data": {
/* action item object */
}
}Errors
| Code | Status | When |
|---|---|---|
INVALID_REQUEST_BODY | 400 | Missing/invalid title, unknown fields, or invalid assigneeUserId |
UNAUTHENTICATED | 401 | Missing or invalid token |
FORBIDDEN | 403 | Token lacks boards:write scope, or caller is not at least a collaborator |
BILLING_RESTRICTED | 403 | Billing not active |
RESOURCE_NOT_FOUND | 404 | Board or meeting does not exist |
List My Action Items (legacy)
GET /api/action-items/myReturns all action items assigned to the authenticated user across every board they belong to, each with a nested board and meeting reference for display.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
includeCompleted | string | No | Include completed/cancelled items — "true" or "false" (default "false") |
status | string | string[] | No | Filter by status: in_progress, completed, cancelled |
Response
{
"actionItems": [
{
"_id": "60d5ec49f1a2c8b1f8e4e1a1",
"boardId": "60d5ec49f1a2c8b1f8e4e1b1",
"meetingId": "60d5ec49f1a2c8b1f8e4e1c1",
"title": "Prepare Q3 financial report",
"status": "in_progress",
"board": { "_id": "60d5ec49f1a2c8b1f8e4e1b1", "name": "Acme Corp Board" },
"meeting": {
"_id": "60d5ec49f1a2c8b1f8e4e1c1",
"title": "Q3 Review",
"meetingStatus": "scheduled"
}
}
],
"totalCount": 1
}Note this response is not wrapped in the standard { "data": ... } envelope — it returns actionItems and totalCount directly.
Errors
| Code | Status | When |
|---|---|---|
UNAUTHENTICATED | 401 | Missing or invalid token |
Update Action Item Status (legacy)
PATCH /api/action-items/:actionItemId/statusUpdates the status of an action item the caller can access. Requires at least collaborator access on the item's board.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
actionItemId | string | The action item ID |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
status | string | Yes | New status: in_progress, completed, or cancelled |
Response
{
"_id": "60d5ec49f1a2c8b1f8e4e1a1",
"status": "completed",
"updatedAt": "2025-06-10T09:30:00.000Z"
}Errors
| Code | Status | When |
|---|---|---|
INVALID_REQUEST_BODY | 400 | Invalid or missing status value |
UNAUTHENTICATED | 401 | Missing or invalid token |
FORBIDDEN | 403 | Caller is not at least a collaborator on the item's board |
RESOURCE_NOT_FOUND | 404 | Action item does not exist |
List a Board's Action Items (legacy)
GET /api/board/:boardId/action-itemsReturns all action items for a single board, each with a nested meeting reference.
Response
{
"actionItems": [
{
"_id": "60d5ec49f1a2c8b1f8e4e1a1",
"boardId": "60d5ec49f1a2c8b1f8e4e1b1",
"meetingId": "60d5ec49f1a2c8b1f8e4e1c1",
"title": "Prepare Q3 financial report",
"status": "in_progress",
"meeting": {
"_id": "60d5ec49f1a2c8b1f8e4e1c1",
"title": "Q3 Review",
"meetingStatus": "scheduled"
}
}
],
"totalCount": 1
}Errors
| Code | Status | When |
|---|---|---|
UNAUTHENTICATED | 401 | Missing or invalid token |
FORBIDDEN | 403 | User does not have read access to this board |
RESOURCE_NOT_FOUND | 404 | Board does not exist |
Update a Board-Scoped Action Item's Status (legacy)
PATCH /api/board/:boardId/action-items/:actionItemIdUpdates the status of an action item, scoped by board. Requires at least collaborator access.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
status | string | Yes | New status: in_progress, completed, or cancelled |
Response
{ "_id": "60d5ec49f1a2c8b1f8e4e1a1", "status": "completed" }Note
Unlike the cross-board update endpoint, this response does not include
updatedAt. This is an existing inconsistency between the two update
endpoints, documented here rather than papered over.
Errors
| Code | Status | When |
|---|---|---|
INVALID_REQUEST_BODY | 400 | Invalid or missing status value |
UNAUTHENTICATED | 401 | Missing or invalid token |
FORBIDDEN | 403 | Caller is not at least a collaborator on the board, or token lacks boards:write scope |
RESOURCE_NOT_FOUND | 404 | Board or action item does not exist |