Docs/Stream/API Reference
REST API Reference

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.

Base URL
https://api.vyntech.com.au/v1/stream

All 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.
Request
POST/v1/stream/channels
Response 201

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
Request
GET/v1/stream/channels
Response 200

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
Request
GET/v1/stream/channels/{id}/health
Response 200

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
Request
GET/v1/stream/analytics/viewers/{id}
Response 200

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
Request
GET/v1/stream/analytics/geo/{id}
Response 200

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").
Request
POST/v1/stream/playback-token
Response 200

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
Request
POST/v1/stream/channels/{id}/stop
Response 200

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
Request
POST/v1/stream/rooms
Response 201

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
Request
POST/v1/stream/rooms/{id}/join
Response 200

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
Request
POST/v1/stream/rooms/{id}/bridge
Response 200

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
Request
POST/v1/stream/phone/numbers/acquire
Response 200

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
Request
POST/v1/stream/phone/call
Response 200

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
Request
PUT/v1/stream/integrations/{provider}/config
Response 200
← Plans & Billing QuotasBack to Quickstart →

We use cookies and similar technologies to measure traffic and improve the site. You can choose which categories to allow. Manage Preferences.