Contact Us

If you still have questions or prefer to get help directly from an agent, please submit a request.
We’ll get back to you as soon as possible.

Please fill out the contact form below and we will reply as soon as possible.

  • Contact Us
  • Home
  • Risk Management

Place Bet API

Written by M P

Updated at September 29th, 2026

Contact Us

If you still have questions or prefer to get help directly from an agent, please submit a request.
We’ll get back to you as soon as possible.

Please fill out the contact form below and we will reply as soon as possible.

  • Betgate Cluster Integration
  • Domain
  • Markets description
    AmericanFootball AnyOther AustralianFootball Badminton Bandy Baseball Basketball Bowls BeachFootball BeachVolleyball Biathlon Boxing Chess Cricket Curling Darts Entertainment ESport FieldHockey Floorball Football Futsal Golf Handball HorceRacing IceHockey Kabaddi MMA MotorSport Olympics Politics Rugby Snooker Squash TableTennis Tennis UFC Volleyball Waterpolo
  • Risk Management
  • Client Console
  • Bet Settlement Rules
    American Football Australian Football Badminton Bandy Baseball Basketball Beach Football Beach Volleyball Biathlon Boxing Chess Cricket Curling Cycling Darts E-sport Field Hockey Floorball Football Formula 1, Nascar, MotoGP Futsal Handball Horse Racing Ice Hockey Kabaddi MMA Rugby Snooker Squash Table Tennis Tennis UFC Volleyball Water Polo Virtual Sports Other sports
+ More

Table of Contents

Overview Glossary Security API Environments Token login Place bet Express Bets Request Response 200 Responce 400

 

Overview

Place Bet API allow clients to send bets and validate their actuality (check markets/selections statuses, actual prices) to prevent place bets on non actual data and build risk management reports which will protect provider and clients from abusing. 

Glossary

Provider - B1 who provide data feed and place bet api for risk management

Client - Operator 3rd-party system who consume data feed and allow users to place bets on markets

Brand - One of the WL or bands of client

Player - Unique user from client side who place bets on markets

Security

Provider provides credentials (client id and client secret) for client with which client should login by token endpoint and get JWT token for accessing Place Bet API. Token has ttl 1 hour, so every 1 hour client should do new login and refresh JWT token.

JWT token should passed as HTTP Header Authorization

API

Environments

Stage: 

  • https://stage-trading-bet-api.betgate.dev 
  • https://stage-trading-bet-acceptance-service.betgate.dev

Prod: 

  • https://trading-bet-api.betgate.dev
  • https://trading-bet-acceptance-service.betgate.dev

Token login

Method: HTTPS POST

URI: /api/v1/token

Credentials should be passed in URL. Example: https://clientId:clientSecret@stage-trading-bet-api.betgate.dev/api/v1/token

Response Example: 

200 - Login is successfull and system created JWT token for client

{
    "token": "Bearer jwtsecuretoken"
}

401/403 - Credentials are wrong

Place bet

Method: HTTP POST

URI: /api/v1/sport/v1/bet

Headers:

Name Type Description Example
Authorization String Secure JWT token from /token endpoint Bearer dchfvndjnfvfvf
X-Player-Id String Unique user identified from client side 13429493
X-Operator-Id String Operator Id which will be provided by provider to client SUPER_BET
X-Brand String Brand or Whitelable name super-bet247.com
X-Player-Currency String User Currency EUR

Body request:

{
  "items": [
    {
      "eventId": "105600",
      "odds": 1.9,
      "sourceOutcomes": [
        {
          "selection": "[2,[],[0],1,3,[]]",
          "odds": 1.9
        }
      ]
    }
  ],
  "amount": 100,
  "betType": "Ordinar",
  "oddsChangePolicy": "Any",
  "marketChangePolicy": "None",
  "systemSize": 80,
  "transactionId": "432e627b-f8d1-45ef-9ae9-03632956548b"
}
Name Type Description Example
items array Selected outcomes for bet  
items[0].eventId string Event Id from B1 Data feed 105600
items[0].odds Decimal Odds on which user placed bet 1.9
items[0].sourceOutcomes array Outcomes that are included. Info about selection and price on which user placed bet  
items[0].sourceOutcomes[0].selection string Selection from B1 Data feed on which user placed bet [2,[],[0],1,3,[]]
items[0].sourceOutcomes[0].odds Decimal Odds on which user placed bet 1.9
amount Decimal User bet amount 100
betType Enum(Ordinar) Type bet. Possible values:["Ordinar", "Express"]. Ordinar
oddsChangePolicy Enum(Any) Odds change policy. Currently support only Any Any
marketChangePolicy Enum(None) Market Change Policy. Currently support only None None
systemSize Decimal For B2B, part which send to provider 20
transactionId string Unique identifier of bet from client side 1234ff45

Bet type

Ordinar - a wager on a specific outcome of a single event. The winnings are calculated by multiplying the bet amount by the odds of the outcome.

Express - a wager on multiple independent events. An express bet wins only when all of its component outcomes are successful; if even one outcome is unsuccessful, the express bet is lost. The winnings are calculated by multiplying the bet amount by the odds for all the outcomes included in the express bet."

Responses:

200 - OK, bet is accepted by provider

{
    "betId": "432e627b-f8d1-45ef-9ae9-03632956548b",
    "betOdd": 15,
    "betDate": "2026-02-15T11:15:40.252615Z",
    "possiblePayout": 1500,
    "items": [
        {
            "acceptedOdd": 15,
            "sourceOutcomeSelectionKeys": [
                "[2,[],[0],1,0,[]]"
            ]
        }
    ],
    "specialBetTypes": []
}

400 - Bad Request

{
    "message": "Bet odds were changed. ",
    "errors": {
        "common": {
            "actualOdds": 15.00,
            "betOdds": 20
        }
    }
}

{
    "message": "Selection is not found. ",
    "errors": {
        "common": {}
    }
}

403/401 - Access denied

 

Express Bets

POST /api/v1/sport/v1/bet · betType: "Express". 

Headers are the same as for Ordinar.

Request

An Express carries one stake over 2 to 20 legs, one leg per event. eventId must be unique across items, and each item holds exactly one selection.

{
 "items": [
   {
     "eventId": "105600",
     "odds": 1.9,
     "sourceOutcomes": [
       { "selection": "[2,[],[0],1,3,[]]", "odds": 1.9 }
     ]
   },
   {
     "eventId": "105601",
     "odds": 2.1,
     "sourceOutcomes": [
       { "selection": "[2,[],[0],1,1,[]]", "odds": 2.1 }
     ]
   },
   {
     "eventId": "105602",
     "odds": 1.5,
     "sourceOutcomes": [
       { "selection": "[5,[2.5],[0],1,4,[]]", "odds": 1.5 }
     ]
   }
 ],
 "amount": 100,
 "betType": "Express",
 "oddsChangePolicy": "AcceptBetterOdds",
 "marketChangePolicy": "None",
 "systemSize": 100,
 "transactionId": "432e627b-f8d1-45ef-9ae9-03632956548b"
}
Name Type Description Example
items array Legs of the betslip, one entry per event. 2 to 20 entries  
items[].eventId string Event Id. Must be unique across all items 105600
items[].odds number Leg price, greater than zero. Equals sourceOutcomes[0].odds 1.9
items[].sourceOutcomes array Exactly one element per item  
items[].sourceOutcomes[].selection string Selection key [2,[],[0],1,3,[]]
items[].sourceOutcomes[].odds number Same price as items[].odds 1.9
amount number Total stake for the whole betslip. There is no per-leg stake 100
betType string Express for a multiple, Ordinar for a single. Case-insensitive Express
oddsChangePolicy string KeepOdds or AcceptBetterOdds only. Any other value, including null, is rejected with an empty 400 body AcceptBetterOdds
marketChangePolicy string Accepted, not used None
systemSize number Accepted, not used 100
transactionId string Idempotency key, returned back as betId. A repeat creates no second bet 432e627b-f8d1-45ef-9ae9-03632956548b


Response 200

betOdd is the exact product of the accepted leg prices and possiblePayout is exactly amount * betOdd. Neither is rounded, so three prices with two decimals can return up to six decimals.

{
 "betId": "432e627b-f8d1-45ef-9ae9-03632956548b",
 "betOdd": 5.985,
 "betDate": "2026-09-29T08:43:58.488Z",
 "possiblePayout": 598.5,
 "items": [
   { "acceptedOdd": 1.9, "sourceOutcomeSelectionKeys": ["[2,[],[0],1,3,[]]"] },
   { "acceptedOdd": 2.1, "sourceOutcomeSelectionKeys": ["[2,[],[0],1,1,[]]"] },
   { "acceptedOdd": 1.5, "sourceOutcomeSelectionKeys": ["[5,[2.5],[0],1,4,[]]"] }
 ],
 "specialBetTypes": []
}
Name Type Description Example
betId string Echoes the transactionId that was sent 432e627b-f8d1-45ef-9ae9-03632956548b
betOdd number Product of all acceptedOdd values 5.985
betDate string Acceptance time, ISO 8601 UTC 2026-09-29T08:43:58.488Z
possiblePayout number amount multiplied by betOdd 598.5
items array One entry per leg, in the same order as the request  
items[].acceptedOdd number Accepted price of that leg 1.9
items[].sourceOutcomeSelectionKeys array One element, the selection accepted for that leg [2,[],[0],1,3,[]]
specialBetTypes array Always empty  

 

Responce 400

Messages new to Express. Every message value ends with a trailing space.

Message Cause errors.common carries
Express bet requires at least 2 items. Fewer than two items expectedBetItemsCount, actualBetItemsCount
Express bet allows at most 20 items. More items than the leg limit expectedBetItemsCount, actualBetItemsCount
Duplicate event in bet items. The same eventId on two items nothing
Bet odds are invalid. A price is zero or negative betOdds
Bet odds exceed the maximum. The product of the leg prices is above the limit betOdds
{
 "message": "Express bet requires at least 2 items. ",
 "errors": {
   "common": {
     "expectedBetItemsCount": 2,
     "actualBetItemsCount": 1
   }
 }
}

The Ordinar messages are unchanged and also apply: Selection is not found., Market is SUSPENDED., Selection is SUSPENDED., Bet odds were changed.. On an Express they describe the first leg that failed, not the whole betslip, and validation stops there.

express bets betting

Was this article helpful?

Yes
No
Give feedback about this article

Related Articles

  • Markets
  • Markets results
b2b worldwide
igaming marketplace
b2b worldwide
igaming marketplac
linkedin icon black
contact us
blog
B1, 2026
PRIVACY POLICYTerms and Conditions
DESIGN BY OTHER LAND
Expand