7. WebSocket API

Sending orders purely over WebSocket — status, permissions, and how it differs from the regular WebSocket.

How is the WebSocket API different from the regular WebSocket in group 6?

The WebSocket in group 6 is receive-only (push-only). The WebSocket API lets you send commands — place/amend/cancel regular orders, place/cancel orders in bulk, place/cancel conditional orders (FCO), and query account information — directly over WebSocket without calling REST, with much lower latency since there's no HTTP handshake cost per order.

Which version released the WebSocket API?

The WebSocket API is officially released from version v3.3.2 (2026-10-20), including Batch Order over WebSocket (order.batchNew, order.batchCancel). See the Release Notes for details.

What is Batch Order, and how is it different from calling order.place many times?

Batch Order lets you place or cancel up to 50 orders in a single call — via REST (POST/DELETE /api/v3/trading/order/batch) or the WebSocket API (order.batchNew, order.batchCancel). The whole batch is validated before processing (an error in any order rejects the entire batch), it has replay protection (batchRequestTime must be within a 30-second window) and de-duplication by batchRequestId (re-sending the same batchRequestId on the same day is rejected). REST returns per-order results in the response; the WebSocket API returns a single ack with the orders in PD status, and the real outcome is delivered through the order.{accountNo} channel.

Why does order.place over the WebSocket API return a response right away, even though it's not the match result yet?

order.place/order.amend/order.cancel (and order.batchNew/order.batchCancel) respond immediately (orderStatus: "PD") to confirm the system accepted a valid request — this is not the real fill result yet. The actual outcome (filled/rejected/cancelled) is delivered afterward through the order.{accountNo} notification channel, so you must subscribe to it to know whether your order actually succeeded.

Does the WebSocket API share scopes/permissions with the REST Trading API?

No — the WebSocket API requires its own scope with the tradingws:*:* prefix, completely separate from the trading:*:* scope used by the REST Trading API. An API Key with only REST scopes will be rejected when connecting to the WebSocket API; you need to request the additional scope separately.