Skip to main content
This walks through the two calls every integration starts with. Both are read-scope, so they work with any key. All responses below are real, captured from production.

Is the exchange open?

exchange_active is false during a halt — no orders will be accepted. Check it before you start trading, and treat it as a kill switch. as_of_seq is the sequencer position the answer was computed at. It appears on every read. Two responses with the same as_of_seq describe exactly the same state, which is what lets you tell “nothing changed” from “I asked too early”.
as_of_seq restarts from a low number when the venue restarts. It is a position within the current session, not a global counter — do not persist it or assume it only ever increases. Use round_number for ordering across restarts.

What is trading right now?

Omnibook runs a continuous series of 60-second binary rounds on the BTC price. One round is open for trading at a time.
The fields that matter:
  • market_id — what you pass to order and orderbook endpoints. It is recycled across rounds, so never cache it as an identifier for a round.
  • round_number — monotonic and never reused. This is the stable identity.
  • statustrading accepts orders. frozen does not. settled is done.
  • strike — the BTC price to beat, in units of 1e-8 USD. The value above is $63,992.40.
  • winnernull until settlement, then "yes" or "no".
market_id is drawn from a small recycled pool. Two different rounds will reuse the same market_id over time. Always key your own state on round_number, and re-read the round before acting on a cached market_id.

Paging

List endpoints return a cursor. Pass it back as ?cursor= to get the next page; an empty cursor means there are no more results.

Next

Place an order: Place your first order.