Conventions
Standard patterns that apply across all API endpoints.
Standard patterns that apply across all API endpoints.
Base URL
https://app.imboard.ai/api/v1The API uses path-based versioning. All V1 endpoints live under /api/v1. There is currently one version.
Request Format
- All request bodies must be JSON with
Content-Type: application/json - All requests must include an
Authorizationheader (see Authentication)
Response Envelopes
Every successful response wraps its payload in a standard envelope.
Single Resource
{
"data": {
"object": "board",
"id": "abc123",
"name": "Q1 Board Meeting",
"createdAt": "2025-06-01T09:00:00.000Z",
"updatedAt": "2026-03-15T11:45:00.000Z"
}
}Collection
{
"data": [
{
"object": "board",
"id": "abc123",
"name": "Q1 Board Meeting",
"createdAt": "2025-06-01T09:00:00.000Z",
"updatedAt": "2026-03-15T11:45:00.000Z"
}
],
"meta": {
"nextCursor": "eyJ...",
"hasMore": true
}
}Error
{
"error": {
"code": "RESOURCE_NOT_FOUND",
"message": "The requested resource was not found.",
"status": 404,
"requestId": "req_a1b2c3d4e5f6a7b8",
"details": null
}
}See Errors for the full list of error codes.
The object Field
Every resource includes an object field that identifies its type. This is the primary way to disambiguate resources in the API since V1 does not use prefixed IDs.
| Value | Resource |
|---|---|
user | Authenticated user profile |
board | Board |
board_member | Board membership |
meeting | Meeting |
document | Document |
report | Report |
dashboard | Dashboard |
Always check the object field rather than inferring type from context.
IDs
All IDs are opaque strings. Do not parse, construct, or make assumptions about their format or length. IDs are stable — the same resource always returns the same ID.
Timestamps
All timestamps are ISO-8601 strings in UTC:
"2026-03-15T11:45:00.000Z"Fields named createdAt and updatedAt are present on every resource.
Field Naming
All field names use camelCase:
{
"firstName": "Jane",
"lastName": "Doe",
"billingState": "PAID_ACTIVE",
"inviteCodeEnabled": true
}Null vs. Omitted
- A field set to
nullmeans the value is explicitly empty (e.g.,"description": null) - A field that is omitted from the response is not available for that resource or context
- The API never returns
undefined— all present fields have a value or arenull
No include Parameter
V1 does not support sideloading related resources via an include query parameter. Each endpoint returns a fixed response shape. If you need related data, make a separate request.
Request IDs
Every response includes an X-Request-Id header (e.g., req_a1b2c3d4e5f6a7b8). Include this value when reporting issues to support — it allows us to trace your request through our systems.
Rate Limiting
- 300 requests per 5 minutes per authenticated token; 60 requests per 5 minutes per IP for unauthenticated requests
- Rate-limited responses return
429with error codeRATE_LIMITED - Response headers:
X-RateLimit-Limit,X-RateLimit-Remaining,X-RateLimit-Reset, andRetry-After(on 429) - See Errors for full details
Pagination
Collections use cursor-based pagination. See Pagination, Filtering & Sorting for details.
HTTP Methods
| Method | Usage |
|---|---|
GET | Read a resource or list a collection |
POST | Create a resource |
PATCH | Partially update a resource |
DELETE | Delete a resource |