OSC / API reference

ShowTrak Server can be controlled remotely, so you can fire actions from lighting consoles, cue software, show‑control systems, or your own scripts. There are two ways in, and they use the same set of addresses:

  • OSC: send OSC messages to the Server over UDP on port 3333. You can change the port, or switch OSC off entirely, under Preferences → Network.
  • HTTP API: send a POST request to the Server on port 3000, using the same path. For example: POST http://<server-ip>:3000/API/All/WakeOnLAN. Actions do not run on GET, so a web page or link preview can never trigger one by accident; a GET answers 405.

The HTTP API is part of the same service as the Web UI, so it is always available while the Server is running. See Preferences for the Web UI options.

The Server has the same reference built in: open OSC/API Reference from the Settings menu. It is generated from the running Server, so it always matches the version you have installed.

How addresses work

Every address starts with /API/. Parts shown like :Slug or :ScriptID are placeholders. Replace each one with a real value:

  • Slug: the short, human‑friendly name of a client, monitor, dummy client, FreeKiosk terminal, group or tag, e.g. stage-left. Find it in that item's editor. Slugs never change when you rename something, so a cue you build today keeps working.
  • ScriptID: a script's ID, shown in the Script Manager.
  • EventID: an event declared by an integrated client (an app built on the ShowTrak SDK).
  • Method / ActionID / CommandID: fixed names, listed in full below.

Clients and groups still accept their old UUID or numeric GroupID in place of the slug, but slugs are the recommended way to address them.

Only the address is used. OSC arguments are ignored, so anything a command needs, such as a level, goes in the address as an extra segment: /API/FreeKiosk/lobby-tablet/brightness/40.

The HTTP API returns a small JSON response telling you whether the request succeeded. With OSC you'll see a brief on‑screen confirmation in the Server.

System

Address What it does
/API/Shutdown Closes the Server (respecting any save / show‑mode prompts)
/API/Shutdown/Force Closes the Server immediately, without prompts

A single client

Address What it does
/API/Client/:Slug/WakeOnLAN Sends a Wake‑on‑LAN packet to that client
/API/Client/:Slug/RunScript/:ScriptID Runs a script on that client
/API/Client/:Slug/TriggerEvent/:EventID Triggers an event on that client (integrated clients only)

A group

Address What it does
/API/Group/:Slug/WakeOnLAN Sends Wake‑on‑LAN to every client in the group
/API/Group/:Slug/RunScript/:ScriptID Runs a script on every client in the group
/API/Group/:Slug/TriggerEvent/:EventID Triggers an event on every integrated client in the group

A tag

A tag covers every client it applies to, including clients that are members through a group or another tag.

Address What it does
/API/Tag/:Slug/WakeOnLAN Sends Wake‑on‑LAN to every client carrying the tag
/API/Tag/:Slug/RunScript/:ScriptID Runs a script on every client carrying the tag
/API/Tag/:Slug/TriggerEvent/:EventID Triggers an event on every integrated client carrying the tag

All clients

Address What it does
/API/All/WakeOnLAN Sends Wake‑on‑LAN to every client
/API/All/RunScript/:ScriptID Runs a script on every client
/API/All/TriggerEvent/:EventID Triggers an event on every integrated client

Dummy clients

Address What it does
/API/Dummy/:Slug/Heartbeat Sends a heartbeat to a dummy client, keeping it online

This is how an outside system checks in to a dummy client. Send this address on a schedule and the dummy stays online; stop sending it and the dummy goes offline. A dummy's slug is the ID you gave it when you created it.

Monitors

Some monitoring checks can also control the device they watch. The address names the monitor, the check method, and the action:

Address What it does
/API/Monitor/:Slug/:Method/:ActionID Runs an action on a monitor
/API/Monitor/:Slug/:Method/:ActionID/:Value Runs an action that needs a value

The method is part of the address so that a monitor with two different kinds of check is never ambiguous. Today the projector check (pjlink) is the only one with actions:

Method / Action What it does
pjlink/power.on Power On. A projector already warming up or cooling down refuses this until it settles.
pjlink/power.off Power Off. Starts the cool‑down cycle. Most projectors refuse to power on again until it finishes.
pjlink/shutter.close Close Shutter (A/V mute on). Blanks picture and sound without powering down.
pjlink/shutter.open Open Shutter (A/V mute off)
pjlink/video.mute.on Blank Picture. Mutes video only, leaving audio running.
pjlink/video.mute.off Restore Picture
pjlink/audio.mute.on Mute Audio
pjlink/audio.mute.off Unmute Audio
pjlink/volume.up Volume Up, one step per message*
pjlink/volume.down Volume Down, one step per message*
pjlink/image.freeze Freeze Image*
pjlink/image.unfreeze Unfreeze Image*
pjlink/input.set/<Input> Set Input. Two characters: the source type (1 RGB, 2 Video, 3 Digital, 4 Storage, 5 Network, 6 Internal) followed by the input number, e.g. 31 for Digital 1. The monitor's window lists the inputs that projector reports.

* Needs a PJLink Class 2 projector. A Class 1 projector refuses the command, and ShowTrak reports that the projector does not support it.

If the projector refuses an action (still warming up, wrong password), you get its reason back as the error.

FreeKiosk terminals

Control an Android tablet running FreeKiosk. The address names the terminal and the command:

Address What it does
/API/FreeKiosk/:Slug/:CommandID Sends a command to a terminal
/API/FreeKiosk/:Slug/:CommandID/:Value Sends a command that needs a value
Command What it does
wake Wake Screen. Dismisses the screensaver. Does not turn a panel that is switched off back on; use screen.on for that.
screen.on Screen On
screen.off Screen Off. Without Device Owner, Device Admin or the accessibility service the tablet can only dim to 0%, so the panel stays on but looks black.
lock Lock Device. Needs Device Owner, Device Admin or the accessibility service.
reboot Reboot. Device Owner only.
screensaver.on Enable Screensaver
screensaver.off Disable Screensaver
reload Reload Page (WebView mode only)
audio.beep Beep. Handy for picking one tablet out of a rack.
clearCache Clear Cache (WebView mode only). Clears the WebView cache, cookies and local storage, then reloads, which signs the page out of anything it was logged into.
restart-ui Restart Kiosk UI. Restarts the FreeKiosk app without rebooting the tablet. Works without Device Owner.
brightness/<0-100> Sets screen brightness. Ignored by tablets that have App Brightness Control switched off.
volume/<0-100> Sets volume

A few things to know:

  • Reboot needs Device Owner. A tablet without it refuses the command and ShowTrak reports the refusal. If you just need to bring the kiosk back, restart-ui works on any tablet.
  • WebView‑only commands (reload, clearCache) are refused when the terminal is set to External App or Media Player mode, because the tablet would accept them and silently do nothing.
  • Remote control must be enabled in FreeKiosk on the tablet. If it is switched off, every command fails with "remote control is disabled".
  • Only the commands listed above can be sent. Nothing else in the FreeKiosk API is reachable through ShowTrak.

Reading data over HTTP

Address What it does
GET /API/Clients Returns clients, monitors, dummy clients and FreeKiosk terminals as JSON. Passwords, passcodes and SNMP community strings in monitor settings are replaced with [redacted]

Narrow the list with query parameters:

Parameter Example
Type Remote, Monitoring, Dummy or FreeKiosk
Status ONLINE, OFFLINE, DEGRADED or IDLE
GroupID 1
OperatingSystem Windows, macOS or Linux

For example: http://192.168.1.10:3000/API/Clients?Type=FreeKiosk&Status=OFFLINE.

Examples

# OSC: wake every client
/API/All/WakeOnLAN

# OSC: reboot the lobby tablet
/API/FreeKiosk/lobby-tablet/reboot

# OSC: set the lobby tablet to 40% brightness
/API/FreeKiosk/lobby-tablet/brightness/40

# OSC: switch the stage-left projector to Digital 1
/API/Monitor/proj-sl/pjlink/input.set/31

# HTTP: run script "RestartComputer" on one client
curl -X POST http://192.168.1.10:3000/API/Client/stage-left/RunScript/RestartComputer

# HTTP: keep a dummy client alive (send every few seconds)
curl -X POST http://192.168.1.10:3000/API/Dummy/PlaybackMac/Heartbeat

Notes

  • Keep the address segments in the exact order shown. Slugs are not case‑sensitive, but command and action names are: send screen.off, not Screen.Off.
  • If an address can't be processed (wrong slug, unknown command, device offline or refusing), you'll get an error response and an error notification in the Server.
  • Make sure your sender targets the Server's IP and the right port (3333 for OSC unless you changed it, 3000 for HTTP), and that your firewall allows the traffic.
  • The OSC/API Debug Terminal in the Settings menu shows incoming requests live, which is useful when testing.