GPI-Psychic

API reference

The app serves a plain HTTP API on the port chosen at launch. Paths below are extracted from the server's own route definitions, so they cannot drift from what the app actually serves.

Driving a tally from another tool

This is the one most people want. Every input answers three URLs, with no request body, so anything that can fire an HTTP request can drive a tally light — Stream Deck, Companion, QLab, a cron job:

GET or POST  http://<this-machine>:<port>/api/inputs/<id>/state/on
GET or POST  http://<this-machine>:<port>/api/inputs/<id>/state/off
GET or POST  http://<this-machine>:<port>/api/inputs/<id>/state/toggle

The dashboard shows the exact URLs, ready to copy, in a virtual input's editor. These keep working from another machine even when the sign-in gate is on, because external tools generally cannot hold a session — see Webhooks below.

Health no sign-in required

Liveness, radio-mesh state, database status and the machine's LAN addresses.

MethodPath
GET/api/health

Authentication no sign-in required

The optional sign-in gate. Off by default; the machine running the app is always trusted.

MethodPath
GET/api/auth/status
POST/api/auth/login
POST/api/auth/logout
POST/api/auth/credentials
POST/api/auth/webhooks
POST/api/auth/webhook-throttle
POST/api/auth/enable

Webhooks no sign-in required

Drive any input from an external tool. No body needed, so anything that can fire an HTTP request works.

MethodPath
POST/api/inputs/:id/state/:action
GET/api/inputs/:id/state/:action

Devices sign-in required when the gate is on

MethodPath
GET/api/devices
POST/api/devices
POST/api/devices/:id/connect
POST/api/devices/:id/disconnect
PATCH/api/devices/:id
POST/api/devices/:id/identify
DELETE/api/devices/:id

Inputs, outputs and wiring sign-in required when the gate is on

MethodPath
GET/api/inputs
GET/api/outputs
POST/api/inputs
POST/api/outputs
DELETE/api/inputs/:id
DELETE/api/outputs/:id
PATCH/api/inputs/:id
PATCH/api/outputs/:id
PUT/api/inputs/:id/outputs
PUT/api/outputs/:id/inputs
POST/api/inputs/:id/state
POST/api/outputs/:id/state
POST/api/outputs/:id/recompute

Coordinator and radio network sign-in required when the gate is on

MethodPath
GET/api/xbee/ports
GET/api/xbee/config
POST/api/xbee/config/diff
POST/api/xbee/config/write
POST/api/xbee/config/restore
GET/api/xbee/network
POST/api/xbee/network/pan
POST/api/xbee/network/pairing-window
POST/api/xbee/network/join-policy
POST/api/xbee/connect

Firmware this machine only

Guided USB flashing. Refused outright for non-loopback callers -- flashing a board plugged into someone else's machine is never wanted.

MethodPath
GET/api/firmware/candidates
GET/api/firmware/identify
POST/api/firmware/flash

System, backup and metrics sign-in required when the gate is on

MethodPath
GET/api/system/metrics
GET/api/system/backup
POST/api/system/clear-all
POST/api/system/restore