Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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

Table of Contents

Conceptual Diagram

Lucidchart
pageCount1
autoUpdatetrue
alignleft
typerich
autoSize1
macroIdecedf2ea-5045-4885-8763-b3190d04b3e6
instanceIdc1f2f8aa-fd3d-3053-9304-318e88b324bd
pages
width700
documentToken20151fe6-7ce9-44de-8e33-7bb5fe21674e|119919583|4275994729|M5pxzv0Xbx77wHfbdPL31TSPQQ1DyUNliCtxSQ2QNx4=
documentId20151fe6-7ce9-44de-8e33-7bb5fe21674e
updated1675423120274
height500

API Domain Names

Environment

Base URL

Notes

Swagger

Production

https://multibet.api.geniussports.com/v2/

Production environment

https://multibet.api.geniussports.com/api-docs/index.html#/

UAT

https://uat.multibet.api.geniussports.com/v2/

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 Fixture Coverage - Returns sporting fixtures that are available to be used in Multibet

  • MarketsMarket-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 The Fixture Id is required to call the remaining three endpoints: Markets-types, Prices, Results

API Domain Names

Environment

Base URL

Notes

Production

https://coverage.api.geniussports.com/api/

Production environment

UAT

https://uat.coverage.api.geniussports.com/api/

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:

Code Block
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

...

Example: https://coverage.api.geniussports.com/api/MultibetPreMatchCoverage/range/sport/10/from/2023-07-13/to/2023-07-15

Response Body
Code Block
languagejson
[
    {
        "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

...

Example: https://coverage.api.geniussports.com/api/MultibetPreMatchCoverage/event/123456

Response Body
Code Block
languagejson
[
    {
        "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

...

Example: https://coverage.api.geniussports.com/api/MultibetInPlayCoverage/range/sport/10/from/2023-07-13/to/2023-07-15

Response Body
Code Block
languagejson
[
    {
        "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

...

Example: https://coverage.api.geniussports.com/api/MultibetInPlayCoverage/event/123456

Response Body
Code Block
languagejson
[
    {
        "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 shown are limited to two (MatchResult and HomeTeamTotalGoalsOverUnder). 1️⃣ Initial call is made to get

Step 1: Get the list of the available market types

...

to show to the user

GET sports/10/fixtures/123456/market-types

Code Block
[
  {
    "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
      }
    }
  }
]

...

Step 2: User adds a leg (Match Result - Home) to the bet

...

To get the price for the current bet.:

GET sports/10/fixtures/123456/prices?legs=MatchResult_Home

Code Block
{
    "decimalPrice": 1.66,
    "probability": 0.5656463943226999,
    "suspended": false
}

3️⃣ User wants to add another leg. Call is made to get The following request gets the list of the available markets taking into account the already selected leg.

Note: The Match Result market will not be included in the response because it is already used in one of the legs. The probabilities and prices take into account that the Match Result Home leg is included in the bet.

GET sports/10/fixtures/123456/market-types?legs=MatchResult_Home

Code Block
[
  {
    "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
      }
    }
  }
]

...

Step 3: User adds a second leg (HomeTeamTotalGoalsOverUnder_Over_2.5) to the bet

...

The following call gets the price for the current bet.:

GET sports/10/fixtures/123456/prices?legs=MatchResult_Home,HomeTeamTotalGoalsOverUnder_Over_2.5

Code Block
{
    "decimalPrice": 1.77,
    "probability": 0.4656463943226999,
    "suspended": false
}

...

Step 4: Request a result for the bet

...

GET sports/10/fixtures/123456/results?legs=MatchResult_Home,HomeTeamTotalGoalsOverUnder_Over_2.5

...