Docs
Workspace

The workspace this credential belongs to

GET
/v1/workspace

Its plan, and whether trading is switched off. Our staff switch trading off for a whole workspace only during an incident; this is where to see it.

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 a label (live or test) in the key itself, so each configuration is easy to tell apart. Both reach real brokers: test with a broker demo account.

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/workspace"
{  "data": {    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",    "name": "string",    "plan": "string",    "planName": "string",    "planAssigned": true,    "tradingDisabled": true  }}

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

Create a key POST

**Needs an admin key** (`fx_admin_…`), made by the workspace owner in the console — or a signed-in owner or admin. Ordinary API keys are refused with `ADMIN_KEY_REQUIRED`. Returns the key in `key`, **once**. We cannot show a key again after creation, or recover it. A lost key is replaced, not recovered. `admin`, `keys:manage`, `members:manage` and `billing:manage` cannot be granted here, not even by an admin key. Issue narrow keys: an integration that only reads positions should hold `trading:read` and nothing else. A console session confirms it's you first (`403 STEP_UP_REQUIRED`) only when the key can move money or accounts — `trading:execute`, `trading:reduce` or `accounts:write`. A read-only key, or one that only manages webhooks, is created without one.