Introduction
This document describes technologies available for customers wishing to integrate with Multibet API directly. It explains the overall architecture, integration points and requirements.
Table of Contents
Conceptual Diagram
API Domain Names
Environment | Base URL | Notes | Swagger |
---|---|---|---|
Production |
| Production environment | |
UAT |
| User Acceptance Testing. Limited capacity. | https://uat.multibet.api.geniussports.com/api-docs/index.html#/ |
Authentication
Please refer to the Multibet API Swagger for details regarding authenticating with the API https://multibet.api.geniussports.com/api-docs/index.html
Resources
Genius Sports provides four pull API endpoints:
Fixtures - Returns fixtures that are available to be used in Multibet
Markets-types - Provides a list of markets and selections that are available to bet upon
Prices - The price of a particular multibet
Results - The result of a particular multibet
For Market Types, Prices and Results, please refer to the Multibet Swagger or the individual links above. For fixtures, see below.
Fixtures
Returns list of fixtures that are available to be used in Multibet. FixtureId is required to call the remaining three endpoints: Markets-types, Prices, Results
API Domain Names
Environment | Base URL | Notes |
---|---|---|
Production |
| Production environment |
UAT |
| User Acceptance Testing. Limited capacity. |
Authentication
You should go through all steps in “Getting an access token” section and authenticate using the Coverage API <api-key>
Getting an API key
Your <api-key>
for using Coverage API will be provided to you during the onboarding process.
Calling the API
Once you have an <access-token>
and your <api-key>
you can pass these as headers to the API:
curl --request GET \ --url https://coverage.api.geniussports.com/api/MultibetPreMatchCoverage/event/{fixtureId} \ --header 'Authorization: Bearer <access-token> \' --header 'x-api-key: <api-key>'
Fixtures Resources
Multibet Pre-Match coverage by sport and date range
Returns data about a particular fixture that will show this fixture is available for use in Multibet Pre-Match.
Path
GET MultibetPreMatchCoverage/range/sport/{sportId}/from/{from}/to/{to}
{sportId}
should be replaced by the relevant Genius Sports ids. Only fixtures starting after this date {from}
and only fixtures starting before this {to}
will be returned. Format: yyyy-MM-dd
E.g. 2023-07-15
Example: https://coverage.api.geniussports.com/api/MultibetPreMatchCoverage/range/sport/10/from/2023-07-13/to/2023-07-15
Response Body
[ { "betgeniusFixtureId": 123456, "sourceFixtureId": "123456", "source": "GeniusSportsMultibetPreMatch", "sportId": 10, "available": true, "coverageType": 4 }, { "betgeniusFixtureId": 1234567, "sourceFixtureId": "1234567", "source": "GeniusSportsMultibetPreMatch", "sportId": 10, "available": false, "coverageType": 4 }, { "betgeniusFixtureId": 12345678, "sourceFixtureId": "12345678", "source": "GeniusSportsMultibetPreMatch", "sportId": 10, "available": true, "coverageType": 4 } ]
Multibet Pre-Match coverage by fixture
Returns data about a particular fixture that will show this fixture is available for use in Multibet Pre-Match.
Path
GET MultibetPreMatchCoverage/event/{fixtureId}
{fixtureId}
should be replaced by the relevant Genius Sports ids.
Example: https://coverage.api.geniussports.com/api/MultibetPreMatchCoverage/event/123456
Response Body
[ { "betgeniusFixtureId": 123456, "sourceFixtureId": "123456", "source": "GeniusSportsMultibetPreMatch", "sportId": 10, "available": true, "coverageType": 4 } ]
Multibet In-Play coverage by sport and date range
Returns data about a particular fixture that will show this fixture is available for use in Multibet In-Play.
Path
GET MultibetInPlayCoverage/range/sport/{sportId}/from/{from}/to/{to}
{sportId}
should be replaced by the relevant Genius Sports ids. Only fixtures starting after this date {from}
and only fixtures starting before this {to}
will be returned. Format: yyyy-MM-dd
E.g. 2023-07-15
Example: https://coverage.api.geniussports.com/api/MultibetInPlayCoverage/range/sport/10/from/2023-07-13/to/2023-07-15
Response Body
[ { "betgeniusFixtureId": 123456, "sourceFixtureId": "123456", "source": "GeniusSportsMultibetInPlay", "sportId": 10, "available": true, "coverageType": 4 }, { "betgeniusFixtureId": 1234567, "sourceFixtureId": "1234567", "source": "GeniusSportsMultibetInPlay", "sportId": 10, "available": false, "coverageType": 4 }, { "betgeniusFixtureId": 12345678, "sourceFixtureId": "12345678", "source": "GeniusSportsMultibetInPlay", "sportId": 10, "available": true, "coverageType": 4 } ]
Multibet In-Play coverage by fixture
Returns data about a particular fixture that will show this fixture is available for use in Multibet In-Play.
Path
GET MultibetInPlayCoverage/event/{fixtureId}
{fixtureId}
should be replaced by the relevant Genius Sports ids.
Example: https://coverage.api.geniussports.com/api/MultibetInPlayCoverage/event/123456
Response Body
[ { "betgeniusFixtureId": 123456, "sourceFixtureId": "123456", "source": "GeniusSportsMultibetInPlay", "sportId": 10, "available": true, "coverageType": 3 } ]
Appendix A - End to End Example
This example demonstrates the flow of the Multibet API calls for a Football fixture 123456. For simplicity the amount of available markets is limited to two (MatchResult
and HomeTeamTotalGoalsOverUnder
).
1️⃣ Initial call is made to get the list of the available market types.
GET sports/10/fixtures/123456/market-types
[ { "id": "MatchResult", "name": "Match Result", "translatedName": "", "categoryName": "Match Result", "translatedCategoryName": "", "selections": { "MatchResult_Home": { "name": "Manchester United", "translatedName": "Man Utd", "compatible": false }, "MatchResult_Draw": { "name": "Draw", "translatedName": "X", "compatible": true, "probability": 0.123, "decimalPrice": 1.23, "suspended": false }, "MatchResult_Away": { "name": "Arsenal", "translatedName": "FC Arsenal", "compatible": true, "probability": 0.123, "decimalPrice": 1.23, "suspended": false } } }, { "id": "HomeTeamTotalGoalsOverUnder", "name": "Manchester United Total Goals OverUnder", "translatedName": "Man Utd Total Goals Over/Under", "categoryName": "Home Team Total Goals OverUnder", "translatedCategoryName": "Home Team Total Goals Over/Under", "selections": { "HomeTeamTotalGoalsOverUnder_Over_0.5": { "name": "Over 0.5", "translatedName": "Over 0.5", "compatible": false }, "HomeTeamTotalGoalsOverUnder_Over_1.5": { "name": "Over 1.5", "compatible": true, "translatedName": "Over 1.5", "probability": 0.123, "decimalPrice": 1.23, "suspended": false }, "HomeTeamTotalGoalsOverUnder_Over_2.5": { "name": "Over 2.5", "translatedName": "Over 2.5", "compatible": true, "probability": 0.123, "decimalPrice": 1.23, "suspended": false } } } ]
2️⃣ User adds a leg (Match Result - Home) to the bet. Call is made to get a price for the current bet.
GET sports/10/fixtures/123456/prices?legs=MatchResult_Home
{ "decimalPrice": 1.66, "probability": 0.5656463943226999, "suspended": false }
3️⃣ User wants to add another leg. Call is made to get the list of the available markets. Match Result market will not be included in the response because it is already used in one of the legs.
GET sports/10/fixtures/123456/market-types?legs=MatchResult_Home
[ { "id": "HomeTeamTotalGoalsOverUnder", "name": "Manchester United Total Goals OverUnder", "translatedName": "Man Utd Total Goals Over/Under", "categoryName": "Home Team Total Goals OverUnder", "translatedCategoryName": "Home Team Total Goals Over/Under", "selections": { "HomeTeamTotalGoalsOverUnder_Over_0.5": { "name": "Over 0.5", "translatedName": "Over 0.5", "compatible": false }, "HomeTeamTotalGoalsOverUnder_Over_1.5": { "name": "Over 1.5", "compatible": true, "translatedName": "Over 1.5", "probability": 0.123, "decimalPrice": 1.23, "suspended": false }, "HomeTeamTotalGoalsOverUnder_Over_2.5": { "name": "Over 2.5", "translatedName": "Over 2.5", "compatible": true, "probability": 0.123, "decimalPrice": 1.23, "suspended": false } } } ]
4️⃣ User adds a second leg (HomeTeamTotalGoalsOverUnder_Over_2.5
) to the bet. Call is made to get a price for the current bet.
GET sports/10/fixtures/123456/prices?legs=MatchResult_Home,HomeTeamTotalGoalsOverUnder_Over_2.5
{ "decimalPrice": 1.77, "probability": 0.4656463943226999, "suspended": false }
5️⃣ Result is requested for the bet.
GET sports/10/fixtures/123456/results?legs=MatchResult_Home,HomeTeamTotalGoalsOverUnder_Over_2.5
{ "result": "lose", "legResults": [ { "leg": "MatchResult_Home", "legResult": "win" }, { "leg": "HomeTeamTotalGoalsOverUnder_Over_2.5", "legResult": "lose" } ] }