Coming soon: order placement over WebSocket becomes available on September 2, 2026, on the global platform only. The EU platform is not yet supported.
Rate limits
Place OCO group
Request parameters
Three prices define the pair, and the relative position of each one matters. On a sell group,price — the take-profit limit — sits above the market, while activation_price — the stop-loss trigger — sits below it. The stop_limit_price value goes beyond activation_price, so the stop-loss leg still fills after the trigger fires.
Note the naming asymmetry: the response keys the legs as take_profit and stop_loss, but there is no plain client_order_id parameter — only the two per-leg forms, limit_client_order_id and stop_client_order_id.
Response
One request produces three identifiers. The group id is theid inside result, next to type: "oco" — not the frame-level id, which only echoes the request. Each leg carries its own order id. Each leg is a full order object — the take-profit reports type 7, the stop-loss type 9. See the order object reference. Timestamps, deal counters, and stp are elided in the example above for length.
The take-profit leg must rest as a maker order. A
price that would cross the spread and execute immediately is rejected with error 150, which makes an over-tight take-profit the most common cause of a failed OCO placement.