Status: pending release — effective date Thursday 06 Aug. Applies to: HTTP and WebSocket, three operations only.

What changes

The three batch order operations previously returned an array when per-order outcomes were available, but a single error object for request-level errors such as an unparseable body, invalid signature, rate limit, or internal error. Clients had to branch on the JSON shape — and over WebSocket there is no HTTP status code to branch on.

From this release, the HTTP response body and WebSocket data field for these operations are always arrays once the operation has been identified. A request-level error is returned as a one-element array.

Transport Operation
HTTP POST /v1/trade/orders (createOrders)
HTTP DELETE /v1/trade/orders (cancelOrders)
HTTP DELETE /v1/trade/orders-coid (cancelOrdersByCoid)
WS op.type = "createOrders"
WS op.type = "cancelOrders"
WS op.type = "cancelOrdersCOID"

HTTP

Success (200) is unchanged — still an array of per-order results.

Non-200 responses (400, 429, 500) change shape. HTTP status codes and Retry-After behaviour are unchanged. Retry-After remains present only for token-bucket IP and action rate limits, not for open_orders_limit.

// before — 400
{ "status": "err", "error": "invalid signature" }

// after — 400
[ { "status": "err", "error": "invalid signature" } ]
// before — 429 (Retry-After: 2)
{ "status": "err", "error": "ip_rate_limited" }

// after — 429 (Retry-After: 2)
[ { "status": "err", "error": "ip_rate_limited" } ]

WebSocket

The reply envelope is unchanged ({ "id": <your id>, "data": … }). For these three operations, data is now always an array.

// before — request rejected
{ "id": 1, "data": { "status": "err", "error": "invalid_request" } }

// after — request rejected
{ "id": 1, "data": [ { "status": "err", "error": "invalid_request" } ] }

Note: for createOrders, our AsyncAPI spec previously documented data as a single object. That was a documentation error — success replies were already an array. The spec now matches the wire.

What does NOT change