Welcome to the Spalk Developer API. This API allows you to connect the Spalk Virtual Commentary Studio to your existing live broadcast automation systems to seamlessly add remote commentary.
You can access the Spalk API via https://integration.spalk.tv/v1.
If you do not have a Spalk account, you can sign up for a trial account at https://app.spalk.tv/login. Once you have signed up, please email developer@spalk.tv to enable API access for your trial account. A trial provides access to full production functionality, aside from broadcasts being limited to 30 minutes in duration.
The Spalk API provides access to your live data. If you would like a sandbox account, please contact your Spalk representative for assistance.
We have decided to showcase the Spalk API with a Postman public workspace.
To get started, follow Access to the API to get API access and then fork our Postman collection:
If you have requests, feedback or questions, please request to join the Spalk Developer Community on Slack at https://spalk-tech.slack.com
The API is RESTful. All requests should be made over HTTPS, and accessed from https://integration.spalk.tv.
Most of the parameters and request data will be contained in the body of the HTTP request. The Spalk API accepts JSON in the HTTP request body. No other data format (e.g. XML) is supported.
The success or failure of an HTTP request is returned as a standard HTTP status code:
a 2xx code for success
a 4xx or 5xx code for failure
The response body will always be encoded in JSON format. No other data format (e.g. XML) is supported.
The Spalk API uses a cursor based model for paging of large result sets. Paging support is available for the following endpoints:
GET /events
GET /inputs
GET /teams
GET /outputs
All of these endpoints support an optional limit parameter. If this parameter is omitted, the default limit is 100. The maximum limit is 1000 for any single request.
Example
GET https://integration.spalk.tv/v1/events?Limit=2 HTTP/1.1
Host: integration.spalk.tv
- 200 Response
{
"Meta": {
"Next": "eyJsYXN0TW9kaWZpZWRUaW1lc3RhbXAiOjE1Njg2NzUzOTE3NTIsImNhbGxJZCI6ImE2YzVkMDgwLWQ0MWUtMTFlOS1hYzZiLWE5MTliMjAwYWFlNCIsIm9yZ2FuaXNhdGlvbklkIjoiOTQ4NzhhYzEtMDI3OS0xMWU5LWI0ZmEtNmJiYzgxMGEzZjJkIn0="
},
"Events": [ { ... }, { ... } ]
}
Endpoints that support paging return a Meta field in the response object, which includes a Next token to be used in subsequent requests.
Simply pass the next token in the query string of the next GET to retrieve the next page of results.
If there are no additional pages the next field will be empty.
Individual PUTS and POSTS are limited to 6MB total (JSON encoded) data size. If a given request contains more than 6MB of data we are unable to process that request.
In general for any date/time or timestamp types, this API will provide either of the following fields:
{fieldName}At: This is an RFC3339 formatted date/time. All date/times are UTC.
Scheduled{fieldName}Date: This is an RFC3339 formatted date/time. All date/times are UTC.
The Spalk system will create, assign and destroy infrastructure based on the times associated with the resources you create. This section outlines the rules and best practises for managing times on your resources.
There is a small delay in provisioning infrastructure to resources. If you attempt to create resources for immediate use, the system may not be ready to accept streams and perform commentary for up to 5 minutes. We recommend scheduling resources at least 5 minutes in advance of attempting to use them.
You may update scheduled times up to 5 minutes before they have elapsed. Once there is less than 5 minutes until the scheduled time elapses, the API will reject any updates to that time, and will carry out the associated resource actions (create/destroy) at the scheduled time.
There is one exception to this rule. You may update Event and Output ScheduledEndDates to end as soon as possible at any time. This is to allow you to free the input/output resources for reuse, and decrease your Spalk resource costs.
Due to the often unpredictable duration of live sports events, we recommend scheduling resource end times well in excess of expected end times, and updating the end time once you have confirmed the resources are no longer needed.
Spalk maintains infrastructure in a number of different AWS regions to enable you locate infrastructure geographically close to your customers and users.
Currently supported regions are:
us-east-1: North Virginia (USA)eu-central-1: Frankfurt (Germany)eu-west-3: Paris (France)ap-southeast-1: Singaporesa-east-1: Sao Paulo (Brazil)The Spalk API uses OAuth v2.0 client credentials flow to authenticate requests. You can manage your API access in the Spalk App at https://app.spalk.tv/organisation/developer
To authenticate with the Spalk API you need to follow these steps:
For more details on the OAuth 2.0 client credentials flow, see the overview at https://auth0.com/docs/flows/concepts/client-credentials
You must login as an Administrator to your account in the Spalk App at https://app.spalk.tv/login. Open the Organisation/Developer page.
You will find your Organisation API Key in the top right corner. If it is not present, create an API Client (see below) to generate an API Key for your organisation.
You must login as an Administrator to your account in the Spalk App at https://app.spalk.tv/login. Open the Organisation/Developer page, and add a new API client. This is a one time operation.
You require both an API client and Organisation API Key to make requests against the Spalk API.
Once the "API client" is created, you will be provided with the necessary details (OAuth 2.0 Client ID and OAuth 2.0 Client Secret) needed to create an access token.
Once you have created an "API client", the next step is to obtain a bearer token from the Spalk Auth Service at https://auth.spalk.tv/oauth/token. This step requires making an HTTP POST to the Authorization Service URL provided in the step above, with the request body containing an JSON encoded string with the following fields:
| Field Name | Description |
|---|---|
| client_id | The client ID from the Developer API |
| client_secret | The client secret from the Developer API |
| grant_type | Always client_credentials |
A javascript example of this is below:
const response = await fetch("https://auth.spalk.tv/oauth/token", {
method: 'POST',
body: JSON.stringify({
client_id: "{CLIENT_ID_FROM_DEVELOPER_API}",
client_secret: "{CLIENT_SECRET_FROM_DEVELOPER_API}",
grant_type: "client_credentials"
}),
headers: { 'Content-Type': 'application/json' },
});
const { access_token } = response.json();
To make authenticated API requests, you must provide a valid bearer token in an HTTP Header:
Authorization: Bearer {access_token}
Once you have obtained an access token, you must provide this as a Bearer token for all subsequent API requests.
const response = await fetch("https://integration.spalk.tv/v1/events", {
method: "get",
headers: { Authorization: `Bearer ${access_token}`, 'X-API-Key': `${organisation_api_key}`, 'Content-Type': 'application/json' },
});
Access tokens expire after 3600 seconds (1 hour). It is up to the developer to implement appropriate refresh logic, by following the same token generation process above. Note that as flow is a client credentials flow, intended for machine to machine operations, we do not provide a token refresh endpoint. Instead, requesting a new access token using the same client_id/client_secret is sufficient.
output.Label field to allow users to set free text labels shown on the Dashboard.input.URL field that matches the Spalk Web UI and does not contain streamid parameter.input.Source and input.URL field in input responses.An event represents a live broadcast in the Spalk system. In order to use the Spalk system you must first schedule an event. Each event is provisioned individually, so there is a small startup time before the event goes live. We recommend scheduling your events at least 5 minutes before you are ready to send the live feed.
Events have some restrictions on modifications once they have been created:
If your application needs to make any of these modifications, simply end and/or delete that event and create a new one that matches your needs.
For more information see Managing scheduled times for Spalk resources.
For information on supported input protocols see Inputs.
The list events endpoint accepts various filter parameters.
| Tag | string Example: Tag=External-Org-Id:123&Tag=Home_Team:Chicago Bulls Return only events that have these tags (and any other tags). A tag should be provided as a key:value pair. Multiple tags can be specified by repeating the Tag parameter. |
| Id | string <uuid4> |
| StartsBefore | string <date-time> Example: StartsBefore=2006-01-02T15:09:05Z Return only events that start before this time. This uses an event's ScheduledStartDate field. |
| StartsAfter | string <date-time> Example: StartsAfter=2006-01-02T15:01:05Z Return only events that start after this time. This uses an event's ScheduledStartDate field. |
| EndsAfter | string <date-time> Example: EndsAfter=2006-01-02T16:01:05Z Return only events that end after this time. This uses an event's ScheduledEndDate field. |
| EndsBefore | string <date-time> Example: EndsBefore=2006-01-16:09:05Z Return only events that end before this time. This uses an event's ScheduledEndDate field. |
| Limit | integer <int64> Limit on total number of events returned. Default is 100, Maximum is 1000 |
| Next | string |
| Authorization required | string Authorization header bearing the access token |
| X-API-Key required | string Header containing the organisation API Key. Key can be obtained here |
Array of objects (Event) | |
object |
{- "Events": [
- {
- "BitrateControl": 1,
- "EnableScte35Markers": false,
- "EncoderConfigurationId": "string",
- "GameSoundVolume": 2,
- "Id": "string",
- "Inputs": [
- {
- "Id": "string",
- "IsPersistent": true,
- "Name": "Manchester City Training Camera 1",
- "Passphrase": "test-passphrase",
- "Region": "us-east-1",
- "Source": "string",
- "StreamId": "spalk/ingest/c207e977-9f93-47eb-a41c-f1f88a5eff60",
- "Type": 3,
- "URL": "string"
}
], - "PrivacySetting": 1,
- "ScheduledEndDate": "2006-01-02T16:04:05Z",
- "ScheduledStartDate": "2006-01-02T15:04:05Z",
- "Tags": {
- "External-Org-Id": "123",
- "Home_Team": "Chicago Bulls",
- "Location": "Ground A"
}, - "ThumbnailUrl": "string",
- "Title": "Toronto Raptors vs Chicago Bulls",
- "Transcode": false
}
], - "Meta": {
- "Next": "string"
}
}| Authorization required | string Authorization header bearing the access token |
| X-API-Key required | string Header containing the organisation API Key. Key can be obtained here |
| EnableScte35Markers | boolean Optional: Whether to enable SCTE-35 markers in the output stream. This cannot be updated once the event has been created. Supported only when Transcode is true and input type is 5 (SRT). |
| EncoderConfigurationId | string Optional: If Transcode is true, the unique identifier of an encoder configuration that Spalk will use to re-encode the input feed. If Transcode is true and this is not given, a minimal encoder configuration will be used. This cannot be updated once the event has been created. |
| GameSoundVolume | number <double> [ 0 .. 2 ] The gain to be applied to the incoming audio from the clean input prior to mixing. This is useful when you wish to mute or attenuate the existing audio because it already contains commentary. |
| Id | string <uuid4> The unique identifier of the event. If this is unset on create, it will be generated and returned. Required for update operations. |
required | Array of objects (InputOptions) Inputs attached to this event. These cannot be updated once the event has been created. Attaching more than one input is currently unsupported. One of Id or InputType is required |
| PrivacySetting | integer <int64> Enum: 1 2 3 The privacy setting for the event. Events can be public, unlisted and private. Public events are able to be found and viewed by anyone on the web. Unlisted events are unsearchable, but viewable by anyone with the link. Private events are only viewable by users who are members of the owning organisation, or are explicitly authorised to commentate. Supported Values:
|
| ScheduledEndDate required | string <date-time> The scheduled end time of the event in UTC, encoded in RFC3339 format. Note all Spalk resources will be released and cease to work at this time. This can be updated at any time up to 5 minutes before the previously set ScheduledEndDate |
| ScheduledStartDate required | string <date-time> The scheduled start time of the event in UTC, encoded in RFC3339 format, eg "2006-01-02T15:04:05Z". This is the first instant that the Spalk resources will be made available for inputs and outputs. This can be updated at any time up to 5 minutes before the previously set ScheduledStartDate |
object A set of user defined tags for the event. This is useful for querying your events and generating reports. Please note the tag key or tag value cannot contain the colon character (:) | |
| ThumbnailUrl | string Optional: a publicly accessible URL to an image that is displayed when sending email invites. |
| Title required | string A human readable name for the event. This is used when emailing invited users. |
| Transcode | boolean Whether Spalk will re-encode the input feed prior to mixing. For SRT input, this is useful to convert the input feed into a feed with a constant bitrate, which can help ensure a smooth broadcast (see https://spalk.zendesk.com/hc/en-us/articles/7037039176463-Understanding-Constant-Bitrate-CBR-in-MPEG-TS-Transport-Streams). This cannot be updated once the event has been created. Supported only for input type 5 (SRT). |
object (Event) An event represents a live broadcast event | |||||||||||||||||||||||||||
| |||||||||||||||||||||||||||
{- "EnableScte35Markers": false,
- "EncoderConfigurationId": "string",
- "GameSoundVolume": 2,
- "Id": "string",
- "Inputs": [
- {
- "BitrateControl": 1,
- "Id": "string",
- "InputType": 2,
- "Region": "us-east-1",
- "SRTLatency": 0,
- "Source": "string",
- "StaticEncryptionKey": "string"
}
], - "PrivacySetting": 1,
- "ScheduledEndDate": "2006-01-02T16:04:05Z",
- "ScheduledStartDate": "2006-01-02T15:04:05Z",
- "Tags": {
- "External-Org-Id": "123",
- "Home_Team": "Chicago Bulls",
- "Location": "Ground A"
}, - "ThumbnailUrl": "string",
- "Title": "Toronto Raptors vs Chicago Bulls",
- "Transcode": false
}{- "Event": {
- "BitrateControl": 1,
- "EnableScte35Markers": false,
- "EncoderConfigurationId": "string",
- "GameSoundVolume": 2,
- "Id": "string",
- "Inputs": [
- {
- "Id": "string",
- "IsPersistent": true,
- "Name": "Manchester City Training Camera 1",
- "Passphrase": "test-passphrase",
- "Region": "us-east-1",
- "Source": "string",
- "StreamId": "spalk/ingest/c207e977-9f93-47eb-a41c-f1f88a5eff60",
- "Type": 3,
- "URL": "string"
}
], - "PrivacySetting": 1,
- "ScheduledEndDate": "2006-01-02T16:04:05Z",
- "ScheduledStartDate": "2006-01-02T15:04:05Z",
- "Tags": {
- "External-Org-Id": "123",
- "Home_Team": "Chicago Bulls",
- "Location": "Ground A"
}, - "ThumbnailUrl": "string",
- "Title": "Toronto Raptors vs Chicago Bulls",
- "Transcode": false
}
}| EventId required | string Example: 01H7X9XJ0P2V4R4B8M2Q |
| Authorization required | string Authorization header bearing the access token |
| X-API-Key required | string Header containing the organisation API Key. Key can be obtained here |
| BitrateControl | integer <int64> Enum: 1 2 The MPEG TS bitrate control of the event input. Not applicable to RTMP events. Supported Values:
|
| EnableScte35Markers | boolean Optional: Whether to enable SCTE-35 markers in the output stream. This cannot be updated once the event has been created. Supported only when Transcode is true and input type is 5 (SRT). |
| EncoderConfigurationId | string Optional: If Transcode is true, the unique identifier of an encoder configuration that Spalk will use to re-encode the input feed. If Transcode is true and this is not given, a minimal encoder configuration will be used. This cannot be updated once the event has been created. |
| GameSoundVolume | number <double> [ 0 .. 2 ] The gain to be applied to the incoming audio from the clean input prior to mixing. This is useful when you wish to mute or attenuate the existing audio because it already contains commentary. |
| Id | string <uuid4> The unique identifier of the event. If this is unset on create, it will be generated and returned. Required for update operations. |
required | Array of objects (InputResponseFields) Inputs attached to this event. These cannot be updated once the event has been created. Attaching more than one input is currently unsupported. |
| PrivacySetting | integer <int64> Enum: 1 2 3 The privacy setting for the event. Events can be public, unlisted and private. Public events are able to be found and viewed by anyone on the web. Unlisted events are unsearchable, but viewable by anyone with the link. Private events are only viewable by users who are members of the owning organisation, or are explicitly authorised to commentate. Supported Values:
|
| ScheduledEndDate required | string <date-time> The scheduled end time of the event in UTC, encoded in RFC3339 format. Note all Spalk resources will be released and cease to work at this time. This can be updated at any time up to 5 minutes before the previously set ScheduledEndDate |
| ScheduledStartDate required | string <date-time> The scheduled start time of the event in UTC, encoded in RFC3339 format, eg "2006-01-02T15:04:05Z". This is the first instant that the Spalk resources will be made available for inputs and outputs. This can be updated at any time up to 5 minutes before the previously set ScheduledStartDate |
object A set of user defined tags for the event. This is useful for querying your events and generating reports. Please note the tag key or tag value cannot contain the colon character (:) | |
| ThumbnailUrl | string Optional: a publicly accessible URL to an image that is displayed when sending email invites. |
| Title required | string A human readable name for the event. This is used when emailing invited users. |
| Transcode | boolean Whether Spalk will re-encode the input feed prior to mixing. For SRT input, this is useful to convert the input feed into a feed with a constant bitrate, which can help ensure a smooth broadcast (see https://spalk.zendesk.com/hc/en-us/articles/7037039176463-Understanding-Constant-Bitrate-CBR-in-MPEG-TS-Transport-Streams). This cannot be updated once the event has been created. Supported only for input type 5 (SRT). |
{- "BitrateControl": 1,
- "EnableScte35Markers": false,
- "EncoderConfigurationId": "string",
- "GameSoundVolume": 2,
- "Id": "string",
- "Inputs": [
- {
- "Id": "string",
- "IsPersistent": true,
- "Name": "Manchester City Training Camera 1",
- "Passphrase": "test-passphrase",
- "Region": "us-east-1",
- "Source": "string",
- "StreamId": "spalk/ingest/c207e977-9f93-47eb-a41c-f1f88a5eff60",
- "Type": 3,
- "URL": "string"
}
], - "PrivacySetting": 1,
- "ScheduledEndDate": "2006-01-02T16:04:05Z",
- "ScheduledStartDate": "2006-01-02T15:04:05Z",
- "Tags": {
- "External-Org-Id": "123",
- "Home_Team": "Chicago Bulls",
- "Location": "Ground A"
}, - "ThumbnailUrl": "string",
- "Title": "Toronto Raptors vs Chicago Bulls",
- "Transcode": false
}| EventId required | string Example: 01H7X9XJ0P2V4R4B8M2Q |
| Authorization required | string Authorization header bearing the access token |
| X-API-Key required | string Header containing the organisation API Key. Key can be obtained here |
| GameSoundVolume | number <double> [ 0 .. 2 ] The gain to be applied to the incoming audio from the clean input prior to mixing. This is useful when you wish to mute or attenuate the existing audio because it already contains commentary. |
| PrivacySetting | integer <int64> Enum: 1 2 3 The privacy setting for the event. Events can be public, unlisted and private. Public events are able to be found and viewed by anyone on the web. Unlisted events are unsearchable, but viewable by anyone with the link. Private events are only viewable by users who are members of the owning organisation, or are explicitly authorised to commentate. Supported Values:
|
| ScheduledEndDate required | string <date-time> The scheduled end time of the event in UTC, encoded in RFC3339 format. Note all Spalk resources will be released and cease to work at this time. This can be updated at any time up to 5 minutes before the previously set ScheduledEndDate |
| ScheduledStartDate required | string <date-time> The scheduled start time of the event in UTC, encoded in RFC3339 format, eg "2006-01-02T15:04:05Z". This is the first instant that the Spalk resources will be made available for inputs and outputs. This can be updated at any time up to 5 minutes before the previously set ScheduledStartDate |
object A set of user defined tags for the event. This is useful for querying your events and generating reports. Please note the tag key or tag value cannot contain the colon character (:) | |
| ThumbnailUrl | string Optional: a publicly accessible URL to an image that is displayed when sending email invites. |
| Title required | string A human readable name for the event. This is used when emailing invited users. |
object (Event) An event represents a live broadcast event | |||||||||||||||||||||||||||
| |||||||||||||||||||||||||||
{- "GameSoundVolume": 2,
- "PrivacySetting": 1,
- "ScheduledEndDate": "2006-01-02T16:04:05Z",
- "ScheduledStartDate": "2006-01-02T15:04:05Z",
- "Tags": {
- "External-Org-Id": "123",
- "Home_Team": "Chicago Bulls",
- "Location": "Ground A"
}, - "ThumbnailUrl": "string",
- "Title": "Toronto Raptors vs Chicago Bulls"
}{- "Event": {
- "BitrateControl": 1,
- "EnableScte35Markers": false,
- "EncoderConfigurationId": "string",
- "GameSoundVolume": 2,
- "Id": "string",
- "Inputs": [
- {
- "Id": "string",
- "IsPersistent": true,
- "Name": "Manchester City Training Camera 1",
- "Passphrase": "test-passphrase",
- "Region": "us-east-1",
- "Source": "string",
- "StreamId": "spalk/ingest/c207e977-9f93-47eb-a41c-f1f88a5eff60",
- "Type": 3,
- "URL": "string"
}
], - "PrivacySetting": 1,
- "ScheduledEndDate": "2006-01-02T16:04:05Z",
- "ScheduledStartDate": "2006-01-02T15:04:05Z",
- "Tags": {
- "External-Org-Id": "123",
- "Home_Team": "Chicago Bulls",
- "Location": "Ground A"
}, - "ThumbnailUrl": "string",
- "Title": "Toronto Raptors vs Chicago Bulls",
- "Transcode": false
}
}This will release any resources scheduled for the event, including any non-persistent inputs. An event cannot be deleted after the start time has elapsed. This operation cannot be undone.
| EventId required | string Example: 01H7X9XJ0P2V4R4B8M2Q |
| Authorization required | string Authorization header bearing the access token |
| X-API-Key required | string Header containing the organisation API Key. Key can be obtained here |
| Id | string |
{- "Id": "string"
}Returns the colour-coded live status for a specific event together with helpful diagnostic messages.
The eventId path parameter must refer to an event that belongs to the
calling organisation. The endpoint inspects the event schedule and currently
connected ingest stream (if any) to determine both the textual status and the
colour that will be displayed in the broadcaster dashboard.
| Colour | string Enum: "unknown" "red" "amber" "green" "grey" Colour is the traffic-light indicator that accompanies the textual status. |
| Messages | Array of strings Messages provides zero or more contextual hints about the detected status. These will be UTF-8 strings suitable for display to end users. |
| Status | string Enum: "Unknown" "Offline" "Standing By" "Connected" Status is the high-level state derived from the event schedule and ingest stream. |
{- "Colour": "amber",
- "Messages": [
- "No NULL packets detected.",
- "Audio bitrate within expected range."
], - "Status": "Connected"
}This uses the two events as separate paths for failover and redundancy. The events must match with teams, members and audio configurations. Currently only SMPTE 2022-7 based hitless switching is supported. For this to work both events must be sent an identical copy of the input signal. The input signal must also be SRT, with RTP headers configured correctly. If all of these requirements are met, then the signal processing chain will heal each path with packets from the other in a 'hitless' fashion.
| EventA | string <uuid4> |
| EventB | string <uuid4> |
object (LinkEventsOptions) Event linking configuration options |
| EventA | string |
| EventB | string |
{- "EventA": "string",
- "EventB": "string",
- "Options": {
- "LinkType": 0
}
}{- "EventA": "string",
- "EventB": "string"
}An input represents an entrypoint that is used to send media to the Spalk system. This media will typically be a clean broadcast with no commentary. These routes are provided to enable the use of persistent endpoints that remain static and can be reused between live events.
If you do not need inputs to persist between events, single-use endpoints can be created by including an Input with a Type and Region in the Inputs field of the POST request body in the /events endpoint.
Currently supported input protocols include:
In order to use AWS MediaConnect as input to your Spalk event, you must entitle our AWS account with ID 496668274218 to access to the stream. Instructions on how to grant an entitlement can be found here. Step 13 shows where to find the entitlement ARN, provided to Spalk in the Input.Source field.
The list inputs endpoint accepts various optional filter parameters.
| Id | string <uuid4> The Id of the input you want to retrieve |
| Limit | integer <int64> Limit on total number of inputs returned. Default is 100, Maximum is 1000 |
| Next | string |
| Authorization required | string Authorization header bearing the access token |
| X-API-Key required | string Header containing the organisation API Key. Key can be obtained here |
Array of objects (InputResponseFields) | |
object |
{- "Inputs": [
- {
- "Id": "string",
- "IsPersistent": true,
- "Name": "Manchester City Training Camera 1",
- "Passphrase": "test-passphrase",
- "Region": "us-east-1",
- "Source": "string",
- "StreamId": "spalk/ingest/c207e977-9f93-47eb-a41c-f1f88a5eff60",
- "Type": 3,
- "URL": "string"
}
], - "Meta": {
- "Next": "string"
}
}| Authorization required | string Authorization header bearing the access token |
| X-API-Key required | string Header containing the organisation API Key. Key can be obtained here |
| Name | string A human readable name for the input. Maximum length is 255 characters. |
| Region required | string The region in which you would like the input to be provisioned. See Infrastructure Regions |
| Source | string The function of this field depends on the input type.
|
| Type required | integer <int64> Enum: 3 5 6 The type of input requested, currently supported values:
|
| Id | string <uuid4> The unique identifier of the input. If this is unset on create, it will be generated and returned. Required for update operations. |
| IsPersistent | boolean Whether or not the input persists after the event ends. This is useful when you wish to create static inputs to configure an embedded system. |
| Name | string A human readable name for the input. Empty string is acceptable. Maximum length is 255 characters. |
| Passphrase | string SRT Encryption/Decryption Passphrase string, length from 10 to 79 characters. The passphrase is the shared secret between the sender and the receiver. Setting a non-empty passphrase shorter than 10 characters is an error. Setting an empty passphrase will result in the content being expected to be sent unencrypted. Setting this with an input type other than SRT(5) is unsupported |
| Region | string The AWS region in which you would like the input to be provisioned. |
| Source | string The registered source.
For SRT (optional), the URL from which the input feed can be pulled ("caller" mode). Only the |
| StreamId | string StreamId required to be configured on the sender's SRT stream |
| Type required | integer <int64> Enum: 3 5 6 The type of input requested, currently supported values:
|
| URL | string The input location encoded as a URL. URL encodings conform to libav conventions, found here: https://ffmpeg.org/ffmpeg-all.html#toc-Protocols |
{- "Name": "Manchester City Training Camera 1",
- "Region": "us-east-1",
- "Source": "string",
- "Type": 3
}{- "Id": "string",
- "IsPersistent": true,
- "Name": "Manchester City Training Camera 1",
- "Passphrase": "test-passphrase",
- "Region": "us-east-1",
- "Source": "string",
- "StreamId": "spalk/ingest/c207e977-9f93-47eb-a41c-f1f88a5eff60",
- "Type": 3,
- "URL": "string"
}An input cannot be deleted if it is attached to any events are either upcoming or live.
| InputId required | string |
| Authorization required | string Authorization header bearing the access token |
| X-API-Key required | string Header containing the organisation API Key. Key can be obtained here |
| Id | string |
{- "Id": "string"
}A team is a set of users who commentate an event together on the same audio track. When they log in, they are able to see and hear each other, all of their audio is mixed into the same audio track on output. The team can be made up of audible members (commentators) and non-audible members (producers) who help facilitate the broadcast. If a user needs to speak to their team without being heard on the broadcast, they can do so using 'Talkback mode'.
Note: Teams do not persist between events, so a new team must be created for each new event where users commentate together.
There is currently a limit of 5 concurrent users in the commentary studio for a single team.
The list teams endpoint accepts various filter parameters. Either Id or EventId must be specified.
| Id | string <uuid4> The Id of the team you want to retrieve |
| EventId | string The Id of the event you want to retrieve teams for |
| Limit | integer <int64> Limit on total number of teams returned. Default is 100, Maximum is 1000 |
| Next | string |
| Authorization required | string Authorization header bearing the access token |
| X-API-Key required | string Header containing the organisation API Key. Key can be obtained here |
object | |
Array of objects (Team) |
{- "Meta": {
- "Next": "string"
}, - "Teams": [
- {
- "AnonymousAccessUri": "string",
- "EventId": "02ba3c4b-93df-4c91-94e2-25e0c995f8ef",
- "Id": "string",
- "Language": "string",
- "Members": [
- {
- "Email": "string",
- "Id": "string",
- "SendEmailInvite": true,
- "Username": "string"
}
], - "Name": "Justin and Grant - English",
- "SipLines": [
- {
- "Id": "string",
- "Label": "string"
}
]
}
]
}| Authorization required | string Authorization header bearing the access token |
| X-API-Key required | string Header containing the organisation API Key. Key can be obtained here |
| EventId required | string <uuid4> The unique identifier of the event id for the team. This cannot be updated |
| Id | string <uuid4> The unique identifier of the team. If this is unset on create, it will be generated and returned. Required for update operations. |
| Language | string Optional: The ISO 639-2 string representing the language spoken on this broadcast. This is useful for adding metadata to outputs |
Array of objects (TeamMember) A list of team members that are authorised to access this team's studio as a commentator or producer. When creating a team member at least one of these fields needs to be filled out to uniquely identify a user. | |
| Name | string A human readable team name for the commentary team. This is used on the email invites when they are sent to invited users. |
Array of objects (SipLine) SIP lines that are associated with this team. optional: true |
| AnonymousAccessUri | string A tokenised URL for anonymous access to the commentator studio. Note: Anybody with access to this URI will be able to join the commentary team and broadcast. A maximum of 5 anonymous users will be able to join the studio at any one time |
| EventId required | string <uuid4> The unique identifier of the event id for the team. This cannot be updated |
| Id | string <uuid4> The unique identifier of the team. If this is unset on create, it will be generated and returned. Required for update operations. |
| Language | string Optional: The ISO 639-2 string representing the language spoken on this broadcast. This is useful for adding metadata to outputs |
Array of objects (TeamMember) A list of team members that are authorised to access this team's studio as a commentator or producer. When creating a team member at least one of these fields needs to be filled out to uniquely identify a user. | |
| Name | string A human readable team name for the commentary team. This is used on the email invites when they are sent to invited users. |
Array of objects (SipLine) SIP lines that are associated with this team. optional: true |
{- "EventId": "02ba3c4b-93df-4c91-94e2-25e0c995f8ef",
- "Id": "string",
- "Language": "string",
- "Members": [
- {
- "Email": "string",
- "Id": "string",
- "SendEmailInvite": true,
- "Username": "string"
}
], - "Name": "Justin and Grant - English",
- "SipLines": [
- {
- "Id": "string",
- "Label": "string"
}
]
}{- "AnonymousAccessUri": "string",
- "EventId": "02ba3c4b-93df-4c91-94e2-25e0c995f8ef",
- "Id": "string",
- "Language": "string",
- "Members": [
- {
- "Email": "string",
- "Id": "string",
- "SendEmailInvite": true,
- "Username": "string"
}
], - "Name": "Justin and Grant - English",
- "SipLines": [
- {
- "Id": "string",
- "Label": "string"
}
]
}| TeamId required | string |
| Authorization required | string Authorization header bearing the access token |
| X-API-Key required | string Header containing the organisation API Key. Key can be obtained here |
| EventId required | string <uuid4> The unique identifier of the event id for the team. This cannot be updated |
| Id | string <uuid4> The unique identifier of the team. If this is unset on create, it will be generated and returned. Required for update operations. |
| Language | string Optional: The ISO 639-2 string representing the language spoken on this broadcast. This is useful for adding metadata to outputs |
Array of objects (TeamMember) A list of team members that are authorised to access this team's studio as a commentator or producer. When creating a team member at least one of these fields needs to be filled out to uniquely identify a user. | |
| Name | string A human readable team name for the commentary team. This is used on the email invites when they are sent to invited users. |
Array of objects (SipLine) SIP lines that are associated with this team. optional: true |
| AnonymousAccessUri | string A tokenised URL for anonymous access to the commentator studio. Note: Anybody with access to this URI will be able to join the commentary team and broadcast. A maximum of 5 anonymous users will be able to join the studio at any one time |
| EventId required | string <uuid4> The unique identifier of the event id for the team. This cannot be updated |
| Id | string <uuid4> The unique identifier of the team. If this is unset on create, it will be generated and returned. Required for update operations. |
| Language | string Optional: The ISO 639-2 string representing the language spoken on this broadcast. This is useful for adding metadata to outputs |
Array of objects (TeamMember) A list of team members that are authorised to access this team's studio as a commentator or producer. When creating a team member at least one of these fields needs to be filled out to uniquely identify a user. | |
| Name | string A human readable team name for the commentary team. This is used on the email invites when they are sent to invited users. |
Array of objects (SipLine) SIP lines that are associated with this team. optional: true |
{- "EventId": "02ba3c4b-93df-4c91-94e2-25e0c995f8ef",
- "Id": "string",
- "Language": "string",
- "Members": [
- {
- "Email": "string",
- "Id": "string",
- "SendEmailInvite": true,
- "Username": "string"
}
], - "Name": "Justin and Grant - English",
- "SipLines": [
- {
- "Id": "string",
- "Label": "string"
}
]
}{- "AnonymousAccessUri": "string",
- "EventId": "02ba3c4b-93df-4c91-94e2-25e0c995f8ef",
- "Id": "string",
- "Language": "string",
- "Members": [
- {
- "Email": "string",
- "Id": "string",
- "SendEmailInvite": true,
- "Username": "string"
}
], - "Name": "Justin and Grant - English",
- "SipLines": [
- {
- "Id": "string",
- "Label": "string"
}
]
}To reinstate a team you need to create an identical one.
| TeamId required | string |
| Authorization required | string Authorization header bearing the access token |
| X-API-Key required | string Header containing the organisation API Key. Key can be obtained here |
| Id | string |
{- "Id": "string"
}Returns the audio status for a specific commentary team.
| Colour | string Enum: "unknown" "red" "amber" "green" "grey" Colour is the UI severity indicator associated with the status. |
| Messages | Array of strings Messages contains user-facing explanations of the current status. These will be UTF-8 strings suitable for display to end users. |
| Status | string Enum: "UNKNOWN" "LIVE" "OFFLINE" "INITIALISING" "CONNECTING" "ERROR" "FAILED" "BAD" "POLLING FAILED" "OUT OF SYNCH" "NO SYNCH INFO" "IDLE" Status is the normalised state of the commentary team. |
{- "Colour": "green",
- "Messages": [
- "JoeBuck is live"
], - "Status": "LIVE"
}Note that the sensitive fields: Email, Name will only be available if the user has given access to publicly display them.
Array of objects (FavouriteCommentator) | |||||||||||||
Array
| |||||||||||||
{- "FavouriteCommentators": [
- {
- "CommentatorId": "string",
- "Email": "string",
- "Language": "string",
- "Name": "string",
- "ThumbnailUrl": "string",
- "Username": "string"
}
]
}An output represents a destination downstream of Spalk that will receive the mixed stream containing the commentary from the selected commentary teams.
Outputs can be created, modified or deleted at any point up until they are live. Once they are live, only the scheduled end date may be modified.
For more information see Managing scheduled times for Spalk resources.
The tracks present in the output are subject to a few rules.
ExcludeTrack property. Tracks generated by Spalk must be included in the Tracks
property to be present in the output.The following table describes the supported combination of track selectors.
| TeamId | Audio | Video | PID | RTMP | SRT | Notes |
| X | X | N | Y | |||
| X | X | Y | Y | |||
| X | X | Y (up to 1 PID) | Y | |||
| X | X | X | N | Y | Too many streams for FLV container on RTMP output | |
| X | X | X | N | Y | Too many streams for FLV container on RTMP output | |
| X | X | X | N | Y | Too many streams for FLV container on RTMP output | |
| X | X | Y | Y | |||
| X | X | X | N | Y | Too many streams for FLV container on RTMP output | |
| X | X | Y (up to 1 PID) | Y | |||
| X | X | Y (up to 1 PID) | Y | |||
| Y | Y | Clean - Passthrough all | ||||
| X | Y (up to 1 stream) | Y (up to 1 stream) | ||||
| X | Y (up to 1 stream) | Y | ||||
| X | Y (up to 1 stream) | Y | ||||
| X | Y (up to 2 streams) | Y |
The list outputs endpoint accepts various filter parameters.
| Id | string <uuid4> |
| StartTrigger | integer <int64> Enum: 1 2 3 The trigger to start the output. Supported values:
|
| EventId required | string <uuid4> The Id of the event you want to retrieve outputs for |
| Limit | integer <int64> Limit on total number of outputs returned. Default is 100, Maximum is 1000 |
| Next | string |
| Authorization required | string Authorization header bearing the access token |
| X-API-Key required | string Header containing the organisation API Key. Key can be obtained here |
object | |
Array of objects (Output) |
{- "Meta": {
- "Next": "string"
}, - "Outputs": [
- {
- "EventId": "02ba3c4b-93df-4c91-94e2-25e0c995f8ef",
- "ExcludeTracks": [
- "video"
], - "Id": "a40c42f3-1781-4594-9ef5-ce59e8977aba",
- "Label": "Main Stadium Feed",
- "Protocol": 1,
- "ScheduledEndDate": "2006-01-02T17:04:05Z",
- "ScheduledStartDate": "2006-01-02T16:04:05Z",
- "StartTrigger": 3,
- "Tracks": [
- {
- "Bitrate": 192000,
- "Codec": "aac",
- "Framerate": {
- "Denominator": 1001,
- "Numerator": 50000
}, - "Height": 0,
- "Id": "1c2aa938-646f-401e-af47-53935e380304",
- "PID": 257,
- "Passthrough": false,
- "SampleRate": 44100,
- "Selector": "9bf4ee68-753e-406b-b1c9-e4cd1b772606",
- "Width": 0
}
], - "URL": "string"
}
]
}| Authorization required | string Authorization header bearing the access token |
| X-API-Key required | string Header containing the organisation API Key. Key can be obtained here |
| EventId required | string <uuid4> The unique identifier of the event id for the output. |
| ExcludeTracks | Array of strings <identifier> [ items <identifier > ] A list of track identifiers to explicitly exclude from the output. If a track is not matched by the identifiers in |
| Id | string <uuid4> The unique identifier of the output. If this is unset on create, it will be generated and returned. Required for update operations. |
| Label | string A user-defined label for the output. This will show up on the UI. This field will only be returned/updated if it is present and non-empty. |
| Protocol required | integer <int64> Enum: 1 2 3 The protocol for delivery of the output. Supported values:
|
| ScheduledEndDate | string <nulltime> The scheduled end time of the output in UTC, encoded in RFC3339 format. This can be updated at any time up to 5 minutes before the previously set ScheduledEndDate. Leaving this unset will result in the output running until the ScheduledEndDate of the Event. |
| ScheduledStartDate | string <nulltime> The scheduled start time of the output in UTC, encoded in RFC3339 format. This can be updated at any time up to 5 minutes before the previously set ScheduledStartDate. Setting this with an OutputStartTrigger not set to StartTime(3) is unsupported |
| StartTrigger required | integer <int64> Enum: 1 2 3 The trigger to start the output. Supported values:
|
required | Array of objects (OutputTrack) A list of output tracks and relevant transcoding options to be included in the output. Any track in the input that is encountered and does not match any identifiers explicitly excluded will be passed through without any manipulation. Note this does not include tracks generated by Spalk, which must be explicitly included here. An RTMP stream cannot support more than one video and one audio container, due to limitations of the FLV container. |
| URL required | string The output location encoded as a URL. URL encodings conform to libav conventions, found here: https://ffmpeg.org/ffmpeg-all.html#toc-Protocols For MediaConnect outputs, please adhere to the following formats Dynamic Entitlement Creation: Scheme and hostname set to
For example
OR Persistent Entitlement Reuse:
Please contact your Spalk representative to setup persistent entitlements for reuse. They will provide you the relevant ARNs. |
| EventId required | string <uuid4> The unique identifier of the event id for the output. |
| ExcludeTracks | Array of strings <identifier> [ items <identifier > ] A list of track identifiers to explicitly exclude from the output. If a track is not matched by the identifiers in |
| Id | string <uuid4> The unique identifier of the output. If this is unset on create, it will be generated and returned. Required for update operations. |
| Label | string A user-defined label for the output. This will show up on the UI. This field will only be returned/updated if it is present and non-empty. |
| Protocol required | integer <int64> Enum: 1 2 3 The protocol for delivery of the output. Supported values:
|
| ScheduledEndDate | string <nulltime> The scheduled end time of the output in UTC, encoded in RFC3339 format. This can be updated at any time up to 5 minutes before the previously set ScheduledEndDate. Leaving this unset will result in the output running until the ScheduledEndDate of the Event. |
| ScheduledStartDate | string <nulltime> The scheduled start time of the output in UTC, encoded in RFC3339 format. This can be updated at any time up to 5 minutes before the previously set ScheduledStartDate. Setting this with an OutputStartTrigger not set to StartTime(3) is unsupported |
| StartTrigger required | integer <int64> Enum: 1 2 3 The trigger to start the output. Supported values:
|
required | Array of objects (OutputTrack) A list of output tracks and relevant transcoding options to be included in the output. Any track in the input that is encountered and does not match any identifiers explicitly excluded will be passed through without any manipulation. Note this does not include tracks generated by Spalk, which must be explicitly included here. An RTMP stream cannot support more than one video and one audio container, due to limitations of the FLV container. |
| URL required | string The output location encoded as a URL. URL encodings conform to libav conventions, found here: https://ffmpeg.org/ffmpeg-all.html#toc-Protocols For MediaConnect outputs, please adhere to the following formats Dynamic Entitlement Creation: Scheme and hostname set to
For example
OR Persistent Entitlement Reuse:
Please contact your Spalk representative to setup persistent entitlements for reuse. They will provide you the relevant ARNs. |
{- "EventId": "02ba3c4b-93df-4c91-94e2-25e0c995f8ef",
- "ExcludeTracks": [
- "video"
], - "Id": "a40c42f3-1781-4594-9ef5-ce59e8977aba",
- "Label": "Main Stadium Feed",
- "Protocol": 1,
- "ScheduledEndDate": "2006-01-02T17:04:05Z",
- "ScheduledStartDate": "2006-01-02T16:04:05Z",
- "StartTrigger": 3,
- "Tracks": [
- {
- "Bitrate": 192000,
- "Codec": "aac",
- "Framerate": {
- "Denominator": 1001,
- "Numerator": 50000
}, - "Height": 0,
- "Id": "1c2aa938-646f-401e-af47-53935e380304",
- "PID": 257,
- "Passthrough": false,
- "SampleRate": 44100,
- "Selector": "9bf4ee68-753e-406b-b1c9-e4cd1b772606",
- "Width": 0
}
], - "URL": "string"
}{- "EventId": "02ba3c4b-93df-4c91-94e2-25e0c995f8ef",
- "ExcludeTracks": [
- "video"
], - "Id": "a40c42f3-1781-4594-9ef5-ce59e8977aba",
- "Label": "Main Stadium Feed",
- "Protocol": 1,
- "ScheduledEndDate": "2006-01-02T17:04:05Z",
- "ScheduledStartDate": "2006-01-02T16:04:05Z",
- "StartTrigger": 3,
- "Tracks": [
- {
- "Bitrate": 192000,
- "Codec": "aac",
- "Framerate": {
- "Denominator": 1001,
- "Numerator": 50000
}, - "Height": 0,
- "Id": "1c2aa938-646f-401e-af47-53935e380304",
- "PID": 257,
- "Passthrough": false,
- "SampleRate": 44100,
- "Selector": "9bf4ee68-753e-406b-b1c9-e4cd1b772606",
- "Width": 0
}
], - "URL": "string"
}| OutputId required | string |
| Authorization required | string Authorization header bearing the access token |
| X-API-Key required | string Header containing the organisation API Key. Key can be obtained here |
| EventId required | string <uuid4> The unique identifier of the event id for the output. |
| ExcludeTracks | Array of strings <identifier> [ items <identifier > ] A list of track identifiers to explicitly exclude from the output. If a track is not matched by the identifiers in |
| Id | string <uuid4> The unique identifier of the output. If this is unset on create, it will be generated and returned. Required for update operations. |
| Label | string A user-defined label for the output. This will show up on the UI. This field will only be returned/updated if it is present and non-empty. |
| Protocol required | integer <int64> Enum: 1 2 3 The protocol for delivery of the output. Supported values:
|
| ScheduledEndDate | string <nulltime> The scheduled end time of the output in UTC, encoded in RFC3339 format. This can be updated at any time up to 5 minutes before the previously set ScheduledEndDate. Leaving this unset will result in the output running until the ScheduledEndDate of the Event. |
| ScheduledStartDate | string <nulltime> The scheduled start time of the output in UTC, encoded in RFC3339 format. This can be updated at any time up to 5 minutes before the previously set ScheduledStartDate. Setting this with an OutputStartTrigger not set to StartTime(3) is unsupported |
| StartTrigger required | integer <int64> Enum: 1 2 3 The trigger to start the output. Supported values:
|
required | Array of objects (OutputTrack) A list of output tracks and relevant transcoding options to be included in the output. Any track in the input that is encountered and does not match any identifiers explicitly excluded will be passed through without any manipulation. Note this does not include tracks generated by Spalk, which must be explicitly included here. An RTMP stream cannot support more than one video and one audio container, due to limitations of the FLV container. |
| URL required | string The output location encoded as a URL. URL encodings conform to libav conventions, found here: https://ffmpeg.org/ffmpeg-all.html#toc-Protocols For MediaConnect outputs, please adhere to the following formats Dynamic Entitlement Creation: Scheme and hostname set to
For example
OR Persistent Entitlement Reuse:
Please contact your Spalk representative to setup persistent entitlements for reuse. They will provide you the relevant ARNs. |
{- "EventId": "02ba3c4b-93df-4c91-94e2-25e0c995f8ef",
- "ExcludeTracks": [
- "video"
], - "Id": "a40c42f3-1781-4594-9ef5-ce59e8977aba",
- "Label": "Main Stadium Feed",
- "Protocol": 1,
- "ScheduledEndDate": "2006-01-02T17:04:05Z",
- "ScheduledStartDate": "2006-01-02T16:04:05Z",
- "StartTrigger": 3,
- "Tracks": [
- {
- "Bitrate": 192000,
- "Codec": "aac",
- "Framerate": {
- "Denominator": 1001,
- "Numerator": 50000
}, - "Height": 0,
- "Id": "1c2aa938-646f-401e-af47-53935e380304",
- "PID": 257,
- "Passthrough": false,
- "SampleRate": 44100,
- "Selector": "9bf4ee68-753e-406b-b1c9-e4cd1b772606",
- "Width": 0
}
], - "URL": "string"
}| OutputId required | string |
| Authorization required | string Authorization header bearing the access token |
| X-API-Key required | string Header containing the organisation API Key. Key can be obtained here |
| ExcludeTracks | Array of strings <identifier> [ items <identifier > ] A list of track identifiers to explicitly exclude from the output. If a track is not matched by the identifiers in |
| Label | string A user-defined label for the output. This will show up on the UI. This field will only be returned/updated if it is present and non-empty. |
| Protocol required | integer <int64> Enum: 1 2 3 The protocol for delivery of the output. Supported values:
|
| ScheduledEndDate | string <nulltime> The scheduled end time of the output in UTC, encoded in RFC3339 format. This can be updated at any time up to 5 minutes before the previously set ScheduledEndDate. Leaving this unset will result in the output running until the ScheduledEndDate of the Event. |
| ScheduledStartDate | string <nulltime> The scheduled start time of the output in UTC, encoded in RFC3339 format. This can be updated at any time up to 5 minutes before the previously set ScheduledStartDate. Setting this with an OutputStartTrigger not set to StartTime(3) is unsupported |
| StartTrigger required | integer <int64> Enum: 1 2 3 The trigger to start the output. Supported values:
|
required | Array of objects (OutputTrack) A list of output tracks and relevant transcoding options to be included in the output. Any track in the input that is encountered and does not match any identifiers explicitly excluded will be passed through without any manipulation. Note this does not include tracks generated by Spalk, which must be explicitly included here. An RTMP stream cannot support more than one video and one audio container, due to limitations of the FLV container. |
| URL required | string The output location encoded as a URL. URL encodings conform to libav conventions, found here: https://ffmpeg.org/ffmpeg-all.html#toc-Protocols For MediaConnect outputs, please adhere to the following formats Dynamic Entitlement Creation: Scheme and hostname set to
For example
OR Persistent Entitlement Reuse:
Please contact your Spalk representative to setup persistent entitlements for reuse. They will provide you the relevant ARNs. |
| EventId required | string <uuid4> The unique identifier of the event id for the output. |
| ExcludeTracks | Array of strings <identifier> [ items <identifier > ] A list of track identifiers to explicitly exclude from the output. If a track is not matched by the identifiers in |
| Id | string <uuid4> The unique identifier of the output. If this is unset on create, it will be generated and returned. Required for update operations. |
| Label | string A user-defined label for the output. This will show up on the UI. This field will only be returned/updated if it is present and non-empty. |
| Protocol required | integer <int64> Enum: 1 2 3 The protocol for delivery of the output. Supported values:
|
| ScheduledEndDate | string <nulltime> The scheduled end time of the output in UTC, encoded in RFC3339 format. This can be updated at any time up to 5 minutes before the previously set ScheduledEndDate. Leaving this unset will result in the output running until the ScheduledEndDate of the Event. |
| ScheduledStartDate | string <nulltime> The scheduled start time of the output in UTC, encoded in RFC3339 format. This can be updated at any time up to 5 minutes before the previously set ScheduledStartDate. Setting this with an OutputStartTrigger not set to StartTime(3) is unsupported |
| StartTrigger required | integer <int64> Enum: 1 2 3 The trigger to start the output. Supported values:
|
required | Array of objects (OutputTrack) A list of output tracks and relevant transcoding options to be included in the output. Any track in the input that is encountered and does not match any identifiers explicitly excluded will be passed through without any manipulation. Note this does not include tracks generated by Spalk, which must be explicitly included here. An RTMP stream cannot support more than one video and one audio container, due to limitations of the FLV container. |
| URL required | string The output location encoded as a URL. URL encodings conform to libav conventions, found here: https://ffmpeg.org/ffmpeg-all.html#toc-Protocols For MediaConnect outputs, please adhere to the following formats Dynamic Entitlement Creation: Scheme and hostname set to
For example
OR Persistent Entitlement Reuse:
Please contact your Spalk representative to setup persistent entitlements for reuse. They will provide you the relevant ARNs. |
{- "ExcludeTracks": [
- "video"
], - "Label": "Main Stadium Feed",
- "Protocol": 1,
- "ScheduledEndDate": "2006-01-02T17:04:05Z",
- "ScheduledStartDate": "2006-01-02T16:04:05Z",
- "StartTrigger": 3,
- "Tracks": [
- {
- "Bitrate": 192000,
- "Codec": "aac",
- "Framerate": {
- "Denominator": 1001,
- "Numerator": 50000
}, - "Height": 0,
- "Id": "1c2aa938-646f-401e-af47-53935e380304",
- "PID": 257,
- "Passthrough": false,
- "SampleRate": 44100,
- "Selector": "9bf4ee68-753e-406b-b1c9-e4cd1b772606",
- "Width": 0
}
], - "URL": "string"
}{- "EventId": "02ba3c4b-93df-4c91-94e2-25e0c995f8ef",
- "ExcludeTracks": [
- "video"
], - "Id": "a40c42f3-1781-4594-9ef5-ce59e8977aba",
- "Label": "Main Stadium Feed",
- "Protocol": 1,
- "ScheduledEndDate": "2006-01-02T17:04:05Z",
- "ScheduledStartDate": "2006-01-02T16:04:05Z",
- "StartTrigger": 3,
- "Tracks": [
- {
- "Bitrate": 192000,
- "Codec": "aac",
- "Framerate": {
- "Denominator": 1001,
- "Numerator": 50000
}, - "Height": 0,
- "Id": "1c2aa938-646f-401e-af47-53935e380304",
- "PID": 257,
- "Passthrough": false,
- "SampleRate": 44100,
- "Selector": "9bf4ee68-753e-406b-b1c9-e4cd1b772606",
- "Width": 0
}
], - "URL": "string"
}An output cannot be deleted after it has been started. This operation cannot be undone. To restart an output you need to create an identical one.
| OutputId required | string |
| Authorization required | string Authorization header bearing the access token |
| X-API-Key required | string Header containing the organisation API Key. Key can be obtained here |
| Id | string |
{- "Id": "string"
}Returns the health status for a specific output.
| Colour | string Enum: "green" "amber" "red" "grey" Colour is the RAG severity assigned to the output. type: string |
| Messages | Array of strings Messages provides extra human-readable context. These will be UTF-8 strings suitable for display to end users. |
| Status | string Enum: "UNKNOWN" "INITIALISING" "PROVISIONING" "LIVE" "ERROR" "RESTARTING" "FAILED" "OFFLINE" "ENDED" Status is the current output state. Possible values include LIVE, STANDBY, ERROR, RESTARTING, FAILED, OFFLINE, UNKNOWN, INITIALISING, PROVISIONING, |
{- "Colour": "amber",
- "Messages": [
- "This URL may be incorrect. Please check it carefully"
], - "Status": "LIVE"
}Retrieve the SIP domain of your organisation.
object (Domain) | |||||||||
| |||||||||
{- "SipDomain": {
- "Domain": "abcdef123456.sip.twilio.com",
- "Id": "string",
- "Label": "My SIP Domain",
- "Secure": true
}
}Update the SIP domain of your organisation. All fields must be provided in the request body.
| Domain required | string A unique address that will be reserved to route your SIP traffic. Domain names can contain letters, digits, and dashes and must end with |
| Label required | string A label for the domain. This is used to identify the domain in the Spalk UI. |
| Secure required | boolean Whether secure SIP is enabled for this domain. If enabled, TLS will be enforced and SRTP will be negotiated on all incoming calls to this domain. |
| Domain required | string A unique address that will be reserved to route your SIP traffic. Domain names can contain letters, digits, and dashes and must end with |
| Id required | string <uuid4> The unique identifier of the domain. Automatically generated on create. |
| Label required | string A label for the domain. This is used to identify the domain in the Spalk UI. |
| Secure required | boolean Whether secure SIP is enabled for this domain. If enabled, TLS will be enforced and SRTP will be negotiated on all incoming calls to this domain. |
{- "Domain": "abcdef123456.sip.twilio.com",
- "Label": "My SIP Domain",
- "Secure": true
}{- "Domain": "abcdef123456.sip.twilio.com",
- "Id": "string",
- "Label": "My SIP Domain",
- "Secure": true
}Create a new SIP domain for your organisation.
| Domain required | string A unique address that will be reserved to route your SIP traffic. Domain names can contain letters, digits, and dashes and must end with |
| Label required | string A label for the domain. This is used to identify the domain in the Spalk UI. |
| Secure required | boolean Whether secure SIP is enabled for this domain. If enabled, TLS will be enforced and SRTP will be negotiated on all incoming calls to this domain. |
| Domain required | string A unique address that will be reserved to route your SIP traffic. Domain names can contain letters, digits, and dashes and must end with |
| Id required | string <uuid4> The unique identifier of the domain. Automatically generated on create. |
| Label required | string A label for the domain. This is used to identify the domain in the Spalk UI. |
| Secure required | boolean Whether secure SIP is enabled for this domain. If enabled, TLS will be enforced and SRTP will be negotiated on all incoming calls to this domain. |
{- "Domain": "abcdef123456.sip.twilio.com",
- "Label": "My SIP Domain",
- "Secure": true
}{- "Domain": "abcdef123456.sip.twilio.com",
- "Id": "string",
- "Label": "My SIP Domain",
- "Secure": true
}Retrieve the SIP IP filters set up by your organisation.
Array of objects (Ip) | |||||||||
Array
| |||||||||
{- "SipIps": [
- {
- "CidrPrefixLength": 16,
- "Id": "string",
- "IpAddress": "192.168.0.0",
- "Label": "Chicago Office IP"
}
]
}Create a new SIP IP filter for your organisation.
| CidrPrefixLength required | integer <int64> [ 1 .. 32 ] The CIDR prefix length for the IP filter. Must be between 1 and 32. |
| IpAddress required | string <ipv4> IP address to filter. Must be a valid IPv4 address. |
| Label required | string A label for the IP filter. This is used to identify the IP filter in the Spalk UI. |
| CidrPrefixLength required | integer <int64> [ 1 .. 32 ] The CIDR prefix length for the IP filter. Must be between 1 and 32. |
| Id required | string <uuid4> The unique identifier for the SIP IP filter. Automatically generated on create. |
| IpAddress required | string <ipv4> IP address to filter. Must be a valid IPv4 address. |
| Label required | string A label for the IP filter. This is used to identify the IP filter in the Spalk UI. |
{- "CidrPrefixLength": 16,
- "IpAddress": "192.168.0.0",
- "Label": "Chicago Office IP"
}{- "CidrPrefixLength": 16,
- "Id": "string",
- "IpAddress": "192.168.0.0",
- "Label": "Chicago Office IP"
}Update a SIP IP filter. All fields must be provided in the request body.
| Id required | string |
| CidrPrefixLength required | integer <int64> [ 1 .. 32 ] The CIDR prefix length for the IP filter. Must be between 1 and 32. |
| IpAddress required | string <ipv4> IP address to filter. Must be a valid IPv4 address. |
| Label required | string A label for the IP filter. This is used to identify the IP filter in the Spalk UI. |
| CidrPrefixLength required | integer <int64> [ 1 .. 32 ] The CIDR prefix length for the IP filter. Must be between 1 and 32. |
| Id required | string <uuid4> The unique identifier for the SIP IP filter. Automatically generated on create. |
| IpAddress required | string <ipv4> IP address to filter. Must be a valid IPv4 address. |
| Label required | string A label for the IP filter. This is used to identify the IP filter in the Spalk UI. |
{- "CidrPrefixLength": 16,
- "IpAddress": "192.168.0.0",
- "Label": "Chicago Office IP"
}{- "CidrPrefixLength": 16,
- "Id": "string",
- "IpAddress": "192.168.0.0",
- "Label": "Chicago Office IP"
}Retrieve the SIP lines of your organisation.
Array of objects (Line) | |||||||||
Array
| |||||||||
{- "SipLines": [
- {
- "Id": "string",
- "Label": "John's Line",
- "Password": "SecurePassword1",
- "Username": "john"
}
]
}Create a new SIP line for your organisation.
| Label required | string A label for the line. This is used to identify the line in the Spalk UI. |
| Password required | string <password> Password for authenticating on the SIP line. Password must have at least one number, one uppercase character, one lowercase character and be at least 12 characters long. |
| Username required | string Username for authenticating on the SIP line. |
| Id required | string <uuid4> The unique identifier for the SIP line. Automatically generated on create. |
| Label required | string A label for the line. This is used to identify the line in the Spalk UI. |
| Password required | string <password> Password for authenticating on the SIP line. Password must have at least one number, one uppercase character, one lowercase character and be at least 12 characters long. |
| Username required | string Username for authenticating on the SIP line. |
{- "Label": "John's Line",
- "Password": "SecurePassword1",
- "Username": "john"
}{- "Id": "string",
- "Label": "John's Line",
- "Password": "SecurePassword1",
- "Username": "john"
}Update a SIP line's password.
| Id required | string |
| Password required | string <password> Password for authenticating on the SIP line. Password must have at least one number, one uppercase character, one lowercase character and be at least 12 characters long. |
| Id required | string <uuid4> The unique identifier for the SIP line. Automatically generated on create. |
| Label required | string A label for the line. This is used to identify the line in the Spalk UI. |
| Password required | string <password> Password for authenticating on the SIP line. Password must have at least one number, one uppercase character, one lowercase character and be at least 12 characters long. |
| Username required | string Username for authenticating on the SIP line. |
{- "Password": "SecurePassword1"
}{- "Id": "string",
- "Label": "John's Line",
- "Password": "SecurePassword1",
- "Username": "john"
}An encoder configuration describes the settings of the encoder that Spalk will use to re-encode your input feed. If you wish to use an encoder configuration: In the POST request body of the /events endpoint, set Transcode to true and set EncoderConfigurationId to a valid encoder configuration Id.
Limitations:
Retrieve the Encoder Configurations of your organisation.
Array of objects (EncoderConfiguration) | |||||
Array
| |||||
{- "EncoderConfigurations": [
- {
- "Id": "string",
- "Name": "My Encoder Configuration"
}
]
}An audio configuration describes the mapping of input audio channels to output channels, including which channels to mix with commentator audio. It is a programmatic interface representing the channel mapping interface in the Spalk Web UI.
Note: All channel indexes are 1-based, meaning the first channel is labelled 1, not 0. This is intended to remain compatible with the way audio engineers and other broadcast professionals refer to them in their day-to-day work.
In the default mapping, each commentary team is assigned to its own Mix. In each Mix, input channels are passed through to the output - i.e. channel 1 of the input will be channel 1 of the output, channel 2 will map to channel 2, and so on - and the commentary team will be mapped to channels 1 and 2, and thus mixed with channels 1 and 2 of the input. Furthermore, the track layout will be preserved, i.e. the number of channels in each track (usually two, for pairs of audio) will remain the same in the output. Note that the default mapping is agnostic to the number of tracks/channels, all channels received will be passed through. The audio configuration API allows this default mapping to be overridden.
Limitations:
Retrieve the audio configuration for an event.
| EventId required | string |
object (AudioConfigBodyFields) | |||||||
| |||||||
{- "AudioConfig": {
- "ChannelCount": 8,
- "Mixes": [
- {
- "Latency": 2000,
- "Name": "Mix 1",
- "OutputChannels": [
- {
- "12345678-9abc-def1-2345-6789abcdef12": [
- 1
], - "input": [
- 1
]
}, - {
- "12345678-9abc-def1-2345-6789abcdef12": [
- 2
], - "input": [
- 2
]
}, - {
- "input": [
- 3
]
}, - {
- "input": [
- 4
]
}, - {
- "input": [
- 5
]
}, - {
- "input": [
- 6
]
}, - {
- "input": [
- 7
]
}, - {
- "input": [
- 8
]
}
]
}
], - "TrackLayout": [
- [
- 1,
- 2
], - [
- 3,
- 4
], - [
- 5,
- 6
], - [
- 7,
- 8
]
]
}
}Create or update the audio configuration for an event.
| EventId required | string |
| ChannelCount required | integer <int64> [ 2 .. 16 ] The total number of channels desired in the output, e.g. for four audio pairs, this number should be 8, for a single 5.1 channel track, this number should be 6. |
required | Array of objects (Mix) An array of Mix objects that describe how a commentary team or multiple commentary teams should be mapped to an output. |
| TrackLayout | Array of integers[ items <int64 >[ items <int64 > ] ] The layout of tracks in the output. For example, to describe two 5.1 channel tracks, this field should be set to |
object (AudioConfigBodyFields) | |||||||
| |||||||
{- "ChannelCount": 8,
- "Mixes": [
- {
- "Latency": 2000,
- "Name": "Mix 1",
- "OutputChannels": [
- {
- "12345678-9abc-def1-2345-6789abcdef12": [
- 1
], - "input": [
- 1
]
}, - {
- "12345678-9abc-def1-2345-6789abcdef12": [
- 2
], - "input": [
- 2
]
}, - {
- "input": [
- 3
]
}, - {
- "input": [
- 4
]
}, - {
- "input": [
- 5
]
}, - {
- "input": [
- 6
]
}, - {
- "input": [
- 7
]
}, - {
- "input": [
- 8
]
}
]
}
], - "TrackLayout": [
- [
- 1,
- 2
], - [
- 3,
- 4
], - [
- 5,
- 6
], - [
- 7,
- 8
]
]
}{- "AudioConfig": {
- "ChannelCount": 8,
- "Mixes": [
- {
- "Latency": 2000,
- "Name": "Mix 1",
- "OutputChannels": [
- {
- "12345678-9abc-def1-2345-6789abcdef12": [
- 1
], - "input": [
- 1
]
}, - {
- "12345678-9abc-def1-2345-6789abcdef12": [
- 2
], - "input": [
- 2
]
}, - {
- "input": [
- 3
]
}, - {
- "input": [
- 4
]
}, - {
- "input": [
- 5
]
}, - {
- "input": [
- 6
]
}, - {
- "input": [
- 7
]
}, - {
- "input": [
- 8
]
}
]
}
], - "TrackLayout": [
- [
- 1,
- 2
], - [
- 3,
- 4
], - [
- 5,
- 6
], - [
- 7,
- 8
]
]
}
}