Meetings
Board meeting scheduling, location, and lifecycle management.
A meeting represents a board meeting with scheduling, location, and lifecycle details. Meetings are scoped to a specific board.
Endpoints
| Method | Path | Description |
|---|---|---|
GET | /api/v1/boards/:boardId/meetings | List meetings |
GET | /api/v1/boards/:boardId/meetings/:meetingId | Get a meeting |
POST | /api/v1/boards/:boardId/meetings | Create a meeting |
PATCH | /api/v1/boards/:boardId/meetings/:meetingId | Update a meeting |
Meeting Object
{
"object": "meeting",
"id": "60d5ec49f1a2c8b1f8e4e1b1",
"boardId": "60d5ec49f1a2c8b1f8e4e1a1",
"title": "Q2 Board Review",
"status": "scheduled",
"locationType": "virtual",
"location": null,
"virtualMeetingUrl": "https://zoom.us/j/123456789",
"startTime": "2025-07-15T14:00:00.000Z",
"endTime": "2025-07-15T16:00:00.000Z",
"createdByUserId": "507f1f77bcf86cd799439011",
"createdAt": "2025-06-01T10:00:00.000Z",
"updatedAt": "2025-06-10T09:30:00.000Z"
}Fields
| Field | Type | Description |
|---|---|---|
object | "meeting" | Always "meeting" |
id | string | Opaque meeting ID |
boardId | string | The board this meeting belongs to |
title | string | Meeting title |
status | string | Lifecycle status: draft, scheduled, in_progress, completed, finalized. A draft is private to its creator — see Draft privacy |
locationType | string | null | virtual, in_person, or hybrid |
location | string | null | Physical location address |
virtualMeetingUrl | string | null | URL for the virtual meeting |
startTime | string | null | Scheduled start time (ISO-8601) |
endTime | string | null | Scheduled end time (ISO-8601) |
createdByUserId | string | ID of the user who created the meeting |
createdAt | string | ISO-8601 timestamp |
updatedAt | string | ISO-8601 timestamp |
List Meetings
GET /api/v1/boards/:boardId/meetingsSupports filtering by status, startAfter, and startBefore. See Pagination, Filtering & Sorting.
Other members' draft meetings are omitted — see Draft privacy.
Example
curl -s "https://app.imboard.ai/api/v1/boards/BOARD_ID/meetings?status=scheduled&order=asc" \
-H "Authorization: Bearer imb_pat_YOUR_TOKEN" | jqGet a Meeting
GET /api/v1/boards/:boardId/meetings/:meetingIdA draft meeting is private to its creator; any other caller receives 404.
Besides the fields of the list read, the single-meeting read carries:
| Field | Description |
|---|---|
minutes | Items (id, order, title, status, any filed vote), the frozen quorum statement and the last edit time. null when there are none, when you may not read them yet (another member's meeting before it is completed), or for a board access token. |
actionItems | The meeting's action items. null for a board access token or a token without boards:read. |
agenda | Every agenda entry in order: id, order, title, isSection, documents ({ id, title } of the documents on that item you may see; [] for a section; null for a board access token or a token without documents:read). An item's id is the agendaItemId the meeting-document routes take. |
Create a Meeting
See Create & Update Meeting guide.
Update a Meeting
See Create & Update Meeting guide.
A draft meeting can only be updated by its creator; any other caller receives 404 and the
meeting is left unchanged.
Draft privacy
A meeting with status draft is private to the member who created it — the status means
"Private draft - only visible to you", and the API enforces that:
- List omits other members' drafts, so
status=draftreturns only your own. GETandPATCHof another member's draft return404, as do that meeting's slot and action-item routes. The API does not confirm that a draft you cannot see exists.- Only the creator can move a meeting into
draft; another member attempting it gets403. - A board access token has no user identity, so it sees no drafts at all.
Every other status is visible to all board members.