Skip to content
Get an API key

Predictefy serves 17 venues, including PredictStreet and Novig, through one normalized API. Use any venue id below as the {exchange} path segment, or router for the all-venues union on the list verbs.

Not every venue exposes the same raw data, and we do not paper over the differences — the table below is mirrored from the capability flags the API itself returns (capabilities on markets, synthetic on order books).

Market volume24h and liquidity are always present but nullable. For 24-hour volume, null no longer means only “the venue does not publish it”: it means Predictefy has no accepted value for that market now. A derived mechanism may still be warming or may have stale, gapped, unavailable, or restated evidence. 0 is reserved for a real venue-published zero or a complete derived window that honestly computes to zero.

GET /api/{exchange}/has exposes the venue-level mechanism at volume24h. venue uses a venue-published 24-hour value. derived_cumulative differences typed cumulative snapshots without silently converting their units. derived_tape sums accepted canonical fills only after the whole trailing window passes its coverage gate. false means no honest mechanism is registered.

Venue id has.volume24h Unit Cumulative input
polymarket venue USD
kalshi venue CONTRACTS
smarkets derived_cumulative GBP volume
opinion venue USD
hyperliquid venue USDC
limitless derived_cumulative USDC volumeFormatted ?? volume / 1e6
polymarket_us false
sxbet derived_tape USD
myriad venue USD
gemini venue CONTRACTS
rain derived_cumulative COLLATERAL totalVolume
predictfun venue USD
pascal venue USD
xo false
pred derived_cumulative USD volume
predictstreet venue USD
novig derived_cumulative CASH volume

When present, market volume24hSource is venue, derived_cumulative, or derived_tape and describes only that metric; the separate market provenance.source still says which implementation served the object. A null market can carry venue when that row’s venue field is unavailable, or a derived source while no value is accepted. The current public market DTO does not expose the internal warm-up/degradation status. Opinion child rows are also null because the parent volume is never copied or apportioned to children. Polymarket US and XO have volume24hSource absent because their registry mechanism is false.

Event and canonical-category sums expose volume24hSource: { sources: [...], partial: boolean }. sources is the distinct set from non-null contributing markets; partial is true when any member volume is null. Cluster members carry the current market’s value and source. A /has mechanism is capability truth, not proof that an individual market is warmed or currently available. In the current shipped runtime, SX Bet’s rollup and fail-closed calculator exist but its result is not yet applied to the Core catalog, so its market values remain null.

Venue id Order book Real depth (depth) Public trades tape
polymarket Real CLOB yes yes
kalshi Real CLOB yes yes
smarkets Real CLOB (delayed quotes) yes yes — 5 fills
opinion Real CLOB yes no
hyperliquid Real CLOB yes yes
limitless Real CLOB (CLOB markets only) per-market yes
polymarket_us Real CLOB (~30s CDN cache) yes no
sxbet Real CLOB yes — degraded yes
myriad Emulated (AMM top-of-book) no yes
gemini Real CLOB (keyless sized depth) yes yes
rain Emulated (on-chain price, 1 level) no no
predictfun Real CTF/CLOB yes yes
pascal Real CLOB (Solana) yes yes
xo Real CLOB (own rollup) yes no — see below
pred Real CLOB (Base) yes no
predictstreet Real CLOB (ADI Chain) yes yes
novig Real CLOB (bids-only complement) yes no
  • capabilities.depth (market-level): a real, executable-quality price-level order book exists for this venue.
  • synthetic (per order-book response): true means the returned book was reconstructed — a single top-of-book level synthesized from a spot price, AMM pool, parimutuel odds, or P2P offer odds. false means a real CLOB depth snapshot.
  • An empty real book is a valid “no liquidity right now” state — check the levels, not just the flags.
  • capabilities.trade is false on every venue by design. It describes the legacy unified trade verb on the data API, which Predictefy does not expose. Live execution is served separately for supported venues; see Trading & execution.

fetchTrades is a recent public tape read (a snapshot of recent trades), not a time-ranged history query. The eleven venues marked “yes” above expose a verified public tape; every other venue answers an honest 501 NOT_SUPPORTED rather than synthesizing trades. pascal’s tape carries no time parameters at the venue, so start/end are applied after the fetch — an older window simply returns fewer rows, never invented ones. smarkets is the same shape with a harder ceiling: the venue accepts no tape parameters at all and returns at most five fills per outcome, so limit is applied locally and a window older than those five reachable fills returns fewer rows rather than a fabricated one.

SX Bet’s fetchOrderBook degradation is documented above. Tape/OHLCV, Trader Intelligence, and public account capabilities are independent of that book issue, while hosted execution and official history remain unsupported. Runtime availability is not inferred from capability alone.

  • Every response carries asOf (when the data was snapshotted) and provenance.source.
  • polymarket_us reads are served through a ~30-second public CDN cache: asOf is the fetch time, so treat its book data with a ≥30s freshness tolerance (the venue’s own transaction time is preserved in the raw metadata).
  • smarkets public quotes are delayed by the venue.

A kalshi-demo sandbox venue (Kalshi’s paper-trading environment) exists for integration testing. It serves paper data, not real market data — it is excluded from the public venue list, router results, and all cross-venue outputs.