Overview
Predexon separates sports market discovery from live game state. Market discovery answers: what can I trade? Live state answers: what is happening in the underlying game? That separation keeps identifiers clear:
Live state is keyed by
game_id, not event_id, because future spreads, totals, and props can all share the same live score while using different market/question IDs.
predexon_id is now canonical. It identifies one Predexon outcome across matched venues; it is not a venue-native token ID, ticker, condition ID, or legacy per-venue identifier.Availability
If live state is not yet available for a game, REST can return the game shell with
reliability.state = "no_data" and null score fields.
Recommended Integration
For an application that displays sports markets with live score context:predexon_id.
Canonical predexon_id
For sports,predexon_id lives at the canonical outcome layer:
predexon_id.
Use predexon_id for routing, positions, orderbook subscriptions, and GET /v2/sports/outcomes/{predexon_id}. Use venue-native identifiers only when executing directly on a specific venue.
Data Sources
Sports live state v1 sources data from Polymarket and Kalshi. Predexon normalizes those updates into one stable game-state object keyed bygame_id.
We are integrating with additional sports data providers soon to expand coverage and improve source redundancy.
Game Coverage
Sports live state covers Predexon’s matched canonical sports games: the same game universe exposed byGET /v2/sports/games.
Use the discovery endpoints to get the current event list:
Key Incidents and Event Lists
The live-state object includes a normalized event list insignificant_events[].
significant_events[] is for key incidents, not full box-score or every vendor-specific stat. When source data is available, events can include:
Example:
significant_events is returned as an empty array.
Aggregate State
The aggregate state is the primary client object.Field Semantics
Reliability
reliability is not a model confidence score. It is a data-quality summary based on direct source names, source agreement, and freshness.
The boolean fields make the state easy to consume:
For normal product surfaces, use the aggregate fields and
reliability. For debugging or auditing, request source rows with include_sources=true.
Source Snapshots
REST can include source-level rows:WebSocket
The websocket streams aggregate changes, not every raw upstream source message. This keeps client integrations simple and avoids making consumers reconcile Polymarket/Kalshi differences themselves. Endpoint:Subscription Messages
Subscribe to all matched sports games Predexon currently covers:
Exactly one of
game_ids, leagues, or sports is required.
Unsubscribe:
Server Messages
Subscription acknowledgement:Heartbeats and Reconnects
The gateway uses websocket ping/pong frames for connection liveness. Clients should respond to ping frames according to their websocket library’s normal behavior. If the connection drops, clients should reconnect and resubscribe. The REST endpoint should be used to rehydrate current state after reconnect:since_sequence.
Update Policy
The websocket emits an update when the aggregate changes materially:- Score changed
- Period changed
- Clock changed
- Key incidents changed
liveorendedchanged- Winner changed
- Reliability changed
- Source conflict appeared or resolved
- Stale state appeared or resolved
Sports-Specific Notes
Non-Goals
The live-state API is not intended to expose every possible vendor-specific stat. The stable public contract is:- Current score
- Period/clock/status
- Winner/end state
- Significant events when available
- Source reliability
- Optional source snapshots for audit/debug
