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..."
This doc includes materials that help other companies integrate with the Pixellot ecosystem. From Pixellot’s perspective, a company that joins the marketplace becomes VAS - Value Added Service.
As of now, Pixellot supports three VAS types:A. Enhancement of real-time RTMP feed - Video EnhancerB. Adding a pre-rendered graphics overlay - Overlay ProviderC. Upload camera raw data to cloud - Raw Data ConsumerMore to come soon…
Example request:
curl --request PATCH 'https://api.pixellot.tv/v1/events/EVENT_ID/vas/VAS_NAME' \ --header 'Authorization: TOKEN' \ --header 'Content-Type: application/json' \ --data-raw '{ "forwardUrl": "rtmp://test.domain.com/forwardUrl", "controlUrl": "https://test.domain.com/controlUrl", }'
Response:
{ "eventName": "VAS Test",
... "vas": { "overlayProvider": { "name": "overlay-vas", "forwardUrl": "rtmp://test.domain.com/forwardUrl", "controlUrl": "https://test.domain.com/controlUrl" } } }
Flow:
- This type of VAS asks Pixellot to render* an overlay on top of the real-time video stream.
- The VAS of type overlayProvider needs to send the PATCH event request with overlayUrl and controlUrl fields, the forwardUrl is not needed.
The URLs here:• overlayUrl - the URL to the web page that will be rendered on top of the Pixellot real-time stream.• controlUrl - the URL that opens a VAS control panel. A control panel is usually a web-based UI that allows controlling the VAS: graphics controller, commentating studio settings, etc.Example request:
Response:
{ "eventName": "Overlay Test", ... "vas": { "overlayProvider": { "name": "vas-overlay", "overlayUrl": "rtmp://test.domain.com/overlayUrl", "controlUrl": "https://test.domain.com/controlUrl" } } }
* Blending of the video and the overlay happens in Pixellot unit and not on the cloud.
This type of VAS allow upload of .mkv raw video to a third-party S3 bucket.
Enabling the upload raw video on the event level is achieved by using VAS. This type of VAS can be added alongside the other type of VASes.
After adding the vas to the event, the VAS will call API with the URL to be used later to get upload details (uploadDetailsCallback field).
Event data will look as follows:
"vas": { "rawDataConsumer": { "name":"provider-name", // any other provider "uploadDetailsCallback": "...us-east-1.amazonaws.com/alpha/getUploadDetails" // the endpoint to call to return upload details "uploadCompleteCallback": "...us-east-1.amazonaws.com/alpha/completeUpload" // to notify on raw uploaded } }
Flow:
This section describes the initial steps of the integration.
VAS Data
There are some pieces of information that need to be exchanged between Pixellot and VAS to initiate the integration.
Data to provide by the VAS owner:
- Description - a brief description of the service, what it provides. This text will be shown in the marketplace where tenants will decide which VAS to use.
- Icon URL - a link to the company icon.
- Website URL - a link to the company web-site.
- Join and leave callbacks - the POST HTTP endpoint URLs that will be called on tenant join/leave. More on this - see Tenant adds VAS in the marketplace and Tenant removes VAS in the marketplace sections of this document.
- [Optional] join and leave callbacks secrets. When sending the data, an HMAC hex digest is used to compute a hash from the sent payload (without whitespaces). The hash will be placed in the X-Pixellot-Signature header.
In response to this data, Pixellot will provide:• username and password that should be used in the REST API login requests to get the token• VAS name - a unique name for the VAS. Will be used in the REST API requests related to VAS operations.
API restrictions
The VAS details should be added at least 15 minutes before the event start. All requests 15 minutes before the event start and later will be discarded.
However, it is possible to modify events with VAS type Overlay Provider to start in the nearest future, ignoring the 15-minute restriction.
Pixellot provides a convenient Pixellot to VAS communication approach. It is a subscription mechanism, where VAS gives a URL to Pixellot that needs to be called when an action happens. How does it work in a nutshell - VAS subscribes to a specific topic, like eventUpdate or teamUpdate, by providing an HTTP webhook URL that will be called once an action happens?
The subscriptions are for notification purposes only - the HTTP response is ignored, except for failures. If a subscription has many failures - an email about it will be sent to the email that was specified in the subscription creation body.
1. Subscribing to event changes
This subscription should be created while handling the joinCallback (more on it Tenant adds VAS in the marketplace section). The subscription type is specified in the messageType field and should be VasEventTimestamp in this case.Subscription request example:After subscribing to the event changes, requests will be sent to the URL specified in the request body. Messages will be in the format of EventChangeHookMessageBodyThe top-level property what of EventChangeHookMessageBody is a string that can be one of 4 possible values: created, updated, removed, and deleted.
- created - when the VAS was added to the event. After this message, VAS may update the VAS details by calling the PATCH /events/:id/vas/:vasName endpoint
- updated - when the event had an update: name, date, team - any field. The whole updated entity is sent - not only the updates
- removed - when the VAS was removed from the event
- deleted - when the event was deleted
For the VAS of type videoEnhancer, the inputUrl, to which the stream should be forwarded after enhancement can be found by this path:.event.vas.videoEnhancer.inputUrl.
2. Subscribing to team changes
This subscription may also be created while handling the joinCallback. The messageType for this subscription should be VasTeamChange.After subscribing to the event changes, requests will be sent to the URL specified in the request body. Messages will be in the format of TeamChangeHookMessageBody.
1. Tenant adds VAS in the marketplace
This is the first interaction between the tenant and VAS. When VAS is added to the tenant, Pixellot sends a request to the VAS join callback, with the payload CallbackRequestData (action: join). VAS should create a subscription, by calling the createSubscription API.The diagram shows that VAS should call the createSubscription API when the join callback endpoint is hit. If the subscription was successfully created, the 2XX HTTP status code is expected to be returned from the join callback call. If an error occurs during subscription creation, an error should be returned from the join callback call.It is important to have a maximum possible uptime of a join callback endpoint - otherwise, your VAS will not be obtainable through Marketplace.
The tenant decides that he wants to remove the VAS. When this happens, Pixellot calls the leave callback with the payload CallbackRequestData (action: leave). The VAS should not call any endpoint in response to this call. If the request will be processed successfully, Pixellot expects to get a 2XX HTTP response.
3. Tenant adds VAS to the event
After the tenant adds VAS, it can add VAS to the events. When the tenant adds VAS to the event, the VAS receives a notification about it (more on this in Subscribing to event changes section). The VAS backend receives the EventChangeHookMessageBody with the top-level property what set to created. In response to the create messages, the VAS may call the addVasDetails API to add the details to the event. As mentioned in the Pixellot events subscription (see section 5), the response of the notification request is ignored, so setting the event details should be a separate action.