Skip to main content
The official Python SDK wraps HMAC signing, REST, and WebSocket so agents and bots can trade without assembling headers by hand.
The SDK can lag the OpenAPI. New endpoints and fields land in the venue spec first. For production bots that must track every surface on day one, generate a client from venue-openapi.yaml (and venue-asyncapi.yaml for WS) rather than waiting on a package release. The SDK remains the fastest path for common flows.

Install

Requires Python 3.10+.

Prerequisites

  1. Sign in at omnibook.xyz.
  2. Deposit USDC (bot keys cannot withdraw).
  3. Create a key under Settings → API keys. Copy the API key and secret (shown once).
The SDK talks to the venue (https://api.omnibook.xyz), not the browser session proxy. Pass the 64-character hex secret from Settings — the client hex-decodes it to the raw 32-byte HMAC key for you (legacy base64 secrets still work).

Quick start

Place an order

On a 504 sequencing timeout, retry with the same client_order_id — see Orders.

Async

WebSocket

One signed connection multiplexes public and private channels. Pass market_ids for orderbook_delta and trades. Live channels also include oracle, rounds, and user. (ticker is not implemented.)
Channel details: WebSocket overview and Channels.

Environments

Errors

The SDK raises typed exceptions from the venue envelope: Branch on exc.code, not the message. Full list: Errors.

What the SDK covers

  • Exchange status / schedule / retention
  • Account limits (scopes, rate buckets, batch cap)
  • Markets, orderbook, trades
  • Rounds and oracle price
  • Portfolio balance, positions, fills, orders, queue position
  • Place / batch / cancel / cancel-batch / cancel-all / decrease
  • Dead-man switch (arm / disarm)
  • Deposit address (read)
  • WebSocket subscribe / unsubscribe / update_subscription / stream
Withdrawals and account signup are intentionally out of scope for bot keys.

Running the tests

From the SDK repository:
Live venue tests (auth, market data, place+cancel, WebSocket subscribe):
Prefer the local venue when available. Place-order tests use tiny post_only sizes and cancel in teardown.

Prefer raw HTTP?

See Authentication for HMAC header details in Python, TypeScript, and cURL without the SDK.