# Move a pending order's price or levels

URL: https://docs.fxapis.com/api-reference/trading/move-a-pending-orders-price-or-levels

> Move a pending order's price or levels. Keeps the order's ticket.

`POST https://api.fxapis.com/v1/orders/{id}/modify`

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.

Authentication: `Authorization: Bearer <API key>`.

#### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `id` | path | string (uuid) | yes |  |

#### Request body (application/json, required)

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `price` | string | no | The new price the order waits at. Example: `"1.12750"` |
| `stopLoss` | string \| null | no | `null` clears it; omitting it keeps what is there. Example: `"1.12350"` |
| `takeProfit` | string \| null | no | `null` clears it; omitting it keeps what is there. Example: `"1.13550"` |
| `stopLimitPrice` | string | no | For a stop-limit order. Example: `"1.12730"` |
| `expiresAt` | string (date-time) | no |  |

#### Responses

- `201`
- `400`
- `401`
- `404`
- `409`
- `422`
- `503`

Failures return `{ "error": { "code", "message" } }`; every code is listed at https://docs.fxapis.com/errors.

#### 201 response fields

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `data` | object | no |  |
| `data.id` | string (uuid) | no |  |
| `data.accountId` | string (uuid) | no |  |
| `data.clientOrderId` | null \| string | no | Your own reference, echoed back. |
| `data.symbol` | string | no | The broker symbol traded. |
| `data.instrument` | null \| string | no | The instrument the order named, when it named one; `symbol` is what it was traded as. Example: `"XAUUSD"` |
| `data.side` | "buy" \| "sell" | no |  |
| `data.type` | "market" \| "limit" \| "stop" \| "stop_limit" | no |  |
| `data.intent` | "open" \| "close" \| "modify" \| "cancel" | no | What this order was for. A close is an order, with the same record and the same failed/unknown distinction as an open — `modify` covers moving a stop, which changes what the account risks. |
| `data.brokerPositionId` | null \| string | no | The broker's position ticket. On a close or a stop change, the position it acted on. On an opening order, the position it opened — pass it to `POST /v1/accounts/{id}/positions/{positionId}/close`. Set when the order fills if the terminal reports it; for an order filled by an older terminal, or a pending order that fills later, once the broker's deal history for it has been read. Null until known. |
| `data.volume` | null \| string | no | Requested volume, in lots. |
| `data.stopLoss` | null \| string | no | Absolute price, not a distance. |
| `data.takeProfit` | null \| string | no | Absolute price, not a distance. |
| `data.state` | "accepted" \| "validating" \| "sending" \| "working" \| "completed" \| "filled" \| "partially_filled" \| "rejected" \| "failed" \| "unknown" \| "cancelled" \| "expired" | no |  |
| `data.stateDetail` | null \| string | no |  |
| `data.needsReconciliation` | boolean | no | True while we are confirming the result with the broker. Never resend such an order; poll it. |
| `data.retcode` | null \| integer | no | The broker's own MT5 return code, unmodified. 10009 is a completed request. |
| `data.retcodeText` | null \| string | no |  |
| `data.brokerOrderId` | null \| string | no | The broker's ticket. What their statement shows. |
| `data.brokerDealId` | null \| string | no |  |
| `data.filledVolume` | null \| string | no | What actually filled, which can be less than requested. |
| `data.filledPrice` | null \| string | no | What it actually filled at, which is rarely the requested price. |
| `data.sentAt` | null \| string (date-time) | no |  |
| `data.settledAt` | null \| string (date-time) | no | When an answer arrived. |
| `data.reconciledAt` | null \| string (date-time) | no | Set when a result was confirmed with the broker after the fact. |
| `data.createdAt` | string (date-time) | no |  |