Ticket Placement Request

Source
Destination

Client

MTS

Ticket placement request is the main element in the client-to-MTS communication. It contains the actual bets the client has received from the end customer. The request is sent to MTS, which will respond with a Ticket placement response. The essential part of the response is MTS's suggestion of whether this concrete bet (or ticket) should be accepted or rejected. In other words, this is the corefunction of the risk management system. MTS determines the mentioned suggestion in a process called ticket validation. In this process, MTS considers multiple factors, including comparing the actual bet (ticket) against the client's configuration parameters and the client's accumulated liability (incurred by previously accepted tickets).

Ticket structure

From the top-level perspective, a ticket consists of two parts:

  • envelope

  • content

The envelope includes additional information about the content. Envelope fields are described in the below Envelope and Content table.

The content part represents the Ticket placement request itself and constitutes the Content object.

The most complex part of the Content object is the Bets array (described in a separate table below).

Further on, the Bets array includes several fields, with the Selections array being the most complex one (also described in a separate table below).

The following diagram depicts the ticket structure by using a simple ticket example. Please note that this diagram does not include all possible fields. For a complete field list and description, please see the tables below.

Ticket structure diagram:

Envelope and Content table:

The Envelope provides the Content's (Ticket placement request) context and contains the following fields (besides Content):

  • operatorId

  • correlationId

  • timestampUtc

  • operation

  • version

Example
Field Name
Field Description
Mandatory/Optional
Data Type
{

"operatorId": 9985,

operatorId

ID to uniquely identify the client from which the ticket originated ID is provided to the client by Sportradar The client is obliged to include it in every ticket

M

Integer

"content": {

content

See Content object description below

M

Object

       ...........

       ...........

  },

"correlationId": "Uw59kwUL",

correlationId

Client defined string to facilitate the request-response pairing, Sportradar is obliged to return the same string in the corresponding response

M

String

"timestampUtc": 1678202888000,

timestampUtc

Timestamp of ticket placement as submitted by the client (Unix time in milliseconds format), minimal: 1, maximum: 9223372036854776000

M

Integer

"operation": "ticket-placement",

operation

Should be "ticket-placement" in the case of Ticket Placement Request,

in the case of Cancellation, Cash-out, External Settlement and Pre-validated Ticket Placement requests / responses - enumerator:

  • "ticket-cancel"

  • "ticket-cashout"

  • "ticket-ext-settlement"

  • "ticket-placement-inform",

in the case of Acknowledgement messages and Acknowledgement reply messages - enumerator:

  • "ticket-placement-ack"

  • "ticket-cancel-ack"

  • "ticket-cashout-ack"

  • "ticket-ext-settlement-ack"

M

String

"version": "3.0"

version

Indicates the ticket format version

M

String

}

Content object (Ticket placement request)

This object constitutes the ticket itself. Its main part is the bets array (which represents one or more actual bets) and additional information related to the ticket.

The Content object includes the following fields:

  • type

  • ticketId

  • bets (array)

  • context (ticket context)

  • location

Content object table:

Example
Field Name
Field Description
Mandatory/Optional
Data Type
"content": {

Object

"type": "ticket",

type

Declaration of content type, should be "ticket" in case of Ticket placement request

M

String

"ticketId": "Ticket_3690",

ticketId

Client defined string to identify the ticket (unique in the client's system), minimal string length = 1, maximum string length = 128

M

String

"bets": [

bets

See bets description, minimal number of bets per content (ticket) = 1, maximum number = 50

M

Array

........... ],

"context": {

context

Ticket context - additional information related to the ticket

M

Object

 "channel": {
  • channel

Specifies the means of delivery of service to client's end customers (bettors), also called distribution channel

M

Object

"type": "mobile",
    • type

Declaration of channel type, enumerator:

  • agent

  • call-centre

  • internet

  • mobile

  • mobile-app

  • phone (used for USSD betting - USSD is a communication protocol in mobile networks)

  • retail

  • sms

  • terminal

  • tv-app

M

String

"ip": "109.74.24.155",
    • ip

IP address of the end customer's device

May be present only if "type": "internet" or "type": "mobile" or "type": "mobile-app" or "type":" tv-app"

O

String

"deviceId": "device_133123",
    • deviceId

ID of the end customer's device

May be present only if "type": "mobile" or "type": "tv-app" or "type": "internet" or "type": "retail" or "type": "sms" or "type": "mobile-app"

Minimal string length = 1, maximum length = 36, allowed characters : uppercase and lowercase letters, numerals, #, :, -, _, \ Java regex: ^[0-9A-Za-z#:\\-_]{1,36}$

O

String

"shopId": "shop_789135",
    • shopId

ID of the shop

May be present only if "type": "retail" or "type": "terminal"

Minimal string length = 1, maximum length = 36, allowed characters : uppercase and lowercase letters, numerals, #, :, -, _, \

M if "type": "retail" or "type": "terminal"

String

"terminalId": "term_2313",
    • terminalId

May be present only if "type": "terminal"

Minimal string length = 1, maximum length = 36, allowed characters : uppercase and lowercase letters, numerals, #, :, -, _, \

M if "type": "terminal"

String

"lang": "ES",
    • lang

End customer's user interface language code according to ISO 639-1 (string length = 2)

M

String

"location": {

  • — location

May be present only if "type": "retail" or "type": "terminal"

O

Object

   "type": "geo", 
  • --— type

Currently the only supported type: "geo"

M

String

   "latitude": 46.1,
  • --— latitude

min. value: -90.0, max. value: 90.0

M

Number

   "longitude": 14.5 }
  • --— longitude

min. value: -180.0, max. value: 180.0

M

Number

    },

(end of "channel" object)

"payoutCap": [
  • payoutCap

Array of ticket maximum payouts, minimal number of payout caps per ticket =1, maximum number = 5

O

Array

          {

"type": "cash",
    • type

Enumerator:

  • cash

  • withheld

M

String

"currency": "EUR",
    • currency

3 or 4 letter currency code, BTC and mBTC are also supported (4 letters only apply to mBTC). For more details please check https://www.iso.org/iso-4217-currency-codes.html

M

String

"amount": "100",
    • amount

String pattern: 1 up to 8 digits, optionally followed by a decimal point and 1 up to 8 digits, Java regex: ^\\d{1,8}(\\.\\d{1,8})?$

M

String

"traceId": "Source2099"
    • traceId

A string to help identify the source of operation/action/state

Minimal string length = 1, maximum length = 128,

O

String

           }

],

(end oy payoutCap array)

"endCustomer": {
  • endCustomer

Data about client's end customer (bettor), it can only be omitted if the bet is placed by an unregistered bettor in retail or on a terminal

O

Object

"id": "endCustomer_e34t45",
    • id

End customer's unique ID (in client's system). It should be an anonymous value which cannot be used to identify a physical person. minimal string length = 1, maximum length = 36, allowed characters are : uppercase and lowercase letters, numerals, #, :, -, _, \ Java regex: ^[0-9A-Za-z#:\\-_]{1,36}$

M

String

"confidence": "1.15"
    • confidence

End customer's suggested CCF Java regex: ^\\d{1,8}(\\.\\d{1,8})?$

O

String

        },

(end of endCustomer object)

"limitId": 1409,
  • limitId

LimitId number provided to the client by Sportradar MTS CI team or OAM, minimal value =1, maximum value = 2147483647

M

Integer

"ref": {
  • ref

Reference to another ticket, must be present when placing a request with Alternative stake

M

(only in requests with Alternative stake)

"ticketId": "Ticket_1005",
    • ticketId

Id of the referenced ticket, for the field format, see description

M

String

"ticketSignature": "AAbzv7XIEl+SmjWB3x
DB0AIB6fUZVFOvmGKm6Rcvxm0=",
    • ticketSignature

Signature from MTS's response to initial ticket placement

M

String

"type": "alt-stake"
    • type

Indicates the MTS functionality which was used when offering a suggested acceptable stake, Enumerator:

  • alt-stake

  • reoffer

M

String

}

(end of ref object)

}

(end of context object)

},

(end of content object)

Relations between distribution channel parameters

Distribution channel

  • "channel type"

End-customer is

"channel"

  • "ip"

  • "deviceId"

  • "shopId"

  • "terminalId"

  • "lang"

"endCustomer"

  • "id"

agent

registered

mandatory

omitted

omitted

omitted

omitted

mandatory

mandatory

call-centre

registered

mandatory

omitted

omitted

omitted

omitted

mandatory

mandatory

internet

registered

mandatory

optional

optional

omitted

omitted

mandatory

mandatory

mobile

registered

mandatory

optional

optional

omitted

omitted

mandatory

mandatory

mobile-app

registered

mandatory

optional

optional

omitted

omitted

mandatory

mandatory

phone

registered

mandatory

omitted

omitted

omitted

omitted

mandatory

mandatory

retail

unregistered

mandatory

omitted

optional

mandatory

omitted

mandatory

omitted

retail

registered

mandatory

omitted

optional

mandatory

omitted

mandatory

mandatory

sms

registered

mandatory

omitted

optional

omitted

omitted

mandatory

mandatory

terminal

unregistered

mandatory

omitted

omitted

mandatory

mandatory

mandatory

omitted

terminal

registered

mandatory

omitted

omitted

mandatory

mandatory

mandatory

mandatory

tv-app

registered

mandatory

optional

optional

omitted

omitted

mandatory

mandatory

Note

  • If a bet is placed from an adaptive site for mobiles or a proper mobile version of a site, then the channel should be "mobile"

  • If a bet is placed from a terminal installed in a shop then the channel should be "terminal" and "shopID" and "terminalID" should be included in the bet.

  • The "endCustomer" object can only be omitted if the bet is placed by an unregistered bettor in retail or on a terminal.

Bets array

The actual bets are specified in the Bets array. Ticket format v3.0 allows for multiple bets to be included in one ticket. Each Bets array element consists of the following fields:

  • betId

  • selections

  • stake

  • context (bet context)

Bets array table:

Example
Field Name
Field Description
Mandatory/Optional
Data Type
    "bets": [

bets

Array of bets, minimal number of bets per content (ticket) = 1, maximum number = 50

M

Array

      {

        "betId": "Ticket_3690_bet0",

betId

Unique bet id (in the client's system), minimal string length = 1, maximum length = 128

O

String

        "selections":
        [ {
           ......
           ......  
        } ],            

selections

Array of bet selections, see description, minimal number of selections per bet = 1, maximum number = 100

M

Array

        "stake": [

stake

Array of bet stakes, minimal number of stake per bet =1, maximum number = 5

M

Array

          {

            "type": "cash",
  • type

Stake type, enumerator:

  • cash (used for stake and payout)

  • bonus (amount added on top of end customer's winnings in case a bet is won )

M

String

            "currency": "DKK",
  • currency

The client must always submit stakes in punter's local currency,

Currently MTS does not support multiple bets with stakes in different currencies,

See description

M

String

            "amount": "12",
  • amount

See description

M

String

            "mode": "total",
  • mode

Stake mode enumerator (default = total):

  • unit - stake amount relates to each sub-bet (a sub-bet is one combination (in case of system bets))

  • total - stake amount relates to all sub-bets (each sub-bet receives a portion of the amount)

O

String

            "traceId": "Source_2099"
          }
        ],
  • traceId

A string to help identify the source of operation/action/state

Minimal string length = 1, maximum length = 128,

O

String

        "context": {       

context

Bet context - additional information related to the bet

O

Object

            "oddsChange": "higher",  
  • oddsChange

Specifies MTS behaviour in the event when the actual odds from the client's UOF at the moment of validation differ from those submitted in the ticket, enumerator:

  • none: do not accept odds change, ticket rejected - default behaviour

  • any: accept tickets with any odds change, consider feed's odds

  • lower: (Currently not supported) accept tickets when feed's odds are equal or lower, consider feed's odds

  • higher: accept tickets when feed's odds are equal or higher, consider feed's odds

O

String

            "payoutCap":  [
               {
              .......
              .......
              }] 
  • payoutCap

Array of bet maximum payouts, minimal number of payout caps per bet =1, maximum number = 5

See description of payoutCap array above

O

Array

}

}

],

Selections array

The actual selections (one or more) that constitute a bet are included here. A selection represents a specific outcome (the one that a bettor places a bet on) of a specific market of an event. (Basic example: home win in 1x2 market of a soccer match.)

There are 5 types of selections foreseen in the ticket format v3.0 as well as several ways of selection nesting.

Selections array table:

Example
Field Name
Field Description
Mandatory/Optional
Data Type
        "selections": [

selections

Array of selections, minimal number of selections per bet = 1, maximum number = 100

M

Array

          {

            "type": .....,
             ........
             ........
             }
       ],    
  • type

Any of 7 specific selection types are allowed here, see description below

M

String

1. Selections ("type":"uf") table:

This type of selections is used in cases when outcomes, markets, events and specifiers (additional info) originate from UOF (from one of the UOF producers). The IDs of the elements mentioned also correspond to values obtained from UOF. Market settlements are also obtained from UOF.

Fields:

  • type

  • productId

  • eventId

  • marketId

  • outcomeId

  • specifiers

  • odds

Example
Field Name
Field Description
Mandatory/Optional
Data Type
          {

            "type": "uf",

type

Specifies a Selections type

M

String

            "productId": "3",

productId

Specifies the UOF producer, i.e. 1 for LiveOdds, 5 for Premium Cricket, value is retrieved from the UOF feed, Minimal string length = 1, maximum length = 5

M

String

            "eventId": "sr:match:16470657",

eventId

Specifies a betting event as defined by UOF, Value is retrieved from the UOF feed, Minimal string length = 1, maximum length = 100

M

String

            "marketId": "534",

marketId

Specifies a betting market as defined by UOF, Value is retrieved from the UOF feed, Minimal string length = 1, maximum length = 100

M

String

            "outcomeId": "pre:
outcometext:9919",

outcomeId

Specifies a market outcome as defined by UOF, Value is retrieved from the UOF feed, Minimal string length = 1, maximum length = 1000,

M

String

            "specifiers": "setnr=1|total=45.5",

specifiers

Specifies an additional market data as defined by UOF, Value is retrieved from the UOF feed, Minimal string length = 1, maximum length = 1000

O*

*Although optional in the schema, when the UOF market is additionally defined by a specifier (market line: Total 1.5, Total 2.5), the specifier must be provided in the bet.

String

 "odds": {

odds

M

Object

  "type":"decimal",
  • type

Supported odds formats:

"type": "decimal", "type": "fractional", "type": "moneyline", "type": "hong-kong", "type": "indonesian", "type": "malay"

M

String

                    "value": "7.1", 
  • value

Odds value submitted by the client, String pattern: 1 up to 8 digits (the first digit should not be 0), optionally followed by a decimal point and 1 up to 8 digits, Java regex: ^[1-9]\\d{0,7}(\\.\\d{1,8})?$

M

String

"numerator": "10",

  • numerator

Numerator of fractional odds, only present in "type": "fractional", Java regex: ^[1-9]\d{0,7}$

M

only if "type": "fractional"

String

"denominator": "3"
              }
           }

  • denominator

Denominator of fractional odds, only present in "type": "fractional", Java regex: ^[1-9]\d{0,7}$

M

only if "type": "fractional"

String

2. Selections ("type":"external") table: Used in cases when outcomes, events, odds and market settlements are not related to UOF or Sportradar but are managed by the client instead. Clients should provide unique identification of events and outcomes. Clients should provide ticket settlements on time (utilising External settlement requests).

Fields:

  • type

  • event

  • expSettleTime

  • odds

  • outcome

Example
Field Name
Field Description
Mandatory/Optional
Data Type
          {

            "type": "external",

type

Specifies a Selections type

M

String

            "event": "ext:match:736977",

event

Unique event identifier as defined by the client, see format rules, minimal string length = 1, maximum length = 100,

M

String

            "expSettleTime": 1691581504000,

expSettleTime

To inform MTS about the expected time of settlement, MTS may start certain actions based on this time (e.g. automatic settlement of unsettled tickets), (Unix time milliseconds format), see format rules, minimal: 1, maximum: 9223372036854776000

M

Integer

            "odds": {

odds

See odds description

M

Object

              "type": "decimal",
  • type

M

String

              "value": "7.1"
  • value

M

String

              },

            "outcome": "ext-pre:9985:s77"
          }

outcome

Unique outcome identifier as defined by the client, should include unique designation of betting market and selection, see format rules, minimal string length = 1, maximum length = 1000,

M

String

3. Selections ("type":"uf-custom-bet") table: Used in cases when selections constitute a custom bet (a bet including selections which would normally be rejected due to contingency rules). For more information, please see Custom Bet description.

Fields:

  • type

  • selections (array)

  • odds

Example
Field Name
Field Description
Mandatory/Optional
Data Type
          {

            "type": "uf-custom-bet",

type

Specifies a Selections type

M

String

            "selections": [

selections

Nesting of array of selections of "type":"uf", minimal number of selections = 2, maximum number = 10

M

Array

                {

                  "type": "uf",
  • type

Only selections of "type":"uf" are allowed here

M

String

                     .......

                     .......

                 }

             ],

            "odds": {

odds

See odds description above

M

Object

              "type": "decimal",
  • type

M

String

              "value": "7.1"
  • value

M

String

              }

          }

4. Selections ("type": "system") table: This type of selection contains multiple selections that form a system bet.

Fields:

  • type

  • selections (array)

  • size (array)

Example
Field Name
Field Description
Mandatory/Optional
Data Type
          {

            "type": "system",

type

Specifies a Selections type

M

String

            "selections": [

selections

Nesting of array of selections of any type, minimal number of selections = 2, maximum number = 30

M

Array

                {

                "type": "uf",
  • type

Nested selection type, currently only "uf" is supported.

M

String

                     .......

                     .......

                 }

             ],

             "size": [2,3 

size

Array of size items (each item must be unique), each item represents a system bet (in this example 2/4 and 3/4, given that there are four selections to make systems from), minimal number of items = 1, maximum number of items = 30

M

Array of integers

],

          }

5. Selections ("type":"ways") table:

This type of selection contains one or more selections related to an event (or even the same market on an event) that are already included in another selection of the same bet.

Fields:

  • type

  • selections (array)

Example
Field Name
Field Description
Mandatory/Optional
Data Type
          {

            "type": "ways",

type

Specifies a Selections type

M

String

            "selections": [

selections

Nesting of array of selections of "type":"uf" or "type":"external" or "type":"odds-boost", minimal number of selections = 2, maximum number = 30

M

Array

                {

                  "type": "uf",
  • type

Only selections of "type":"uf" or "type":"external" or "type":"odds-boost" are allowed here (as only these types include "eventId" (or "event") field)

M

String

                     .......

                     .......

                 }

             ],

          }

6. Selection ("type":"odds-boost") table:

This type of selection contains boosted odds and a selection type = "uf" or "external" (as only these are currently supported).

Fields:

  • type

  • selection

  • odds (boosted odds)

Example
Field Name
Field Description
Mandatory/ Optional
Data Type
{

  "type": "odds-boost",

type

Specifies the Selection type

M

String

  "selection": {

selection

Selection to which the boosted odds apply

M

Object

        "type": "uf",
  • type

Only selections of "type":"uf" or "type":"external" are allowed here (as only these two types are supported)

M

String

........

........

              },

  "odds": {

odds

Selection's boosted odds, See odds description

M

Object

    "type": "decimal",
  • type

M

String

    "value": "7.1
  • value

M

String

              }

          }

7. Selection ("type":"payout-modifier") table:

This type of selection contains a selection that is eligible for the payout modification.

Fields:

  • type

  • selection

  • description

  • reference

Example
Field Name
Field Description
Mandatory/ Optional
Data Type
{

   "type": "payout-modifier",

type

Specifies the Selection type

M

String

   "reference": "24uAF4GHCmL3pYOmQujyjRsLTfrRIRDn",

reference

Specifies the unique identifier of the promotion that will be used in the settlement message to identify outcomes that need to be settled (across all eligible tickets), client defined string.

M

String

   "description": "2 Up",

description

Specifies the type of promotion to which the selection is linked, client defined string, max. string length = 512, min. string length =1.

Examples: "2 Up", "2 Goal Early Payout", "Early Payout", "Lose To Win", "Supersub"

O

String

    "selection": {

selection

Selection to which the promotion applies

M

Object

            "type": "uf",
                .......
                .......
      }
}
  • type

Only selections of "type":"uf" are allowed here

M

String

Last updated

Was this helpful?