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 OKCommand '{command}' executed successfully on target '{target}' in scene '{scene}'
  • 400 Bad Request — Missing parameters, command not valid
  • 403 Forbidden — Command is disabled
  • 404 Not Found — Scene, target, or command not found
  • 500 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 OKScene updated
  • 500 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 values
  • 500 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 — Missing name
  • 404 Not Found — No input or scene with that name