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.

Production Swagger

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

UAT Swagger

Authentication

Please refer to the Multibet API Swagger for details regarding authenticating with the API https://

...

multibet.api.geniussports.com/api-docs/index.

...

html

Authentication

All calls to the API must be authenticated and provide an API key. Each request must include the following headers:

...

Header

...

Description

...

Example Value

...

Authorization

...

An OAuth Access Token

...

Bearer eyJhbGciOiJSUzI1N.iIsInR5cCI6IkpXVCIsImtpExLd2FJNUpLZX.pjWCJ2

...

x-api-key

...

The API key provided to you

...

awefawefawefaewg43qgaregvasva

Getting an access token

To obtain an Access Token, you must make a client_credentials POST request to the Genius Sports Authentication server https://uat.auth.geniussports.com/oauth/token with the following request body:

Code Block
languagejson
{
  "grant_type" : "client_credentials",
  "audience": "https://api.geniussports.com",
  "client_id": <client-id>,
  "client_secret": <client_secret>
}

Your <client-id> and <client-secret> will be provided to you during the onboarding process.

Example token request:

Code Block
curl --request POST \
--url https://uat.auth.geniussports.com/oauth/token \
--header 'content-type: application/json' \
--data '{"client_id":"<client-id>","client_secret":"<client-secret>","audience":"https://api.geniussports.com","grant_type":"client_credentials"}'

Example token response:

...

languagejson

...

Resources

Genius Sports provides the following API endpoints:

  • Fixture Coverage - Returns sporting fixtures that are available to be used in Multibet

  • Market-types - Provides a list of markets and selections that are available to bet upon

  • Prices - The price of a particular multibet

  • Cashout - The cashout price of a particular multibet

  • Results - The result of a particular multibet

  • Markets - Valid only for customers who use Option 2. Multibet API + Sportsbook Integration. Calling this endpoint causes the Integration Service to create a market in the customer's Trading Platform and returns the market id from the Trading Platform along with any other available context.

    • Note: It is expected to receive a response status 404 Not found until the market is successfully created.

Info

For Market Types, Prices, Cashout, Results and Markets, please refer to the Multibet Swagger or the individual links above. For Fixture coverage, see below.

Fixture Coverage

Returns list of fixtures that are available to be used in Multibet. The Fixture Id is required to call the remaining three endpoints: Markets-types, Prices, Results

API Domain Names

Environment

Base URL

Notes

Production

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

Production environment

UAT

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

User Acceptance Testing. Limited capacity.

Authentication

You should go through all steps in “Get Cognito Token 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://multibetuat.public.coverage.api.geniussports.com/v2coverage/sportsmultibetprematch/10/fixtures/1/results?legs=TotalGoals_Over_3.5{fixtureId} \
  --header 'authorizationAuthorization: Bearer <access-token> \'
  --header 'x-api-key: <api-key>'

Rate Limiting

All calls to the API are rate limited. A 429 Too Many Requests error will be returned from the API in cases where you are exceeding the rate limit. Rate limits are determined on an individual basis.

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

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

...

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

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

Code Block
languagejson
[
    {

Fixture Coverage 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 /coverage/multibetprematch/sports/{sportId}/fixtures

{sportId} should be replaced by the relevant Genius Sports ids. Only fixtures starting after this date {from_time} and only fixtures starting before this {to_time} will be returned. Format: yyyy-MM-ddTHH:mm:ss E.g. 2023-05-15T20:00:00

Example: https://uat.public.coverage.api.geniussports.com/coverage/multibetprematch/sports/10/fixtures?from_time=2023-05-15T20%3A00%3A00&to_time=2023-05-17T22%3A00%3A00

Response Body
Code Block
languagejson
[
    {
        "betgeniusFixtureId": 123456,
        "sourceFixtureId": "123456",
        "source": "GeniusSportsMultibetPreMatch",
        "sportId": 10,
        "available": true,
        "coverageType": 4
    },
    {
        "betgeniusFixtureId": 1234567,
        "sourceFixtureId": "1234567",
        "source": "GeniusSportsMultibetPreMatch",
        "betgeniusFixtureIdsportId": 12345610,
        "sourceFixtureIdavailable": "123456"false,
        "sourcecoverageType": "GeniusSportsMultibetPreMatch",4
    },
   "sportId": 10, {
        "availablebetgeniusFixtureId": true,
        "coverageType": 4
    },
    {12345678,
        "betgeniusFixtureId": 1234567,
        "sourceFixtureId": "123456712345678",
        "source": "GeniusSportsMultibetPreMatch",
        "sportId": 10,
        "available": falsetrue,
        "coverageType": 4
    },
    {
        "betgeniusFixtureId": 12345678,
        "sourceFixtureId": "12345678",

]

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 /coverage/multibetprematch/fixtures/{fixtureId}

{fixtureId} should be replaced by the relevant Genius Sports ids.

Example: https://uat.public.coverage.api.geniussports.com/coverage/multibetprematch/fixtures/12345

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 PreIn-MatchPlay.

Path

GET MultibetPreMatchCoverage/event/coverage/multibetinplay/sports/{fixtureIdsportId}/fixtures

{fixtureIdsportId} should be replaced by the relevant Genius Sports ids. Only fixtures starting after this date {from_time} and only fixtures starting before this {to_time} will be returned. Format: yyyy-MM-ddTHH:mm:ss E.g. 2023-05-15T20:00:00

Example: https://uat.public.coverage.api.geniussports.com/apicoverage/multibetinplay/MultibetPreMatchCoveragesports/event/12345610/fixtures?from_time=2023-05-15T20%3A00%3A00&to_time=2023-05-17T20%3A00%3A00

Response Body
Code Block
languagejson
[
    {
        "betgeniusFixtureId": 123456,
        "sourceFixtureId": "123456",
        "source": "GeniusSportsMultibetPreMatchGeniusSportsMultibetInPlay",
        "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

Code Block
languagejson
[
    {,
    {
        "betgeniusFixtureId": 1234567,
        "sourceFixtureId": "1234567",
        "betgeniusFixtureIdsource": 123456"GeniusSportsMultibetInPlay",
        "sourceFixtureIdsportId": "123456"10,
        "source": "GeniusSportsMultibetInPlay",
        "sportId": 10,
        "available": truefalse,
        "coverageType": 4
    },
    {
        "betgeniusFixtureId": 123456712345678,
        "sourceFixtureId": "123456712345678",
        "source": "GeniusSportsMultibetInPlay",
        "sportId": 10,
        "available": falsetrue,
        "coverageType": 4
    },
    {
        "betgeniusFixtureId": 12345678,
        "sourceFixtureId": "12345678",
        "source": "GeniusSportsMultibetInPlay"
]

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 /coverage/multibetinplay/fixtures/{fixtureId}

{fixtureId} should be replaced by the relevant Genius Sports ids.

Example: https://uat.public.coverage.api.geniussports.com/coverage/multibetinplay/fixtures/12345

Response Body
Code Block
languagejson
[
    {
        "betgeniusFixtureId": 123456,
        "sportIdsourceFixtureId": 10"123456",
        "availablesource": true"GeniusSportsMultibetInPlay",
        "coverageTypesportId": 10,
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

...

 "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 available markets shown are limited to two (MatchResult and HomeTeamTotalGoalsOverUnder).

Step 1: Get the list of the available market types to show to the user

GET sports/10/fixtures/123456/market-types?limitTo=MatchResult,HomeTeamTotalGoalsOverUnder

Code Block
languagejson
[
  {
 {   "id": "MatchResult",
    "betgeniusFixtureIdname": "Match 123456Result",
    "translatedName": "",
    "sourceFixtureIdcategoryName": "123456Match Result",
  
     "sourcetranslatedCategoryName": "GeniusSportsMultibetInPlay",
    "selections": {
   "sportId   "MatchResult_Home": 10,{
        "availablename": true"Manchester United",
        "coverageTypetranslatedName": 3"Man Utd",
      }
]

Market-types

Returns a list of available markets to bet upon for a particular fixture. The available markets is sport specific and will also be affected by the current state of the fixture and what bets are already included in the multibet. For instance it wouldn’t be possible to bet upon a first quarter market during the second quarter of a fixture.

Path

GET sports/{sportId}/fixtures/{fixtureId}/market-types?legs={legs}

{sportId} and {fixtureId} should be replaced by the relevant Genius Sports ids.

Example: https://multibet.api.geniussports.com/v2/sports/10/fixtures/123456/market-types?legs=WinMatchRegularTime_Home,HalfTimeTotalGoals_Over_2.5

Request URL Parameters

...

Parameter

...

Encoding

...

Required

...

Description

...

legs

...

Leg Ids separated by “,”

See: https://geniussports.atlassian.net/wiki/spaces/BID/pages/4284252757/Multibet+API#Leg-Id

...

No

...

The ids of any bets that are already included in the multibet.

By providing this information the get-market-types method is able to exclude incompatible markets from the response. E.g. if the user has already selected to bet that the home team will win the match we can exclude the option to add a bet on the away team winning to the multibet.

If this parameter is omitted then all available markets will be returned.

 

Response Body

...

Field

...

Type

...

Nullable

...

Description

...

markets

...

Market[]

See: https://geniussports.atlassian.net/wiki/spaces/BID/pages/4284252757/Multibet+API#Market

...

No

...

Array of markets available to bet upon

Code Block
languagejson
{
    "markets": [
        {
            "marketType": "Win Match Regular Time",
            "selections": [
                {
                    "id": "WinMatchRegularTime_Home",
                    "name": "Home"
                },
                {
                    "id": "WinMatchRegularTime_Draw",
                    "name": "Draw"
                },
                {
                    "id": "WinMatchRegularTime_Away",
                    "name": "Away"
                }
            ]
        },
        {
            "marketType": "Half Time Total Goals",
            "handicap": {
                "minimum": 1,
                "maximum": 20,
                "step": 1,
                "default": 1
            },
            "selections": [
                {
                    "id": "HalfTimeTotalGoals_Over_{HANDICAP}",
                    "name": "Over"
                },
                {
                    "id": "HalfTimeTotalGoals_Under_{HANDICAP}",
                    "name": "Under"
                }
            ]
        }
    ]
}

Prices

Returns the price of the selected multibet.

Path

GET sports/{sportId}/fixtures/{fixtureId}/prices

Example: https://multibet.api.geniussports.com/v2/sports/10/fixtures/123456/prices?legs=WinMatchRegularTime_Home,HalfTimeTotalGoals_Over_2.5

{sportId} and {fixtureId} should be replaced by the relevant Genius Sports ids.

Request URL Parameters

...

Parameter

...

Encoding

...

Required

...

Description

...

legs

...

Leg Ids separated by “,”

See: https://geniussports.atlassian.net/wiki/spaces/BID/pages/4284252757/Multibet+API#Leg-Id

...

Yes

...

The ids of the bet legs that are included in the multibet. The array must contain a minimum of one leg, maximum 50 legs and the legs must be unique.

 

Response Body

...

Field

...

Type

...

Nullable

...

Description

...

decimalPrice

...

decimal

...

No

...

Decimal price for the multibet. Calculated from the probability of the bet winning with a margin applied.

...

probability

...

decimal

...

No

...

Probability of the multibet winning.

...

suspended

...

bool

...

No

...

Indicates that betting is currently suspended on one or more of the legs within the bet and it shouldn’t be accepted. Suspensions are generally short-term and relate to a temporary match situation such as a high risk of a score happening that could significantly affect probabilities.

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

Results

Path

GET sports/{sportId}/fixtures/{fixtureId}/results

{sportId} and {fixtureId} should be replaced by the relevant Genius Sports ids.

Example: https://multibet.api.geniussports.com/v2/sports/10/fixtures/123456/results?legs=WinMatchRegularTime_Home,HalfTimeTotalGoals_Over_2.5

Request URL Parameters

...

Parameter

...

Encoding

...

Required

...

Description

...

legs

...

Leg Ids separated by “,”

See: https://geniussports.atlassian.net/wiki/spaces/BID/pages/4284252757/Multibet+API#Leg-Id

...

Yes

...

The ids of the bet legs that are included in the multibet. The array must contain a minimum of one leg, maximum 50 legs and the legs must be unique.

 

Response Body

...

Field

...

Type

...

Nullable

...

Description

...

result

...

x-extensible-enum

See https://geniussports.atlassian.net/wiki/spaces/BID/pages/4284252757/Multibet+API#Result

...

No

...

Overall result of the multibet.

...

legResults

...

LegResult[]

See https://geniussports.atlassian.net/wiki/spaces/BID/pages/4284252757/Multibet+API#LegResult

...

No

...

Result of each individual leg within the multibet. Minimum length one, maximum length 50, unique entries.

Code Block
languagejson
{
    "result": "lose",
    "legResults": [
        {
            "leg": "MatchResult_Home",
            "legResult": "win"
        },
        {
            "leg": "TotalGoals_Over_20.5",
            "legResult": "lose"
        }
    ]
}

 

Type Definitions

Market

A market contains selections that can be bet upon that will correspond to legs within a multibet.

...

Field

...

Type

...

Required

...

Description

...

marketType

...

string

...

Yes

...

Name of the Market Type

...

handicap

...

Handicap

...

No

...

For Handicap and Over/Under markets specifies the range of valid values

...

index

...

Index

...

No

...

Used for index markets which are associated with a particular instance of an event that happens within the match. E.g. First Goalscorer, Second Goalscorer.

...

selections

...

Selection[]

...

Yes

...

The selections upon which a bet can be placed. Minimum length 1.

Handicap

Used for Handicap and Over/Under markets to specify the available lines that can be bet upon. Handicaps are taken from the perspective of the Home team.

...

Field

...

Type

...

Required

...

Description

...

minimum

...

decimal

...

Yes

...

Minimum supported value for the handicap

...

maximum

...

decimal

...

Yes

...

Maximum supported value for the handicap

...

step

...

decimal

...

Yes

...

Supported step interval. For instance an Over/Under market may be offered Over/Under 2.5, Over/Under 3.5 and Over/Under 4.5 in which case the step would be 1.0.

...

default

...

decimal

...

Yes

...

Provides an indication of a possible default choice to offer to a player wishing to bet upon the Market Type. If pricing data is available this would usually be the line with the selection probabilities closest to each other.

If a customer wishes to ensure that the most balanced market is always offered then they should request prices for all available lines using the get-price method.

Index

Index markets relate to betting on a particular instance of an event that can happen multiple times during a fixture, e.g. betting on which team will score the Next Goalscorer. In this example at the start of the match the Primary field of the index would start at 1 (for the First Goalscorer) and then increment to 2 for the Second Goalscorer etc.

...

Field

...

Type

...

Required

...

Description

...

primary

...

int

...

Yes

...

One-based index of the primary count, e.g. the number of the Goals in an Football game.

Selection

...

Field

...

Type

...

Required

...

Description

...

id

...

string

...

Yes

...

The id of the selection which will form part of the leg id. This may contain a parameter, such as the handicap line which will be encoded within parentheses {}, e.g. “Over_{HANDICAP)”

...

name

...

string

...

Yes

...

The name of the selection. This may contain a parameter, such as the handicap line which will be encoded within parentheses {}, e.g. “Over {HANDICAP)”

Leg Id

For simplicity and compactness we encode the id of legs as a string.

Rules

  • Characters are restricted to those that do not require URL encoding

  • No white space allowed

  • Pascal case notation is used for marketType and selection

  • Underscore “_” is used as a separator between the different fields within a leg and is guaranteed not to be used within fields

  • Hyphen is used for dividing range values

  • Comma “,” is used as a separator between leg ids in the URL and is guaranteed not to be used within fields

Examples

...

Leg

...

Leg Id Format

...

Example

...

Home team to win the match

...

{MarketType}_{Selection}

...

WinMatchRegularTime_Home

...

More than 2.5 goals to be scored in first half

...

{MarketType}_{Selection}_{Handicap}

...

HalfTimeTotalGoals_Over_2.5

...

Half time score 2-1

...

{MarketType}_{Range.Low}-{Range.High}

...

HalfTimeCorrectScore_2-1

Whenever an API method requires legs to be passed in by the caller the Leg Id should be used.

Result

Results are passed as extensible enums (x-extensible-enum) which are encoded as strings within the JSON.

...

Extensible Enum Value

...

Leg Result

...

Multibet Result

...

”unknown”

...

The leg result is expected however it is not currently known.

...

The multibet result is expected however it is not currently known.

...

“win”

...

This is a winning leg.

...

Each leg in the multibet is a win.

...

“lose”

...

This is a losing leg.

...

At least one leg in the multibet is a lose.

...

“void”

...

This leg is neither a win nor a lose.

...

There are no losing legs and at least one leg in the multibet is void.

Consumers should be written to accept other possible values in future to allow future enhancements to be made in a non-breaking manner. It is recommended that they log any value they don’t understand and take no action from that message.

LegResult

A leg result encapsulates the result for a single leg within a multibet.

...

Field

...

Type

...

Required

...

Description

...

leg

...

string

See https://geniussports.atlassian.net/wiki/spaces/BID/pages/4284252757/Multibet+API#Leg-Id

...

Yes

...

The leg id

...

result

...

x-extensible-enum

See: https://geniussports.atlassian.net/wiki/spaces/BID/pages/4284252757/Multibet+API#Result

...

Yes

...

The result of the leg

 

HTTP Status Codes and Error Handing

...

HTTP Status Code

...

Reason

...

Method Applicability

...

Usages / Description

...

200

...

 

...

All

...

The API call succeeded with a normal response.

...

400

...

 

...

All

...

Bad Request. Malformed request received from the client.

...

IncompatibleLegs

...

  • markets

  • prices

...

Incompatible legs. E.g. including WinMatchRegularTime_Home and WinMatchRegularTime_Away in the same multibet.

...

No legs

...

  • prices

  • results

...

 

...

Too many legs

...

All

...

 

...

Unsupported legs

...

All

...

 

...

ResultKnown

...

  • prices

...

The result of one or more legs within the multibet is already known.

...

401

...

 

...

All

...

Unauthorized. Authentication failed or the client isn’t authorised to access the API.

...

403

...

 

...

All

...

Forbidden AKA Unauthorized. The caller is not authorized to perform the action

...

404

...

 

...

All

...

Not Found. Unexpected path or no data is currently available for the fixture id requested.

...

405

...

 

...

All

...

Call to any API method with the wrong HTTP Method. E.g. POST rather than GET.

...

406

...

A call has been done referring a game that has finished

...

All

...

Call to any method on an already ended game

...

429

...

 

...

All

...

Too Many Requests. The client has exceeded the maximum number of requests allowed within a specified time period. The client should throttle back or request an increased quota.

...

500

...

 

...

All

...

Internal Server Error. General error code for an unexpected server-side error.

...

503

...

 

...

All

...

Service Unavailable. Usually indicates the service is down for maintenance.

Appendix A - End to End Example

This example demonstrates the flow of the Multibet API calls for an Football fixture 123456. For simplicity the amount of available markets is limited to two (Match Result and Half-time Total Goals).

1️⃣ User opens the widget. Initial call is made to get the list of the available markets.

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

Code Block
{
    "markets": [
        {
     "compatible": true
        "probability": 0.123,
        "decimalPrice": 1.23,
        "suspended": 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": true
        "probability": 0.123,
        "decimalPrice": 1.23,
        "suspended": false
      },
      "HomeTeamTotalGoalsOverUnder_Over_1.5": {
        "name": "Over 1.5",
        "compatible": true,
        "translatedName": "Over 1.5",
        "probability": 0.123,
        "marketTypedecimalPrice": "Win Match Regular Time",1.23,
        "suspended": false
     "selections": [ },
      "HomeTeamTotalGoalsOverUnder_Over_2.5": {
        {
 "name": "Over 2.5",
        "translatedName": "Over 2.5",
        "idcompatible": "WinMatchRegularTime_Home" true,
          "probability": 0.123,
         "namedecimalPrice": "Home"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
languagejson
{
     {"decimalPrice": 1.66,
    "probability": 0.5656463943226999,
         "suspended": false,
    "idstatus": "WinMatchRegularTime_Drawavailable",
                    "name"legs": "Draw"[
        {
       },     "id": "MatchResult_Away",
          {     "status": "trading"
        }
    ]
 "id": "WinMatchRegularTime_Away",
                    "name": "Away"
                }
            ]
        },
        {
            "marketType": "Half Time Total Goals}

Step 3: Get the list of the compatible market types to show to the user after one leg is selected

The following request gets the list of available markets taking into account the already selected leg:

GET sports/10/fixtures/123456/market-types?legs=MatchResult_Home&limitTo=MatchResult,HomeTeamTotalGoalsOverUnder

Info

The Match Result market will be included in the response as compatible:false 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.

Code Block
languagejson
[
  {
    "id": "MatchResult",
    "name": "Match Result",
    "translatedName": "",
    "categoryName": "Match Result",
    

...

"translatedCategoryName": "",
    

...

"

...

selections": {
      "MatchResult_Home": {
        "

...

name": 

...

"Manchester United",
        "translatedName": "Man Utd",
        "

...

compatible": 

...

false
        "suspended": false
      

...

},
      "MatchResult_Draw": {
        "

...

name": 

...

"Draw",
        

...

"translatedName": "X",
        

...

"

...

compatible": 

...

false
        "suspended": false
      

...

},
      

...

"MatchResult_Away": {
        "

...

name": "

...

Arsenal",
        "translatedName": "FC 

...

Arsenal",
        "

...

compatible": 

...

false,
        "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",
 

...

     

...

 

...

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=WinMatchRegularTime_Home

...

 "compatible": true
        "probability": 0.

...

123,
        "

...

decimalPrice": 

...

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=WinMatchRegularTime_Home

...

1.23,
        "

...

suspended": 

...

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
languagejson
{
    "decimalPrice": 1.77,
         "probability": 0.4656463943226999,
    "idsuspended": "HalfTimeTotalGoals_Over_{HANDICAP}"false,
                    "name"status": "Overavailable",
                },
 "legs": [
        {
     {       "id": "MatchResult_Home",
            "idstatus": "HalfTimeTotalGoals_Under_{HANDICAP}",trading"
        },
        {
  "name": "Under"         "id": "HomeTeamTotalGoalsOverUnder_Over_2.5",
      }        "status": "trading"
    ]         }
    ]
}

4️⃣ User adds a second leg (Half-time Total Goals - Over 2.5) to the bet. Call is made to get a price for the current bet.

...

Step 4: Request to create a market for the required bet

Info

Valid only for customers who use Option 2. Multibet API + Sportsbook Integration

The following call creates a market in the customer's Trading Platform, if that bet was not requested previously. In case market has been already created it gets the market id from the Integration Service along with any other available context from Trading Platform

GET /sports/10/fixtures/123456/pricesmarkets?legs=WinMatchRegularTimelegs=MatchResult_Home,HalfTimeTotalGoalsHomeTeamTotalGoalsOverUnder_Over_2.5

Code Block
languagejson
{
  "id": "104517634",
  "decimalPricetradingPlatformId": 1.77,
 "123abc",
  "probabilitytradingPlatformMetadata": 0.4656463943226999,
 "CP$null$6768414.2$Lions%20v%20Jaguares$45592268.2...",
  "suspendedtradingPlatformFixtureId": false"1234"
}

...

Step 5: Request a result for the bet

...

GET sports/10/fixtures/123456/results?legs=WinMatchRegularTimeMatchResult_Home,HalfTimeTotalGoalsHomeTeamTotalGoalsOverUnder_Over_2.5

Code Block
languagejson
{
    "result": "lose",
    "legResults": [
        {
            "leg": "MatchResult_Home",
            "legResult": "win"
        },
        {
            "leg": "HalfTimeTotalGoalsHomeTeamTotalGoalsOverUnder_Over_2.5",
            "legResult": "lose"
        }
    ]
}

...