Margin required, or profit at a price
Opens nothing and is safe to call freely. This is how you find out an order will be refused for margin before sending it, rather than collecting a 10019 from the broker.
The account must be online: an offline account is refused with 409 NO_RUNTIME. A null value means the broker would not answer, which is not the same as zero.
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
Path Parameters
uuidRequest 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/accounts/497f6eca-6276-4993-bfeb-53cbbbba6f08/calculate" \ -H "Content-Type: application/json" \ -d '{ "kind": "margin", "symbol": "EURUSD", "side": "buy", "volume": "0.10", "price": "1.13426" }'{ "data": { "kind": "margin", "value": null }}Confirm pending results with the broker now POST
Confirms the result of every order on this account still in `unknown`, and brings its deals and positions up to date with the broker. This happens automatically; call it when you do not want to wait. It is safe to call at any time and safe to call twice — nothing is recorded or settled twice. `ambiguous` counts orders whose result the broker's records do not settle unambiguously. Those are left in `unknown` on purpose: a wrong guess produces a history that looks settled and is wrong, which is worse than the gap. They need a human. `skipped` is `no-runtime` when the account is offline: bring it online and call again.
Move a pending order's price or levels POST
Keeps the order's ticket. Cancelling and re-placing loses its place in the broker's queue and leaves a window where the order does not exist at all — on a fast market that window is where the move happens. An omitted field is left alone. Send `stopLoss: null` to clear a stop; omitting it keeps whatever is there. Only an order in `working` can be moved. A `filled` order is a position — move its stop with `/positions/{id}/modify` instead.