Skip to main content

v14.21.0 — 2026-06-09

  • The market data WebSocket (/md/ws) subscribe message now supports streaming only what you need. A new level: "TRADES" subscribes to trade prints only (t = "t"), with no ticker or order book events. For book-level subscriptions (LEVEL_1/LEVEL_2/LEVEL_3), the optional trades and ticker fields (both default true) independently suppress trade (t = "t") or ticker (t = "s") delivery — set both to false for a book-only feed.

v14.18.0 — 2026-06-06

  • Cancel-order and replace-order requests now accept an optional account_id (aid) selecting which account’s client-order-id namespace the order reference resolves against; omit it to use your default account.

v14.17.0 — 2026-06-05

  • The order-entry websocket (/ws/orders) now accepts an optional account_id query parameter to scope the stream to a single account; omitting it defaults to your own account. An account_id you are not authorized to read returns 403, and a malformed value returns 400.

v14.13.0 — 2026-06-03

  • GET /fills, GET /liquidations, GET /transactions, and GET /funding-transactions now require an explicit time range no wider than 7 days (both start_timestamp_ns and end_timestamp_ns); requests that omit the range or exceed 7 days return 400.

v14.12.0 — 2026-06-03

  • GET /orders (order history) now requires an explicit time range no wider than 7 days (both start_timestamp_ns and end_timestamp_ns); requests that omit the range or exceed 7 days return 400.

v14.11.0 — 2026-06-02

  • New GET /estimated-funding-rate endpoint returns the live intraday estimated funding rate for a perpetual symbol.
  • The live estimated funding rate is also available over the WebSocket API via a GetEstimatedFundingRate request (t="ef") on /ws/orders.
  • Order gateway WebSocket sessions accept an optional client_heartbeat_timeout (seconds, up to 300). Send a heartbeat ({"t":"h"}) more often than this; if none arrives in the window, the exchange closes the session and cancels your orders (when cancel-on-disconnect is on), so you recover from a network drop in seconds rather than waiting on the TCP timeout. Only heartbeats reset the deadline.

v14.10.0 — 2026-06-01

  • Orders rejected for breaching the exchange price-limit bands now return a clear “order price is above/below the exchange’s maximum/minimum price limit” message.

v14.8.0 — 2026-05-27

  • The account_id field is now included on every FillDetails event and every Balance entry returned by the balances endpoints.
  • Cancel-reject events on the order gateway websocket now include the full order details (symbol, side, quantity, etc.) under the o field, matching the shape of other order events.

v14.5.0 — 2026-05-25

  • The order-gateway WebSocket login response now includes a cod field indicating whether cancel-on-disconnect is active for the session.

v14.4.0 — 2026-05-20

  • Available balances are now returned as an aggregate USD value.
  • Latencies between matching engine timestamps and time of sending to the client are significantly improved.
  • Fixed an order-gateway race that could send an OrderReplacedOrAmended WebSocket event whose replacement_order reported FILLED with filled_quantity = 0 when the new order matched immediately on cancel-replace. The replacement’s filled/remaining quantities now match its order state.
  • GET /funding-transactions now supports cursor-based pagination via start_timestamp_ns, end_timestamp_ns, sort_ts, limit, and cursor query parameters; responses include next_cursor, limit, and total_count. The endpoint also accepts an optional symbol filter.

v14.1.0 — 2026-05-12

  • Added request type t="s" to /ws/orders to get order status by oid or cid; matches GET /order-status REST equivalent.
  • Cancel requests sent before the exchange has acknowledged the original order now return error code 409 order not yet acknowledged by exchange; retry shortly instead of 500 internal server error.

v14.0.1 — 2026-05-07

  • GET /order-status now accepts only query parameters oid and cid, matching POST /cancel-order and POST /replace-order. The previous parameter names order_id / client_order_id are no longer accepted and will result in HTTP 400 response code.

v13.53.0 — 2026-05-05

  • You can now cancel, replace, and query order status using your client order ID.
  • Order placement and replacement now return actionable HTTP status codes (400/404/429/503/504) with human-readable error messages when the exchange rejects an order, instead of an opaque 500.
  • Order rejections from the exchange now surface the actual reject reason instead of a generic 500 error.
  • Cancel/replace requests with an invalid order id now return 400 with a clear message instead of 500.
  • Fixed rare case where rejected orders could remain in Pending state until the next gateway restart.

v13.48.0 — 2026-04-23

  • Order requests now accept a self-trade prevention behavior flag: cancel-resting, cancel-incoming, or cancel-both; defaults to cancel-incoming, which matches the previous behavior.
  • Order status responses now include reject_reason and reject_message if applicable.

v13.47.0 — 2026-04-21

  • Throttled marketdata WebSocket ticker events { "t": "s", ... } to at most 1/s.