Docs
Waves

Place one trade on many accounts

POST
/v1/execution-waves

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 past executeAt until every account is online, up to expiresAt.

Authorization

apiKey
AuthorizationBearer <token>

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

idempotency-key?string

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.

Lengthlength <= 200

Request 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"  }}