Skip to main content
TL;DR — An order is your instruction; a bet is the wager that lands at a bookmaker. Identifiers (fixtureId, outcomeId, playerId, participantId) are shared with OddsPapi v5. Every order carries a unique requestUuid for idempotency. Three independent lifecycles track an order, each of its bets, and each bet’s settlement.

Identifiers

ABP shares its identifier space with OddsPapi v5 — the same fixtureId and outcomeId you discover via OddsPapi are the ones you send to ABP. No translation layer is needed.

Market keys

Internally, every priced selection is addressed by a composite market key:
You rarely build these by hand — GET /betslip returns them keyed and ready — but understanding the shape helps when reading WebSocket betslip payloads.

Orders vs bets

This distinction is the single most important thing to internalize. One order can produce multiple bets when partial fills or multi-bookmaker routing apply. For example, a single order for 5,000 USD might fill as three bets across two bookmakers. See Order Placement for how fills are distributed.

Idempotency & request deduplication

Network retries are unavoidable, and a retried placement must never double-stake. ABP guarantees this through request deduplication.
1

Assign a unique requestUuid per order

Each order in a POST /place-orders batch carries its own requestUuid (standard 8-4-4-4-12 UUID). Generate it client-side, once, and reuse the same value on every retry of that order.
2

ABP fingerprints it server-side

The server records each requestUuid it has seen with a 30-minute TTL. Within that window, a repeat of the same requestUuid is recognised as a duplicate.
3

Duplicates are silently skipped

A duplicate order is not placed again and is not returned as a decline. It is simply skipped, so the rest of the batch processes normally.
4

All-duplicate batches return 409

If every order in a request is a duplicate, there is nothing to do, so the request returns 409 Conflict with the offending UUIDs.
Reusing a requestUuid for a different order within 30 minutes will cause that order to be skipped. Always generate a fresh UUID for each distinct placement, and only reuse it verbatim when retrying that exact placement.

Order lifecycle

Bet lifecycle

Settlement lifecycle

Once a bet is CONFIRMED, settlement tracks the financial result:
Settlement changes are pushed over the settlements WebSocket channel. See Order Placement and WebSocket.

Account priority & the limit cascade

Each bookmaker account has a priority (higher = preferred). When routing, ABP selects the highest-priority active account first for each bookmaker. Stake limits resolve in priority order — account limits > bookmaker limits > odds limits — with the first non-null value winning:
Full detail and worked examples live in Currency & Limits.

Glossary

Next steps

Order Placement

How fills, pricing, and the limit cascade work.

Currency & Limits

Denomination, conversion, and limits in depth.

Quickstart

Place your first bet in 5 steps.

Bookmakers

Capability matrix across all 32 bookmakers.