Skip to content

Place several orders

Places up to 100 orders (configurable) in one call. orders is a list, each entry shaped exactly like the single POST /api/v1/orders body. batched is a literal path segment. One geo check covers the batch; each leg is placed independently, so a rejected leg does not fail the others; the results array has one entry per order, in request order, each either {order} on success or {errors} on rejection. A malformed body (a bad field in any leg, empty, over the limit, or orders missing/not a list) is a 400 and places nothing. Requires a read_write key.

POST
/api/v1/orders/batched
Try it

Every endpoint, in one place: the full Try it.

Signing happens in your browser with WebCrypto. Your private key is never sent anywhere; Send request sends your key ID and the signature to the demo host above. Only demo hosts are offered. The key ID and private key are saved in this browser's local storage, per jurisdiction, until you click Clear saved key. Use a demo key here, never a production one.

Field Type Required Description
geo_location string,null no Location code from the STX geolocation check, covering the whole batch, checked once for the request, not per leg. Read only in environments that enforce geo-fencing, and ignored elsewhere. Where it is read, omitting it is a 422 (Placing Order(s) from this IP address … is disallowed.) unless that environment accepts the network location the request arrives from in its place, which it can refuse for an address identified as a VPN, proxy or hosting provider. Do not rely on omitting it: send the code whenever you have one. A code that is sent is always checked, so a bad one is a 422 even where omitting it would have been accepted.
orders NewOrder[] yes The orders to place, each shaped exactly like the single POST /api/v1/orders body (a NewOrder). At most 100 (configurable) per request.
Status Description Schema
200 Success object
400 A parameter was missing or invalid. Error
401 Missing, malformed or unrecognized signature, or a timestamp outside the 30-second window. Body: {“error”:“Missing or invalid API key credentials”} Error
403 This API key does not have write access. The account behind this key is not active, for example it is pending approval or suspended. Body: {“error”:“Your account is suspended. Contact support.”}, the message naming the account’s status. Error
422 The batch was refused as a whole, for example by the location check, and nothing was placed. A leg refused on its own is reported in results, not as a 422. Error

Request:

curl --request POST \
--url 'https://demo.stxapp.io/api/v1/orders/batched' \
--header 'X-STX-ACCESS-KEY: <key-id>' \
--header 'X-STX-ACCESS-TIMESTAMP: <unix-ms>' \
--header 'X-STX-ACCESS-SIGNATURE: <base64-ed25519>' \
--header 'Content-Type: application/json' \
--data '{
"geo_location": null,
"orders": [
{
"action": "buy",
"cancel_on_disconnect": null,
"client_order_id": null,
"device_id": null,
"expiration": null,
"expiration_time": null,
"geo_location": null,
"market_id": "a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
"order_type": "limit",
"price": "0.42",
"quantity": "10"
}
]
}'

Response 200:

{
"results": [
"string"
]
}
Field Type Description
results array One entry per requested order, in request order.
v1.5.9Changelogllms.txtllms-full.txt