Place Bet API
- 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
Table of Contents
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 - BetBazar 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
Prod: https://trading-bet-api.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 | Should be always size 1. Contains bet details | |
| items[0].eventId | string | Event Id from BetBazar Data feed | 105600 |
| items[0].odds | Decimal | Odds on which user placed bet | 1.9 |
| items[0].sourceOutcomes | array | Should be always size 1. Info about selection and price on which user placed bet | |
| items[0].sourceOutcomes[0].selection | string | Selection from BetBazar 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. Currently support only Ordinar bets | 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 |
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