Session management for live streaming with protocol support, quality controls, and real-time metrics.
| Method | Path | Summary |
|---|---|---|
GET | /streaming/sessions/{sessionId} | Get session details |
PATCH | /streaming/sessions/{sessionId} | Update session settings |
DELETE | /streaming/sessions/{sessionId} | End and delete session |
GET | /streaming/analytics/prometheus | Export Prometheus metrics |
GET | /streaming/sessions/{sessionId}/webrtc/candidates | Get ICE candidates |
{% api-endpoint method=“GET” path=“/streaming/sessions/{sessionId}” /%}
Get session details
Operation ID: getStreamingSession
| Name | Type | Required | Description |
|---|---|---|---|
sessionId | string | Yes | The streaming session ID |
Streaming session details
| Field | Type | Required | Description |
|---|---|---|---|
sessionId | string | Yes | - |
protocol | string | Yes | Values: webrtc, srt, rtmp, omt |
status | string | Yes | Values: idle, live, paused, ended |
constraints | object | No | Audio and video constraints |
quality | object | No | Quality settings |
recording | object | No | Recording configuration |
connection | object | No | Connection info |
metrics | object | No | Video, audio, and network metrics |
viewers | integer | No | Current viewer count |
peakViewers | integer | No | Peak viewer count |
metadata | object | No | Custom metadata |
customProperties | object | No | Custom properties |
createdAt | string (date-time) | No | - |
updatedAt | string (date-time) | No | - |
startedAt | string (date-time) | No | - |
endedAt | string (date-time) | No | - |
duration | integer | No | Duration in seconds |
Session not found
{% tabs %} {% tab label=“cURL” %}
curl -X GET 'https://api.wave.online/api/v1/streaming/sessions/sess_1234_abc123' \
-H 'Authorization: Bearer YOUR_API_KEY'
{% /tab %} {% tab label=“TypeScript” %}
import { WaveClient } from "@wave/sdk";
const client = new WaveClient({ apiKey: "your-api-key" });
const session = await client.streaming.getSession("sess_1234_abc123");
console.log(session.protocol, session.status);
{% /tab %} {% tab label=“Python” %}
from wave_sdk import WaveClient
client = WaveClient(api_key="your-api-key")
session = client.streaming.get_session("sess_1234_abc123")
print(session.protocol, session.status)
{% /tab %} {% /tabs %}
{% api-endpoint method=“PATCH” path=“/streaming/sessions/{sessionId}” /%}
Update session settings
Operation ID: updateStreamingSession
| Name | Type | Required | Description |
|---|---|---|---|
sessionId | string | Yes | The streaming session ID |
Content-Type: application/json
| Field | Type | Required | Description |
|---|---|---|---|
status | string | No | Values: idle, live, paused, ended |
metadata | object | No | Key-value metadata pairs |
quality | object | No | Quality settings (targetLatency, maxBitrate, etc) |
customProperties | object | No | Custom property key-value pairs |
Session updated
| Field | Type | Required | Description |
|---|---|---|---|
sessionId | string | Yes | - |
protocol | string | Yes | - |
status | string | Yes | Values: idle, live, paused, ended |
quality | object | No | Updated quality settings |
metadata | object | No | Updated metadata |
updatedAt | string (date-time) | Yes | - |
Validation error
{% tabs %} {% tab label=“cURL” %}
curl -X PATCH 'https://api.wave.online/api/v1/streaming/sessions/sess_1234_abc123' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"status": "live",
"quality": {
"targetLatency": 200,
"maxBitrate": 8000,
"adaptiveBitrate": true
}
}'
{% /tab %} {% tab label=“TypeScript” %}
import { WaveClient } from "@wave/sdk";
const client = new WaveClient({ apiKey: "your-api-key" });
const updated = await client.streaming.updateSession("sess_1234_abc123", {
status: "live",
quality: { targetLatency: 200, maxBitrate: 8000, adaptiveBitrate: true },
});
console.log(updated);
{% /tab %} {% /tabs %}
{% api-endpoint method=“DELETE” path=“/streaming/sessions/{sessionId}” /%}
End and delete session
Operation ID: deleteStreamingSession
{% callout type=“warning” title=“Active Sessions” %}
Sessions with status live cannot be deleted. Update the status to ended first.
{% /callout %}
| Name | Type | Required | Description |
|---|---|---|---|
sessionId | string | Yes | The streaming session ID |
Session deleted
| Field | Type | Required | Description |
|---|---|---|---|
sessionId | string | Yes | - |
deletedAt | string (date-time) | Yes | - |
Cannot delete active session
{% tabs %} {% tab label=“cURL” %}
curl -X DELETE 'https://api.wave.online/api/v1/streaming/sessions/sess_1234_abc123' \
-H 'Authorization: Bearer YOUR_API_KEY'
{% /tab %} {% /tabs %}
{% api-endpoint method=“GET” path=“/streaming/analytics/prometheus” /%}
Export Prometheus metrics
Operation ID: getStreamingPrometheusMetrics
{% callout type=“info” title=“Authentication” %}
This endpoint uses API key authentication via X-API-Key header or internal service tokens.
{% /callout %}
| Name | Type | Required | Description |
|---|---|---|---|
streamId | string | No | Filter metrics by stream ID |
period | string | No | Time window. Default: 5min. Values: 1min, 5min, 15min, 1hour |
Prometheus text exposition format metrics including counters, gauges, and histograms for streams, viewers, bitrate, latency, bandwidth, errors, and quality scores.
Content-Type: text/plain; version=0.0.4; charset=utf-8
{% tabs %} {% tab label=“cURL” %}
curl -X GET 'https://api.wave.online/api/v1/streaming/analytics/prometheus?period=5min' \
-H 'X-API-Key: YOUR_PROMETHEUS_API_KEY'
{% /tab %} {% /tabs %}
{% api-endpoint method=“GET” path=“/streaming/sessions/{sessionId}/webrtc/candidates” /%}
Get ICE candidates for WebRTC session
Operation ID: getICECandidates
| Name | Type | Required | Description |
|---|---|---|---|
sessionId | string | Yes | The streaming session ID |
| Name | Type | Required | Description |
|---|---|---|---|
since | string | No | ISO 8601 timestamp to get candidates since |
limit | integer | No | Maximum number of candidates to return |
type | string | No | Filter by type. Values: host, srflx, prflx, relay |
ICE candidates list
| Field | Type | Required | Description |
|---|---|---|---|
sessionId | string | Yes | - |
candidates | object[] | Yes | Array of ICE candidate objects |
isComplete | boolean | Yes | Whether ICE gathering is done |
hasMore | boolean | Yes | Whether more candidates exist |
statistics | object | No | Gathering statistics |
{% tabs %} {% tab label=“cURL” %}
curl -X GET 'https://api.wave.online/api/v1/streaming/sessions/sess_1234_abc123/webrtc/candidates?type=host' \
-H 'Authorization: Bearer YOUR_API_KEY'
{% /tab %} {% /tabs %}