# Fetch one order

URL: https://docs.fxapis.com/api-reference/history/fetch-one-order

> Fetch one order. The authoritative record of one order: what was asked for, what the broker returned, and its own return code unmodified.

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

The authoritative record of one order: what was asked for, what the broker returned, and its own return code unmodified. Poll this after an `ORDER_UNRESOLVED` response — an opening order moves out of `unknown` as soon as we have confirmed the result with the broker; a close, stop change or cancel stays `unknown`, with a `stateDetail` saying what to check at the broker.

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

#### Parameters

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

#### Responses

- `200`
- `401`
- `404`

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

#### 200 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 |  |