Skip to content

Endpoints

Discover the controls on the active page of a layout.

GET /layout/{layoutId}
x-api-key: YOUR_API_KEY
{
"layoutId": "abc123",
"activePageId": "page_1",
"controls": [
{
"lid": 1,
"address": "/001",
"type": "Button",
"props": { "label": "Cheer" }
},
{
"lid": 3,
"address": "/003",
"type": "Index",
"props": { "label": "Vote" },
"options": [
{ "index": 0, "label": "Option A" },
{ "index": 1, "label": "Option B" }
]
}
],
"destinationCount": 1
}
FieldTypeDescription
layoutIdstringThe layout identifier
activePageIdstringCurrently active page
controlsarrayControls on the active page
controls[].lidnumberLocal ID — used when sending actions
controls[].addressstringOSC address (e.g. /001)
controls[].typestringControl type (see Control Types)
controls[].propsobjectDisplay properties (label, etc.)
controls[].optionsarray?For Index controls — the selectable options
destinationCountnumberNumber of connected output displays

Create an audience token for sending actions.

POST /token
Content-Type: application/json
x-api-key: YOUR_API_KEY
{
"layoutId": "YOUR_LAYOUT_ID"
}
{
"token": "eyJhbGciOiJIUzI1NiIs..."
}
StatusReason
400Missing or invalid layoutId
401Invalid or missing API key

Send a control action to the live output.

POST /action
Content-Type: application/json
Authorization: Bearer YOUR_TOKEN
{
"layoutId": "YOUR_LAYOUT_ID",
"lid": 1,
"type": "Button",
"value": null
}
FieldTypeRequiredDescription
layoutIdstringYesTarget layout
lidnumberYesControl local ID (from layout discovery)
typestringYesMust match the control’s type
valuevariesDependsValue for the action (see below)
TypeValueExample
Buttonomit or null"value": null
Sliderfloat 0–1"value": 0.75
Toggleboolean"value": true
Indexinteger (0-based)"value": 2
Stringstring"value": "hello"
XYPad[x, y] floats 0–1"value": [0.5, 0.3]
{
"ok": true
}
StatusReason
400Missing fields, invalid type, or control not found
401Missing or invalid token