Streaming & Targets
GET /api/inputs/get/status
Returns status for all inputs regardless of type. Common fields are always present; type-specific properties are resolved via reflection and omitted when not applicable.
When to use: Reach for this endpoint first — it covers every input type in a single call and is what dashboards and monitoring agents normally poll. Use the type-specific variants (/api/inputs/get/srt, etc.) only when you want a tighter, type-narrowed payload (smaller and with extra fields like Width/Height/StreamTime that don't apply to other input types).
Parameters: None
Response: 200 OK — JSON array:
[
{
"Id": "guid",
"Name": "SRT Input 1",
"Type": "SrtInput",
"RunningIndicatorState": "Running",
"WarningActive": false,
"LastWarningMessage": "",
"SourceUrl": null,
"SrtInputStreamState": "Connected",
"ListenerStatus": "Listening"
}
]
Type-specific fields (null when not applicable): SourceUrl, DecklinkInputChannel, SelectedSource, SrtInputStreamState, ListenerStatus, WebPageRendererUrl, MediaPlayerState, PlaybackState, RemoteServerAddress.
GET /api/targets/get/status
Returns status for all targets across all scenes. Common fields are always present; type-specific properties are resolved via reflection and omitted when not applicable.
When to use: This is the general-purpose status endpoint for targets — preferred for cross-type monitoring. Use the type-specific variants (/api/targets/get/srt, etc.) when you only care about one transport family and want extra type-specific fields without reflection-based filtering on the client side.
Parameters: None
Response: 200 OK — JSON array:
[
{
"Id": "guid",
"Name": "SRT Output 1",
"Type": "SrtTarget",
"RunningIndicatorState": "Running",
"WarningActive": false,
"LastWarningMessage": "",
"ConnectionStatus": "Connected",
"SrtConnectionString": "srt://host:port"
}
]
Type-specific fields (null when not applicable): DecklinkOutputChannel, PlaybackState, ConnectionStatus, RunningServerAddress, OutgoingBitRate, SrtConnectionString.
GET /api/inputs/get/srt
Lists all SRT inputs and their status, including both the standard SrtInput and the 16-channel-audio variant SrtInput16ChannelAudio. Inputs of any other type are omitted.
When to use: Use this when you only care about SRT inputs and want extra SRT-specific fields (ListenerAddress, RunningListenerAddress, Width, Height, StreamTime) without filtering the cross-type response client-side. For dashboards covering every input type, prefer /api/inputs/get/status.
Parameters: None
Response: 200 OK — JSON array:
[
{
"Id": "guid",
"Name": "SRT Input 1",
"ListenerAddress": "srt://:4900",
"RunningListenerAddress": "srt://0.0.0.0:4900",
"SrtInputStreamState": "Connected",
"ListenerStatus": "Listening",
"RunningIndicatorState": "Running",
"Width": 1920,
"Height": 1080,
"StreamTime": "00:05:30"
}
]
GET /api/targets/get/srt
Lists all SRT targets and their status, including both the standard SrtTarget and the 16-channel-audio variant SrtTarget16ChannelAudio. Targets of any other type are omitted.
When to use: Use this when you only care about SRT outputs and want SRT-specific fields (CurrentSrtEndPoint, UpTimeSinceStart) front-and-centre. For dashboards covering every target type, prefer /api/targets/get/status.
Parameters: None
Response: 200 OK — JSON array:
[
{
"Id": "guid",
"Name": "SRT Output 1",
"SrtConnectionString": "srt://host:port",
"CurrentSrtEndPoint": "srt://host:port",
"ConnectionStatus": "Connected",
"RunningIndicatorState": "Running",
"UpTimeSinceStart": "01:23:45"
}
]
GET /api/targets/get/rtmp
Lists all RTMP targets and their status.
Parameters: None
Response: 200 OK — JSON array:
[
{
"Id": "guid",
"Name": "RTMP Output 1",
"RunningServerAddress": "rtmp://host/app",
"CurrentRTMPEndPoint": "rtmp://host/app/stream",
"ConnectionStatus": "Connected",
"RunningIndicatorState": "Running"
}
]
GET /api/target/executecommand
Executes a command on a specific target within a scene.
Parameters:
| Parameter | Required | Description |
|---|---|---|
scene |
Yes | Scene name |
target |
Yes | Target name within the scene |
command |
Yes | Command property name (e.g. StartCommand, StopCommand) |
Example:
/api/target/executecommand?scene=Scene 1&target=SRT Output&command=StartCommand
Response:
200 OK—Command '{command}' executed successfully on target '{target}' in scene '{scene}'400 Bad Request— Missing parameters, command not valid403 Forbidden— Command is disabled404 Not Found— Scene, target, or command not found500 Internal Server Error— Execution failed
GET /scene/disablerender
Enables or disables rendering for a scene at the engine level. When disabled, the scene's video compositing pipeline is skipped entirely each frame and audio is replaced with silence — any targets attached to that scene receive a black/silent feed but stay running. Render Tuning settings on the scene are bypassed while disabled.
When to use: Toggle a scene off the GPU when you need to free compositing budget without tearing down its targets, or to mute a scene's outputs without disconnecting subscribers. Re-enable to resume normal rendering. Note: this does not stop or unload inputs/operators in the scene — they continue to be ticked.
Parameters:
| Parameter | Required | Description |
|---|---|---|
target |
Yes | Scene name |
value |
Yes | true to disable rendering, false to enable |
Response:
200 OK—Scene updated500 Internal Server Error— Missing parameters or scene not found
GET /scene/audio/getaudiolevellastsecond
Returns audio peak levels from the last second for a scene.
Parameters:
| Parameter | Required | Description |
|---|---|---|
scene |
Yes | Scene name |
Response:
200 OK— JSON array of audio peak level values500 Internal Server Error— Missing parameter or scene not found
GET /api/audio/getpeaklevels
Returns the live per-channel audio peak levels for an input or a scene, measured directly from that object's rendered audio frame.
Unlike the VU-meter properties (StereoPeakLevel, AudioPeakLevels, …), this reading is not gated by the EnableInputAudioProcessing setting. The VU meters are populated inside the per-input audio-processing pass, which is skipped entirely when EnableInputAudioProcessing is false (the meters then read silent). This endpoint instead measures the rendered audio frame that is actually handed downstream to the mixer/targets, so it stays accurate even when per-input processing — and therefore the input trim, gate, EQ, compressor and limiter — is bypassed. Use it to verify the audio that is genuinely flowing, independent of the meter gate.
When to use: Confirming what level a source is contributing regardless of the audio-processing toggle — e.g. proving that disabling EnableInputAudioProcessing bypasses InputTrimDb, or sanity-checking a feed when the VU meters are intentionally off.
Parameters:
| Parameter | Required | Description |
|---|---|---|
name |
Yes | Input or scene name |
Response: 200 OK — JSON object:
{
"Name": "TestSignal",
"IsScene": false,
"EnableInputAudioProcessing": true,
"PeakLevelsLinear": [0.1, 0.1, 0, 0, 0, 0, 0, 0],
"PeakLevelsDb": [-20.0, -20.0, -144, -144, -144, -144, -144, -144],
"StereoPeakLinear": 0.1,
"StereoPeakDb": -20.0
}
PeakLevelsLinear is the per-channel linear peak amplitude (0..1+, 0 = silent), 8 entries. PeakLevelsDb is the same in dBFS (-144 represents silence). StereoPeakLinear/StereoPeakDb are the max across channels 0 and 1.
400 Bad Request— Missingname404 Not Found— No input or scene with that name