Stake Limits
Every market carries a minimum and maximum stake. Read them over REST with GET /events/{eventId}/markets?expand=stake_limits. On the WebSocket market channel, they arrive with every market_updates frame, and stake_limit_update tells you when they change.
"stake_limits": [
{
"pricing_provider_id": 1,
"participant_id": null,
"min_stake": 10,
"max_stake": 1000
}
]
Minimum stake
min_stake is exactly what it sounds like: the smallest stake the market accepts. Bets below it are rejected with 400.
Maximum stake depends on the price
max_stake is a single limit that caps your stake at high prices and your potential profit at low prices, so it is not always the maximum you can stake. How it translates into a stake cap depends on the decimal price you are betting at:
| Price | What max_stake caps | Maximum accepted stake |
|---|---|---|
>= 2.00 | Your stake | max_stake |
< 2.00 | Your potential profit | max_stake / (price − 1) |
At prices of 2.00 and above, a winning bet pays out at least as much profit as the stake itself, so the limit applies to the stake directly. Below 2.00, each unit staked wins less than a unit, so the limit shifts to your potential profit, and you can stake more than max_stake.
Worked example
With max_stake: 1000:
| Price | Maximum stake | Potential profit at max |
|---|---|---|
3.00 | 1,000 | 2,000 |
2.00 | 1,000 | 1,000 |
1.50 | 1,000 / 0.50 = 2,000 | 1,000 |
1.10 | 1,000 / 0.10 = 10,000 | 1,000 |
Bets above the effective maximum are rejected with 400.
Work out the maximum accepted stake client-side before calling POST /bets:
If price >= 2.00: max_accepted_stake = max_stake
If price < 2.00: max_accepted_stake = max_stake / (price - 1)
Scope and shape
- Limits are per market. On participant-scoped markets (e.g. player props), the entry carries the
participant_idit applies to; on event-scoped marketsparticipant_idisnull. pricing_provider_idis always1(Vertex), consistent with the rest of the API.- Limits are specific to your API key. Different partners may see different values on the same market.
Keeping limits current
Limits change as an event approaches and during play. The integration pattern mirrors prices:
- Baseline over REST: fetch
expand=stake_limitsalongsideselectionswhen you load an event's markets. - Read them from
market_updates: each frame carries the market's currentstake_limits, including the first frame after a market opens.suspended_market_updatesnever carry them. - Listen for
stake_limit_update: it arrives on themarketchannel whenever a market's limits change. - Re-baseline when in doubt: the REST read is the authoritative source for the limits in force; after a reconnect, re-fetch rather than trusting cached values.