Skip to main content
Omnibook runs nine recurring binary series in parallel — BTC, gold (XAU), and WTI crude, each at 60-second, 5-minute, and 15-minute cadences. Each round has a strike price; you trade YES or NO on whether the asset closes above it. Winning contracts pay $1 (10,000 pips); losers pay 0. Prices on the wire are pip ticks (0.01¢), not whole cents — see Ticks, pips, and subcents. Every series is an independent order book with its own rounds and its own price feed. Which one a round belongs to is its 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

Every endpoint lives under /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 and market_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-readable code, see Errors for the full list and what to do about each. The Changelog is where breaking changes are announced.