Place Multiple Orders
Type: TRADE
Weight: 5
POST /fapi/v1/batchOrders
Place up to 5 orders in one request.
Request
POST /fapi/v1/batchOrders?batchOrders=<url-encoded JSON array>×tamp=<ms>&signature=<hex>
Query params
| Name | Type | Required | Notes |
|---|---|---|---|
batchOrders | string | yes | JSON-encoded array of New Order body objects, max 5. Sent in the query string (Binance convention) — sign batchOrders=<json>×tamp=.... Percent-encode the JSON; the verifier accepts both raw and URL-encoded signing (see Signing). |
Response — 200
[
{ "orderId": "…", "symbol": "BTCUSDT", "status": "NEW", "clientOrderId": "a1", "price": "60000.00", "origQty": "0.010", "…": "…" },
{ "code": -2019, "msg": "Margin is insufficient." }
]
Orders are dispatched sequentially through the same path as POST /fapi/v1/order; one failure does not abort the batch. Each element is either a full order response or a {code, msg} object, in request order.
Sharding caveat: the batch is pinned to the receiving pod; symbols owned by another shard run as the degraded local fallback rather than being forwarded. Keep a batch to one symbol when sharding is enabled.
Errors
| HTTP | code | msg |
|---|---|---|
400 | -1102 | batchOrders missing, not valid JSON, empty, or more than 5 entries. |
Per-order errors are the same as New Order. Authentication failures (INVALID_API_KEY, API_KEY_DISABLED, IP_NOT_ALLOWED, SIGNATURE_INVALID) apply to every signed endpoint and use Sparky's {"success":false,"error":{...}} envelope; see Error Codes.