SportAPI Documentation
EN
C Product documentationCoupon API
v1
Service & pricing ↗ Get access ↗
Coupon API / Bet pointer

Bet Pointer

A bet pointer is a string that uniquely describes the outcome selected by the user: the event, market, bet option, additional parameter, and odds.

When placing a coupon, one or more pointers are submitted in the list_bets array:

{
  "list_bets": [
    "line#737779544#1#1#0#1.85"
  ]
}

Where to obtain the pointer

Retrieve the technical oc_pointer and current oc_rate for the selected sports-line outcome. The outcome fields are described in Odds and Bet Groups. Add the line type (line or live) and coefficient using the format below. Once created, do not modify the complete pointer before submission.

Do not:

  • construct the pointer manually;
  • replace the event, group, or outcome ID;
  • replace a sub-event ID with the main event ID;
  • add or remove player_id yourself;
  • change the rate value or odds;
  • convert the separators before submitting the pointer.

The pointer can be stored in the bet slip together with the selected outcome, but current odds and outcome state should be used when placing the coupon. The odds or outcome availability may change between the user’s selection and submission of the request.

Pointer format

Canonical format:

line_type#game_id#group_id#type_id#rate#coefficient[#player_id]

Square brackets indicate that the final part is optional. The [ and ] characters are not included in the pointer itself.

PositionFieldDescription
1line_typeSports line type: line for prematch or live for an event already in progress.
2game_idMain event or sub-event ID.
3group_idBet group ID, such as match result, total, or handicap.
4type_idID of the specific outcome within the group.
5rateTotal, handicap, or another parameter value. Use 0 when no parameter is required.
6coefficientOdds shown to the user when the bet is submitted.
7player_idOptional player or participant ID for a player-specific outcome.

All parts are contained in one string, even when their values are numeric.

line and live

The first value identifies the type of sports line to which the outcome belongs:

ValueDescription
lineA bet placed before the event starts — prematch.
liveA bet placed while the event is in progress — live.

The type must match the outcome received from the sports line. Do not change line to live, or vice versa.

Example prematch outcome:

line#737779544#1#1#0#1.85

Example live outcome:

live#738917381#119#5869#0.5#3.6

Events and sub-events

The game_id may identify either the main event or one of its parts, such as a half, period, set, inning, or another sub-event.

Use the exact game_id contained in the selected outcome’s pointer. The API determines the relationship between the sub-event and the main event automatically.

An accumulator cannot contain multiple outcomes related to the same match. For example, you cannot combine an outcome for the main match with a corners outcome, or combine corners and fouls from that same match. If this rule is violated, the API returns error_code = 506. See Singles, accumulators, and multi for details.

The rate parameter

rate contains an additional value required to identify the outcome.

For example:

  • 2.5 — total over or under 2.5;
  • -1 — handicap −1;
  • 0.5 — another parameterized value;
  • 0 — the outcome does not require an additional parameter.

Submit rate exactly as received from the sports line. A period is used as the decimal separator.

Do not calculate rate yourself from the displayed bet name.

Player-specific outcomes

Some markets relate to a specific player or participant. In this case, the pointer contains a seventh part, player_id:

live#738917381#119#5869#0.5#3.6#149439538

If the complete pointer contains player_id, preserve and submit it. If there is no seventh part, do not add 0, null, or an empty value.

Separators

The API accepts:

  • pointers using # as the separator;
  • pointers using | as the separator;
  • the compatible mixed format.

All three examples may represent the same data format:

line#737779544#1#1#0#1.85
line|737779544|1|1|0|1.85
line#737779544|1|1|0#1.85

This documentation uses the canonical # format. However, a complete pointer received from the sports line should be submitted without changing its separators.

Validation during coupon placement

After receiving list_bets, the SportAPI Coupon Settlement System validates each pointer:

  1. the string has the correct format;
  2. the outcome exists in the current sports line;
  3. the outcome is not blocked;
  4. the submitted odds match the current odds or can be accepted according to the selected mode and mode_type rules.

A structurally valid pointer does not guarantee that the coupon will be accepted. The outcome may have been removed or blocked, or its odds may have changed after the user selected it.

Possible errors

error_codeCause
11At least one entry in list_bets has an invalid format.
501The odds changed and were not accepted under the specified rules.
502The outcome is no longer available in the current sports line.
503The outcome is blocked.
504An error occurred while validating the outcome.

When error_code = 11 is returned, verify that:

  • list_bets contains strings rather than objects;
  • all six required parts are present;
  • the optional player_id appears only in the seventh position;
  • the string does not contain square brackets from the format template;
  • numeric values do not use a comma as the decimal separator;
  • the pointer was not truncated or changed when it was stored.

Outcome availability and odds change errors are described in detail in Odds changes and outcome availability.

Next step: Coupon placement.