Skip to main content
/api/settlement?event_id=… returns the final score, the status, and the per-line settlement.

Outcomes

Each line of the settlement carries outcome_home, outcome_draw, outcome_away:
Settlement covers every priced period — full match, half, quarter, set — as soon as that period’s score is known. Each row carries its period. A period whose score stays unknown produces no row rather than an approximate verdict: measured coverage is 87% of (event, period) pairs, 97% in football, 73% in tennis whose periods are games. Until the match is settled, settlement is empty and status reflects the current state (started, pending); it turns to ended on settlement.

Quarter lines

A line in .25 or .75 is not one line but two half-stake bets, placed at line ± 0.25. On a -0.25 handicap with a draw, the half placed at 0 is refunded and the half placed at -0.5 loses: the verdict is half_loss, not loss. The two halves can never contradict each other — they are 0.5 apart and a quarter line’s margin is never zero. Only half win and half loss exist.

Per-period results

/api/results?event_id=… is a separate route, in iso-BIC format: it returns an array, one object per settled period. On set-based sports, every set and every game is a binary result (1-0 / 0-1); period 0 carries the set count.
Current coverage: set-based sports (tennis, volleyball, table tennis…). On continuous-score sports — soccer, basketball, baseball — Pinnacle does not publish per-period settlement in the real-time feed, and /api/results returns an empty array. Use /api/settlement for those sports.

Discovering settled matches

/api/settled?since=… walks settled matches incrementally: every response carries a last cursor to pass back on the next call. This is the only way to discover a settlement. A settled match has left the book — its disappearance is what triggers settlement — so it no longer shows up in /api/fixtures, not even with live=2. Without this walk, you would need to have stored the event_id before the match ended.
The since comparison is inclusive: the last event of a page may reappear at the top of the next one. Several matches can share the same settlement second, and losing one would be worse than returning it twice — deduplicate on event_id. Available filters: sport_id, league_id, limit (1 to 1000, default 200).

Backtesting

The combination of chronological history + opening/closing + true odds + settlement lets you backtest strategies: reconstruct the odds at any moment, measure CLV and check the result.