Skip to main content
Version: 8.9

API Endpoints

FiestaBoard provides a REST API powered by FastAPI. Interactive API documentation is available at http://localhost:4420/api/docs when FiestaBoard is running.

Base URL

http://localhost:4420

When using the default deployment, prefix all paths with /api (e.g. GET http://localhost:4420/api/health).

System Endpoints

Health & Status

MethodEndpointDescription
GET/healthHealth check, returns service health status
GET/statusService status, uptime, and current configuration
GET/configCurrent configuration settings

Display Control

MethodEndpointDescription
POST/refreshRefresh the current display
POST/force-refreshForce refresh (bypasses preview cache)
POST/send-messageSend a custom message to the board

Service Control

MethodEndpointDescription
POST/startStart the display service
POST/stopStop the display service

Page Endpoints

MethodEndpointDescription
GET/pagesList all pages
POST/pagesCreate a new page
GET/pages/{id}Get a specific page
PUT/pages/{id}Update a page
DELETE/pages/{id}Delete a page
POST/pages/{id}/previewPreview a page (with variables resolved)

Page Fields

When creating or updating a page, the following fields are available:

FieldTypeDescription
namestringPage name (required)
typestring"template", "single", or "composite"
device_typestring"flagship" (22×6) or "note" (15×3). Default: "flagship"
templatestring[]Template lines for template-type pages
duration_secondsnumberHow long to display (10–3600s, default 300)

Batch Operations

MethodEndpointDescription
POST/pages/preview/batchPreview multiple pages at once
POST/displays/raw/batchGet raw display data for multiple pages

Schedule Endpoints

MethodEndpointDescription
GET/schedulesList all schedule entries
POST/schedulesCreate a new schedule entry
GET/schedules/{id}Get a specific schedule entry
PUT/schedules/{id}Update a schedule entry
DELETE/schedules/{id}Delete a schedule entry

Plugin Endpoints

MethodEndpointDescription
GET/pluginsList all plugins with status
GET/plugins/{id}Get plugin details
PUT/plugins/{id}/configUpdate plugin configuration
POST/plugins/{id}/enableEnable a plugin
POST/plugins/{id}/disableDisable a plugin
GET/plugins/{id}/dataGet current plugin data
GET/plugins/{id}/variablesGet available template variables

Settings Endpoints

MethodEndpointDescription
GET/settings/allGet all settings in a single call
GET/settings/transitionsGet transition animation settings
PUT/settings/transitionsUpdate transition settings
GET/settings/outputGet output target settings
PUT/settings/outputUpdate output target
GET/settings/boardGet board configuration
PUT/settings/boardUpdate board configuration

Board Management

Installs with more than one board follow a per-board model: each board has its own active page, schedule, and send routing, addressed by a board_id query param (or body field) on the relevant endpoints below. Omitting board_id always falls back to the primary board (boards[0]), which keeps single-board installs behaving exactly as before. Pages and Collections are not per-board — they're one shared library, and their pickers filter to the boards they're compatible with (see Board Instance Fields for the size model).

MethodEndpointDescription
PUT/settings/boardUpdate board configuration (devices, connection)
POST/settings/board/addAdd a new board instance
DELETE/settings/board/{id}Remove a board instance
GET/settings/active-pageGet a board's active page id (?board_id=)
PUT/settings/active-pageSet a board's active page (renders and sends immediately)
POST/pages/{id}/sendSend a page (?target=board&board_id=)
GET/board/current-messageRead a board's current display (?board_id=)

PUT /settings/board — request body fields

FieldTypeDescription
boardsobject[]Array of BoardInstance objects (V2 format)
devicesstring[]Device type list e.g. ["flagship", "note"] (backward-compatible)
board_typestringLegacy field — still accepted

PUT /settings/active-page — request body fields

FieldTypeDescription
page_idstring | nullPage (or collection) id to activate, or null to clear
board_idstringOptional. Omitted → primary board (legacy behavior)

Board Instance Fields

FieldTypeDescription
idstringUUID (auto-generated on create)
namestringDisplay name for this board
device_typestring"flagship" (22×6), "note" (15×3), or "note_array" (variable W×H)
board_colorstring"black" or "white"
api_modestring"local" or "cloud"
hoststringBoard IP address (local mode)
local_api_keystringLocal API key
cloud_keystringCloud Read/Write key
note_array_tokenstringCloud API token (note-array boards in cloud mode)
notes_wide / notes_tallnumberNote-array grid dimensions — resolves to (notes_wide × 15) × (notes_tall × 3) characters
enabledbooleanWhether this board is active
schedule_enabledbooleanWhether this board follows its schedule (vs. manual mode)
pausedbooleanWhether this board's output is paused

Example Requests

Get Service Status

curl http://localhost:4420/api/status

Send a Message

curl -X POST http://localhost:4420/api/send-message \
-H "Content-Type: application/json" \
-d '{"message": "Hello World!"}'

List Plugins

curl http://localhost:4420/api/plugins

Preview a Page

curl -X POST http://localhost:4420/api/pages/1/preview

Interactive Documentation

For a complete interactive API explorer with request/response schemas, visit:

http://localhost:4420/api/docs

This provides a Swagger UI where you can try out any endpoint directly in your browser.

Next Steps