Spalk API Reference (1.3.0)

Introduction

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.

Access to the API

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.

Quick Start

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:

Feedback

If you have requests, feedback or questions, please request to join the Spalk Developer Community on Slack at https://spalk-tech.slack.com

Api Guide

Requests and Responses

The API is RESTful. All requests should be made over HTTPS, and accessed from https://integration.spalk.tv.

Requests

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.

Responses

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.

Pagination

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.

Upload Limits

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.

Date/Time Values

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.

Managing scheduled times for Spalk resources

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.

Creating 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.

Updating times

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.

Infrastructure Regions

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: Singapore
  • sa-east-1: Sao Paulo (Brazil)

Authentication

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:

    1. Create an API client and retrieve Organisation API Key
    1. Generate an Access Token
    1. Make Authenticated Requests

For more details on the OAuth 2.0 client credentials flow, see the overview at https://auth0.com/docs/flows/concepts/client-credentials

Retrieve your API Key

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.

Create an API client

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.

Generate a 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();

Make Authenticated Requests

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 Token Expiration

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.

Changelog

2026-09-03 Add Output Labels

  • Add output.Label field to allow users to set free text labels shown on the Dashboard.

2025-11-04 Add RAG Status Endpoints

  • Add GET /events/{eventId}/status to retrieve the current status of an event
  • Add GET /teams/{teamId}/status to retrieve the current status of a commentary team
  • Add GET /outputs/{outputId}/status to retrieve the current status of an output

2025-09-29 Add favourite commentator listing

  • Add GET /commentators/favourites to quickly shortlist the users that have been marked as favourites for the organisation.

2025-09-24 Add event linking for redundancy

  • Add route to link two events for redundancy

2023-10-03 Add explicit support for SRT latency Parameter; Clarify SRT URLs

  • Explicitly support latency parameters in SRT caller inputs
  • Return SRT listener URLs in input.URL field that matches the Spalk Web UI and does not contain streamid parameter.
  • Return SRT caller URLs to the input.Source and input.URL field in input responses.

2022-08-12 Add MediaConnect Input and Output type

  • Support AWS MediaConnect Entitlement Input Type
  • Support AWS MediaConnect Entitlement Output Protocol

2020-12-29 Initial Public Release

  • Published Spalk Event Scheduling API.

Events

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:

  • You cannot update the input type of an event once it has been created.
  • You cannot update the scheduled start time within 5 minutes of the previously scheduled start time.
  • You cannot update the scheduled end time within 5 minutes of the previously scheduled end time.
  • You cannot delete an event less than 5 minutes before the scheduled start time.

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.

List events.

The list events endpoint accepts various filter parameters.

Authorizations:
Bearer
query 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
header Parameters
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

Responses

Response Schema: application/json
Array of objects (Event)
object

Response samples

Content type
application/json
{
  • "Events": [
    • {
      • "BitrateControl": 1,
      • "EnableScte35Markers": false,
      • "EncoderConfigurationId": "string",
      • "GameSoundVolume": 2,
      • "Id": "string",
      • "Inputs": [
        • {
          }
        ],
      • "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"
    }
}

Create an event.

Authorizations:
Bearer
header Parameters
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

Request Body schema: application/json
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:

  • 1 - Public
  • 2 - Unlisted
  • 3 - Private
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).

Responses

Response Schema: application/json
object (Event)

An event represents a live broadcast event

BitrateControl
integer <int64>
Enum: 1 2

The MPEG TS bitrate control of the event input. Not applicable to RTMP events. Supported Values:

  • 1 - Constant
  • 2 - Variable
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:

  • 1 - Public
  • 2 - Unlisted
  • 3 - Private
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).

Request samples

Content type
application/json
{
  • "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
}

Response samples

Content type
application/json
{
  • "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
    }
}

Get event by id.

Authorizations:
Bearer
path Parameters
EventId
required
string
Example: 01H7X9XJ0P2V4R4B8M2Q
header Parameters
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

Responses

Response Schema: application/json
BitrateControl
integer <int64>
Enum: 1 2

The MPEG TS bitrate control of the event input. Not applicable to RTMP events. Supported Values:

  • 1 - Constant
  • 2 - Variable
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:

  • 1 - Public
  • 2 - Unlisted
  • 3 - Private
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).

Response samples

Content type
application/json
{
  • "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
}

Update an event.

Authorizations:
Bearer
path Parameters
EventId
required
string
Example: 01H7X9XJ0P2V4R4B8M2Q
header Parameters
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

Request Body schema: application/json
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:

  • 1 - Public
  • 2 - Unlisted
  • 3 - Private
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.

Responses

Response Schema: application/json
object (Event)

An event represents a live broadcast event

BitrateControl
integer <int64>
Enum: 1 2

The MPEG TS bitrate control of the event input. Not applicable to RTMP events. Supported Values:

  • 1 - Constant
  • 2 - Variable
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:

  • 1 - Public
  • 2 - Unlisted
  • 3 - Private
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).

Request samples

Content type
application/json
{
  • "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"
}

Response samples

Content type
application/json
{
  • "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
    }
}

Delete an event.

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.

Authorizations:
Bearer
path Parameters
EventId
required
string
Example: 01H7X9XJ0P2V4R4B8M2Q
header Parameters
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

Responses

Response Schema: application/json
Id
string

Response samples

Content type
application/json
{
  • "Id": "string"
}

Get event status

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.

Authorizations:
Bearer

Responses

Response Schema: application/json
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.

Response samples

Content type
application/json
{
  • "Colour": "amber",
  • "Messages": [
    • "No NULL packets detected.",
    • "Audio bitrate within expected range."
    ],
  • "Status": "Connected"
}

Inputs

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:

  • AWS MediaConnect Entitlement
  • RTMP (Push)
  • SRT (Caller mode)

AWS MediaConnect

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.

List inputs.

The list inputs endpoint accepts various optional filter parameters.

Authorizations:
Bearer
query 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
header Parameters
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

Responses

Response Schema: application/json
Array of objects (InputResponseFields)
object

Response samples

Content type
application/json
{
  • "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"
    }
}

Create an input.

Authorizations:
Bearer
header Parameters
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

Request Body schema: application/json
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.

  • 3 - AWS MediaConnect (required), the entitlement ARN that gives Spalk access to the MediaConnect feed.
  • 5 - SRT (optional), the URL from which the input feed can be pulled ("caller" mode). Only the passphrase and latency parameters are supported.
  • 6 - RTMP is not supported.
Type
required
integer <int64>
Enum: 3 5 6

The type of input requested, currently supported values:

  • 3 - AWS MediaConnect Entitlement
  • 5 - SRT
  • 6 - RTMP

Responses

Response Schema: application/json
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 passphrase and latency parameters are supported. For MediaConnect (required), the entitlement ARN that gives Spalk access to the MediaConnect feed.`.

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:

  • 3 - AWS MediaConnect Entitlement
  • 5 - SRT
  • 6 - RTMP
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

Request samples

Content type
application/json
{
  • "Name": "Manchester City Training Camera 1",
  • "Region": "us-east-1",
  • "Source": "string",
  • "Type": 3
}

Response samples

Content type
application/json
{
  • "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"
}

Delete an input.

An input cannot be deleted if it is attached to any events are either upcoming or live.

Authorizations:
Bearer
path Parameters
InputId
required
string
header Parameters
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

Responses

Response Schema: application/json
Id
string

Response samples

Content type
application/json
{
  • "Id": "string"
}

Teams

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.

List teams.

The list teams endpoint accepts various filter parameters. Either Id or EventId must be specified.

Authorizations:
Bearer
query Parameters
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
header Parameters
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

Responses

Response Schema: application/json
object
Array of objects (Team)

Response samples

Content type
application/json
{
  • "Meta": {
    • "Next": "string"
    },
  • "Teams": [
    • {
      • "AnonymousAccessUri": "string",
      • "EventId": "02ba3c4b-93df-4c91-94e2-25e0c995f8ef",
      • "Id": "string",
      • "Language": "string",
      • "Members": [
        • {
          }
        ],
      • "Name": "Justin and Grant - English",
      • "SipLines": [
        • {
          }
        ]
      }
    ]
}

Create a team.

Authorizations:
Bearer
header Parameters
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

Request Body schema: application/json
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

Responses

Response Schema: application/json
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

Request samples

Content type
application/json
{
  • "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"
      }
    ]
}

Response samples

Content type
application/json
{
  • "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"
      }
    ]
}

Update a team.

Authorizations:
Bearer
path Parameters
TeamId
required
string
header Parameters
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

Request Body schema: application/json
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

Responses

Response Schema: application/json
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

Request samples

Content type
application/json
{
  • "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"
      }
    ]
}

Response samples

Content type
application/json
{
  • "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"
      }
    ]
}

Delete a team.

To reinstate a team you need to create an identical one.

Authorizations:
Bearer
path Parameters
TeamId
required
string
header Parameters
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

Responses

Response Schema: application/json
Id
string

Response samples

Content type
application/json
{
  • "Id": "string"
}

Get team status

Returns the audio status for a specific commentary team.

Authorizations:
Bearer

Responses

Response Schema: application/json
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.

Response samples

Content type
application/json
{
  • "Colour": "green",
  • "Messages": [
    • "JoeBuck is live"
    ],
  • "Status": "LIVE"
}

Commentators

A commentator is a user that can be assigned to a commentary team.

Retrieve the organisation's favourite commentators.

Note that the sensitive fields: Email, Name will only be available if the user has given access to publicly display them.

Authorizations:
Bearer

Responses

Response Schema: application/json
Array of objects (FavouriteCommentator)
Array
CommentatorId
string
Email
string
Language
string
Name
string
ThumbnailUrl
string
Username
string

Response samples

Content type
application/json
{
  • "FavouriteCommentators": [
    • {
      • "CommentatorId": "string",
      • "Email": "string",
      • "Language": "string",
      • "Name": "string",
      • "ThumbnailUrl": "string",
      • "Username": "string"
      }
    ]
}

Outputs

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.

  • By default, all tracks in the input will be passed through to the output. As of a result of this, creating an output with no tracks specified will simply result in an output that passes all the input tracks through without manipulation. An important note about these tracks is that they will not be present in any of the responses from these endpoints.
  • The input tracks can be explicitly excluded from the output using the ExcludeTrack property. Tracks generated by Spalk must be included in the Tracks property to be present in the output.
  • There is a limit of one Team track per output of any type.
  • SRT and AWS MediaConnect outputs may include any mix and number of output tracks.
  • RTMP outputs are limited by the FLV container format, which requires there is no more than one video and one audio track. Any tracks included a RTMP output will override the relevant audio or video track from the input.
Tracks in a SRT Output
Tracks in a RTMP Output

The following table describes the supported combination of track selectors.

TeamIdAudioVideoPIDRTMPSRTNotes
XXNY
XXYY
XXY (up to 1 PID)Y
XXXNYToo many streams for FLV container on RTMP output
XXXNYToo many streams for FLV container on RTMP output
XXXNYToo many streams for FLV container on RTMP output
XXYY
XXXNYToo many streams for FLV container on RTMP output
XXY (up to 1 PID)Y
XXY (up to 1 PID)Y
YYClean - Passthrough all
XY (up to 1 stream)Y (up to 1 stream)
XY (up to 1 stream)Y
X Y (up to 1 stream)Y
XY (up to 2 streams)Y

List outputs.

The list outputs endpoint accepts various filter parameters.

Authorizations:
Bearer
query Parameters
Id
string <uuid4>
StartTrigger
integer <int64>
Enum: 1 2 3

The trigger to start the output. Supported values:

  • 1 - EventStart: start the output when as soon as input is received after the event starts.
  • 2 - TeamLive: Start the output as soon as the commentary team connects to the Spalk studio.
  • 3 - StartTime: Start the output at a pre-defined time
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
header Parameters
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

Responses

Response Schema: application/json
object
Array of objects (Output)

Response samples

Content type
application/json
{
  • "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": [
        • {
          }
        ],
      • "URL": "string"
      }
    ]
}

Create an output.

Authorizations:
Bearer
header Parameters
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

Request Body schema: application/json
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 Tracks and is matched by one of these identifiers, it will be excluded from the output. Any input track that is not matched by either is included without transcoding by default. Acceptable values: "audio"|"video"|<PID int>. "audio" and "video" are intended for use with RTMP tracks, use the PID selector for specificity with container formats that support multiple audio and video tracks.

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:

  • 1 - RTMP (Push)
  • 2 - SRT (Caller mode)
  • 3 - AWS MediaConnect Entitlement
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:

  • 1 - EventStart: start the output when as soon as input is received after the event starts. This necesitates slightly higher latency as the Spalk system must overestimate the round-trip time to receive audio from the commentator
  • 2 - TeamLive: Start the output as soon as the commentary team is live in the Spalk studio.
  • 3 - StartTime: Start the output at a pre-defined time. If the commentary team has not connected by the ScheduledStartDate, this necessitates a higher latency as the Spalk system must overestimate the round-trip time to receive audio from the commentator
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 mediaconnect and entitlement respectively, and then the following query parameters:

  • 1 subscriber_account_id: The AWS account to entitle to receive media
  • 2 name: Identifier for the entitlement Spalk will issue
  • 3 region: AWS region in which Spalk should create the sending MediaConnect Flow (NB: Will need to be the same region as the receiving Flow. This is not restricted to the AWS regions in which you can create events.)
  • 4 static_encryption_key: (optional) Static to use to encrypt data in transit. Valid characters are hexadecimal digits (0-9, A-F, a-f), must be exactly 32, 48, or 64 characters in length (NB: You will need to configure the receiving Flow with the same key)
  • 5 data_transfer_subscriber_fee_percent: (optional) The proportion of the AWS data transfer fees that should be billed to the subscriber (i.e. the receiving organisation) (0 - 100, default is 100)

For example

mediaconnect://entitlement?subscriber_account_id=111122223333&name=ManchesterCityOutput1&region=us-west-2&static_encryption_key=abcdef0123456789ABCDEF0123456789&data_transfer_subscriber_fee_percent=0

OR

Persistent Entitlement Reuse:

mediaconnect://<entitlement_arn>

Please contact your Spalk representative to setup persistent entitlements for reuse. They will provide you the relevant ARNs.

Responses

Response Schema: application/json
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 Tracks and is matched by one of these identifiers, it will be excluded from the output. Any input track that is not matched by either is included without transcoding by default. Acceptable values: "audio"|"video"|<PID int>. "audio" and "video" are intended for use with RTMP tracks, use the PID selector for specificity with container formats that support multiple audio and video tracks.

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:

  • 1 - RTMP (Push)
  • 2 - SRT (Caller mode)
  • 3 - AWS MediaConnect Entitlement
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:

  • 1 - EventStart: start the output when as soon as input is received after the event starts. This necesitates slightly higher latency as the Spalk system must overestimate the round-trip time to receive audio from the commentator
  • 2 - TeamLive: Start the output as soon as the commentary team is live in the Spalk studio.
  • 3 - StartTime: Start the output at a pre-defined time. If the commentary team has not connected by the ScheduledStartDate, this necessitates a higher latency as the Spalk system must overestimate the round-trip time to receive audio from the commentator
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 mediaconnect and entitlement respectively, and then the following query parameters:

  • 1 subscriber_account_id: The AWS account to entitle to receive media
  • 2 name: Identifier for the entitlement Spalk will issue
  • 3 region: AWS region in which Spalk should create the sending MediaConnect Flow (NB: Will need to be the same region as the receiving Flow. This is not restricted to the AWS regions in which you can create events.)
  • 4 static_encryption_key: (optional) Static to use to encrypt data in transit. Valid characters are hexadecimal digits (0-9, A-F, a-f), must be exactly 32, 48, or 64 characters in length (NB: You will need to configure the receiving Flow with the same key)
  • 5 data_transfer_subscriber_fee_percent: (optional) The proportion of the AWS data transfer fees that should be billed to the subscriber (i.e. the receiving organisation) (0 - 100, default is 100)

For example

mediaconnect://entitlement?subscriber_account_id=111122223333&name=ManchesterCityOutput1&region=us-west-2&static_encryption_key=abcdef0123456789ABCDEF0123456789&data_transfer_subscriber_fee_percent=0

OR

Persistent Entitlement Reuse:

mediaconnect://<entitlement_arn>

Please contact your Spalk representative to setup persistent entitlements for reuse. They will provide you the relevant ARNs.

Request samples

Content type
application/json
{
  • "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"
}

Response samples

Content type
application/json
{
  • "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"
}

Get output by id.

Authorizations:
Bearer
path Parameters
OutputId
required
string
header Parameters
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

Responses

Response Schema: application/json
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 Tracks and is matched by one of these identifiers, it will be excluded from the output. Any input track that is not matched by either is included without transcoding by default. Acceptable values: "audio"|"video"|<PID int>. "audio" and "video" are intended for use with RTMP tracks, use the PID selector for specificity with container formats that support multiple audio and video tracks.

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:

  • 1 - RTMP (Push)
  • 2 - SRT (Caller mode)
  • 3 - AWS MediaConnect Entitlement
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:

  • 1 - EventStart: start the output when as soon as input is received after the event starts. This necesitates slightly higher latency as the Spalk system must overestimate the round-trip time to receive audio from the commentator
  • 2 - TeamLive: Start the output as soon as the commentary team is live in the Spalk studio.
  • 3 - StartTime: Start the output at a pre-defined time. If the commentary team has not connected by the ScheduledStartDate, this necessitates a higher latency as the Spalk system must overestimate the round-trip time to receive audio from the commentator
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 mediaconnect and entitlement respectively, and then the following query parameters:

  • 1 subscriber_account_id: The AWS account to entitle to receive media
  • 2 name: Identifier for the entitlement Spalk will issue
  • 3 region: AWS region in which Spalk should create the sending MediaConnect Flow (NB: Will need to be the same region as the receiving Flow. This is not restricted to the AWS regions in which you can create events.)
  • 4 static_encryption_key: (optional) Static to use to encrypt data in transit. Valid characters are hexadecimal digits (0-9, A-F, a-f), must be exactly 32, 48, or 64 characters in length (NB: You will need to configure the receiving Flow with the same key)
  • 5 data_transfer_subscriber_fee_percent: (optional) The proportion of the AWS data transfer fees that should be billed to the subscriber (i.e. the receiving organisation) (0 - 100, default is 100)

For example

mediaconnect://entitlement?subscriber_account_id=111122223333&name=ManchesterCityOutput1&region=us-west-2&static_encryption_key=abcdef0123456789ABCDEF0123456789&data_transfer_subscriber_fee_percent=0

OR

Persistent Entitlement Reuse:

mediaconnect://<entitlement_arn>

Please contact your Spalk representative to setup persistent entitlements for reuse. They will provide you the relevant ARNs.

Response samples

Content type
application/json
{
  • "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"
}

Updates an output.

Authorizations:
Bearer
path Parameters
OutputId
required
string
header Parameters
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

Request Body schema: application/json
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 Tracks and is matched by one of these identifiers, it will be excluded from the output. Any input track that is not matched by either is included without transcoding by default. Acceptable values: "audio"|"video"|<PID int>. "audio" and "video" are intended for use with RTMP tracks, use the PID selector for specificity with container formats that support multiple audio and video tracks.

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:

  • 1 - RTMP (Push)
  • 2 - SRT (Caller mode)
  • 3 - AWS MediaConnect Entitlement
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:

  • 1 - EventStart: start the output when as soon as input is received after the event starts. This necesitates slightly higher latency as the Spalk system must overestimate the round-trip time to receive audio from the commentator
  • 2 - TeamLive: Start the output as soon as the commentary team is live in the Spalk studio.
  • 3 - StartTime: Start the output at a pre-defined time. If the commentary team has not connected by the ScheduledStartDate, this necessitates a higher latency as the Spalk system must overestimate the round-trip time to receive audio from the commentator
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 mediaconnect and entitlement respectively, and then the following query parameters:

  • 1 subscriber_account_id: The AWS account to entitle to receive media
  • 2 name: Identifier for the entitlement Spalk will issue
  • 3 region: AWS region in which Spalk should create the sending MediaConnect Flow (NB: Will need to be the same region as the receiving Flow. This is not restricted to the AWS regions in which you can create events.)
  • 4 static_encryption_key: (optional) Static to use to encrypt data in transit. Valid characters are hexadecimal digits (0-9, A-F, a-f), must be exactly 32, 48, or 64 characters in length (NB: You will need to configure the receiving Flow with the same key)
  • 5 data_transfer_subscriber_fee_percent: (optional) The proportion of the AWS data transfer fees that should be billed to the subscriber (i.e. the receiving organisation) (0 - 100, default is 100)

For example

mediaconnect://entitlement?subscriber_account_id=111122223333&name=ManchesterCityOutput1&region=us-west-2&static_encryption_key=abcdef0123456789ABCDEF0123456789&data_transfer_subscriber_fee_percent=0

OR

Persistent Entitlement Reuse:

mediaconnect://<entitlement_arn>

Please contact your Spalk representative to setup persistent entitlements for reuse. They will provide you the relevant ARNs.

Responses

Response Schema: application/json
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 Tracks and is matched by one of these identifiers, it will be excluded from the output. Any input track that is not matched by either is included without transcoding by default. Acceptable values: "audio"|"video"|<PID int>. "audio" and "video" are intended for use with RTMP tracks, use the PID selector for specificity with container formats that support multiple audio and video tracks.

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:

  • 1 - RTMP (Push)
  • 2 - SRT (Caller mode)
  • 3 - AWS MediaConnect Entitlement
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:

  • 1 - EventStart: start the output when as soon as input is received after the event starts. This necesitates slightly higher latency as the Spalk system must overestimate the round-trip time to receive audio from the commentator
  • 2 - TeamLive: Start the output as soon as the commentary team is live in the Spalk studio.
  • 3 - StartTime: Start the output at a pre-defined time. If the commentary team has not connected by the ScheduledStartDate, this necessitates a higher latency as the Spalk system must overestimate the round-trip time to receive audio from the commentator
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 mediaconnect and entitlement respectively, and then the following query parameters:

  • 1 subscriber_account_id: The AWS account to entitle to receive media
  • 2 name: Identifier for the entitlement Spalk will issue
  • 3 region: AWS region in which Spalk should create the sending MediaConnect Flow (NB: Will need to be the same region as the receiving Flow. This is not restricted to the AWS regions in which you can create events.)
  • 4 static_encryption_key: (optional) Static to use to encrypt data in transit. Valid characters are hexadecimal digits (0-9, A-F, a-f), must be exactly 32, 48, or 64 characters in length (NB: You will need to configure the receiving Flow with the same key)
  • 5 data_transfer_subscriber_fee_percent: (optional) The proportion of the AWS data transfer fees that should be billed to the subscriber (i.e. the receiving organisation) (0 - 100, default is 100)

For example

mediaconnect://entitlement?subscriber_account_id=111122223333&name=ManchesterCityOutput1&region=us-west-2&static_encryption_key=abcdef0123456789ABCDEF0123456789&data_transfer_subscriber_fee_percent=0

OR

Persistent Entitlement Reuse:

mediaconnect://<entitlement_arn>

Please contact your Spalk representative to setup persistent entitlements for reuse. They will provide you the relevant ARNs.

Request samples

Content type
application/json
{
  • "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"
}

Response samples

Content type
application/json
{
  • "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"
}

Delete an output.

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.

Authorizations:
Bearer
path Parameters
OutputId
required
string
header Parameters
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

Responses

Response Schema: application/json
Id
string

Response samples

Content type
application/json
{
  • "Id": "string"
}

Get output status

Returns the health status for a specific output.

Authorizations:
Bearer

Responses

Response Schema: application/json
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,

Response samples

Content type
application/json
{
  • "Colour": "amber",
  • "Messages": [
    • "This URL may be incorrect. Please check it carefully"
    ],
  • "Status": "LIVE"
}

SIP

Configure SIP connections to Spalk

Retrieve SIP Domain.

Retrieve the SIP domain of your organisation.

Authorizations:
Bearer

Responses

Response Schema: application/json
object (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 .sip.twilio.com.

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.

Response samples

Content type
application/json
{
  • "SipDomain": {
    • "Domain": "abcdef123456.sip.twilio.com",
    • "Id": "string",
    • "Label": "My SIP Domain",
    • "Secure": true
    }
}

Update SIP Domain.

Update the SIP domain of your organisation. All fields must be provided in the request body.

Authorizations:
Bearer
Request Body schema: application/json
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 .sip.twilio.com.

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.

Responses

Response Schema: application/json
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 .sip.twilio.com.

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.

Request samples

Content type
application/json
{
  • "Domain": "abcdef123456.sip.twilio.com",
  • "Label": "My SIP Domain",
  • "Secure": true
}

Response samples

Content type
application/json
{
  • "Domain": "abcdef123456.sip.twilio.com",
  • "Id": "string",
  • "Label": "My SIP Domain",
  • "Secure": true
}

Create SIP Domain.

Create a new SIP domain for your organisation.

Authorizations:
Bearer
Request Body schema: application/json
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 .sip.twilio.com.

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.

Responses

Response Schema: application/json
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 .sip.twilio.com.

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.

Request samples

Content type
application/json
{
  • "Domain": "abcdef123456.sip.twilio.com",
  • "Label": "My SIP Domain",
  • "Secure": true
}

Response samples

Content type
application/json
{
  • "Domain": "abcdef123456.sip.twilio.com",
  • "Id": "string",
  • "Label": "My SIP Domain",
  • "Secure": true
}

Delete SIP Domain.

Delete your organisation's SIP domain.

Authorizations:
Bearer

Responses

Response samples

Content type
application/json
{
  • "Message": "string"
}

Retrieve SIP IP filters.

Retrieve the SIP IP filters set up by your organisation.

Authorizations:
Bearer

Responses

Response Schema: application/json
Array of objects (Ip)
Array
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.

Response samples

Content type
application/json
{
  • "SipIps": [
    • {
      • "CidrPrefixLength": 16,
      • "Id": "string",
      • "IpAddress": "192.168.0.0",
      • "Label": "Chicago Office IP"
      }
    ]
}

Create SIP IP filter.

Create a new SIP IP filter for your organisation.

Authorizations:
Bearer
Request Body schema: application/json
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.

Responses

Response Schema: application/json
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.

Request samples

Content type
application/json
{
  • "CidrPrefixLength": 16,
  • "IpAddress": "192.168.0.0",
  • "Label": "Chicago Office IP"
}

Response samples

Content type
application/json
{
  • "CidrPrefixLength": 16,
  • "Id": "string",
  • "IpAddress": "192.168.0.0",
  • "Label": "Chicago Office IP"
}

Update SIP IP filter.

Update a SIP IP filter. All fields must be provided in the request body.

Authorizations:
Bearer
path Parameters
Id
required
string
Request Body schema: application/json
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.

Responses

Response Schema: application/json
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.

Request samples

Content type
application/json
{
  • "CidrPrefixLength": 16,
  • "IpAddress": "192.168.0.0",
  • "Label": "Chicago Office IP"
}

Response samples

Content type
application/json
{
  • "CidrPrefixLength": 16,
  • "Id": "string",
  • "IpAddress": "192.168.0.0",
  • "Label": "Chicago Office IP"
}

Delete SIP IP filter.

Delete one of your organisation's SIP IP filters.

Authorizations:
Bearer
path Parameters
Id
required
string

Responses

Response samples

Content type
application/json
{
  • "Message": "string"
}

Retrieve SIP Lines.

Retrieve the SIP lines of your organisation.

Authorizations:
Bearer

Responses

Response Schema: application/json
Array of objects (Line)
Array
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.

Response samples

Content type
application/json
{
  • "SipLines": [
    • {
      • "Id": "string",
      • "Label": "John's Line",
      • "Password": "SecurePassword1",
      • "Username": "john"
      }
    ]
}

Create SIP Line.

Create a new SIP line for your organisation.

Authorizations:
Bearer
Request Body schema: application/json
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.

Responses

Response Schema: application/json
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.

Request samples

Content type
application/json
{
  • "Label": "John's Line",
  • "Password": "SecurePassword1",
  • "Username": "john"
}

Response samples

Content type
application/json
{
  • "Id": "string",
  • "Label": "John's Line",
  • "Password": "SecurePassword1",
  • "Username": "john"
}

Update SIP Line password.

Update a SIP line's password.

Authorizations:
Bearer
path Parameters
Id
required
string
Request Body schema: application/json
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.

Responses

Response Schema: application/json
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.

Request samples

Content type
application/json
{
  • "Password": "SecurePassword1"
}

Response samples

Content type
application/json
{
  • "Id": "string",
  • "Label": "John's Line",
  • "Password": "SecurePassword1",
  • "Username": "john"
}

Delete SIP Line.

Delete one of your organisation's SIP lines.

Authorizations:
Bearer
path Parameters
Id
required
string

Responses

Response samples

Content type
application/json
{
  • "Message": "string"
}

Encoder Configurations

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:

  • The Spalk API and the Spalk Web UI only support retrieving encoder configurations. Please contact your Spalk representative if you wish to create encoder configurations for your organisation.
  • The Spalk API only supports encoder configurations for input type 5 (SRT).

Retrieve Encoder Configurations.

Retrieve the Encoder Configurations of your organisation.

Authorizations:
Bearer

Responses

Response Schema: application/json
Array of objects (EncoderConfiguration)
Array
Id
required
string <uuid4>

The unique identifier for the encoder configuration. Automatically generated on create.

Name
required
string

A name for the encoder configuration. This is used to identify the encoder configuration in the Spalk UI.

Response samples

Content type
application/json
{
  • "EncoderConfigurations": [
    • {
      • "Id": "string",
      • "Name": "My Encoder Configuration"
      }
    ]
}

Audio Configurations

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:

  • Each commentary team can only be assigned to a single Mix
  • Each output audio track can contain a maximum of one input audio track, and a maximum of one commentary team.

Retrieve Audio Configuration

Retrieve the audio configuration for an event.

Authorizations:
Bearer
path Parameters
EventId
required
string

Responses

Response Schema: application/json
object (AudioConfigBodyFields)
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 [[1,2,3,4,5,6],[7,8,9,10,11,12]]. If channels should be grouped into audio pairs, this field can be omitted.

Response samples

Content type
application/json
{
  • "AudioConfig": {
    • "ChannelCount": 8,
    • "Mixes": [
      • {
        • "Latency": 2000,
        • "Name": "Mix 1",
        • "OutputChannels": [
          ]
        }
      ],
    • "TrackLayout": [
      • [
        • 1,
        • 2
        ],
      • [
        • 3,
        • 4
        ],
      • [
        • 5,
        • 6
        ],
      • [
        • 7,
        • 8
        ]
      ]
    }
}

Create/Update an Audio Configuration

Create or update the audio configuration for an event.

Authorizations:
Bearer
path Parameters
EventId
required
string
Request Body schema: application/json
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 [[1,2,3,4,5,6],[7,8,9,10,11,12]]. If channels should be grouped into audio pairs, this field can be omitted.

Responses

Response Schema: application/json
object (AudioConfigBodyFields)
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 [[1,2,3,4,5,6],[7,8,9,10,11,12]]. If channels should be grouped into audio pairs, this field can be omitted.

Request samples

Content type
application/json
{
  • "ChannelCount": 8,
  • "Mixes": [
    • {
      • "Latency": 2000,
      • "Name": "Mix 1",
      • "OutputChannels": [
        • {
          },
        • {
          },
        • {
          },
        • {
          },
        • {
          },
        • {
          },
        • {
          },
        • {
          }
        ]
      }
    ],
  • "TrackLayout": [
    • [
      • 1,
      • 2
      ],
    • [
      • 3,
      • 4
      ],
    • [
      • 5,
      • 6
      ],
    • [
      • 7,
      • 8
      ]
    ]
}

Response samples

Content type
application/json
{
  • "AudioConfig": {
    • "ChannelCount": 8,
    • "Mixes": [
      • {
        • "Latency": 2000,
        • "Name": "Mix 1",
        • "OutputChannels": [
          ]
        }
      ],
    • "TrackLayout": [
      • [
        • 1,
        • 2
        ],
      • [
        • 3,
        • 4
        ],
      • [
        • 5,
        • 6
        ],
      • [
        • 7,
        • 8
        ]
      ]
    }
}