specials[] array of the same shape, so one request returns the whole game. This is the same payload a WebSocket snapshot frame carries.
odds · Sportsbook grant: pinnacle
Query parameters
A missing, zero, or unparseable
match returns 400.
specials is honored only when match is a top-level matchup. Requesting /odds for an id that is itself a special returns just that special, with no nested specials[].Request
Response
Top-level fields
Unlike the match list,
parent_id and special are always present here — as 0 and "" on a regular matchup. Branch on type, not on whether the field exists.Specials are included by default
A sportsbook models derivatives — correct score, winning margin, alternate totals, and similar — as separate matchups with their own selections. Because the parent match’s book does not carry them, a caller who did not know to ask was silently getting a partial game.GET /odds now returns the whole game in one request: the parent’s own selections at the top level, and each derivative as an entry in specials[].
Every entry in specials[] has the same shape as the top-level response — including its own match_id, type: "special", parent_id pointing back at the requested match, selections, and its own ts. Apply the same market versioning rules per selection.
If you only want the main book — for example, when you already stream specials separately over the WebSocket — pass specials=false:
specials=false, the specials field is omitted from the response.
Locked markets are still returned
A market the sportsbook has closed or suspended in play is not removed from the response. Its selections come back with"status": "locked" and their last known price.
Snapshot, not a subscription
This endpoint reads the in-memory book at the moment of the request. It is the right tool for a one-off read or for reconciling after a stream gap, but it is not a substitute for the live stream — polling it will always be slower than the push, and the prices can change between your request and your next one.Errors
A
404 means the match is not in the book right now. That covers an id that never existed, one that has finished and been pruned, and one the sportsbook removed. It is not distinguishable from the response.