# XO Market Docs > Trade, create markets and build on XO Market. - [What is XO](https://docs.xo.market/product/what-is-xo.md): XO is a prediction market. Take a position on a clearly defined future outcome. - [Your first trade](https://docs.xo.market/product/quickstart.md): From a new account to a tracked position, end to end. - [How prices work](https://docs.xo.market/product/concepts/how-prices-work.md): What 40¢ means, what it pays, and what a payout multiple is not. - [Markets, events and series](https://docs.xo.market/product/concepts/market-catalog.md): How Series, Events and Markets relate — and which mechanism a market uses. - [Your account and smart wallet](https://docs.xo.market/product/accounts/wallets.md): The owner wallet signs, the XO smart wallet trades — and why the difference matters. - [Deposit funds](https://docs.xo.market/product/accounts/deposit.md): Deposit from a wallet, transfer crypto, or buy with cash. - [Withdraw funds](https://docs.xo.market/product/accounts/withdraw.md): Send USDC from your XO smart wallet to a supported destination. - [Transfer states](https://docs.xo.market/product/accounts/transfer-states.md): Pending, Processing, Withdrawn, Complete, Failed, Expired, Tainted — and what each means. - [Find a market](https://docs.xo.market/product/trading/find-a-market.md): Get from a broad category to a specific market worth trading. - [Read the rules](https://docs.xo.market/product/trading/read-the-rules.md): The rules are the settlement contract. Six checks to run first. - [Place an order](https://docs.xo.market/product/trading/place-an-order.md): Market and limit orders on the XO order book, and what happens to the remainder. - [Fees](https://docs.xo.market/product/trading/fees.md): Where XO trading fees apply, who pays them and how the price-based fee curve works. - [Order book basics](https://docs.xo.market/product/trading/order-book-basics.md): Bids, asks, spread, depth, slippage — and why your available balance can look low. - [Legacy AMM markets](https://docs.xo.market/product/trading/legacy-amm.md): Pool-quoted markets: price impact, and what you can't do here. - [Positions and P&L](https://docs.xo.market/product/portfolio/positions-and-pnl.md): Entry value, current value, P&L, reserved shares and unsettled CP. - [How markets resolve](https://docs.xo.market/product/portfolio/how-markets-resolve.md): How XO Oracle settles a market, and what a void actually means. - [Claim your payout](https://docs.xo.market/product/portfolio/claim-payouts.md): Redeem a winning position or a void refund after settlement. - [Convictions](https://docs.xo.market/product/products/convictions.md): Creator-backed binary markets, and what to check before trading one. - [Create a Conviction](https://docs.xo.market/product/products/create-a-conviction.md): The five-step flow, writing a resolvable rule, and the seed order. - [Pulse](https://docs.xo.market/product/products/pulse.md): Rolling five-minute BTC Up or Down rounds, priced against a 60-second TWAP. - [Parlays](https://docs.xo.market/product/products/parlays.md): CP-funded contest cards — one pick per event, immutable once submitted. - [Conviction Points](https://docs.xo.market/product/rewards/conviction-points.md): How CP accrues, when it settles, and what it's for. - [Liquidity rewards](https://docs.xo.market/product/rewards/liquidity-rewards.md): Earn CP and USDC by keeping useful limit orders on eligible XO markets. - [Market Maker Rebate](https://docs.xo.market/product/rewards/maker-rebates.md): Earn USDC when your resting limit orders fill on eligible XO markets. - [Referrals](https://docs.xo.market/product/rewards/referrals.md): Earn CP and USDC when new traders join XO with your referral link and trade in eligible markets. - [Risk and eligibility](https://docs.xo.market/product/policies/risk-and-eligibility.md): What you're risking, who can access XO, and how to keep trading in proportion. - [Troubleshooting](https://docs.xo.market/product/help/troubleshooting.md): Fixes for the most common trading, funding, portfolio and claim issues. - [Glossary](https://docs.xo.market/product/reference/glossary.md): Every XO term used across these docs, defined once. - [Introduction](https://docs.xo.market/documentation/introduction.md): Public documentation for the XO Orderbook REST and WebSocket APIs. - [Smart Accounts](https://docs.xo.market/guides/smart-accounts.md): XO smart account identity, signature types, ERC-1271 validation, and order hashing. - [Order types](https://docs.xo.market/guides/order-types.md): GTC, GTD, FOK, FAK — and how to express market orders on XO. - [Fees](https://docs.xo.market/guides/fees.md): How taker and maker fees are charged on XO fills. - [Taker delay](https://docs.xo.market/guides/taker-delay.md): Marketable orders are held briefly before matching — 500ms by default, 3s on sports markets during match time. - [Market lifecycle](https://docs.xo.market/guides/market-lifecycle.md): How an XO market moves through Pending, Active, Paused, Resolved, Voided, and Closed. - [Redeem positions](https://docs.xo.market/guides/redeem-positions.md): How to redeem settled Conditional Tokens through the XO bundler. - [Auto-cancellation](https://docs.xo.market/guides/auto-cancellation.md): Four reasons the orderbook can cancel your resting orders without an explicit DELETE. - [Global trading pause](https://docs.xo.market/guides/trading-pause.md): Protocol-wide kill switch — what it does, how to detect it, how to handle it client-side. - [Wire conventions](https://docs.xo.market/guides/wire-conventions.md): How prices, sizes, timestamps, and IDs are encoded on the wire. - [Orderbook API Reference](https://docs.xo.market/api-reference/introduction.md): Public REST surface of the XO CLOB orderbook. - [Authentication](https://docs.xo.market/api-reference/authentication.md): XO Orderbook uses two layered auth schemes. L1 ClobAuth (EIP-712 wallet signature) mints the API key. L2 HMAC signs every authenticated request thereafter. - [Rate Limits](https://docs.xo.market/api-reference/rate-limits.md): Per-tier request and connection limits for REST and WebSocket clients. - [Create API key](https://docs.xo.market/api-reference/authentication/create-api-key.md): Mint a new API key for the wallet that signed the L1 ClobAuth headers. Caller is rate-limited to `MAX_KEYS_PER_USER` total keys; further calls return 400 `"api key limit reached"`. - [Derive API key](https://docs.xo.market/api-reference/authentication/derive-api-key.md): Deterministically derive the caller's existing key — returns the oldest key in insertion order so repeat callers see a stable result. Never mints; use `POST /auth/api-key` for that. - [List API keys](https://docs.xo.market/api-reference/authentication/list-api-keys.md): List the caller's API key UUIDs. Owner is derived from the presented HMAC API key — there is no `?address=` query parameter (closes a credential-enumeration hole). - [Delete API key](https://docs.xo.market/api-reference/authentication/delete-api-key.md): Delete the caller's API key. Returns 200 with no body on success. - [Get server time](https://docs.xo.market/api-reference/market-data/get-server-time.md): Current server time, in Unix seconds, returned as a bare JSON number (not wrapped in an object). `xo-orderbook-client-rs` deserialises this directly as `i64`. - [Get tick size](https://docs.xo.market/api-reference/market-data/get-tick-size.md): Minimum tick size for a token. XO uses 0.001 globally (finer than the canonical CLOB's 0.01). Returned as a JSON **number** (not a string). - [Get fee rate](https://docs.xo.market/api-reference/market-data/get-fee-rate.md): Fee rate for the market category of the given `token_id`, in basis points (`base_fee`). Signed orders do not carry a fee rate — fetch it here and apply the conviction curve from the Fees guide. Numeric field (NOT stringified) per CLOB SDK contract. - [Get neg-risk flag](https://docs.xo.market/api-reference/market-data/get-neg-risk-flag.md): Whether a token is part of a neg-risk market. Always `false` on XO. - [Get order book](https://docs.xo.market/api-reference/market-data/get-order-book.md): Full order book for a token. Returns an empty `bids`/`asks` array when no orders are resting. Returns 404 with the message `"No orderbook exists for the requested token id"` when the token is unknown to the engine. - [Get order books](https://docs.xo.market/api-reference/market-data/get-order-books.md): Batch order books. The response array is parallel to the request body — same length, same order. Unknown token ids return an empty book shape rather than 404 (batch endpoints don't per-element error). - [Get midpoint](https://docs.xo.market/api-reference/market-data/get-midpoint.md): Midpoint price for a token. Falls back to `"0.000"` when the book has no liquidity on at least one side. 404s with `"No orderbook exists for the requested token id"` for unknown tokens. - [Get midpoints](https://docs.xo.market/api-reference/market-data/get-midpoints.md): Batch midpoint prices. Sums of YES and NO midpoints converge to ~1.0 in healthy markets. - [Get price](https://docs.xo.market/api-reference/market-data/get-price.md): Best bid (`side=BUY`) or best ask (`side=SELL`) for a token. Returns `{price: "0.000"}` when the requested side is empty but the token is known. 404 for unknown tokens. - [Get prices](https://docs.xo.market/api-reference/market-data/get-prices.md): Batch best-bid / best-ask. Pair with `/midpoints` to compute spreads locally without N+1 round-trips. - [Get spread](https://docs.xo.market/api-reference/market-data/get-spread.md): `best_ask - best_bid` as a trimmed decimal string. Note: the empty-book default is a bare `"0"` (not `"0.000"`). - [Get spreads](https://docs.xo.market/api-reference/market-data/get-spreads.md): Batch spreads keyed by token_id. - [Get last trade price](https://docs.xo.market/api-reference/market-data/get-last-trade-price.md): Last trade price and side. **Defaults to `"0.5"` (NOT `"0.000"`) and side `""` when no trade has printed** — matching the canonical CLOB sentinel. Compare with `/book`'s `last_trade_price: "0.000"` empty default. - [Get last trade prices](https://docs.xo.market/api-reference/market-data/get-last-trade-prices.md): Batch last trade prices. - [Get last trade prices (batch)](https://docs.xo.market/api-reference/market-data/get-last-trade-prices-batch.md): Batch last trade prices (request-body form). - [Get price history](https://docs.xo.market/api-reference/market-data/get-price-history.md): Time-bucketed price history for an outcome token. Field names are `t` (Unix seconds) and `p` (price string) — NOT `timestamp` / `price` (the CLOB SDK uses single-character keys). - [Get live activity](https://docs.xo.market/api-reference/market-data/get-live-activity.md): XO-extended live-activity feed. Currently a stub — always returns `[]`. The endpoint is present so SDKs can probe it without 404s while the real event stream is being built. - [Root liveness](https://docs.xo.market/api-reference/market-data/root-liveness.md): Root liveness probe. - [Health check](https://docs.xo.market/api-reference/market-data/health-check.md): Health probe. - [Get build version](https://docs.xo.market/api-reference/market-data/get-build-version.md): Build identity: `git_sha`, `build_timestamp`, and `version`. - [Send heartbeat](https://docs.xo.market/api-reference/market-data/send-heartbeat.md): Keep-alive shim for SDK compatibility. - [Send heartbeat (v1)](https://docs.xo.market/api-reference/market-data/send-heartbeat-v1.md): Same as `/heartbeats`. Both paths are probed by SDKs. - [List markets](https://docs.xo.market/api-reference/markets/list-markets.md): Paginated list of markets. Walk pages by passing `next_cursor` back as a query param until the response returns `next_cursor: "LTE="` (end-of-stream sentinel; NOT `null`). - [Get market](https://docs.xo.market/api-reference/markets/get-market.md): Get a market by its `condition_id`. - [List simplified markets](https://docs.xo.market/api-reference/markets/list-simplified-markets.md): Same response shape as `/markets`; provided for SDK parity. - [List sampling markets](https://docs.xo.market/api-reference/markets/list-sampling-markets.md): Paginated list of sampling markets. - [List sampling simplified markets](https://docs.xo.market/api-reference/markets/list-sampling-simplified-markets.md): Same response shape as `/sampling-markets`; provided for SDK parity. - [Post a new order](https://docs.xo.market/api-reference/trade/post-a-new-order.md): Place a single signed CTF order. Optional `postOnly` on the envelope (not inside the signed order) rejects the request if the order would take liquidity. See `PlaceOrderRequest.postOnly`. - [Cancel single order](https://docs.xo.market/api-reference/trade/cancel-single-order.md): Cancel a single order via signed `CancelOrder(orderId, marketId)` or via HMAC + `orderID`. - [Post multiple orders](https://docs.xo.market/api-reference/trade/post-multiple-orders.md): Batch place up to 100 orders. Each entry succeeds or fails independently — the response array is parallel to the request body. The top-level call returns 200 even when every entry rejects. - [Get user orders](https://docs.xo.market/api-reference/trade/get-user-orders.md): List the caller's open orders, paginated. - [Cancel multiple orders](https://docs.xo.market/api-reference/trade/cancel-multiple-orders.md): Batch cancel. - [Cancel all orders](https://docs.xo.market/api-reference/trade/cancel-all-orders.md): Cancel every order owned by the caller. - [Cancel orders for a market](https://docs.xo.market/api-reference/trade/cancel-orders-for-a-market.md): Cancel every order the caller has on one market. - [Get single order by ID](https://docs.xo.market/api-reference/trade/get-single-order-by-id.md): Get a single order by id. - [Get user orders (alias)](https://docs.xo.market/api-reference/trade/get-user-orders-alias.md): Alias of `GET /orders`. - [Get trades](https://docs.xo.market/api-reference/trade/get-trades.md): Paginated trades visible to the caller. `status` walks `MATCHED → MINED → CONFIRMED` (or `RETRYING`/`FAILED`). `transaction_hash` is `null` until the trade settles on-chain. `bucket_index` is currently hardcoded to `0` (per-trade buckets not yet introduced). `maker_remaining_after_fill` and friends… - [Get trades (alias)](https://docs.xo.market/api-reference/trade/get-trades-alias.md): Alias of `GET /trades`. - [Get trade by ID](https://docs.xo.market/api-reference/trade/get-trade-by-id.md): Get a trade by id. - [Get balance & allowance](https://docs.xo.market/api-reference/account/get-balance-&-allowance.md): Inspect maker balance and exchange allowance. Note: XO does not currently split balances by `asset_type` / `token_id` — those fields are accepted for CLOB SDK wire compat but ignored. The response always reflects USDC collateral. - [Refresh balance & allowance](https://docs.xo.market/api-reference/account/refresh-balance-&-allowance.md): Cache-invalidation variant of `/balance-allowance`. Forces a fresh chain read; otherwise identical wire shape. - [Get positions](https://docs.xo.market/api-reference/account/get-positions.md): Get the caller's positions. `balance` is total shares held; `reserved` is the subset earmarked against open SELL orders. Free disposable balance is `balance - reserved`. - [Get claimable positions](https://docs.xo.market/api-reference/account/get-claimable-positions.md): Settled positions awaiting on-chain claim. `refund_reason` distinguishes Resolved-winner redemptions (`resolved_winner`) from Voided-market refunds (`voided_refund`) — the on-chain `redeemPositions` call is identical in either case. Submit it as an ERC-4337 UserOperation through the XO bundler (Rede… - [Public market channel](https://docs.xo.market/api-reference/websockets/websockets/public-market-channel.md): Canonical CLOB public market feed. No authentication. Clients subscribe to one or more `assets_ids` (token IDs) and receive `book`, `price_change`, `last_trade_price`, and optionally `best_bid_ask`, `new_market`, `market_resolved` events. - [Authenticated user channel](https://docs.xo.market/api-reference/websockets/websockets/authenticated-user-channel.md): Canonical CLOB authenticated user feed. Requires an HMAC API key triplet delivered inside the subscribe message body. Emits the subscriber's own `order` and `trade` events (PLACEMENT, UPDATE, CANCELLATION, REJECTED, MATCHED, and settlement status transitions). - [Combined feed (internal)](https://docs.xo.market/api-reference/websockets/websockets/combined-feed-internal.md): Internal combined feed that emits market events AND user events on the same connection. Used by XO's own clients. The auth model and inbound `place_order` / `cancel_order` actions described under "Inline trading" are accepted on this endpoint. - [Root liveness](https://docs.xo.market/api-reference/market-data/root-liveness.md): Root liveness probe. - [Health check](https://docs.xo.market/api-reference/market-data/health-check.md): Health probe. - [Get build version](https://docs.xo.market/api-reference/market-data/get-build-version.md): Build identity: `git_sha`, `build_timestamp`, and `version`. - [Get server time](https://docs.xo.market/api-reference/market-data/get-server-time.md): Current server time, in Unix seconds, returned as a bare JSON number (not wrapped in an object). `xo-orderbook-client-rs` deserialises this directly as `i64`. - [Get tick size](https://docs.xo.market/api-reference/market-data/get-tick-size.md): Minimum tick size for a token. XO uses 0.001 globally (finer than the canonical CLOB's 0.01). Returned as a JSON **number** (not a string). - [Get neg-risk flag](https://docs.xo.market/api-reference/market-data/get-neg-risk-flag.md): Whether a token is part of a neg-risk market. Always `false` on XO. - [Get fee rate](https://docs.xo.market/api-reference/market-data/get-fee-rate.md): Fee rate for the market category of the given `token_id`, in basis points (`base_fee`). Signed orders do not carry a fee rate — fetch it here and apply the conviction curve from the Fees guide. Numeric field (NOT stringified) per CLOB SDK contract. - [Send heartbeat](https://docs.xo.market/api-reference/market-data/send-heartbeat.md): Keep-alive shim for SDK compatibility. - [Send heartbeat (v1)](https://docs.xo.market/api-reference/market-data/send-heartbeat-v1.md): Same as `/heartbeats`. Both paths are probed by SDKs. - [Get order book](https://docs.xo.market/api-reference/market-data/get-order-book.md): Full order book for a token. Returns an empty `bids`/`asks` array when no orders are resting. Returns 404 with the message `"No orderbook exists for the requested token id"` when the token is unknown to the engine. - [Get order books](https://docs.xo.market/api-reference/market-data/get-order-books.md): Batch order books. The response array is parallel to the request body — same length, same order. Unknown token ids return an empty book shape rather than 404 (batch endpoints don't per-element error). - [Get midpoint](https://docs.xo.market/api-reference/market-data/get-midpoint.md): Midpoint price for a token. Falls back to `"0.000"` when the book has no liquidity on at least one side. 404s with `"No orderbook exists for the requested token id"` for unknown tokens. - [Get midpoints](https://docs.xo.market/api-reference/market-data/get-midpoints.md): Batch midpoint prices. Sums of YES and NO midpoints converge to ~1.0 in healthy markets. - [Get price](https://docs.xo.market/api-reference/market-data/get-price.md): Best bid (`side=BUY`) or best ask (`side=SELL`) for a token. Returns `{price: "0.000"}` when the requested side is empty but the token is known. 404 for unknown tokens. - [Get prices](https://docs.xo.market/api-reference/market-data/get-prices.md): Batch best-bid / best-ask. Pair with `/midpoints` to compute spreads locally without N+1 round-trips. - [Get spread](https://docs.xo.market/api-reference/market-data/get-spread.md): `best_ask - best_bid` as a trimmed decimal string. Note: the empty-book default is a bare `"0"` (not `"0.000"`). - [Get spreads](https://docs.xo.market/api-reference/market-data/get-spreads.md): Batch spreads keyed by token_id. - [Get last trade price](https://docs.xo.market/api-reference/market-data/get-last-trade-price.md): Last trade price and side. **Defaults to `"0.5"` (NOT `"0.000"`) and side `""` when no trade has printed** — matching the canonical CLOB sentinel. Compare with `/book`'s `last_trade_price: "0.000"` empty default. - [Get last trade prices](https://docs.xo.market/api-reference/market-data/get-last-trade-prices.md): Batch last trade prices. - [Get last trade prices (batch)](https://docs.xo.market/api-reference/market-data/get-last-trade-prices-batch.md): Batch last trade prices (request-body form). - [Get price history](https://docs.xo.market/api-reference/market-data/get-price-history.md): Time-bucketed price history for an outcome token. Field names are `t` (Unix seconds) and `p` (price string) — NOT `timestamp` / `price` (the CLOB SDK uses single-character keys). - [Get live activity](https://docs.xo.market/api-reference/market-data/get-live-activity.md): XO-extended live-activity feed. Currently a stub — always returns `[]`. The endpoint is present so SDKs can probe it without 404s while the real event stream is being built. - [List markets](https://docs.xo.market/api-reference/markets/list-markets.md): Paginated list of markets. Walk pages by passing `next_cursor` back as a query param until the response returns `next_cursor: "LTE="` (end-of-stream sentinel; NOT `null`). - [Get market](https://docs.xo.market/api-reference/markets/get-market.md): Get a market by its `condition_id`. - [List simplified markets](https://docs.xo.market/api-reference/markets/list-simplified-markets.md): Same response shape as `/markets`; provided for SDK parity. - [List sampling markets](https://docs.xo.market/api-reference/markets/list-sampling-markets.md): Paginated list of sampling markets. - [List sampling simplified markets](https://docs.xo.market/api-reference/markets/list-sampling-simplified-markets.md): Same response shape as `/sampling-markets`; provided for SDK parity. - [Post a new order](https://docs.xo.market/api-reference/trade/post-a-new-order.md): Place a single signed CTF order. Optional `postOnly` on the envelope (not inside the signed order) rejects the request if the order would take liquidity. See `PlaceOrderRequest.postOnly`. - [Cancel single order](https://docs.xo.market/api-reference/trade/cancel-single-order.md): Cancel a single order via signed `CancelOrder(orderId, marketId)` or via HMAC + `orderID`. - [Get user orders](https://docs.xo.market/api-reference/trade/get-user-orders.md): List the caller's open orders, paginated. - [Post multiple orders](https://docs.xo.market/api-reference/trade/post-multiple-orders.md): Batch place up to 100 orders. Each entry succeeds or fails independently — the response array is parallel to the request body. The top-level call returns 200 even when every entry rejects. - [Cancel multiple orders](https://docs.xo.market/api-reference/trade/cancel-multiple-orders.md): Batch cancel. - [Cancel all orders](https://docs.xo.market/api-reference/trade/cancel-all-orders.md): Cancel every order owned by the caller. - [Cancel orders for a market](https://docs.xo.market/api-reference/trade/cancel-orders-for-a-market.md): Cancel every order the caller has on one market. - [Get single order by ID](https://docs.xo.market/api-reference/trade/get-single-order-by-id.md): Get a single order by id. - [Get user orders (alias)](https://docs.xo.market/api-reference/trade/get-user-orders-alias.md): Alias of `GET /orders`. - [Get trades](https://docs.xo.market/api-reference/trade/get-trades.md): Paginated trades visible to the caller. `status` walks `MATCHED → MINED → CONFIRMED` (or `RETRYING`/`FAILED`). `transaction_hash` is `null` until the trade settles on-chain. `bucket_index` is currently hardcoded to `0` (per-trade buckets not yet introduced). `maker_remaining_after_fill` and friends… - [Get trades (alias)](https://docs.xo.market/api-reference/trade/get-trades-alias.md): Alias of `GET /trades`. - [Get trade by ID](https://docs.xo.market/api-reference/trade/get-trade-by-id.md): Get a trade by id. - [Get balance & allowance](https://docs.xo.market/api-reference/account/get-balance-&-allowance.md): Inspect maker balance and exchange allowance. Note: XO does not currently split balances by `asset_type` / `token_id` — those fields are accepted for CLOB SDK wire compat but ignored. The response always reflects USDC collateral. - [Refresh balance & allowance](https://docs.xo.market/api-reference/account/refresh-balance-&-allowance.md): Cache-invalidation variant of `/balance-allowance`. Forces a fresh chain read; otherwise identical wire shape. - [Get positions](https://docs.xo.market/api-reference/account/get-positions.md): Get the caller's positions. `balance` is total shares held; `reserved` is the subset earmarked against open SELL orders. Free disposable balance is `balance - reserved`. - [Get claimable positions](https://docs.xo.market/api-reference/account/get-claimable-positions.md): Settled positions awaiting on-chain claim. `refund_reason` distinguishes Resolved-winner redemptions (`resolved_winner`) from Voided-market refunds (`voided_refund`) — the on-chain `redeemPositions` call is identical in either case. Submit it as an ERC-4337 UserOperation through the XO bundler (Rede… - [Create API key](https://docs.xo.market/api-reference/authentication/create-api-key.md): Mint a new API key for the wallet that signed the L1 ClobAuth headers. Caller is rate-limited to `MAX_KEYS_PER_USER` total keys; further calls return 400 `"api key limit reached"`. - [Delete API key](https://docs.xo.market/api-reference/authentication/delete-api-key.md): Delete the caller's API key. Returns 200 with no body on success. - [Derive API key](https://docs.xo.market/api-reference/authentication/derive-api-key.md): Deterministically derive the caller's existing key — returns the oldest key in insertion order so repeat callers see a stable result. Never mints; use `POST /auth/api-key` for that. - [List API keys](https://docs.xo.market/api-reference/authentication/list-api-keys.md): List the caller's API key UUIDs. Owner is derived from the presented HMAC API key — there is no `?address=` query parameter (closes a credential-enumeration hole). - [Data API Reference](https://docs.xo.market/data-api-reference/introduction.md): Public REST surface for market discovery, portfolio reads, and liquidity rewards (xo-backend). - [Rate Limits](https://docs.xo.market/data-api-reference/rate-limits.md): Request limits for Data API REST clients. - [Liquidity rewards](https://docs.xo.market/data-api-reference/liquidity-rewards.md): Public and Privy-authenticated liquidity-rewards reads on xo-backend. - [List markets](https://docs.xo.market/data-api-reference/markets/list-markets.md): Returns a paginated list of markets with optional filters. Use `marketScope` to constrain by deployment type (CLOB only, Pulse only, etc.) or pass `marketType` directly. - [Get market by numeric id](https://docs.xo.market/data-api-reference/markets/get-market-by-numeric-id.md) - [Get market by contract address or condition id](https://docs.xo.market/data-api-reference/markets/get-market-by-contract-address-or-condition-id.md): Lookup helper for market makers that already hold a `conditionId` or wrapper contract address. - [Get market by slug](https://docs.xo.market/data-api-reference/markets/get-market-by-slug.md) - [List Pulse markets](https://docs.xo.market/data-api-reference/pulse-markets/list-pulse-markets.md): Pulse markets are short-horizon cycles (for example BTC 5-minute windows). Use `status=ACTIVE` to fetch the currently-open cycles and `status=RESOLVED` (or `CLOSED`) to page through history. - [Get Pulse markets by addresses (batch)](https://docs.xo.market/data-api-reference/pulse-markets/get-pulse-markets-by-addresses-batch.md): Fetches multiple Pulse markets in a single request using comma-separated on-chain addresses. - [Get Pulse market by on-chain address](https://docs.xo.market/data-api-reference/pulse-markets/get-pulse-market-by-on-chain-address.md) - [Get a user portfolio by wallet address or username (public)](https://docs.xo.market/data-api-reference/portfolio/get-a-user-portfolio-by-wallet-address-or-username-public.md): Unauthenticated variant of `/users/me/portfolio`. Resolves the target user from the required `user` query param — a wallet address (`0x…`, any case) or a username (case-insensitive) — and returns the same portfolio payload as the authenticated endpoint. - [List earning pools (public)](https://docs.xo.market/data-api-reference/liquidity-rewards-public/list-earning-pools-public.md): Unauthenticated programme catalogue (CP + USDC). Always sorted by daily pool (highest first). No Privy token. Rate-limited at 30 requests / 10 seconds and cached ~30s. - [Market programme config (public)](https://docs.xo.market/data-api-reference/liquidity-rewards-public/market-programme-config-public.md): Unauthenticated multi-rail config. Returns every enrolled programme (CP and/or USDC) for the market. No Privy token. - [Wallet CP + USDC summary (public)](https://docs.xo.market/data-api-reference/liquidity-rewards-public/wallet-cp-+-usdc-summary-public.md): Same payload as Privy `GET /liquidity-rewards/me/summary`, with the wallet in the path. No Privy token. Wallets that are not XO users still return liquidity totals; creator-bonus CP is `0`. - [Wallet CP rollup for a UTC day (public)](https://docs.xo.market/data-api-reference/liquidity-rewards-public/wallet-cp-rollup-for-a-utc-day-public.md): Same shape as Privy `GET /liquidity-rewards/me/epochs/{epoch}`, with the wallet in the path. CP-only. For mixed CP/USDC on one market, use `GET /public/liquidity-rewards/markets/{marketId}/wallets/{wallet}`. No Privy token. - [Wallet scored orders for a UTC day (public)](https://docs.xo.market/data-api-reference/liquidity-rewards-public/wallet-scored-orders-for-a-utc-day-public.md): Unauthenticated scored-order list for a maker. Optional `market_id` / `epoch`. `epoch` defaults to the current UTC day (`latest` is not accepted). No Privy token. - [Maker on one market-day (public, CP + USDC)](https://docs.xo.market/data-api-reference/liquidity-rewards-public/maker-on-one-market-day-public-cp-+-usdc.md): Same as Privy `GET /liquidity-rewards/markets/{marketId}/me`, with the maker wallet in the path. No Privy token. Preferred over the CP-only epoch routes for dual-rail markets. - [Market-day CP rollup (public)](https://docs.xo.market/data-api-reference/liquidity-rewards-public/market-day-cp-rollup-public.md): Unauthenticated CP market-day summary including `top_makers`. No Privy token. Cached ~5 minutes. - [Paginated makers for a market UTC day (public)](https://docs.xo.market/data-api-reference/liquidity-rewards-public/paginated-makers-for-a-market-utc-day-public.md): Unauthenticated CP-only maker list. Dual-rail (CP+USDC) market-days may return `409`. Prefer `GET /public/liquidity-rewards/markets/{marketId}/wallets/{wallet}` for mixed rails. No Privy token. - [List earning pools](https://docs.xo.market/data-api-reference/liquidity-rewards-authenticated/list-earning-pools.md): **Requires `Authorization: Bearer `.** - [Authenticated user CP + USDC summary](https://docs.xo.market/data-api-reference/liquidity-rewards-authenticated/authenticated-user-cp-+-usdc-summary.md): **Requires `Authorization: Bearer `.** - [Authenticated user CP rollup for a UTC day](https://docs.xo.market/data-api-reference/liquidity-rewards-authenticated/authenticated-user-cp-rollup-for-a-utc-day.md): **Requires `Authorization: Bearer `.** - [Authenticated maker on one market-day (CP + USDC)](https://docs.xo.market/data-api-reference/liquidity-rewards-authenticated/authenticated-maker-on-one-market-day-cp-+-usdc.md): **Requires `Authorization: Bearer `.** - [Market programme config](https://docs.xo.market/data-api-reference/liquidity-rewards-authenticated/market-programme-config.md): **Requires `Authorization: Bearer `.** - [Portfolio WebSocket](https://docs.xo.market/data-api-reference/portfolio-websocket.md): Unauthenticated Socket.IO feed for public portfolio snapshots. - [List markets](https://docs.xo.market/data-api-reference/markets/list-markets.md): Returns a paginated list of markets with optional filters. Use `marketScope` to constrain by deployment type (CLOB only, Pulse only, etc.) or pass `marketType` directly. - [Get market by numeric id](https://docs.xo.market/data-api-reference/markets/get-market-by-numeric-id.md) - [Get market by contract address or condition id](https://docs.xo.market/data-api-reference/markets/get-market-by-contract-address-or-condition-id.md): Lookup helper for market makers that already hold a `conditionId` or wrapper contract address. - [Get market by slug](https://docs.xo.market/data-api-reference/markets/get-market-by-slug.md) - [List Pulse markets](https://docs.xo.market/data-api-reference/pulse-markets/list-pulse-markets.md): Pulse markets are short-horizon cycles (for example BTC 5-minute windows). Use `status=ACTIVE` to fetch the currently-open cycles and `status=RESOLVED` (or `CLOSED`) to page through history. - [Get Pulse markets by addresses (batch)](https://docs.xo.market/data-api-reference/pulse-markets/get-pulse-markets-by-addresses-batch.md): Fetches multiple Pulse markets in a single request using comma-separated on-chain addresses. - [Get Pulse market by on-chain address](https://docs.xo.market/data-api-reference/pulse-markets/get-pulse-market-by-on-chain-address.md) - [Get a user portfolio by wallet address or username (public)](https://docs.xo.market/data-api-reference/portfolio/get-a-user-portfolio-by-wallet-address-or-username-public.md): Unauthenticated variant of `/users/me/portfolio`. Resolves the target user from the required `user` query param — a wallet address (`0x…`, any case) or a username (case-insensitive) — and returns the same portfolio payload as the authenticated endpoint. - [List earning pools (public)](https://docs.xo.market/data-api-reference/liquidity-rewards-public/list-earning-pools-public.md): Unauthenticated programme catalogue (CP + USDC). Always sorted by daily pool (highest first). No Privy token. Rate-limited at 30 requests / 10 seconds and cached ~30s. - [Market programme config (public)](https://docs.xo.market/data-api-reference/liquidity-rewards-public/market-programme-config-public.md): Unauthenticated multi-rail config. Returns every enrolled programme (CP and/or USDC) for the market. No Privy token. - [Wallet CP + USDC summary (public)](https://docs.xo.market/data-api-reference/liquidity-rewards-public/wallet-cp-+-usdc-summary-public.md): Same payload as Privy `GET /liquidity-rewards/me/summary`, with the wallet in the path. No Privy token. Wallets that are not XO users still return liquidity totals; creator-bonus CP is `0`. - [Wallet CP rollup for a UTC day (public)](https://docs.xo.market/data-api-reference/liquidity-rewards-public/wallet-cp-rollup-for-a-utc-day-public.md): Same shape as Privy `GET /liquidity-rewards/me/epochs/{epoch}`, with the wallet in the path. CP-only. For mixed CP/USDC on one market, use `GET /public/liquidity-rewards/markets/{marketId}/wallets/{wallet}`. No Privy token. - [Wallet scored orders for a UTC day (public)](https://docs.xo.market/data-api-reference/liquidity-rewards-public/wallet-scored-orders-for-a-utc-day-public.md): Unauthenticated scored-order list for a maker. Optional `market_id` / `epoch`. `epoch` defaults to the current UTC day (`latest` is not accepted). No Privy token. - [Maker on one market-day (public, CP + USDC)](https://docs.xo.market/data-api-reference/liquidity-rewards-public/maker-on-one-market-day-public-cp-+-usdc.md): Same as Privy `GET /liquidity-rewards/markets/{marketId}/me`, with the maker wallet in the path. No Privy token. Preferred over the CP-only epoch routes for dual-rail markets. - [Market-day CP rollup (public)](https://docs.xo.market/data-api-reference/liquidity-rewards-public/market-day-cp-rollup-public.md): Unauthenticated CP market-day summary including `top_makers`. No Privy token. Cached ~5 minutes. - [Paginated makers for a market UTC day (public)](https://docs.xo.market/data-api-reference/liquidity-rewards-public/paginated-makers-for-a-market-utc-day-public.md): Unauthenticated CP-only maker list. Dual-rail (CP+USDC) market-days may return `409`. Prefer `GET /public/liquidity-rewards/markets/{marketId}/wallets/{wallet}` for mixed rails. No Privy token. - [List earning pools](https://docs.xo.market/data-api-reference/liquidity-rewards-authenticated/list-earning-pools.md): **Requires `Authorization: Bearer `.** - [Authenticated user CP + USDC summary](https://docs.xo.market/data-api-reference/liquidity-rewards-authenticated/authenticated-user-cp-+-usdc-summary.md): **Requires `Authorization: Bearer `.** - [Authenticated user CP rollup for a UTC day](https://docs.xo.market/data-api-reference/liquidity-rewards-authenticated/authenticated-user-cp-rollup-for-a-utc-day.md): **Requires `Authorization: Bearer `.** - [Authenticated maker on one market-day (CP + USDC)](https://docs.xo.market/data-api-reference/liquidity-rewards-authenticated/authenticated-maker-on-one-market-day-cp-+-usdc.md): **Requires `Authorization: Bearer `.** - [Market programme config](https://docs.xo.market/data-api-reference/liquidity-rewards-authenticated/market-programme-config.md): **Requires `Authorization: Bearer `.** ## OpenAPI Specs - [openapi](/api-reference/openapi.yaml) - [openapi](/data-api-reference/openapi.yaml) ## AsyncAPI Specs - [asyncapi](/api-reference/asyncapi.yaml)