Skip to main content

Overview

The Broadcasts API allows you to create and manage live streams, IP cameras, stream sources, and playlists. All endpoints are prefixed with /v2/broadcasts.

Create Broadcast

Create a new broadcast, IP camera, or stream source.
POST /v2/broadcasts/create
curl -X POST "https://example.com:5443/LiveApp/rest/v2/broadcasts/create?autoStart=false" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer {jwt}" \
  -d '{
    "streamId": "mystream",
    "name": "My Live Stream",
    "description": "Stream description",
    "type": "liveStream"
  }'
streamId
string
Custom stream ID. If empty, auto-generated. Must be unique and valid.
name
string
Display name for the broadcast
description
string
Description of the broadcast
type
string
Broadcast type:
  • liveStream - Regular live stream (RTMP/WebRTC ingested)
  • ipCamera - IP Camera stream (pulled by server)
  • streamSource - Stream source (pulled by server)
  • VoD - Video on Demand
  • playlist - Playlist
ipAddr
string
IP address (for IP cameras)
streamUrl
string
Stream URL (for stream sources)
username
string
Username for IP camera authentication
password
string
Password for IP camera authentication
subFolder
string
Subfolder for storing recordings
autoStart
boolean
default:"false"
Automatically start pulling stream (only for IP cameras and stream sources)
streamId
string
ID of the created broadcast
rtmpURL
string
RTMP URL for publishing
status
string
Broadcast status: created, broadcasting, finished
type
string
Type of broadcast
name
string
Broadcast name

Get Broadcast

Retrieve a broadcast object by ID.
GET /v2/broadcasts/{id}
curl -X GET "https://example.com:5443/LiveApp/rest/v2/broadcasts/stream1" \
  -H "Authorization: Bearer {jwt}"
id
string
required
Broadcast ID
Response: Full Broadcast object with all properties.

Update Broadcast

Update broadcast properties.
PUT /v2/broadcasts/{id}
curl -X PUT "https://example.com:5443/LiveApp/rest/v2/broadcasts/stream1" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer {jwt}" \
  -d '{
    "name": "Updated Stream Name",
    "description": "New description"
  }'
id
string
required
Broadcast ID to update
name
string
New broadcast name
description
string
New description
streamUrl
string
New stream URL (for stream sources)
ipAddr
string
New IP address (for IP cameras)
username
string
New username
password
string
New password
success
boolean
Whether update was successful

Delete Broadcast

Delete a broadcast and stop if it’s currently broadcasting.
DELETE /v2/broadcasts/{id}
curl -X DELETE "https://example.com:5443/LiveApp/rest/v2/broadcasts/stream1?deleteSubtracks=true" \
  -H "Authorization: Bearer {jwt}"
id
string
required
Broadcast ID to delete
deleteSubtracks
boolean
default:"true"
Also delete subtracks (conference participants)
success
boolean
true if deleted successfully

Delete Multiple Broadcasts

Delete multiple broadcasts in bulk.
DELETE
curl -X DELETE "https://example.com:5443/LiveApp/rest/v2/broadcasts/?ids=stream1,stream2,stream3" \
  -H "Authorization: Bearer {jwt}"
ids
string
required
Comma-separated stream IDs to delete

List Broadcasts

Get paginated list of broadcasts with optional filtering and sorting.
GET /v2/broadcasts/list/{offset}/{size}
curl -X GET "https://example.com:5443/LiveApp/rest/v2/broadcasts/list/0/10?type_by=liveStream&sort_by=date&order_by=desc" \
  -H "Authorization: Bearer {jwt}"
offset
integer
required
Pagination offset (starting point)
size
integer
required
Number of items to fetch (max: 50)
type_by
string
Filter by type: liveStream, ipCamera, streamSource, VoD
sort_by
string
Sort field: name, date, status
order_by
string
Sort order: asc or desc
Search string to filter results
Response: Array of Broadcast objects.

Get Broadcast Count

Get total number of broadcasts.
GET /v2/broadcasts/count
curl -X GET "https://example.com:5443/LiveApp/rest/v2/broadcasts/count" \
  -H "Authorization: Bearer {jwt}"
number
integer
Total number of broadcasts

Get Active Live Stream Count

Get count of currently active live streams.
GET /v2/broadcasts/active-live-stream-count
curl -X GET "https://example.com:5443/LiveApp/rest/v2/broadcasts/active-live-stream-count" \
  -H "Authorization: Bearer {jwt}"
number
integer
Number of active live streams

Stream Control

Start Stream Source

Start pulling a stream source, IP camera, or playlist.
POST /v2/broadcasts/{id}/start
curl -X POST "https://example.com:5443/LiveApp/rest/v2/broadcasts/stream1/start" \
  -H "Authorization: Bearer {jwt}"
id
string
required
Broadcast ID to start

Stop Streaming

Stop an active broadcast.
POST /v2/broadcasts/{id}/stop
curl -X POST "https://example.com:5443/LiveApp/rest/v2/broadcasts/stream1/stop?stopSubtracks=true" \
  -H "Authorization: Bearer {jwt}"
id
string
required
Broadcast ID to stop
stopSubtracks
boolean
Also stop subtracks (conference participants)

Recording Control

Enable/Disable Recording

Control recording for a specific stream.
PUT /v2/broadcasts/{id}/recording/{recording-status}
curl -X PUT "https://example.com:5443/LiveApp/rest/v2/broadcasts/stream1/recording/true?recordType=mp4&resolutionHeight=720" \
  -H "Authorization: Bearer {jwt}"
id
string
required
Stream ID
recording-status
boolean
required
true to start recording, false to stop
recordType
string
default:"mp4"
Record format: mp4 or webm
resolutionHeight
integer
Resolution height to record (for adaptive streaming)
fileName
string
Custom base filename (without extension)

RTMP/SRT Endpoints

Add Endpoint

Add an RTMP or SRT re-streaming endpoint.
POST /v2/broadcasts/{id}/endpoint
curl -X POST "https://example.com:5443/LiveApp/rest/v2/broadcasts/stream1/endpoint?resolutionHeight=720" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer {jwt}" \
  -d '{
    "endpointUrl": "rtmp://example.com/live/stream"
  }'
id
string
required
Broadcast ID
endpointUrl
string
required
RTMP or SRT URL for re-streaming
resolutionHeight
integer
Specific resolution to send to endpoint
success
boolean
Whether endpoint was added
dataId
string
Generated endpoint service ID

Remove Endpoint

Remove an RTMP or SRT endpoint.
DELETE /v2/broadcasts/{id}/endpoint
curl -X DELETE "https://example.com:5443/LiveApp/rest/v2/broadcasts/stream1/endpoint?endpointServiceId=custom123abc&resolutionHeight=720" \
  -H "Authorization: Bearer {jwt}"
id
string
required
Broadcast ID
endpointServiceId
string
required
Endpoint service ID to remove
resolutionHeight
integer
Resolution height if endpoint was added with specific resolution

Statistics

Get Broadcast Statistics

Get viewer statistics for a specific stream.
GET /v2/broadcasts/{id}/broadcast-statistics
curl -X GET "https://example.com:5443/LiveApp/rest/v2/broadcasts/stream1/broadcast-statistics" \
  -H "Authorization: Bearer {jwt}"
id
string
required
Stream ID
totalRTMPWatchersCount
integer
Number of RTMP viewers
totalHLSWatchersCount
integer
Number of HLS viewers
totalWebRTCWatchersCount
integer
Number of WebRTC viewers
totalDASHWatchersCount
integer
Number of DASH viewers

Get Total Statistics

Get total viewer statistics across all streams.
GET /v2/broadcasts/total-broadcast-statistics
curl -X GET "https://example.com:5443/LiveApp/rest/v2/broadcasts/total-broadcast-statistics" \
  -H "Authorization: Bearer {jwt}"
totalHLSWatchersCount
integer
Total HLS viewers
totalWebRTCWatchersCount
integer
Total WebRTC viewers
totalDASHWatchersCount
integer
Total DASH viewers
activeLiveStreamCount
integer
Number of active broadcasts

Stream Information

Get Stream Info

Get technical stream information (resolution, bitrates, codec).
GET /v2/broadcasts/{id}/stream-info
curl -X GET "https://example.com:5443/LiveApp/rest/v2/broadcasts/stream1/stream-info" \
  -H "Authorization: Bearer {jwt}"
id
string
required
Stream ID
Response: Array of stream info objects containing:
  • videoHeight - Video resolution height
  • videoWidth - Video resolution width
  • videoBitrate - Video bitrate
  • audioBitrate - Audio bitrate
  • videoCodec - Video codec name

Get Stream Duration

Get duration of a stream URL in milliseconds.
GET /v2/broadcasts/duration
curl -X GET "https://example.com:5443/LiveApp/rest/v2/broadcasts/duration?url=https://example.com/video.mp4" \
  -H "Authorization: Bearer {jwt}"
url
string
required
URL of the stream to check duration
success
boolean
Whether duration was retrieved
dataId
string
Duration in milliseconds (as string)
errorId
integer
Error code if failed:
  • -1: Duration not available
  • -2: URL cannot be opened
  • -3: Cannot get stream info

Playlist Operations

Play Next Item

Skip to next or specific item in a playlist.
POST /v2/broadcasts/playlists/{id}/next
curl -X POST "https://example.com:5443/LiveApp/rest/v2/broadcasts/playlists/playlist1/next?index=3" \
  -H "Authorization: Bearer {jwt}"
id
string
required
Playlist ID
index
integer
Index of item to play. -1 or omit to play next item. First item is index 0.

Seek Time

Seek to specific time in a playing stream source, VoD, or playlist.
PUT /v2/broadcasts/{id}/seek-time/{seekTimeMs}
curl -X PUT "https://example.com:5443/LiveApp/rest/v2/broadcasts/stream1/seek-time/30000" \
  -H "Authorization: Bearer {jwt}"
id
string
required
Broadcast ID
seekTimeMs
integer
required
Seek position in milliseconds

IP Camera Operations

Search ONVIF Devices

Discover ONVIF IP cameras on the local network.
GET /v2/broadcasts/onvif-devices
curl -X GET "https://example.com:5443/LiveApp/rest/v2/broadcasts/onvif-devices" \
  -H "Authorization: Bearer {jwt}"
Response: Array of discovered ONVIF device URLs.

Get Camera Profiles

Get available profiles for an ONVIF IP camera.
GET /v2/broadcasts/{id}/ip-camera/device-profiles
curl -X GET "https://example.com:5443/LiveApp/rest/v2/broadcasts/camera1/ip-camera/device-profiles" \
  -H "Authorization: Bearer {jwt}"
id
string
required
IP Camera broadcast ID
Response: Array of available profile names.

Move IP Camera

Control PTZ (Pan-Tilt-Zoom) movements.
POST /v2/broadcasts/{id}/ip-camera/move
curl -X POST "https://example.com:5443/LiveApp/rest/v2/broadcasts/camera1/ip-camera/move?valueX=0.5&valueY=0.3&movement=relative" \
  -H "Authorization: Bearer {jwt}"
id
string
required
IP Camera ID
valueX
float
default:"0"
Movement in X direction (-1.0 to 1.0)
valueY
float
default:"0"
Movement in Y direction (-1.0 to 1.0)
valueZ
float
default:"0"
Zoom value:
  • Absolute: 0.0 to 1.0
  • Relative/Continuous: -1.0 to 1.0
movement
string
default:"relative"
Movement type: relative, absolute, or continuous

Stop Camera Movement

Stop ongoing PTZ movement.
POST /v2/broadcasts/{id}/ip-camera/stop-move
curl -X POST "https://example.com:5443/LiveApp/rest/v2/broadcasts/camera1/ip-camera/stop-move" \
  -H "Authorization: Bearer {jwt}"
id
string
required
IP Camera ID

Get Camera Error

Check for errors after IP camera connection failure.
GET /v2/broadcasts/{streamId}/ip-camera-error
curl -X GET "https://example.com:5443/LiveApp/rest/v2/broadcasts/camera1/ip-camera-error" \
  -H "Authorization: Bearer {jwt}"
streamId
string
required
IP Camera stream ID
success
boolean
Whether error info was retrieved
message
string
Error message if any

Build docs developers (and LLMs) love