SRT routes
Use SRT routes to forward an SRT or UDP input to an SRT destination without adding a transcoding workflow.
Choose this whenSRT or UDP must be forwarded to SRT without transcoding.
Use another module whenUse Restreams for transcoding, overlays, or protocol changes; use SRT Servers for managed ingest and failover.
/api/srt-routes/createBefore you start
All methods require a valid x-access-token. Reserve any local listen ports and confirm that URL destinations are reachable. Configure SRT mode, latency, passphrase, and stream identity consistently on both ends.
What you can do
createandupdateconfigure the input, output, and SRT transport settings.getAll,getCount, andgetByIdinspect routes.startandstopcontrol the transport path.removedeletes a route.
Example workflow
- Select an input: local SRT listener, SRT URL, or supported UDP source.
- Select an output: local SRT listener or SRT destination URL.
- Create the route with the required transport settings.
- Start it and verify the source and destination independently.
- Use the route output as the stable input for another module when needed.
Common use cases
- Forward a venue contribution to a regional production instance.
- Bridge a UDP source into an SRT delivery path without transcoding.
- Expose one contribution feed through a stable SRT handoff for downstream recording or distribution.
Limits and troubleshooting
A route does not repair an unavailable source or destination. Listener ports must be free, URLs must be reachable, and SRT parameters must be compatible. Use Restreams instead when the workflow needs transcoding, overlays, media modification, or wider output choices.
Next steps
Connect the route to the intended Restream, Recording, or other supported consumer and test the entire path.
Route or replicate SRT without transcoding
Create a persistent transport route from an SRT or UDP source to an SRT destination, then start and inspect the saved route.
- Create the routeChoose the verified source and SRT destination presets.
POST /api/srt-routes/create - Start routingStart after source and destination reachability are confirmed.
POST /api/srt-routes/start - Inspect the routeRead the persisted source, destination, and active state.
POST /api/srt-routes/getById
Use SRT routes when the handoff stays a transport workflow. Use Restreams when protocol conversion, transcoding, resizing, audio changes, or overlays are required.
Create an SRT route with a name, source, destination, and initial active state. Send the dashboard-issued JWT in the x-access-token header.
The response contains the created route and success: true. Its top-level input and output arrays are empty immediately after creation; call getById when you need the expanded linked objects.
Common use cases
- Keep a stable SRT handoff in front of restream jobs whose destinations change between events.
- Give scheduled recording jobs a consistent route output instead of binding each job to the original contribution source.
- Provision a route on demand from vMix; use
startandstopfor routine operator controls after the route exists.
Request examples
Choose the preset that matches the source and destination, then add only the transport settings required by that path.
The route listens on a local SRT port and owns the incoming contribution handoff.
Destination preset: SRT listen port. The route exposes a local SRT listening port for downstream consumers that connect later.
Destination preset: SRT Output URL. The route pushes to a downstream SRT destination URL right away.
Destination preset: UDP Output URL. The route hands off to a downstream UDP destination URL when the next hop expects UDP.
The route pulls from an upstream SRT URL instead of waiting on a local listening port.
Destination preset: SRT listen port. The route exposes a local SRT listening port for downstream consumers that connect later.
Destination preset: SRT Output URL. The route pushes to a downstream SRT destination URL right away.
Destination preset: UDP Output URL. The route hands off to a downstream UDP destination URL when the next hop expects UDP.
The route reads from a UDP source URL when the upstream side is already exposed as UDP.
Destination preset: SRT listen port. The route exposes a local SRT listening port for downstream consumers that connect later.
Destination preset: SRT Output URL. The route pushes to a downstream SRT destination URL right away.
Destination preset: UDP Output URL. The route hands off to a downstream UDP destination URL when the next hop expects UDP.
Dashboard label: Route name.
Characters: A-Z, a-z, 0-9, and -.
Dashboard group: SRT/UDP route source.
The route source type. In the dashboard, the SRT option is shown as SRT Stream URL (srt://). The current example uses INPUT_TYPE_SRT_URL.
Dashboard label: SRT Stream URL (srt://).
Connect to the specified URL address and try to pull the stream. The current example uses a listener URL: srt://0.0.0.0:2034?mode=listener.
Dashboard label: Receiver buffer size.
This is an optional advanced SRT input setting. The dashboard tooltip says the default receiver buffer size is 12058624 bytes and the recommended value is 48234496 bytes. Live route tests confirm the API accepts this field and returns it from getById when it is set.
Input module name. Use MODULE_SRT_ROUTERS for an SRT route.
Dashboard group: SRT route destination.
Dashboard label: Stream destination.
In the dashboard, the SRT destination option is shown as SRT Output URL (srt://). The current example uses OUTPUT_TYPE_SRT_URL.
Dashboard label: Output Stream URL.
Specify the address of the streaming platform or the stream destination. The current example uses srt://0.0.0.0:2035.
Output module name. Use MODULE_SRT_ROUTERS for an SRT route.
Listen source preset: SRT Port.
When the route source is built from the dashboard's listen-port preset, the default port is 2035. This is the practical alternative to input.input_stream_url.
Dashboard label: SRT Listen Host.
The local IP address to bind. The dashboard tooltip explicitly calls out 0.0.0.0 for all interfaces and 127.0.0.1 for localhost-only binding. The default is 0.0.0.0.
Dashboard label: Latency.
Defines the maximum accepted transmission latency. The current dashboard default for route SRT settings is 500 ms.
Dashboard label: Receiver latency.
Minimum receiver buffering delay before the application gets the packet. The current dashboard default is 200 ms.
Dashboard label: Flow control window size.
Limits the maximum number of packets in flight. The current dashboard default is 25600 pkts.
Dashboard label: Input bandwidth.
Set this to the anticipated bitrate of the live stream. The current dashboard default is 750000 Byte/s.
Dashboard label: Recovery bandwidth.
Bandwidth overhead above the input bandwidth, in percent. The current dashboard default is 25%.
Dashboard label: Bandwidth limit.
Use 0 for the default bandwidth limit.
Dashboard label: Stream ID (optional).
Available on the SRT listen/source configuration block.
Dashboard label: Passphrase (optional).
Password for the encrypted transmission. The dashboard tooltip says it must be between 10 and 79 characters.
Listen destination preset: SRT Port.
When the route destination is built from the dashboard's listen-port preset, the default port is 3035. This is the practical alternative to output.output_stream_url.
Dashboard label: SRT Host.
In listener mode this is the local IP to bind, and in caller or rendezvous mode it is the remote IP to connect to. The current dashboard default is 0.0.0.0.
Dashboard label: Mode.
Possible values are caller, listener, or rendezvous. The current dashboard default is the second SRT mode option, which corresponds to the default route form shown in the UI.
Dashboard label: Latency.
Defines the maximum accepted transmission latency. The current dashboard default is 500 ms.
Dashboard label: Receiver latency.
Minimum receiver buffering delay before data is delivered to the receiving application. The current dashboard default is 200 ms.
Dashboard label: Flow control window size.
The current dashboard default is 25600 pkts.
Dashboard label: Sender Buffer Size.
The current dashboard default is 12288000 Bytes.
Dashboard label: Receiver Buffer Size.
The current dashboard default is 12288000 Bytes.
Dashboard label: Input bandwidth.
The current dashboard default is 750000 Byte/s.
Dashboard label: Recovery bandwidth.
The current dashboard default is 25%.
Dashboard label: Stream ID (optional).
The dashboard tooltip notes that it is settable in Caller mode only.
Dashboard label: Passphrase (optional).
Password for encrypted transmission. The dashboard tooltip says it must be between 10 and 79 characters.
Dashboard label: Enforced encryption.
Requires both connection parties to either use the same passphrase or both omit the passphrase. Otherwise the connection is rejected.
Dashboard label: Accept group connections.
When enabled on a listener socket, it allows this socket to accept group connections.
Dashboard label: Group stability timeout.
The current dashboard default is 60 ms.
Dashboard label: Connection timeout.
Applies to caller and rendezvous connection modes. The current dashboard default is 3000 ms.
Dashboard label: Enable once created.
Controls whether the route should be enabled immediately after creation.
Identifier of the newly created SRT route.
Convenience alias for the created route identifier. In live responses, id matches _id.
Name stored for the created route.
Immediately after creation, the live product returns an empty input array on the top level. Use getById to fetch expanded input objects.
Immediately after creation, the live product returns an empty output array on the top level. Use getById to fetch expanded output objects.
Whether the route is enabled after creation.
Creation timestamp returned by the live product.
The live product returns a boolean success flag together with the created route object. On success it is true.