Place one trade on many accounts
A multi-account order: one trade placed on many accounts at once. Every account is brought online first, then the orders are sent together — at executeAt, or as soon as every account is online.
A multi-account order is not all-or-nothing once sent, and cannot be. There is no transaction across a hundred brokers: accounts fill at different prices, some are rejected for margin, some go unanswered. So it never reports a single success or failure — it reports a result for each account, and summary counts what landed. An account whose result is unresolved must not be resent; poll its order.
dispatchSpreadMs is the gap between the first account's order being sent and the last. It is the number worth watching: as it grows, your accounts are getting different prices.
barrierPolicy decides what happens when some accounts are not online in time:
release-ready— trade on the accounts that are online, skip the rest. A partial entry beats a late one.all-or-nothing— trade on none unless all are online. Note this is about sending: a broker can still reject an account's order after it was sent.wait— keep waiting pastexecuteAtuntil every account is online, up toexpiresAt.
Authorization
apiKey Authorization: Bearer fx_live_<id>_<secret>.
A key is shown once, at creation. We cannot show it again or recover it for you.
Keys carry an environment (live or test) in the key itself, so a test key pasted into a
production config fails immediately instead of at the worst possible moment.
Scopes are per key. A key without accounts:write can read accounts and nothing else.
In: header
Header Parameters
Any unique string, usually a UUID. A retry with the same key and body returns the first answer instead of placing a second order; the same key with a different body is refused.
length <= 200Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/v1/execution-waves" \ -H "idempotency-key: 3f0c9a52-8a8e-4f7e-9b0e-6c1d2f5a7b10" \ -H "Content-Type: application/json" \ -d '{ "accountIds": [ "b75e4440-1cc9-49a6-8c9e-087e1aa69722" ], "symbol": "EURUSD", "side": "buy", "volume": "0.01" }'{ "data": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "label": null, "clientWaveId": null, "symbol": "string", "side": "buy", "baseVolume": null, "state": "planned", "stateDetail": null, "barrierPolicy": "release-ready", "executeAt": null, "expiresAt": null, "preparedAt": null, "releasedAt": null, "settledAt": null, "dispatchSpreadMs": null, "summary": { "total": 0, "filled": 0, "rejected": 0, "skipped": 0, "unresolved": 0 }, "legs": [ { "accountId": "3d07c219-0a88-45be-9cfc-91e9d095a1e9", "orderId": null, "volume": null, "state": "pending", "stateDetail": null, "sentAt": null, "settledAt": null } ], "createdAt": "2019-08-24T14:15:22Z" }}