media server logo
Toggle documentation navigation
Callaba home
Command-first documentation

Search the module, then move faster through the API

Find the exact module, copy the working request shape, and move from product workflow to API call without getting buried in the tree.

AI workflow helperDescribe what you want to buildOptional tool

Write the workflow in plain language. We will turn it into a GPT-ready brief you can use to generate requests, module order, and starter payloads.

Streams

On this page

Find an endpoint

10 endpoints
Search by endpoint name, HTTP verb, or URL, then jump straight to its request.

Streams gives each live feed a stable operational identity above the transport endpoint. Use it when an SRT or RTMP server exists, but your team also needs a durable stream name, role, stream ID, optional host binding, and saved inspection data.

This is the record operators use to follow one feed across monitoring, playback, troubleshooting, and automation. If a listener is restarted or a server object is reused, the stream identity stays the same.

  • role_name defines whether the feed is a publisher or receiver.
  • stream_id gives the feed a durable identifier for routing and operations.
  • host optionally ties the stream to a known remote source.
  • audio_settings and stream_meta_data store inspection results for later reuse.

Common stream records

Publisher on an SRT listener. Use this when a known encoder publishes into an SRT ingest point and you want a consistent stream record for dashboards and troubleshooting.

{
  "name": "Main stage publisher",
  "role_name": "publisher",
  "stream_id": "publisher/main-stage/srt-main",
  "entity_id": "680400000000000000000001",
  "module_name": "MODULE_SRT_SERVERS",
  "active": true
}

Receiver with host binding. Use this when a return feed should be associated with a specific remote host, such as a contribution partner or field unit.

{
  "name": "Remote return receiver",
  "role_name": "receiver",
  "stream_id": "receiver/main-stage/return-feed",
  "host": "198.51.100.24",
  "entity_id": "680400000000000000000001",
  "module_name": "MODULE_SRT_SERVERS",
  "active": true
}

Publisher on an RTMP server. Use this for RTMP contribution or origin workflows where the published feed needs a stable operational identity.

{
  "name": "RTMP primary publish",
  "role_name": "publisher",
  "stream_id": "studio/live/program",
  "entity_id": "680500000000000000000001",
  "module_name": "MODULE_RTMP_SERVERS",
  "active": true
}

If operators trigger actions from vMix, the create, start, and stop methods also include vMix Script examples.

Operational workflows

Register a feed once and keep it traceable

Create a stream record as soon as a contribution path is assigned. Use that record in dashboards, incident notes, and operator tools instead of referring only to the underlying server object.

Inspect a live source and save what matters

After a source connects, run getStreamInfo to inspect the real feed. Save the resulting audio layout or other media details in audio_settings or stream_meta_data with create, update, or setStreamInfo. This avoids rediscovering channel order, codec details, or other source-specific settings each time the feed returns.

Resolve the live address for playback or downstream routing

Use start to activate the stream, then getStreamInfo when a player, monitoring probe, or downstream workflow needs the concrete SRT or RTMP URL for the current session.

POST
/api/streams/create

Creates a new stream row in Callaba Engine.

The stream object does not replace an SRT server or RTMP server. It sits on top of one of those entities and keeps the stream-facing identity stable: name, role, stream id, optional host, and any saved audio metadata the team should not have to rediscover later.

If your team triggers provisioning from an operator workflow, the example set below also includes vMix Script tabs for the same create call.

Examples by preset

Start with the preset that matches the transport backing the stream. Publisher and receiver rows on top of SRT listeners behave differently in practice, and RTMP-backed rows normally carry a different stream id convention again.

Workflow-oriented use cases

Register a publisher stream above an SRT server

Use this when one managed SRT listener serves multiple named publisher flows and you want those flows to stay visible as first-class rows that operators can recognize quickly.

Persist receiver-side stream identity

Use this when routed or pulled traffic should keep a stable receiver-facing identity instead of only being implied by transport state.

Store stream-specific audio metadata

Use this when channel naming, layout, or per-track meaning should live with the stream object instead of being rediscovered every time.

SRT publisher stream

Use this when one SRT listener hosts a named publisher stream that operators should treat as a first-class object.

SRT publisher stream
Copy code
curl --request POST \
--url http://localhost/api/streams/create \
--header 'x-access-token: <your_api_token>' \
--header 'Content-Type: application/json' \
--data '{
"name": "Main stage publisher",
"role_name": "publisher",
"stream_id": "publisher/main-stage/srt-main",
"entity_id": "680400000000000000000001",
"module_name": "MODULE_SRT_SERVERS",
"active": true
}'
SRT receiver stream

Use this when a receiver-side or returned feed should keep its own stream identity and optional host binding.

SRT receiver stream
Copy code
curl --request POST \
--url http://localhost/api/streams/create \
--header 'x-access-token: <your_api_token>' \
--header 'Content-Type: application/json' \
--data '{
"name": "Remote return receiver",
"role_name": "receiver",
"stream_id": "receiver/main-stage/return-feed",
"host": "198.51.100.24",
"entity_id": "680400000000000000000001",
"module_name": "MODULE_SRT_SERVERS",
"active": true
}'
RTMP publisher stream

Use this when the backing transport entity is an RTMP server rather than an SRT listener.

RTMP publisher stream
Copy code
curl --request POST \
--url http://localhost/api/streams/create \
--header 'x-access-token: <your_api_token>' \
--header 'Content-Type: application/json' \
--data '{
"name": "RTMP primary publish",
"role_name": "publisher",
"stream_id": "studio/live/program",
"entity_id": "680500000000000000000001",
"module_name": "MODULE_RTMP_SERVERS",
"active": true
}'
Stream with saved audio layout

Use this when channel layout and naming should be stored with the stream row after inspection.

Stream with saved audio layout
Copy code
curl --request POST \
--url http://localhost/api/streams/create \
--header 'x-access-token: <your_api_token>' \
--header 'Content-Type: application/json' \
--data '{
"name": "Commentary audio stream",
"role_name": "publisher",
"stream_id": "publisher/commentary/audio-main",
"entity_id": "680400000000000000000001",
"module_name": "MODULE_SRT_SERVERS",
"audio_settings": {
"streams": [
{
"id": 0,
"name": "Commentary",
"channel_layout": "mono",
"channels": [
{
"id": "FC",
"name": "Commentary"
}
]
}
]
},
"active": true
}'
Request body parameters
Identity
name
string
Copy direct link

Dashboard label: Name.

Human-facing name of the saved stream row.

role_name
string
Copy direct link

Dashboard label: Role.

Typical product values include publisher, receiver, pusher, and puller.

stream_id
string
Copy direct link

Stable stream identifier stored above the backing transport entity.

host
string
Copy direct link

Optional host binding used when the stream identity should stay tied to a concrete remote peer.

Transport link
entity_id
string
Copy direct link

Identifier of the backing transport-side entity, for example an SRT server or RTMP server.

module_name
string
Copy direct link

Module family behind the stream row. In practice this is most often MODULE_SRT_SERVERS or MODULE_RTMP_SERVERS.

Metadata
audio_settings
object
Copy direct link

Optional saved audio layout with named tracks and channels.

Runtime
active
boolean
Copy direct link

Dashboard label: Enable once created.

Controls whether the stream row should be active right after provisioning.

Create stream
Copy code
curl --request POST \
--url http://localhost/api/streams/create \
--header 'x-access-token: <your_api_token>' \
--header 'Content-Type: application/json' \
--data '{
"name": "Main stage publisher",
"role_name": "publisher",
"stream_id": "publisher/main-stage/srt-main",
"entity_id": "680400000000000000000001",
"module_name": "MODULE_SRT_SERVERS",
"active": true
}'
Response
Identity
_id / id / name / role_name / stream_id / host
mixed
Copy direct link

Identifiers and the saved stream identity fields.

Transport link
entity_id / entityModel / module_name
mixed
Copy direct link

Reference back to the transport object that owns or serves the stream.

Metadata
stream_meta_data / audio_settings
mixed
Copy direct link

Saved inspection output, codec notes, and optional channel mapping metadata.

Runtime
active / created / modified
mixed
Copy direct link

Runtime flag and backend-managed timestamps.

Operation result
success
boolean
Copy direct link

Successful stream model responses expose success: true as a virtual field.

Response: Create stream
JSON
Copy code
{
"_id": "680600000000000000000001",
"id": "680600000000000000000001",
"name": "Main stage publisher",
"role_name": "publisher",
"host": "",
"stream_id": "publisher/main-stage/srt-main",
"entity_id": "680400000000000000000001",
"entityModel": "ServerModel",
"module_name": "MODULE_SRT_SERVERS",
"stream_meta_data": {
"codec_name": "h264",
"fps": "30/1"
},
"audio_settings": {
"streams": [
{
"id": 0,
"name": "Track-0",
"channel_layout": "stereo",
"channels": [
{
"id": "FL",
"name": "Left"
},
{
"id": "FR",
"name": "Right"
}
]
}
]
},
"created": "2026-03-24T08:45:00.000Z",
"modified": "2026-03-24T08:45:00.000Z",
"active": true,
"success": true
}
POST
/api/streams/getCount
POST
/api/streams/getAll
POST
/api/streams/getById
POST
/api/streams/update
POST
/api/streams/setStreamInfo
DELETE
/api/streams/remove
POST
/api/streams/start
POST
/api/streams/stop
POST
/api/streams/getStreamInfo