cubesComboBuilder ✨

Combine multiple selections into a single bet with correlated pricing

circle-check

Overview

The LSports ComboBuilder API enables operators to offer Combo Bet functionality — allowing bettors to combine multiple selections from a single fixture into one bet with a correlation-aware combined price.

Unlike naive parlay pricing that simply multiplies individual odds, the ComboBuilder engine accounts for statistical dependencies between selections (e.g., "Home Win" and "Over 2.5 Goals" are correlated events), producing a fair margined price that reflects joint probabilities.

Authentication

All ComboBuilder API endpoints require authentication via JWT access tokens. To obtain your credentials and authenticate, see the Authentication Guide.

Integration Workflow

The API consists of two endpoints designed to be used together:

1. Resolve market dependencies — For each selection the end user wants to include, call /v1/betbuilder/markets to determine which market data the pricing engine requires. Markets often have dependencies - for example, pricing a "Player Total Shots" selection may require you to also provide "Shots on Target" and "Assists" data in the same request. This endpoint tells you exactly what to supply.

2. Build the combined price — Call /v1/betbuilder with the fixture's market data (as determined in step 1), the user's selections, and participant/player information. The API returns a single combined decimal odds value along with metadata indicating which selections are required vs. redundant.

Coverage: ComboBuilder is available for all Football leagues. No coverage check is required.

Key Principle

The operator is responsible for supplying the underlying market odds data to the pricing engine. The ComboBuilder does not source odds - it derives the combined price from the data you provide. The richer and more complete the market data you supply (more lines, more periods), the more accurate the combined pricing will be.

Refer to the full API specification below for request/response schemas, supported market keys, period definitions, and worked examples for Football.

Derive combined bet price

post

Calculates a margined combined price for two or more selections on a fixture.

The markets object provides the probabilistic model data the pricing engine needs to derive prices.

Minimum 2 selections required — single selections are not supported.

Market key reference

Key
Used for

goals

All standard markets (1X2, totals, handicaps, goalscorer)

shots

Player total shots

shotsOnTarget

Player shots on target

assists

Player assists

passes

Player passes

tackles

Player tackles

cards

Player/team cards

corners

Corner kick markets

Period keys

Period key
Meaning

RT

Regulation time (full match)

H1

First half

H2

Second half


Market key structure

Each entry in markets is a market key → period key → odds data. Example shape:

goals (primary market — required)

  • Periods: RT, H1, H2

  • Sub-fields: europeanHandicaps, asianHandicaps, asianTotals, nthPlayers, correctScore, europeanFirstTos

  • nthPlayers must include all players from both teams under keys "*" (anytime), "1" (first scorer), "-1" (last scorer)

  • Both europeanHandicaps and asianTotals are required in goals.RT for the pricing model to calibrate

shots, shotsOnTarget, assists, passes, tackles, cards

  • Periods: RT

  • Sub-fields: asianPlayerTotals (keyed by player ID, e.g. "101")

corners

  • Periods: RT, H1

  • Sub-fields: asianTotals

Authorizations
AuthorizationstringRequired

JWT Bearer token issued by the authentication provider (Frontegg). Include the token in the Authorization header as Bearer <token>.

Header parameters
customerIdintegerRequired

Customer ID. Must match the tenantId claim in the JWT token. Used for authorization — the customer must be registered for BetBuilder access.

Example: 12345
Body
sportIdinteger · enumRequired

LSports sport ID

Example: 6046Possible values:
leagueIdinteger · nullableOptional

LSports league/tournament ID (optional for Football).

Example: 218
fixtureIdinteger · nullableOptional

LSports fixture ID. Each request must use a unique value so the engine treats it as an independent event. Reusing the same ID across requests can cause state caching issues on the engine side.

Example: 100001
eventIdstring · nullableOptional

Optional external event reference ID.

viewIdstring · nullableOptional

Optional view/session reference ID.

Responses
chevron-right
200

Combined bet price successfully derived

application/json
correlationIdstring · nullableOptional

Internal correlation ID for tracing.

Example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
pricenumber · doubleOptional

Combined margined decimal odds for all selections. Capped at 450.

Example: 4.6
requiredSelectionsinteger[] · nullableOptional

1-based indices of selections that are required for the bet to be valid.

Example: [1,2]
post
/v1/betbuilder

Get supported markets for a sport

post

Returns the list of LSports markets supported by BetBuilder for Football, together with any dependent markets required to price them.

For example, the shots market (ID 1397) depends on shotsOnTarget and assists being provided in the same request for the pricing model to calibrate correctly.

Authorizations
AuthorizationstringRequired

JWT Bearer token issued by the authentication provider (Frontegg). Include the token in the Authorization header as Bearer <token>.

Header parameters
customerIdintegerRequired

Customer ID. Must match the tenantId claim in the JWT token. Used for authorization — the customer must be registered for BetBuilder access.

Example: 12345
Body
sportIdinteger · enumRequired

LSports sport ID

Example: 6046Possible values:
marketIdinteger · nullableOptional

Optional filter — return data for a single market only.

Example: 1397
Responses
chevron-right
200

List of supported markets with dependencies

application/json
post
/v1/betbuilder/markets

Last updated

Was this helpful?