Zolt AI
API Documentation← Back to site

Board API

Direct CRUD access to boards, zones, and tiles — for building your own board management UI, syncing content from another system, or wiring up custom automations. Every endpoint requires an X-API-Key header.

Board-scoped keys

An API key can be scoped to one specific board (set when the key is created, in Settings → API Keys). Every endpoint below that targets a board checks this: an unscoped key can reach any board in the business; a board-scoped key gets 403 against any other board.

403 Forbidden{ "error": "This API key is not authorized for this board." }
404 Not Found{ "error": "Board not found." }

List boards

GET
/api/board/boards
List the boards this API key can access.
{
  "boards": [
    { "id": "cldx...", "name": "Content Brain", "isDefault": true, "slug": "content-brain" }
  ]
}

A board-scoped key returns only its one board; an unscoped key returns every non-deleted board in the business.

Zones

GET
/api/board/{boardId}/zones
List the zones on a board.
{
  "zones": [
    { "id": "cldx...", "name": "Zone A", "sortOrder": 0, "connectedToChat": true, "color": null, "emoji": null }
  ]
}
POST
/api/board/{boardId}/zones
Create a new zone on a board.
FieldTypeRequiredDescription
namestringrequiredZone name.
{ "zone": { "id": "cldx...", "name": "string", "sortOrder": 3, "connectedToChat": true, "size": "md", ... } }
400 Bad RequestRequired field: name.
PATCH
/api/board/zones/{zoneId}
Rename a zone or toggle its chat connection.
FieldTypeRequiredDescription
namestringoptionalNew zone name.
connected_to_chatbooleanoptionalWhether this zone's content feeds chat context.
{ "zone": { /* updated zone */ } }
DELETE
/api/board/zones/{zoneId}
Delete a zone and every tile inside it.
{ "ok": true }

Tiles

GET
/api/board/{boardId}/tiles
List the tiles on a board, optionally scoped to one zone.
FieldTypeRequiredDescription
zone_idstring (query param)optionalFilter to a single zone.
{
  "tiles": [
    {
      "id": "cldx...",
      "zoneId": "cldx...",
      "type": "TEXT",
      "title": "string",
      "extractedText": "string",
      "status": "ready",
      "createdAt": "2026-08-03T00:00:00.000Z",
      "updatedAt": "2026-08-03T00:00:00.000Z"
    }
  ]
}
POST
/api/board/{boardId}/tiles
Create a new text tile, optionally inside one zone.
FieldTypeRequiredDescription
contentstringrequiredThe tile's text content.
zone_idstringoptionalZone to place the tile in. Must belong to this board.
titlestringoptionalDefaults to "Untitled note" if omitted.
{ "tile": { "id": "cldx...", "type": "TEXT", "title": "string", "status": "ready", ... } }
400 Bad RequestRequired field: content.
400 Bad RequestThat zone does not belong to this board.
PATCH
/api/board/tiles/{tileId}
Update a tile's title and/or content.
FieldTypeRequiredDescription
titlestringoptionalNew title.
contentstringoptionalReplaces both rawContent and extractedText.
{ "tile": { /* updated tile */ } }
404 Not Found{ "error": "Tile not found." }
DELETE
/api/board/tiles/{tileId}
Delete a tile.
{ "ok": true }

Ask a board

POST
/api/board/{boardId}/ask
Ask a one-off question grounded in this board's connected content. Also available as GET with a q query param.
FieldTypeRequiredDescription
questionstringrequiredYour question.

GET /api/board/{boardId}/ask?q=your+questionworks identically — handy for a URL you can paste straight into another tool, mirroring Zolt AI's own quick “board API” convenience tab.

{ "answer": "string", "contextTokens": 512 }
400 Bad RequestRequired field: question.