State

Get the whole state

GET/api/state
Open. 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
versionstring
canQuitboolean
settingsobject

The settings. Every key, its type and default: docs/internals/data-model.md.

showobject

What the lights show.

devicesobject[]
roomobject
scenesobject[]
schedulesobject[]
lockedboolean
effectsobject[]
stylesmap of string

Style id: name.

palettesstring[]
presetsobject[]

Ready-made room layouts.

captureSourcesobject[]
firstRunboolean
Request
curl 'http://localhost:8080/api/state'
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
}
Edit on GitHub