Docs
Waves

List multi-account orders

GET
/v1/execution-waves

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

Response Body

application/json

application/json

curl -X GET "https://example.com/v1/execution-waves"
{  "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"    }  ]}

Follow a multi-account order GET

Poll this after creating a multi-account order. `state` moves `planned → preparing → armed → releasing → settled`: accepted, bringing accounts online, waiting for `executeAt`, sending, and every account has a result. `cancelled` and `abandoned` mean nothing was sent. Each account in `legs` carries its own state and its own order id — an account's order is an ordinary order, confirmed with the broker and audited like any other.

Place one trade on many accounts POST

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`.