Endpoints

REST routes are under /api/v1. Trading and account streams share one WebSocket at /ws/v1.

Set the host with your SDK (baseUrl, restBaseUrl) or the origin issued with your API credentials. Examples in these docs use relative paths. A request shown as POST /orders means POST /api/v1/orders on that origin.

REST

MethodPathAuthPurpose
POST/auth/tokenAPI credentialsExchange key id, secret, and passphrase for a bearer token
POST/auth/token/revokeBearerRevoke the current access token
GET/time—Server clock
GET/rate-limits—Public rate-limit manifest
GET/instruments—Tradable instruments
GET/instruments/{symbol}—One instrument
POST/ordersBearer + HPKEPlace an order
DELETE/orders/{orderId}Bearer + HPKECancel an order
PATCH/orders/{orderId}Bearer + HPKEModify an order
GET/orders/{orderId}BearerOrder pointer. Use the orders stream for status
POST/orders/massQuoteBearer + HPKEMass quote
POST/accountBearer + HPKEAccount margin snapshot
POST/positionsBearer + HPKEPositions snapshot
POST/openOrdersBearer + HPKEOpen-orders snapshot
GET/tiers/config—VIP tier definitions
GET/tiers/config/{tier_level}—One VIP tier
GET/tiers/statusBearerYour tier and rolling volume
GET/stats/platform—Public platform statistics

Account, positions, and open orders are encrypted POST snapshots. There is no public GET for those resources.

WebSocket

/ws/v1
FrameDirectionPurpose
op: loginClient → serverAuthenticate with the access token
op: logoutClient → serverEnd the session
op: ping / pongBothHeartbeat
op: subscribe / unsubscribeClient → serverRegister channels
HPKE setup and sealed commandsBinaryPlace, cancel, modify, and related commands
Public channelsServer → clientvolume, open_interest, funding_rate
Private channelsServer → clientorders, positions (login required)

See WebSocket Trading, Orders Channel, and Positions Channel.

Headers

Authenticated JSON requests:

Content-Type: application/json
Authorization: Bearer <access_token>

Encrypted trading bodies use the media type produced by the SDK. Do not send ciphertext as application/json.

HeaderPurpose
X-Request-IdRequest id to include in support reports
X-RateLimit-LimitBudget for the current window
X-RateLimit-RemainingRemaining budget
X-RateLimit-ResetUnix seconds when the window resets

Response envelope

{
  "code": 0,
  "data": {},
  "timestamp": "2026-04-20T10:30:00.123Z",
  "request_id": "req_01HXYZ..."
}

Errors use the same envelope with a non-zero code and a message. See Error Codes.

Server time

GET /time returns server_time and server_time_ns.