Skip to main content
Every endpoint is served through the gateway at 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

none
GET /perps/markets (alias GET /markets/linear) — all linear markets: spot, perpetual, and dated futures. Expired dated futures are auto-excluded.
array
Response

Order book snapshot

string
required
GET /perps/orderbook/{marketId} — aggregated book snapshot for a perp/linear market.
number
Number of levels to return. Defaults to the full book.
Response
For options and spot instruments, use GET /orderbook/{marketId} (alias GET /options/orderbook/{marketId}), which returns the same { bids, asks } shape.

Market stats

string
required
GET /perps/market-stats — 24h ticker for one market.
string
string
string
string
string
Current 1h funding rate as a percent.

Candles (OHLCV)

string
required
GET /perps/ohlc — candlestick history, TradingView-shaped. e.g. BTC-PERP.
string
1 | 5 | 15 | 30 | 60 | 240 | D (default 15).
number
Unix seconds. Range capped to 90 days.
number
Unix seconds.
Response

Fees, insurance fund & DVOL

endpoint
Perp fee-tier schedule: array of { min30dVolumeUsd, makerBps, takerBps }. A negative maker bps is a rebate. Your personal tier is reflected in order preview.
endpoint
Options fee schedule.
endpoint
Public insurance-fund balance and summary.
endpoint
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.
string
GET /markets/board — full option chain for an underlying with per-strike quotes, IV and Greeks. e.g. BTC. Omit for the primary underlying.
string
string
string[]
object
Per-expiry { forwardPrice, futuresMarketId } — each expiry is priced off its own forward.
array
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 an expiry).

Place an order

string
required
string
required
buy | sell
string
required
string
limit (default) | market
string
Required for limit.
string
gtc | ioc | fok
boolean
boolean
string
isolated | cross
string
string
string
string
POST /perps/ordersSession. Returns the order object with resulting fills and position.

Preview an order

POST /perps/orders/previewSession or API key. Dry-run an order: margin required, estimated fee, and approval, with no side effects. Same body shape as a live order.
string
string
string
string
string
maker | taker
string
Drives your fee tier.
boolean
string
Present when approved is false.

Quotes and bulk quoting

endpoint
Session. Place a two-sided quote in one market: { marketId, bid?: { price, quantity, clientOrderId? }, ask?: { ... }, quoteId? }.
endpoint
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

endpoint
Session. Cancel one resting order.
endpoint
Session or API key. Cancel all your orders, optionally scoped by { marketId?, quoteId?, clientOrderId?, marginMode? }. Wire this to your kill-switch.
endpoint
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.
string
required
string
required
buy | sell
string
required
string
required
string
limit (default) | market
string
gtc | ioc | fok
boolean
boolean
string
POST /orders
Preview with 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).
string
boolean
boolean
array
required
2–8 legs, each { market, side, quantity, price }.
POST /orders/strategy
string
boolean
array
Each { orderId, fills }.
Dry-run first with 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. For live account state, prefer the streams — 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

endpoint
{ onchainDepositTotal, walletBalance, perpsBalance, optionsBalance, pendingWithdrawalTotal } — decimal strings.
endpoint
Per-asset inventory: array of { asset, bucket, available, locked, total }.
endpoint
Perp-venue balance and margin view.

Transfer between buckets

string
required
wallet | perps | options | spot
string
required
A distinct bucket.
string
required
Positive; cannot exceed the source balance.
POST /wallet/transfer — atomic and double-entry ledgered.
POST /wallet/transfer

Withdraw

string
required
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

Settlement status values: pending, processing, sent, confirmed, failed, insufficient_liquidity.

API keys

Session-only — a key cannot manage keys. Scopes: read, trade.
endpoint
List your keys (metadata only; secrets are never returned): { id, name, scope, allowedIps, expiresAt, createdAt, lastUsedAt, status }.
endpoint
Create a key. Body { name, scope, allowedIps?, expiresInDays? }. Returns the metadata plus the plaintext secret, shown once only.
endpoint
Revoke a key.
POST /perps/me/api-keys
The secret is returned exactly once at creation and can never be retrieved again. Store it in a secret manager immediately; if you lose it, revoke the key and create a new one.