Pixellot offers automated sports production solutions that provide affordable alternatives to traditional video capture, production, and distribution systems for professional and semi-professional sports events. Founded in 2013, Pixellot’s AI technology solution streamlines production workflow by deploying an unmanned multicamera system in a fixed location, with additional angles as required, to cover the entire field, offering a stitched panoramic image. Advanced algorithms enable automatic coverage of the flow of play and generate highlights. Pixellot systems are deployed by broadcasters, production companies, clubs, federations, universities, high schools, sports portals, and coaching solution providers around the globe.
For more information visit: www.pixellot.tv
This document contains proprietary and confidential material of Pixellot Ltd. Any unauthorized reproduction, use, or disclosure of this material, or any part thereof, is strictly prohibited. This document is solely for the use of Pixellot employees and authorized Pixellot customers.
The material furnished in this document is believed to be accurate and reliable. However, no responsibility is assumed by Pixellot Ltd. for the use of this document or any material included herein. Pixellot Ltd. reserves the right to make changes to this document or any material included herein at any time and without notice.
For more information visit: www.pixellot.tv
Copyright © 2024 Pixellot Ltd.
All Rights Reserved.
Pixellot provides its partners with a dedicated Partner API for creating new entities, updating and retrieving them. In addition, a partner can subscribe to Pixellot webhooks to get notification about different significant occurrences.
The idea is that a partner can, for instance, ask for a list of events on startup. When the partner subscribes to the webhooks service, it will get notifications about every significant change (including creation and deletion) and will update its own database. This will omit the need to repeatedly ask for the full list of events to get new events and updates to existing events. The updates can, in this way, be done passively in a push method instead of pull.
Explore Partner API through our official documentation. This resource provides essential information for integrating our services seamlessly into your applications. Find detailed API endpoints, request methods, authentication guides, and error handling instructions.
For more information, visit our REST API documentation at https://app.swaggerhub.com/apis/Pixellot/partner_api/
Pixellot API is a RESTful HTTP API. All requests, except the login, require an access token. If no access token will be provided in the API request, 401 Unauthorized
will be returned to the client.
Pixellot supports 2 environments for 3rd party companies: staging
and production
. Initially, 3rd party company integrates with the staging
environment to verify that the integration is correct. Once E2E staging
works correctly, the integration moves to production
.
Available environments:
[Base URL] = api.pixellot.tv/v1 (PROD) - production workloads
[Base URL] = api.stage.pixellot.tv/v1 (STAGE) - tests and integration
All
API requests, except for login, require the “Authorization” header to
be present. Authorization is based on the JWT method. JSON Web Token
(JWT) is a compact, URL-safe means of representing claims to be
transferred between two parties.
Typical authenticated request would be having the following look:
curl https://api.stage.pixellot.tv/v1/venues -H "Authorization: eyJ0eX..."
- type: betting → Betting mode - Low latency
- type: tournament → Tournament mode
end$date
to now+1 minute via the PUT /events/:id API - https://app.swaggerhub.com/apis/Pixellot/partner_api/1.28.11#/default/updateEventExample:
{"end$date": "2024-04-24T02:00:00Z"}
You can stop an event about 2-3 minutes before it should've ended by itself. For example, if the current time is 15:33, and you want to modify an event which is supposed to end at 15:35, the request can fail.
As of API v1.28.11, you can create events with the following game types:
“game” - 2 teams
“training” - 1 team
“other” - no teams
To specify the type, use the “gameType” field.
Example payload - training event:
To start forwarding HD stream, the following club options should be ON:
“Betting mode - Low latency” option should be used along with the “Allow Stream Forwarding” permission. Contact your account manager to enable these settings for needed clubs.
Following stream forwarding types are supported as of API v1.28.11:
Stream forwarding can be specified during event creation inside the “streamTargets
" field, or once the event is live via POST /events/:id/streamTargets API
Example payload - RTMP stream:
{
"streamTargets":{
"hd":[
{
"name":"RTMP",
// max 50 characters, unique in event scope
"streamType":"rtmp",
"host":"p.ep522507.i.rtmpstream.net",
// where to forward to
"port":"1935",
"application":"EntryPoint",
"destinationStream":"rtmp",
"sourceStream":"hd",
"userName":"368709",
// optional
"password":"aE9236"
// optional
}
]
}
}
Example payload - Facebook stream:
{
"streamTargets":{
"hd":[
{
"name":"Facebook",
"streamType":"rtmp",
"host":"live-api-a.facebook.com",
"port":"80",
"application":"rtmp",
"destinationStream":"test",
"sourceStream":"hd"
}
]
}
}
Example payload - SRT stream:
{
"streamTargets":{
"hd":[
{
"name":"SRT Push",
"streamType":"srt-push",
"host":"134.122.79.116",
"port":"4200",
"application":"live",
"destinationStream":"hd",
"sourceStream":"hd"
}
]
}
}
Resulting event in CMS by having 3 forwardings for the HD stream:
As of API v1.28.11, we do not support query parameters for the stream forwarding host URL. URI components can be only separated by slashed, as indicated on the screenshot above.
In case when stream forwarding has been successfully added via API, but is not visible on event event page in CMS, you should rely on the API response as the source of truth.
Forwarding of Panorama stream is not officially supported yet, but can be achieved with the following steps:
Only using the POST /events/:id/streamTargets API - https://app.swaggerhub.com/apis/Pixellot/partner_api/1.28.11#/default/addAdHocStreamTarget
Example payload:
{
"name": "rtmp-1",
"streamType": "rtmp",
"host": "pxlt-source.pixellot.stream",
"port": "1935",
"application": "live",
"destinationStream": "<streamName>",
"sourceStream": "pano"
}
For the low-latency stream forwarding, the “multiStreamPaths” field should be used. Resulting configuration is similar to a regular stream forwarding, but 3 available Betting forwarding types exist:
"multiStreamPaths": { "primaryUrl": "rtmp://p.ep796290.i.akamaientrypoint.net/EntryPoint/wabvolleych22_92867_1000w@796290" }, "bettingForwardingType": "Native", "type": "betting"
Resulting event in CMS:
Transcoded
"multiStreamPaths": {
"resolution": "360p",
"primaryUrl": "rtmp://p.ep796290.i.akamaientrypoint.net/EntryPoint/wabvolleych22_92867_1000w@796290,
"bitrate": 746,
"username": "281596",
"password": "sdkwuh7U$r"
},
"bettingForwardingType": "Transcoded",
"type": "betting"
Resulting event in CMS:
"bettingForwardingType": "None",
"type": "betting"
Defines whether a specific video type should be streamed when live, or only recorded locally
"streamsConfig": { "hd": stream/local, "pano": stream/local }
For example, {“hd”: “stream”, “pano”: “local”} will result in the similar event, as seen on CMS:When both video types are set to “local”, event will be saved on the venue PC, and not published to the cloud.disableLivePano
Allows you to explicitly disable Panorama stream.
Note that this setting may conflict with the tenant’s streaming settings, which are still the primary source of what should happen when running an event. For example, "streamsConfig" cannot be used alongside with tenant's "disableLiveStreams" setting.
Current streaming settings can be clarified with your account manager. Example of streaming settings:
To start using the scoreboard APIs, venue needs to have a proper setup done in the VPU, for example:
There are several variations of event lifecycle that are related to how the video stream is behaving
Low-latency feed can be achieved by providing the following payload during event creation. To create a Betting event, add "type":"betting" to your event creation payload.
See the Section 6.3 “Betting” in this document for more information.
Tournament event type is an event that can last up to 16 hours.
A Tournament event will stream live (to your chosen streaming service) but will not have cloud recording. In CMS, event will not stream, and you will be able to watch the event only when event is over and local recording was fully uploaded to VOD.
Tournament events require Stream Forwarding to fully work. Stream forwarding allows you to stream events to your own streaming service. Forwarding to multiple streaming services is supported.
To be able to create such an event, you need enable Tournament mode for your Club. If this option is not available in you club, please contact Pixellot support about adding the capability.
To create a Tournament type of event, add "type":"tournament" to your event creation payload:.
{ "eventName": "Tournament-event", "start$date": "2020-04-21T09:00:00.000Z", "end$date": "2020-04-21T18:00:00.000Z", "status": "active", "type":"tournament", "venue": { "_id": "56b1ed92sfd2b631ce420f4" }, "scoreboardData": { "homeTeam": "teamA", "awayTeam": "teamB", "homeLogo": "string" }, "productionType": "soccer" "streamTargets": { "hd": [{ "name":" forwardedStream", "streamType":"rtmp", "host":"13.112.216.114", "port":"1915", "application":" tournament_hd", "destinationStream":" tournament_hd", "sourceStream":"hd", "userName":"", "password":"" }]
} }
Note: StreamTargets can be added after event creation, by editing the event using the POST /events/{eventId}/streamTargets API - https://app.swaggerhub.com/apis/Pixellot/partner_api/1.28.8#/default/addAdHocStreamTarget
This event type will be automatically assumed when creating an event for the external venue. Such venues are usually matching the following format: External-<number>-<Standard/Prime>, for example:
Follow the regular event creation procedure, set an ID of the external venue inside “venue._id” field:
{
"eventName": "External Venue Test",
"start$date": "{{start_date}}",
"end$date": "{{end_date}}",
"venue": {
"_id": "{{externalVenueId}}"
},
"scoreboardData": {
"homeTeam": "Home",
"awayTeam": "Guest",
"enable": true
},
"permission": "club",
"productionType": "soccer"
}
The “type” indication is added automatically, you don’t need to explicitly specify it as for Betting or Tournament events.
“externalStreamUrl” is the external content link that should be streamed to using RTMP protocol. This value can be also obtained from event’s page on CMS:
External content events contain a few fields specific to them in the GET /events or GET /events/:id responses:
"type": "externalContent",
"externalStreamUrl": "rtmp://pxlt-....pixellot.stream:1935/live/0_hd_2000"