API Reference

Control StageTime from anything on the local network.

1.1 marks endpoints added in StageTime 1.1. Everything from 1.0 is unchanged.

Overview

StageTime includes a built-in HTTP API that binds to 0.0.0.0 on the configured port (default 8088), so it's reachable from any device on the same network. Every endpoint is a plain GET and returns JSON: { "ok": true, ... } on success, or { "ok": false, "error": "..." } with a 4xx status. CORS is open, so browser-based tools can call it directly. Change the port from App ▸ Change API Port….

The same reference is served live by the app at http://<computer-ip>:8088/ (HTML) and /api/help (JSON), and App ▸ API Reference… opens it in a window with the base URLs for that machine. Options changed through the API are remembered across launches and mirrored on the remote. Every endpoint that existed in 1.0 works exactly as before.

Status & Events

Status reflects the display's most recent report. A command returns ok as soon as it is dispatched, so a status read within a few milliseconds may not show the change yet; /api/events pushes it the moment it lands.
MethodEndpointDescription
GET/api/statusFull state as JSON: time, light color, mode, options, preset and quick-message slots.
GET/api/eventsServer-Sent Events stream. One data: line with the status object on every change, plus a : ping every 15 seconds. Use for instant Companion feedback instead of polling.
GET/api/helpThis reference as JSON.
Example Response
{
  "ok": true,
  "version": "1.1.0",
  "remainingSeconds": 573,
  "running": true,
  "localMode": false,
  "countUpMode": false,
  "overtime": false,
  "formattedTime": "09:33",
  "formattedTimeSigned": "09:33",
  "lightColor": "green",
  "lightColorHex": "#00ff00",
  "progress": 0.955,
  "wrapUpSeconds": 120,
  "flashOn": true,
  "flashBorder": false,
  "stopAtZero": false,
  "soundOn": false,
  "showMilliseconds": false,
  "showProgress": false,
  "bgBlue": false,
  "blackout": false,
  "cornerClock": false,
  "messageVisible": false,
  "messageWithTimer": false,
  "messageShownWithTimer": false,
  "autoMessageAtZero": false,
  "autoMessageText": "TIME'S UP",
  "timeZone": "system",
  "hour12": true,
  "preset_1_name": "Keynote",
  "preset_1_time": "45:00",
  "presetCount": 1,
  "quick_1_text": "WRAP UP",
  "quick_2_text": "TIME'S UP",
  "quick_3_text": "Q&A",
  "quickCount": 3
}

Timer

MethodEndpointDescription
GET/api/startStart the countdown or stopwatch. Ignored when a countdown is at 00:00 (set a time first).
GET/api/stopStop.
GET/api/toggleStart if stopped, stop if running.
GET/api/clearStop and reset to 00:00.
GET/api/set?minutes=M&seconds=SClear and set the countdown to M:S. Either parameter may be omitted.
GET/api/add?minutes=M&seconds=SAdd time (or subtract with negative values). Works while running.
GET/api/endat?time=HH:MM1.1 Count down to a wall-clock time (24h, in the display's clock zone; tomorrow if already past) and start.

Modes

MethodEndpointDescription
GET/api/mode/countdownCountdown mode (also leaves clock or stopwatch mode).
GET/api/mode/localShow the clock instead of a timer.
GET/api/countup/onStopwatch mode on.
GET/api/countup/offStopwatch mode off.
GET/api/milliseconds/on1.1 Stopwatch shows MM:SS.mmm.
GET/api/milliseconds/off1.1 Stopwatch shows MM:SS.

Countdown Options

MethodEndpointDescription
GET/api/wrapup?minutes=M&seconds=SYellow light when this much time remains. 0 disables.
GET/api/flash/onFlash the red light at zero.
GET/api/flash/offDon't flash the light.
GET/api/flashborder/on1.1 Pulse a red glow around the timer box at zero, in addition to the light.
GET/api/flashborder/off1.1 Border flash off.
GET/api/stopatzero/onHold at 00:00 instead of counting into overtime.
GET/api/stopatzero/offCount into overtime.
GET/api/sound/on1.1 Buzzer when the countdown reaches zero.
GET/api/sound/off1.1 Buzzer off.
GET/api/sound/test1.1 Play the buzzer now.
GET/api/progress/on1.1 Progress bar under the digits, on the display and the remote.
GET/api/progress/off1.1 Progress bar off.
GET/api/automessage/on1.1 Automatically show a message when the countdown reaches zero.
GET/api/automessage/off1.1 Auto-message off.
GET/api/automessage?text=…1.1 Set the text of that automatic message (default TIME'S UP).

Messages

MethodEndpointDescription
GET/api/message?text=WRAP%20UPShow a message (max 6 words). URL-encode the text. Uses the "keep timer visible" preference.
GET/api/message?text=…&withTimer=11.1 Same, overriding that preference for this message (1 beneath the timer, 0 full screen).
GET/api/message/hideRetract the message.
GET/api/messagewithtimer/on1.1 Preference: messages sit below the timer instead of replacing it.
GET/api/messagewithtimer/off1.1 Preference: messages replace the timer.
GET/api/quickmessages1.1 List saved quick messages.
GET/api/quickmessage/11.1 Show quick message slot N (1–6).

Presets

MethodEndpointDescription
GET/api/presetsList presets (name, seconds, wrapUpSeconds).
GET/api/preset/1Load preset slot N (1–5): clears, sets time and wrap-up.
GET/api/preset/load?name=KeynoteLoad a preset by name.

Display & Clock

MethodEndpointDescription
GET/api/blackout/on1.1 Black out the display instantly. The timer keeps running underneath.
GET/api/blackout/off1.1 Restore the display.
GET/api/blackout/toggle1.1 Toggle blackout — handy for a single button.
GET/api/cornerclock/on1.1 Small time-of-day clock in the corner of the display.
GET/api/cornerclock/off1.1 Corner clock off.
GET/api/background/blueBlue background for keying.
GET/api/background/blackBlack background.
GET/api/clock/12h1.1 12-hour clock format.
GET/api/clock/24h1.1 24-hour clock format.
GET/api/timezone?tz=Area/City1.1 Clock time zone (IANA name such as America/New_York, or system). Also used by /api/endat.

Status Fields

/api/status returns the fields below; /api/events streams the same object.

remainingSeconds — seconds left on the countdown (negative in overtime), or elapsed seconds on the stopwatch.
running — true while the countdown or stopwatch is running.
localMode / countUpMode — clock mode / stopwatch mode.
overtime — true once a countdown has passed zero.
formattedTime — timer as MM:SS (absolute value). Unchanged since 1.0.
formattedTimeSigned — timer as MM:SS, with a leading - in overtime.
lightColor / lightColorHexgray, green, yellow or red, and the same as a hex color for Companion button styling.
progress — fraction of the countdown remaining, 0 to 1.
wrapUpSeconds — yellow-light threshold in seconds (0 = off).
flashOn, flashBorder, stopAtZero, soundOn, showMilliseconds, showProgress, bgBlue, blackout, cornerClock — the matching options.
messageVisible — a message is on the display. messageWithTimer — the "keep timer visible" preference. messageShownWithTimer — whether the message currently showing uses that layout.
autoMessageAtZero / autoMessageText — the auto-message option and its text.
timeZone / hour12 — clock zone (IANA name or system) and format.
preset_N_name / preset_N_time / presetCount — preset slots 1–5 (empty strings when unused).
quick_N_text / quickCount — quick message slots 1–6.
version — app version.

Quick Test

With StageTime running, try these from a terminal:

# Check current status
curl http://localhost:8088/api/status

# Set timer to 10 minutes
curl http://localhost:8088/api/set?minutes=10

# Start the countdown
curl http://localhost:8088/api/start

# Show a message on screen
curl "http://localhost:8088/api/message?text=WRAP%20UP"

# Black out the display (and bring it back)
curl http://localhost:8088/api/blackout/toggle

# Follow every state change live
curl -N http://localhost:8088/api/events