Routes
Base URL:http://{core_host_ip}:3002
/api/state/control/*judge on the Core instance state. Toggle deactivates when the state isACTIVEand activates in every other state./api/studio/control/toggletreats recording as on air: on air or recording goes off air, off air goes on air./api/modules/outputs/control/restartrestarts the Output Player apps on this machine./api/modules/control/reloadpulls the Core configuration from the cloud again./api/apps/control/restartrestarts the VRA apps the Core manages on this machine./status,/status/healthand/need no authentication.
text/plain; charset=utf-8, JSON answers are compact application/json; charset=utf-8. Every answer carries Cache-Control: no-store.
The state body
GET /api/state answers a compatible subset of Core v1’s state:
state,active,cloudandschedulingare always there.cloud.studio.activeis the studio state number:0off air,1on air,2recording.- The Core adds the sections it has from its own state snapshot:
switcher,automation_link,signals,audio,gpio,output,automationsandmacro. Their content follows the .NET Core’s state, not Core v1’s.
Authorization
The legacy routes accept device tokens, LAN access and calls from the Core machine itself, like the v2 routes, and also theEXTERNAL_APP Basic header while Allow legacy authorization is on. That header opens only these routes, never /api/v2. A device limited to features needs the Legacy routes feature here. See Authentication and LAN access.
The Legacy routes feature has its own Read and Control switch in Studio settings → Core API → Features.
What changed from Core v1
- Same paths, same bodies. The routes above answer what Core v1 answered.
- Refused actions are no longer
200. When the Core cannot apply a control route, it answers the current state (the instance state string, oronair/offair) with an error status:503while the Core is starting,500when the change failed. Core v1 answered200while it was not ready. /api/studio/control/offairexists. The old documentation listedoffair, Core v1 only answereddeactivate. Both work now./api/stateis a compatible subset. See The state body.- Restart routes act on this machine.
/api/modules/outputs/control/restartand/api/apps/control/restartrestart the apps the Core manages on its own machine. On Core v1, the outputs route reloaded the Output Player instances inside the Core; now it restarts the Output Player apps. - Device tokens and LAN access work here too. You can retire the shared
EXTERNAL_APPheader per device. - The legacy routes can be switched off per studio, with the Legacy routes feature.
?wait= or ?timeout=.