https://{API_BASE}. Bodies are
JSON; prices and sizes are decimal strings. The auth tier for each endpoint is
noted inline — see API overview for how
each tier works.
Enums used throughout:
side = buy | sell; order type = limit | market;
timeInForce = gtc | ioc | fok; marginMode = isolated | cross.
postOnly rejects an order that would take liquidity; reduceOnly prevents an
order from increasing your position.Market data
Public — no credentials required.List markets
GET /perps/markets (alias GET /markets/linear) — all linear markets: spot,
perpetual, and dated futures. Expired dated futures are auto-excluded.Response
Order book snapshot
GET /perps/orderbook/{marketId} — aggregated book snapshot for a perp/linear
market.Number of levels to return. Defaults to the full book.
Response
GET /orderbook/{marketId} (alias
GET /options/orderbook/{marketId}), which returns the same { bids, asks }
shape.
Market stats
GET /perps/market-stats — 24h ticker for one market.Current 1h funding rate as a percent.
Candles (OHLCV)
GET /perps/ohlc — candlestick history, TradingView-shaped. e.g. BTC-PERP.1 | 5 | 15 | 30 | 60 | 240 | D (default 15).Unix seconds. Range capped to 90 days.
Unix seconds.
Response
Fees, insurance fund & DVOL
Perp fee-tier schedule: array of
{ min30dVolumeUsd, makerBps, takerBps }. A
negative maker bps is a rebate. Your personal tier is reflected in order
preview.Options fee schedule.
Public insurance-fund balance and summary.
30-day implied-volatility index. Query
underlying (default BTC). Returns
{ underlying, dvol, tenorDays: 30, computedAt, sourceTimestamp }.Options board
The option board is the single source for the chain and its implied-volatility surface — every strike carries its mark, IV and Greeks, so there is no separate surface endpoint.GET /markets/board — full option chain for an underlying with per-strike
quotes, IV and Greeks. e.g. BTC. Omit for the primary underlying.Per-expiry
{ forwardPrice, futuresMarketId } — each expiry is priced off its
own forward.Board
mark, iv, and delta are OCX reference marks, published for pricing
and risk. The tradable prices are always the order book. See
Options pricing for the concept.Trading — perpetuals & futures
Perps and dated futures share one order API (a dated future is just a market with anexpiry).
Place an order
buy | selllimit (default) | marketRequired for
limit.gtc | ioc | fokisolated | crossPOST /perps/orders — Session. Returns the order object with resulting
fills and position.
Preview an order
POST /perps/orders/preview — Session or API key. Dry-run an order: margin
required, estimated fee, and approval, with no side effects. Same body shape as
a live order.
maker | takerDrives your fee tier.
Present when
approved is false.Quotes and bulk quoting
Session. Place a two-sided quote in one market:
{ marketId, bid?: { price, quantity, clientOrderId? }, ask?: { ... }, quoteId? }.Session or API key. Replace a whole ladder atomically — the market-maker
path. Set
cancelAll: true to cancel your prior quotes and place the new set
in one operation.POST /perps/quotes/bulk
Cancel and close
Session. Cancel one resting order.
Session or API key. Cancel all your orders, optionally scoped by
{ marketId?, quoteId?, clientOrderId?, marginMode? }. Wire this to your
kill-switch.Session. Close a position fully or partially:
{ marketId, quantity?, marginMode?, orderType?, price?, timeInForce? }. Omit
quantity to close fully.Trading — options & spot
Options and spot run on the central limit order-book engine. Single-instrument orders use/orders; multi-leg strategies use /orders/strategy. Each path has
an /options/… alias.
Single order
POST /orders (alias POST /options/orders) — Session.
buy | selllimit (default) | marketgtc | ioc | fokPOST /orders
POST /orders/preview (alias /options/orders/preview), amend a
resting order with POST /options/orders/{id}/modify ({ price?, quantity? }),
and cancel with POST /orders/{id}/cancel or POST /orders/cancel-all.
Multi-leg strategy
POST /orders/strategy (alias /options/orders/strategy) — Session. Place a
combo (spread, straddle, …). Combos are all-or-none-immediate: every leg must
fully fill or the whole strategy is rejected (per-leg timeInForce is accepted
but ignored — combos are FOK).
2–8 legs, each
{ market, side, quantity, price }.POST /orders/strategy
Each
{ orderId, fills }.POST /orders/strategy/preview. Two-sided option quotes use
POST /quotes and POST /quotes/bulk (the bulk path accepts an API key).
Account
Read your own orders, positions, trades, and portfolio. Session unless noted.| Endpoint | Returns |
|---|---|
GET /perps/orders | Your perp orders (limit, marketId, marginMode). |
GET /perps/orders/open | Your resting perp orders. |
GET /perps/positions | Open positions: size, entry, mark, uPnL, liquidation price, leverage. |
GET /perps/trades | Your recent perp fills. |
GET /orders/me | Your option/spot orders (alias /options/orders/me). |
GET /positions/me | Your option/spot positions. |
GET /options/trades/me | Your option fills. |
GET /portfolio/me | Unified cross-venue portfolio (perps + options + balances). |
GET /portfolio/balances | Unified balance summary across venues. |
GET /perps/stream/events,
GET /options/stream/events, and GET /portfolio/balances/stream — documented
in Streaming.
Wallet
Funds live in four buckets:wallet (deposit/withdraw source), perps,
options, and spot. Move funds between buckets before trading in a venue.
All Session.
Balances
{ onchainDepositTotal, walletBalance, perpsBalance, optionsBalance, pendingWithdrawalTotal } — decimal strings.Per-asset inventory: array of
{ asset, bucket, available, locked, total }.Perp-venue balance and margin view.
Transfer between buckets
wallet | perps | options | spotA distinct bucket.
Positive; cannot exceed the source balance.
POST /wallet/transfer — atomic and double-entry ledgered.
POST /wallet/transfer
Withdraw
Must be ≤ your
wallet balance. Transfer back from perps/options/spot first.POST /wallet/withdraw → { "withdrawalId": "…" }. The amount is debited from
wallet immediately and the on-chain payout proceeds asynchronously.
History & settlements
| Endpoint | Returns |
|---|---|
GET /wallet/history | Ledger entries { id, type, amount, txHash, createdAt }, newest first. |
GET /wallet/settlements | Settlements; filter kind (deposit/withdraw), status, limit (1–200). |
GET /wallet/settlements/{id} | One settlement record. |
status values: pending, processing, sent, confirmed,
failed, insufficient_liquidity.
API keys
Session-only — a key cannot manage keys. Scopes:read, trade.
List your keys (metadata only; secrets are never returned):
{ id, name, scope, allowedIps, expiresAt, createdAt, lastUsedAt, status }.Create a key. Body
{ name, scope, allowedIps?, expiresInDays? }. Returns the
metadata plus the plaintext secret, shown once only.Revoke a key.
POST /perps/me/api-keys