Skip to main content
percentageOdds must land exactly on a step of the odds ladder, or the order is rejected. The ladder exists to prevent diming — undercutting a resting quote by a meaninglessly small increment. Read the step size from oddsLadderStepSize on GET /metadata/obv3.

Units

So with a step size of 125, the valid values are 0.000%, 0.125%, 0.250%, …. 40.125% is on the ladder, and 40.100% is not. oddsLadderStepSize is returned as a number from 0 to 1000, which reads as a percentage like this:

The rule

An order’s percentageOdds is accepted when all of the following hold:
  1. 0 < percentageOdds < 10^20 — strict on both ends.
  2. percentageOdds % (oddsLadderStepSize × 10^15) == 0, or the value is one of two hardcoded exceptions.
  3. The two exceptions are exactly 0.1% (10^17) and exactly 99.9% (999 × 10^17). They are always legal regardless of step size, so the extreme ends of the book stay quotable.
One POST /orders-v3 per row:

Checking and rounding

Read the step size once at startup, then keep the arithmetic in integers.
Real output from both, run against the values in the table above:

Example of turning a probability into a valid price

This is the full path from a model output to a submittable field. Multiply into integer space first, apply your margin in integer space, then snap.
Both produce 40250000000000000000 — 40.250%, one step below the model’s 40.300%.

Do not hardcode the step size

oddsLadderStepSize is 125 today and can change in the future.
Read it at startup alongside the rest of the bootstrap document, and derive STEP from it. See Exchange metadata for the other values.

Exchange metadata

Where oddsLadderStepSize comes from.

Unit conversions

Implied/decimal/American odds, the 1e20 scale, base units, and time formats in one place.

Create orders

Last modified on August 19, 2026