Download OpenAPI specification:Download
Last modified: 2025-11-07
This API provides functionality for managing streams, events and destinations.
Fetch a new token to authenticate requests to the API
Details required to fetch a new token
| grant_type required | string The grant type to use authentication for. In our API Client Credentials is the only supported grant type. |
| client_id required | string The client ID to authenticate the request |
| client_secret required | string The client secret to authenticate the request |
{- "grant_type": "client_credentials",
- "client_id": "1",
- "client_secret": "secret"
}{- "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c",
- "token_type": "Bearer",
- "expires_in": "900'"
}The Stream API provides endpoints to manage live streaming sessions, from their creation to their archival as video-on-demand (VOD). These endpoints allow users to create, update, and manage stream states dynamically while enforcing rules for state transitions.
A stream has different lifecycle stages. Each state determines the actions that can be performed on the stream, as well as the availability of its playback URLs.
Draft:
The stream is in its initial setup phase and can be freely modified.
URL behavior: No playback URL is generated in this state.
Locked:
The stream’s configuration is locked, preventing further modifications. Streaming resources will be reserved.
URL behavior: Still no playback URL is generated, as the stream has not yet begun previewing or broadcasting.
Preview:
The stream is in a preview mode, allowing content creators to test before going live. It is not visible to the public.
URL behavior: Internal preview URLs may be generated for testing but are not publicly distributed.
Live:
The stream is actively broadcasting to viewers. Transitions to this state indicate that the stream is fully active.
URL behavior:
url: Points to the live stream on the primary CDN. url_cn: Points to the live stream on the China CDN (if applicable).Ended:
The stream has finished broadcasting. No further live interactions are possible, but it may transition to VOD. The recording is not yet visible.
URL behavior: No playback URL is exposed in this state.
Replay:
The stream has finished broadcasting. A recording of the session is available for instant replay, but this is not the finalized VOD asset.
URL behavior:
url: Points to the instant replay recording hosted by the system. url_cn: Remains empty.Vod:
The stream recording is now available as a video-on-demand (VOD) asset for playback. This includes finalized media files and subtitles.
URL behavior:
url: Points to the final VOD manifest or file (with subtitles if available). url_cn: Points to the China CDN copy of the VOD (if applicable).Pending:
This state indicates an operation is being performed on the stream and cannot be changed. Typically awaiting an external trigger.
URL behavior: No playback URL is generated in this state.
Creates a new stream or updates an existing one based on the provided identifiers.
Operation Logic:
id is provided and exists, the stream with that ID will be updatedid is provided but not found, it will be discarded and the system will check externalIdexternalId exists, the stream with that external ID will be updatedEvent Association:
You can associate the stream with an event in two ways:
Link to existing event:
eventId (internal ID) or externalEvent (external ID)Create new event:
event object containing:name: Event name (required)startDateTimeUTC: Event start date/time in UTC (required)endDateTimeUTC: Event end date/time in UTC (required)externalId: External identifier for the event (optional)languages: Array of language codes (optional)Language Handling:
Events contain a languages array with language codes that serve as defaults:
languages array, it will inherit the default languages from its associated eventlanguages array, those values take precedence over the event's defaultsDetails required to create a stream
| externalEvent | string A way to group multiple streams per event. The externalEvent must correspond to an external_id on an event in our system. |
object | |
| externalId | string An id to identify the resource in your system This ID can be used to refer back to the created resources |
| externalProvider | string Default: "" A string to identify which external service created the resource. Can be used for filtering. |
| externalVersion | string Default: "" A way o identify the version of the resource on the external system. Can ben changed each update to have data integrity between systems |
| streamName required | string The name of the session in the salesForce system. |
| startDateTimeUTC required | string The start date and time of the stream in UTC format |
| endDateTimeUTC required | string The end date and time of the stream in UTC format |
| releaseDateTimeUTC | string used by external systems. Way to refer to the embargo of a stream |
| featured | boolean Used by external systems. This indicates if a stream is featured for third parties |
| priority | integer Default: 0 Used by external systems. This indicates a priority given to the stream. Used by third parties |
required | Array of objects A list of required languages (language codes) for the stream. The order determines how the audio channels are interpreted. |
Array of objects A list of required subtitles (language codes) for the stream, |
{- "externalEvent": "a0WTG000000SvOL2A0",
- "event": {
- "name": "Davos 2026",
- "id": "7f1b63e6-f81e-4531-9b8a-51e0253780d2",
- "startDateTimeUTC": "2025-01-22T10:30:00.000+0000",
- "endDateTimeUTC": "2025-01-22T11:15:00.000+0000",
- "externalId": "a0WTG000000SvOL2A0",
- "languages": [
- {
- "key": "string",
- "isDefault": true
}
]
}, - "externalId": "a0WTG000000SvOL2A0",
- "externalProvider": "Salesforce - WEF",
- "externalVersion": "1.1",
- "streamName": "Social Innovation in Action",
- "startDateTimeUTC": "2025-01-22T10:30:00.000+0000",
- "endDateTimeUTC": "2025-01-22T11:15:00.000+0000",
- "releaseDateTimeUTC": "2025-01-22T11:15:00.000+0000",
- "featured": false,
- "priority": 0,
- "languages": [
- {
- "key": "string",
- "isDefault": true
}
], - "subtitles": [
- {
- "key": "string"
}
]
}{- "success": true,
- "message": "Stream created successfully",
- "data": {
- "id": "616ad7ec-651f-42b2-be52-618a6b06b09b",
- "status": "DRAFT",
- "externalId": "a0WTG000000SvOL2A0",
- "external_provider": "Salesforce - WEF",
- "external_version": "1.1",
- "streamName": "Social Innovation in Action",
- "startDateTimeUTC": "2025-01-22T10:30:00.000+0000",
- "endDateTimeUTC": "2025-01-22T11:15:00.000+0000"
}
}Get the streams based on the provided query parameters.
| external_event | any Filter streams by external event_id |
| status | string Example: status=Live Filter streams by status (e.g., Draft, Live) |
{- "success": true,
- "data": [
- {
- "uuid": "4788804d-0ec3-475c-b8d4-67dd458898f2",
- "streamName": "Sample Stream",
- "status": "Draft",
- "externalId": "1234",
- "external_provider": "Salesforce",
- "external_event": "1234",
- "external_version": "1.1",
- "startDateTimeUTC": "2025-01-22T10:30:00.000+0000",
- "endDateTimeUTC": "2025-01-22T11:15:00.000+0000",
- "releaseDateTimeUTC": "2025-01-22T11:15:00.000+0000",
- "featured": true,
- "priority": 0,
- "resolutions": [
- "1080p"
], - "languages": {
- "audio_tracks": {
- "id": 1,
- "key": "NL",
- "language": "Dutch"
}, - "subtitles": {
- "id": 1,
- "key": "NL",
- "language": null
}
}, - "assets": [
- {
- "name": "Original",
- "url": "test.mp4",
- "scope": "China"
}
]
}
]
}Retrieves details of a stream using either its internal ID or external ID.
| type required | string Enum: "internal" "external" Example: internal Specifies whether the identifier is an |
| identifier required | string Example: 616ad7ec-651f-42b2-be52-618a6b06b09b The identifier of the stream, either a UUID (internal) or an external ID |
{- "success": true,
- "data": {
- "uuid": "4788804d-0ec3-475c-b8d4-67dd458898f2",
- "streamName": "Sample Stream",
- "status": "Draft",
- "externalId": "1234",
- "external_provider": "Salesforce",
- "external_event": "1234",
- "external_version": "1.1",
- "startDateTimeUTC": "2025-01-22T10:30:00.000+0000",
- "endDateTimeUTC": "2025-01-22T11:15:00.000+0000",
- "releaseDateTimeUTC": "2025-01-22T11:15:00.000+0000",
- "featured": true,
- "priority": 0,
- "resolutions": [
- "1080p"
], - "languages": {
- "audio_tracks": {
- "id": 1,
- "key": "NL",
- "language": "Dutch"
}, - "subtitles": {
- "id": 1,
- "key": "NL",
- "language": null
}
}, - "assets": [
- {
- "name": "Original",
- "url": "test.mp4",
- "scope": "China"
}
]
}
}Updates a stream based on either the internal ID or an external ID. Updates are only allowed when the stream is in DRAFT status. Two hours beforte startDateTimeUTC the stream will automatically move to the Pending state. From then on out updates will no longer be accepted
| type required | string Enum: "internal" "external" Example: internal Specifies whether the identifier is an |
| identifier required | string Example: 616ad7ec-651f-42b2-be52-618a6b06b09b The identifier of the stream, either a UUID (internal) or an external ID |
Stream details to update. Only updatable fields should be sent.
| streamId | string The unique identifier of the stream |
| streamName | string The name of the stream |
| startDateTimeUTC | string The start date/time of the stream in UTC format |
| endDateTimeUTC | string The end date/time of the stream in UTC format |
Array of objects A list of languages required for the stream |
{- "streamId": "12345",
- "streamName": "Sample Stream",
- "startDateTimeUTC": "2025-01-22T11:00:00.000+0000",
- "endDateTimeUTC": "2025-01-22T12:00:00.000+0000",
- "languages": [
- {
- "key": "NL"
}
]
}{- "success": true,
- "message": "Stream updated successfully"
}Deletes a stream based on either the internal ID or an external ID. Only streams in DRAFT status can be deleted.
| type required | string Enum: "internal" "external" Example: internal Specifies whether the identifier is an |
| identifier required | string Example: 616ad7ec-651f-42b2-be52-618a6b06b09b The identifier of the stream, either a UUID (internal) or an external ID |
{- "success": true,
- "message": "Stream deleted successfully"
}Creates a new destination (RTMP output) for the given stream.
| type required | string Enum: "internal" "external" Example: internal Specifies whether the identifier is an |
| id required | string Example: 616ad7ec-651f-42b2-be52-618a6b06b09b The identifier of the stream, either a UUID (internal) or an external ID |
| streamId required | string <uuid> Example: 616ad7ec-651f-42b2-be52-618a6b06b09b The unique identifier of the stream this destination belongs to |
| rtmpUrl required | string <uri> The RTMP URL for streaming |
| streamKey required | string The stream key for authentication |
| language required | string The language key for this destination |
{- "rtmpUrl": "rtmp://live.example.com/app",
- "streamKey": "abc123",
- "language": "en"
}{- "id": "e72a7ec1-54b4-4f13-9c9d-8e8b06b56d3f",
- "rtmpUrl": "rtmp://live.example.com/app",
- "streamKey": "abc123",
- "language": "en"
}Return a destination .
| type required | string Enum: "internal" "external" Example: internal Specifies whether the identifier is an |
| id required | string Example: 616ad7ec-651f-42b2-be52-618a6b06b09b The identifier of the stream, either a UUID (internal) or an external ID |
{- "id": "e72a7ec1-54b4-4f13-9c9d-8e8b06b56d3f",
- "rtmpUrl": "rtmp://live.example.com/app",
- "streamKey": "abc123",
- "language": "en"
}Updates details for an existing destination.
| id required | string <uuid> |
| rtmpUrl | string |
| streamKey | string |
| language | string |
{- "rtmpUrl": "rtmp://live.example.com/app",
- "streamKey": "newKey456",
- "language": "fr"
}