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.