I'mBoardDocs
Resources

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

MethodPathDescription
POST/api/v1/boards/:boardId/meetings/:meetingId/action-itemsCreate an action item
GET/api/action-items/myList my action items across all boards (legacy)
PATCH/api/action-items/:actionItemId/statusUpdate an action item's status (legacy)
GET/api/board/:boardId/action-itemsList a board's action items (legacy)
PATCH/api/board/:boardId/action-items/:actionItemIdUpdate 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

FieldTypeDescription
_idstringOpaque action item ID
boardIdstringThe board this action item belongs to
meetingIdstringThe meeting where this action item was created
ordernumber | nullDisplay order within the meeting's action item list
titlestringDescription of the action item (max 300 characters)
notesobject | nullRich-text notes (BlockNote document), if any
assigneeUserIdstring | nullUser ID of the assigned person, if they have an account
assigneeNamestring | nullFree-text assignee name (max 100 characters), used when the assignee has no account
statusstringOne of: in_progress, completed, cancelled
createdBystringUser ID of whoever created the action item
createdViastring | null"web" or "agent""agent" when created through an API token
updatedBystring | nullUser ID of whoever last updated the action item
createdAtstringISO-8601 timestamp
updatedAtstringISO-8601 timestamp

Status Values

ValueMeaning
in_progressCurrently being worked on
completedDone
cancelledNo longer needed

Create an Action Item

POST /api/v1/boards/:boardId/meetings/:meetingId/action-items

Creates 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

FieldTypeRequiredDescription
titlestringYesDescription of the action item (max 300 characters, no control characters)
notesobjectNoRich-text notes (BlockNote document)
assigneeUserIdstringNoUser ID of the assignee (must be a valid ObjectId)
assigneeNamestringNoFree-text assignee name (max 100 characters)
statusstringNoOne of in_progress, completed, cancelled (defaults to in_progress)
ordernumberNoDisplay 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

CodeStatusWhen
INVALID_REQUEST_BODY400Missing/invalid title, unknown fields, or invalid assigneeUserId
UNAUTHENTICATED401Missing or invalid token
FORBIDDEN403Token lacks boards:write scope, or caller is not at least a collaborator
BILLING_RESTRICTED403Billing not active
RESOURCE_NOT_FOUND404Board or meeting does not exist

List My Action Items (legacy)

GET /api/action-items/my

Returns 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

ParameterTypeRequiredDescription
includeCompletedstringNoInclude completed/cancelled items — "true" or "false" (default "false")
statusstring | string[]NoFilter 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

CodeStatusWhen
UNAUTHENTICATED401Missing or invalid token

Update Action Item Status (legacy)

PATCH /api/action-items/:actionItemId/status

Updates the status of an action item the caller can access. Requires at least collaborator access on the item's board.

Path Parameters

ParameterTypeDescription
actionItemIdstringThe action item ID

Request Body

FieldTypeRequiredDescription
statusstringYesNew status: in_progress, completed, or cancelled

Response

{
  "_id": "60d5ec49f1a2c8b1f8e4e1a1",
  "status": "completed",
  "updatedAt": "2025-06-10T09:30:00.000Z"
}

Errors

CodeStatusWhen
INVALID_REQUEST_BODY400Invalid or missing status value
UNAUTHENTICATED401Missing or invalid token
FORBIDDEN403Caller is not at least a collaborator on the item's board
RESOURCE_NOT_FOUND404Action item does not exist

List a Board's Action Items (legacy)

GET /api/board/:boardId/action-items

Returns 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

CodeStatusWhen
UNAUTHENTICATED401Missing or invalid token
FORBIDDEN403User does not have read access to this board
RESOURCE_NOT_FOUND404Board does not exist

Update a Board-Scoped Action Item's Status (legacy)

PATCH /api/board/:boardId/action-items/:actionItemId

Updates the status of an action item, scoped by board. Requires at least collaborator access.

Request Body

FieldTypeRequiredDescription
statusstringYesNew 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

CodeStatusWhen
INVALID_REQUEST_BODY400Invalid or missing status value
UNAUTHENTICATED401Missing or invalid token
FORBIDDEN403Caller is not at least a collaborator on the board, or token lacks boards:write scope
RESOURCE_NOT_FOUND404Board or action item does not exist

On this page