# Get an order

> One order by order_id.

Source: https://docs.stxapp.io/api/rest/orders/get-order/

One order by `order_id`. An `order_id` belonging to another account returns 404, not 403: the API never confirms the existence of something the caller does not own.

```http
GET /api/v1/orders/{order_id}
```

Send it with your own demo key: [Try it](/quick-start/?op=orders__id_get#try-it).

:::tip[In the SDKs]
- TypeScript: [`STX.order()`](/sdks/typescript/reference/stx/#order)
- Python: [`STX.order()`](/sdks/python/reference/stx/#order)
:::

## Parameters

| Name | In | Type | Required | Description |
|---|---|---|---|---|
| `order_id` | `path` | string (uuid) | **yes** | The order's UUID. |

## Responses

| Status | Description | Schema |
|---|---|---|
| `200` | Success | object |
| `400` | A parameter was missing or invalid. | Error |
| `401` | Missing, malformed or unrecognized signature, or a timestamp outside the 30-second window. Body: &#123;"error":"Missing or invalid API key credentials"&#125; | Error |
| `403` | The account behind this key is not active, for example it is pending approval or suspended. Body: &#123;"error":"Your account is suspended. Contact support."&#125;, the message naming the account's status. | Error |
| `404` | No such record on this account. | Error |

## Example

Request:

```bash
curl --request GET \
  --url 'https://demo.stxapp.io/api/v1/orders/{order_id}' \
  --header 'X-STX-ACCESS-KEY: <key-id>' \
  --header 'X-STX-ACCESS-TIMESTAMP: <unix-ms>' \
  --header 'X-STX-ACCESS-SIGNATURE: <base64-ed25519>'
```

Response `200`:

```json
{
  "order": {
    "accepted_at": null,
    "action": "buy",
    "amount": "0.6700",
    "avg_price": "0.6700",
    "cancellation_reason": null,
    "client_order_id": null,
    "delayed_until": null,
    "device_id": null,
    "expiration": null,
    "expiration_time": null,
    "expires_at": null,
    "filled": "2.00",
    "filled_amount": "0.6700",
    "filled_percentage": 0,
    "fix_order": false,
    "id": "a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
    "inserted_at": 0,
    "ip_address": null,
    "market_id": "a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
    "odds_type": null,
    "odds_value": null,
    "order_type": "limit",
    "placed_pre_start": false,
    "price": "0.4200000",
    "quantity": "2.00",
    "rejection_reason": null,
    "status": "accepted",
    "time": "2026-08-25T04:42:46.242093Z",
    "total_value": "0.6700"
  }
}
```

### Response fields

| Field | Type | Description |
|---|---|---|
| `accepted_at` | int64 | When the matching engine accepted the order. `null` while the order is still pending. UNIX microseconds. |
| `action` | string | The action of the order, either `buy` or `sell`. |
| `amount` | decimal | Order size in dollars, for an order entered by amount rather than by contract quantity. `null` for orders placed through this API, which always take a quantity. |
| `avg_price` | decimal | Volume-weighted average fill price. `null` until the order has its first fill. In dollars. |
| `cancellation_reason` | string | The cancellation reason, if the order was cancelled. |
| `client_order_id` | string | Your own identifier, echoed back unchanged, or `null` if you sent none. A free-form string, not a UUID, and set by REST and FIX callers alike. |
| `delayed_until` | int64 | The extended deadline for a delayed order. UNIX microseconds. |
| `device_id` | string | The device from which this order was placed. |
| `expiration` | string | The expiration condition for the order. |
| `expiration_time` | int64 | The expiration time for time-based expiration. UNIX microseconds. |
| `expires_at` | int64 | When the contracts this order trades expire, as UNIX microseconds: the market's expiration, copied onto the order when it is placed. `null` when the market has no event. Not the same as `expiration_time`. |
| `filled` | decimal | Contracts filled so far. Compare with `quantity` to get remaining size. |
| `filled_amount` | decimal | The portion of `amount` that has been filled. In dollars. |
| `filled_percentage` | integer | The percentage of the contracts on the order that have been filled. A percentage, not money. |
| `fix_order` | boolean | True if the order arrived over FIX rather than REST. |
| `id` | uuid | Unique identifier for the record. |
| `inserted_at` | int64 | Creation time, as UNIX microseconds. |
| `ip_address` | string | The IP address from which this order was placed. |
| `market_id` | uuid | The market this record relates to. |
| `odds_type` | string | Legacy. The odds format (`decimal` or `american`) an order was entered in on an STX app. `null` for orders placed through this API. |
| `odds_value` | string | Legacy. The odds an order was entered at on an STX app, as a string. `null` for orders placed through this API. |
| `order_type` | string | The type of order, either `limit` or `market`. |
| `placed_pre_start` | boolean | Whether the order was placed before the event started. |
| `price` | decimal | Limit price, below the market's `max_price`; read that per market rather than assuming a ceiling. Absent for market orders. In dollars. Carries up to 7 decimal places; parse money with a variable-scale decimal type, not a fixed-width one. |
| `quantity` | decimal | Order size in contracts. |
| `rejection_reason` | string | The rejection reason, if the order was rejected. |
| `status` | string | Order state, one of nine. See [Market and order status](/concepts/market-status/#order-statuses) for the full set and which are terminal. |
| `time` | date-time | The ISO-8601 timestamp of the time the order was placed. |
| `total_value` | decimal | Total premium across all fills on this order. In dollars. |
