category — see
Series, assets, and categories.
This API is the same one the Omnibook web app uses. Anything you can do in the
browser, a bot can do, with one deliberate exception: API keys cannot
withdraw funds.
Authentication
Create a key and sign your first request. Start here.
Environments
Production REST and WebSocket URLs.
Your first request
Find the rounds that are trading right now.
Series and assets
Nine series, three assets. Categories, feeds, and market hours.
Ticks and pips
Pip ticks, the rest grid, and how a round settles.
Place an order
Buy YES, understand ticks, retry safely.
WebSocket
Stream the book, tape, and your private feed.
API reference
Every venue endpoint.
Python SDK
Official client. Fastest path for common flows.
Strategy templates
Market-making bots first, then taking, vol, and lead-lag.
Changelog
Deprecation policy and recent API changes.
Base URL
/v1/.
What you should know before you start
Everything is authenticated. There is no anonymous access, not even for market data. You need a key before you can read a price. See Authentication. Requests are signed, not bearer-token. You sign each request with HMAC-SHA256 over the method, target and body. Nothing replayable travels on the wire, and the timestamp window is ±5 seconds. Your key trades your account. A key is bound to the same balance and positions you see when signed in, there is no separate bot account. Bot keys cannot withdraw. Trading and withdrawing are separate scopes, and keys you create only get the former. A leaked key can lose you money through bad trades, but it cannot send your money anywhere. See API keys and scopes. Rounds are short andmarket_id is recycled. Rounds last 60 seconds, 5
minutes, or 15 minutes depending on the series, and market_id values are
reused across rounds — sometimes in a different series. Key your own state on
round_number, which is monotonic and never reused. Find the live slots with
GET /v1/markets?status=trading, not GET /v1/rounds?limit=1.
Nine series trade at once, and not all of them are 24/7. GET /v1/markets
returns every live slot across all assets; the round’s category tells you
which asset it is. Gold and crude follow their underlying sessions — when a
feed is dark, GET /v1/oracle/price?feed=N answers price: "0" and no new
rounds open for that asset. See
Series, assets, and categories.
Live history is capped. Trades, fills, and terminal orders silently drop
off once retention caps are hit, see
Retention. Persist what you need from the WebSocket.
Rate limits are per key. Three buckets (read, write, cancel). Write rate
scales with trailing 30-day fill volume. Discover the grant with
GET /v1/account/limits. See Rate limits.
Getting help
Errors carry a stable machine-readablecode, see
Errors for the full list and what to do about each.
The Changelog is where breaking changes are announced.