Stream REST API Reference
Provision ultra-low latency live channels, query real-time stream telemetry, generate signed viewer playback tokens, monitor concurrent audience metrics, and manage DVR recordings.
https://api.vyntech.com.au/v1/streamAll endpoints require a Bearer token in the Authorization header with appropriate RBAC roles (stream:admin or stream:read).
Provisions a new live streaming channel, assigns unique RTMP and SRT ingest endpoints, generates a secure stream key, and initializes multi-bitrate HLS and WebRTC distribution pipelines.
Create Live ChannelAuth
Provision a live stream channel with transcoding and recording options.
Payload Example
{
"title": "Townhall Q3 2026",
"auto_record": true,
"chat_enabled": true,
"geo_allow_countries": ["AU", "NZ", "SG"],
"low_latency_mode": true
}Status Codes
- Name
201- Type
- HTTP
- Description
- Stream channel provisioned successfully
- Name
400- Type
- HTTP
- Description
- Validation error or invalid country code
- Name
401- Type
- HTTP
- Description
- Invalid or missing Bearer token
- Name
403- Type
- HTTP
- Description
- Insufficient privileges (requires stream:admin)
Request Parameters
- Name
title- Type
- string
- Required
- Description
- Descriptive name for the live channel or broadcast event.
- Name
auto_record- Type
- boolean
- Description
- Automatically archive live broadcast to DVR storage upon stream termination. Defaults to
false.
- Name
chat_enabled- Type
- boolean
- Description
- Enables interactive WebSocket chat rooms attached to this channel.
- Name
geo_allow_countries- Type
- string[]
- Description
- Array of ISO 3166-1 alpha-2 country codes allowed to view the stream. If omitted, global access is permitted.
- Name
low_latency_mode- Type
- boolean
- Description
- Enables sub-second LL-HLS and WebRTC SFU replication. Defaults to
true.
Lists all streaming channels for the tenant with current status (idle, live, ended) and viewer count.
List ChannelsAuth
Fetch a paginated list of all tenant stream channels.
Status Codes
- Name
200- Type
- HTTP
- Description
- Channel list returned successfully
- Name
401- Type
- HTTP
- Description
- Unauthorized
Returns real-time ingest telemetry for active encoders, including inbound bitrate, framerate, audio sample rate, keyframe interval, and dropped frame counters.
Get Ingest Health TelemetryAuth
Poll instantaneous encoder health and ingest performance metrics.
Status Codes
- Name
200- Type
- HTTP
- Description
- Stream telemetry returned
- Name
404- Type
- HTTP
- Description
- Stream channel not found
Returns concurrent viewer counts segmented across WebRTC sub-second egress and multi-variant HLS CDN delivery.
Get Viewer AnalyticsAuth
Fetch real-time audience metrics and delivery protocol distribution.
Status Codes
- Name
200- Type
- HTTP
- Description
- Viewer analytics calculated
- Name
404- Type
- HTTP
- Description
- Channel not found
Returns real-time viewer breakdown by ISO country code and city edge node.
Get Geographic DistributionAuth
Fetch geographical distribution of current viewers.
Status Codes
- Name
200- Type
- HTTP
- Description
- Geographic metrics calculated
- Name
404- Type
- HTTP
- Description
- Channel not found
Generates a cryptographically signed JWT token bound to the viewer's IP address and browser fingerprint to authorize playback and chat access on secure streams.
Generate Signed Playback TokenAuth
Create a short-lived signed playback JWT with IP binding and chat capabilities.
Payload Example
{
"stream_id": "strm_98af21d09bc34e",
"viewer_id": "usr_01H8KXYZ4F2B7NQ9RPWT3M6J",
"viewer_name": "Sarah Connor",
"viewer_ip": "203.0.113.42",
"can_chat": true,
"expires_in": "4h"
}Status Codes
- Name
200- Type
- HTTP
- Description
- Playback token signed successfully
- Name
403- Type
- HTTP
- Description
- Viewer IP geo-blocked by stream security policy
Parameters
- Name
stream_id- Type
- string
- Required
- Description
- The ID of the target stream channel.
- Name
viewer_id- Type
- string
- Required
- Description
- Unique identifier for the authenticated viewer in your application.
- Name
viewer_ip- Type
- string
- Required
- Description
- Client IPv4/IPv6 address for token cryptographic binding.
- Name
can_chat- Type
- boolean
- Description
- Whether this viewer is granted write permissions in the live chat channel.
- Name
expires_in- Type
- string
- Description
- Token duration string (e.g.
"2h","24h").
Immediately terminates the live ingest session, disavows active encoder connections, triggers DVR file finalization, and broadcasts stream end events over WebSockets.
Stop Stream IngestAuth
Force stop active broadcast ingest and finalize recording.
Status Codes
- Name
200- Type
- HTTP
- Description
- Ingest terminated and recording finalized
- Name
404- Type
- HTTP
- Description
- Stream not found or not currently live
Rooms & Interactive Meetings
Create multi-party conference rooms, manage waiting lobbies, and bridge guests onto live streams.
Create Room or MeetingAuth
Create a video meeting, 1-on-1 call room, or backstage greenroom.
Payload Example
{
"name": "Engineering Product Sync",
"type": "meeting",
"max_participants": 25,
"settings": {
"lobby_enabled": true,
"recording_enabled": true,
"chat_enabled": true,
"screen_share_allowed": true
}
}Status Codes
- Name
201- Type
- HTTP
- Description
- Room created successfully
- Name
403- Type
- HTTP
- Description
- Room quota exceeded for subscription plan
Get Room Join Token & Signaling EndpointAuth
Acquire connection credentials and WebSocket signaling endpoint to enter a room.
Status Codes
- Name
200- Type
- HTTP
- Description
- Join authorization granted
- Name
403- Type
- HTTP
- Description
- Room is full or access denied
Bridge Room to Live BroadcastAuth
Inject greenroom or stage room participants directly into a live broadcast feed.
Status Codes
- Name
200- Type
- HTTP
- Description
- Room successfully bridged onto broadcast feed
Virtual Numbers & Telephony
Search available phone numbers, lease lines, and place encrypted in-app voice/video calls.
Acquire Virtual Phone NumberAuth
Lease a virtual number on a monthly or discounted annual plan.
Payload Example
{
"phone_number_id": "num_01J8K3P9Q2",
"plan": "yearly"
}Status Codes
- Name
200- Type
- HTTP
- Description
- Number successfully acquired and assigned
- Name
409- Type
- HTTP
- Description
- Number is no longer available
Initiate In-App CallAuth
Place an in-app call to another registered virtual number.
Payload Example
{
"target_number": "+15551002000"
}Status Codes
- Name
200- Type
- HTTP
- Description
- Call ringing initiated
- Name
404- Type
- HTTP
- Description
- Target number not found
Third-Party Integrations
Configure Google Workspace, Microsoft 365, and Slack integrations at your organization level.
Configure Integration CredentialsAuth
Store organization-level OAuth or API credentials in JSON format.
Payload Example
{
"credentials": {
"client_id": "123456789-abc.apps.googleusercontent.com",
"client_secret": "GOCSPX-xxxxxxxxxxxx",
"redirect_uri": "https://stream.apis.vyntech.com.au/api/v1/integrations/google_calendar/callback"
},
"scopes": ["https://www.googleapis.com/auth/calendar"]
}Status Codes
- Name
200- Type
- HTTP
- Description
- Credentials stored securely