Skip to main content
A match first appears in prematch with its event_id. At kickoff, Pinnacle creates a separate live event (its own event_id), linked to the prematch by parent_id.
  • Prematch odds live under the prematch event_id.
  • The in-play series (with score_home, score_away, red_cards_* on each line) lives under the live child’s event_id.

Finding a match’s live child

The main match is the line where resulting_unit = "Regular".

live_status

A fixture’s live_status field is:

Corners, cards & variants

Corners and Bookings are separate fixtures pointing to the main match via parent_id. With parent_id=X (without live), you fetch these variants; with live=1, the live child.

Knowing a market or a match is no longer offered

Pinnacle never announces the end of a match. It publishes no “finished” status: it makes the object disappear from the feed. The disappearance is the message. A client waiting for a final state will wait forever. Two distinct disappearances, two signals: Every removed entry identifies the line by event_id, period, market, line and units:
Match units like any other field. In tennis, one match publishes its prices in games and in sets: a spread -1.5 in sets and a spread -1.5 in games share event_id, period, market and line — only units tells them apart. Ignoring the field would delete a series that is still being priced.
Removing a match waits 30 seconds before being announced. A suspended market leaves the board and comes back; without that delay, a few seconds of suspension would be reported as the end of a match.

On REST, without a stream

There is no notification: absence is the signal. A line no longer in /api/odds is no longer bettable; a match no longer in /api/fixtures is no longer offered. The two agree — a match pulled by Pinnacle disappears from both. To find a match again once it has left the book, use /api/settled with a since cursor: it is the only place a finished match reappears, together with its settlement.

Lines dropped when a match goes live

At kick-off, Pinnacle does not carry every line over to in-play. The ones it drops keep their old cutoff, which is therefore in the past — and we stop serving them. You will never see a price whose cutoff has passed. This is not about market types: specific lines disappear, across all markets. On a live football match, home_totals may well keep being priced while a spread -1.25 stops. A line removed from the book stays entirely in the history: /api/history keeps its opening, its closing and its full timeline.