State
Get the whole state
GET
/api/stateOpen. Open to everyone who can reach Tempolight.
Everything the web app draws: settings, show, devices, room, scenes, schedules (each with its next run), effects, styles, palettes, room presets and sound sources. Secrets are left out: settings.mqtt.password is blank and hasPassword says one is saved.
Responses
200OKapplication/json
versionstringcanQuitbooleansettingsobjectThe settings. Every key, its type and default: docs/internals/data-model.md.
showobjectWhat the lights show.
devicesobject[]roomobjectscenesobject[]schedulesobject[]lockedbooleaneffectsobject[]stylesmap of stringStyle id: name.
palettesstring[]presetsobject[]Ready-made room layouts.
captureSourcesobject[]firstRunbooleanRequest
curl 'http://localhost:8080/api/state'const res = await fetch("http://localhost:8080/api/state");
const data = await res.json();
console.log(data);import requests
res = requests.get(
"http://localhost:8080/api/state",
)
print(res.json())Response
{
"version": "string",
"canQuit": true,
"settings": {
"brightness": 0.8,
"fps": 60,
"performance": "auto",
"ambient": "northern",
"safe": false,
"guest": {
"effects": true,
"scenes": true,
"pads": true,
"brightness": true
},
"location": null,
"requests": true
},
"show": {
"power": true,
"mode": "auto",
"effect": "shock",
"style": "auto",
"palette": "auto",
"everyBeats": 8,
"speed": 1,
"params": {},
"layer": null
},
"devices": [
{
"id": "d4k2x9",
"name": "Desk strip",
"host": "192.168.1.42",
"ddpPort": 4048,
"leds": 120,
"enabled": true
}
],
"room": {
"name": "My room",
"shapes": [
{
"type": "line",
"name": "Desk strip",
"count": 120,
"dev": "d4k2x9",
"rot": 0,
"start": 0,
"rev": false,
"from": null,
"zone": null,
"pts": [
[
1.5,
6
],
[
14.5,
6
]
]
}
],
"zones": []
},
"scenes": [
{
"id": "party",
"name": "Party mode",
"show": {
"mode": "auto",
"style": "party",
"palette": "auto"
},
"brightness": 1
}
],
"schedules": [
{
"id": "t8f2k1",
"name": "Evening",
"time": "sunset+30",
"days": [
1,
2,
3,
4,
5
],
"action": {
"type": "scene",
"scene": "chill"
},
"enabled": true,
"next": "2026-11-04T17:12:00.000Z"
}
],
"locked": true,
"effects": [
{
"id": "laser",
"name": "Laser",
"tag": "drop"
}
],
"styles": {},
"palettes": [
"string"
],
"presets": [
{
"id": "string",
"name": "string",
"desc": "string"
}
],
"captureSources": [
{
"id": "pulse:alsa_output.monitor",
"label": "Speakers (monitor)"
}
],
"firstRun": true
}