Skip to main content
The dispute endpoints under /v1/markets/{id}/disputes are on the Market disputes page.
Pinning 2026-04-29 hides Solana markets. Production trading runs on Solana. The default version, 2026-08-19, lists them. If you pin 2026-04-29, Solana markets are left out of GET /v1/markets, and GET /v1/markets/{id} and /quote answer 400 CHAIN_NOT_SUPPORTED for one. See API versions.

The market resource

GET /v1/markets

Lists markets, newest first, with cursor pagination. Response 200: { data: Market[], pagination: { cursor, hasMore, limit }, _meta }.

GET /v1/markets/{id}

Returns one market with its outcomes. Response 200: { market: Market, data: Market, _meta }. Errors: 404 MARKET_NOT_FOUND, and 400 CHAIN_NOT_SUPPORTED for a Solana market when you pin version 2026-04-29.

GET /v1/markets/{id}/quote

Prices a buy or a sell against the market’s live on-chain state. The quote scope is separate from markets:read, so you can control quote traffic independently. Response 200:
A sell quote carries tokensIn, usdcOut and grossRelease in place of amountIn and tokensOut. All big numbers are decimal strings. effectivePrice and impliedProbability are plain numbers for convenience. Responses carry Cache-Control: public, max-age=10. Errors: 400 OUTCOME_INDEX_INVALID, 404 MARKET_NOT_FOUND, 409 MARKET_NOT_TRADEABLE (a market cancelled on chain, or a Solana market whose on-chain state is no longer active), 422 MARKET_NOT_QUOTABLE (the market contract refused to price the request), and 400 CHAIN_NOT_SUPPORTED for a Solana market when you pin version 2026-04-29. A quote is a read, so a market past its freeze deadline can still be quoted. Check market.tradeable before you trade.

GET /v1/markets/{id}/predictions

Recent trades against a market, newest first, cursor-paginated. Each item: { id, marketId, outcomeIndex, side, usdcIn, usdcOut, tokensIn, tokensOut, price, probability, timestamp, blockNumber, transactionHash, logIndex }. The amount fields are decimal strings or null depending on the side.