Skip to main content
The Prediction API is the read API for prediction-market data: tick-level YES/NO price history, a live stream of prices, bids, and trades, the instrument catalogue, and full-text search across it. Use it to discover contracts, enumerate the outcomes under an event, show live prices, and back charts or models with historical prices. Order placement and order history are in closed beta.

Environments

These endpoints are available in two environments, selectable from the server dropdown in the playground on each endpoint page: Paths, parameters, and response shapes are identical in both. Staging carries its own catalogue and tick history, so symbols and event IDs will not match production. The closed-beta order endpoints are available on staging only.

The three levels

Everything in this API is organized the same way, from broadest to narrowest: A contract’s symbol is the key used everywhere else: it is what you pass to the historical-data endpoints and the live stream, and what search returns.

Historical data

Live data

Orders (closed beta)

The order endpoints are in closed beta. They are available only to accounts enrolled in the beta, only on staging, and require an authenticated user. Request and response shapes may change before general availability.

Working with this API

Prices are decimal strings

yesPrice, noPrice, and tickSize are exact decimals serialized as JSON strings ("0.54", not 0.54). Parse them with a decimal type. Reading them into a binary float loses precision at the tick sizes these contracts trade at.

Search trails the catalogue

Search results come from an index that lags the catalogue by seconds. Use a hit’s symbol as a key, then read anything that must be current — state, tradable — from Get Event Contracts. Do not act on a hit’s own fields.

Venue times carry no zone

expectedPayoutTime, expectedLastTradeTime, and expectedResolutionTime are venue wall-clock times. The upstream feed carries no time zone, so the trailing Z is a label rather than a conversion — do not shift these into local time.

Response envelope

Every response uses the same envelope. On success:
On failure, success is false and error is a structured object with a categorical type (VALIDATION, NOT_FOUND, INTERNAL, EXTERNAL_SERVICE, …), a machine-readable code, and a human-readable message. Branch on type and code; message text is not fixed. The order endpoints return type in lowercase (bad_request, not_found, timeout, …).
A 502 means the upstream data store or search index was unavailable — retry it; it does not indicate a bad request.

Common uses

  • Discover contract symbols and event IDs with search before pulling historical ticks.
  • Enumerate every strike under an event, or the full event/contract tree under a base event.
  • Pull YES/NO tick history for one or many contracts to drive charting and modeling workflows.
  • Stream live prices, bids, and trades for every contract under an event.
  • Re-read state and tradable from the catalogue before acting on a symbol found through search.