Skip to main content
The XO Orderbook is XO Market’s central limit order book. This site documents the orderbook REST and WebSocket APIs, the Data API for market discovery and portfolio reads, the smart-account identity model used to authenticate and sign orders, and the rate limits clients should size against.
Only XO smart-account orders (signatureType = 3) are accepted by the orderbook today. Direct EOA orders (signatureType = 0) are not currently supported. Use an XO smart account from beta.xo.market as your maker; on-chain calls (approvals, split/merge/redeem) execute as ERC-4337 UserOperations through the XO bundler.

Start here

  1. Create an XO smart account at beta.xo.market. That smart account is your maker address.
  2. Deposit XO USDC into the smart account via the beta.xo.market deposit flow.
  3. Approve the CTF Exchange for XO USDC and Conditional Tokens.
  4. Check /balance-allowance to verify funding and approvals.
  5. Size the bot against the published rate limits.
  6. Dry-run a signed order with signatureType = 3 (see Smart accounts).
  7. Submit orders with small size until the full loop is verified.
To split, merge, or redeem outcome tokens, call the ConditionalTokens contract directly — these operations are not exposed by the orderbook API. See Redeem positions for the bundler UserOperation.

Environment

XO operates a single public production environment. The chain id and CTF Exchange address are part of the EIP-712 order domain, so signed orders are not portable across deployments.

Mainnet defaults

The mainnet RPC requires an api_key query parameter (e.g. https://rpc-mainnet-2.xo.market?api_key=abcd1234). The XO team issues the key privately during onboarding. Treat it as a credential and do not commit it to source control.

Contracts

Your XO_SMART_ACCOUNT_ADDRESS, the owner XO_PRIVATE_KEY, the paymaster address, and per-market condition_id / token ids are account- and market-specific. Ask your XO contact for these during onboarding.

Order signing at a glance

Sign orders against this EIP-712 domain. See Smart accounts for the full hashing reference and a Solidity snippet showing exactly what the exchange hashes.
For smart-account orders:
  • maker is your XO smart account.
  • signer is the same smart account address — the exchange requires maker == signer for signatureType = 3.
  • signatureType is 3.
  • signature is a 65-byte ECDSA signature produced by the owner EOA registered on the smart account. The smart account validates it through ERC-1271 (isValidSignature(orderHash, signature)).

Next steps

Smart accounts

Smart account identity, ERC-1271, and order hashing.

Redeem positions

Claim settled Conditional Tokens through the XO bundler.

Fees

How taker and maker fees are charged on fills.

Authentication

L1 ClobAuth and L2 HMAC headers.

Rate limits

Per-tier request and connection limits.

Orderbook API reference

CLOB REST and WebSocket endpoints.

Data API reference

Market discovery, Pulse metadata, and public portfolio reads.

Support

For credentials, the mainnet RPC api_key, paymaster details, and rollout questions, use the XO onboarding channel provided to your team.