Move a position's stop loss or take profit
Send null to remove a level. Omitting the field leaves it unchanged — an omitted field silently clearing a stop is how protection disappears without anybody choosing it.
Recorded in the order history with intent modify, because widening a stop changes what the account risks and belongs beside the trade it protects.
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
uuidThe broker's position ticket.
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
application/json
curl -X POST "https://example.com/v1/accounts/497f6eca-6276-4993-bfeb-53cbbbba6f08/positions/string/modify" \ -H "Content-Type: application/json" \ -d '{}'{ "data": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "accountId": "3d07c219-0a88-45be-9cfc-91e9d095a1e9", "clientOrderId": null, "symbol": "string", "side": "buy", "type": "market", "intent": "open", "brokerPositionId": null, "volume": null, "stopLoss": null, "takeProfit": null, "state": "accepted", "stateDetail": null, "needsReconciliation": true, "retcode": null, "retcodeText": null, "brokerOrderId": null, "brokerDealId": null, "filledVolume": null, "filledPrice": null, "sentAt": null, "settledAt": null, "reconciledAt": null, "createdAt": "2019-08-24T14:15:22Z" }}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.
Place a limit, stop or stop-limit order POST
A success here means **accepted and waiting**, not filled — the broker answers `10008 PLACED` and the order sits in `accepted` until it triggers. A limit waits for a better price (buy below the market, sell above); a stop waits for a worse one and is how a breakout is traded (buy above, sell below). The wrong side is refused before anything is sent, with a message naming the order you probably meant — the broker's own `INVALID_PRICE` says nothing about which way round it should have been.