# Read one options or stock order

`GET https://app.skylit.ai/api/nexus/v1/trading/wallets/{book}/orders/{orderId}`

API: Nexus.

One order as it stands now, in any status: `working`, `filled`, `cancelled`, `rejected` or `expired`. `statusReason` says why when there's a reason.

A filled order shows `fillPrice` and `tradeId`. A stock stop that's been set off shows `triggeredAt` and `triggerPrice`. An options stop that fired shows `firedLeg` (`stop_loss` or `take_profit`), `triggeredAt`, `triggerPrice` (the stock price that set it off), `fillPrice` (what the option sold for) and `fillOrderId`.

## Authentication

Send your Skylit API key as a bearer token: `Authorization: Bearer <key>`. No other header is accepted.

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `book` | path | string | yes | `main` is your own paper wallet, `agent` is your bot's. (one of `main`, `agent`) |
| `orderId` | path | string (uuid) | yes | The order's id, from the open, the working list or the history. |

## Example request

```bash
curl "https://app.skylit.ai/api/nexus/v1/trading/wallets/main/orders/b2c3d4e5-f6a7-4b8c-9d0e-1f2a3b4c5d6e" \
  -H "Authorization: Bearer $SKYLIT_API_KEY"
```

## Responses

### 200

The order.

An options stop that fired: SPY traded 584.95, so the 2 calls sold at the bid of 0.95.:

```json
{
  "data": {
    "id": "3c4d5e6f-7a8b-4c9d-8e0f-2a3b4c5d6e7f",
    "assetClass": "options",
    "source": "api",
    "book": "main",
    "clientOrderId": "spy-bracket-1",
    "ticker": "SPY",
    "strike": 600,
    "direction": "call",
    "expiration": "2026-10-16",
    "side": "sell",
    "positionEffect": "close",
    "quantity": 2,
    "filledQuantity": 2,
    "orderType": "bracket",
    "timeInForce": "gtc",
    "status": "filled",
    "stopLoss": 585,
    "takeProfit": 610,
    "triggerOn": "underlying",
    "underlying": "SPY",
    "firedLeg": "stop_loss",
    "triggeredAt": "2026-10-13T15:41:12Z",
    "triggerPrice": 584.95,
    "fillPrice": 0.95,
    "fillOrderId": "4d5e6f7a-8b9c-4d0e-9f1a-3b4c5d6e7f80",
    "tradeId": "6f1c2a4e-8b1d-4c39-9a51-2d7e0b3c9f10",
    "reservedCents": 0,
    "placedAt": "2026-10-12T15:06:30Z",
    "filledAt": "2026-10-13T15:41:13Z"
  }
}
```

### 400

The request was refused before anything was traded. Codes: `bad_request`, `bad_contract`, `invalid_quantity`, `invalid_price`, `unsupported_asset_class`, `unsupported_order_type`, `only_market_orders`, `limit_price_required` (a limit with no `limitPrice`), `invalid_limit_price` (not in cents, or outside 0.01 to 99,999.99 for options or 999,999.99 for stocks), `stop_price_required` (a stop with no `stopPrice`), `invalid_stop_price` (not in cents, or outside 0.01 to 999,999.99), `invalid_take_profit`, `test_orders_unavailable`, `test_modify_unavailable`.

A typo in the body.:

```json
{
  "error": {
    "code": "bad_request",
    "message": "Unknown field \"quantitty\". See the trades API docs for the fields you can send."
  }
}
```

### 401

No key, or a key that isn't valid. Codes: `missing_api_key`, `invalid_api_key`.

No key sent.:

```json
{
  "error": {
    "code": "missing_api_key",
    "message": "Send your Skylit API key in the Authorization header: Authorization: Bearer YOUR_SKYLIT_API_KEY."
  }
}
```

### 404

Not on your account. Codes: `trade_not_found`, `account_not_found`, `order_not_found`.

Not your trade, or no such trade.:

```json
{
  "error": {
    "code": "trade_not_found",
    "message": "No trade with that id on your account."
  }
}
```

### 429

Over a rate limit. Wait `Retry-After` seconds, then retry. Codes: `rate_limited`, and `stream_limit_reached` (too many live streams open: 3 per key, 6 per account).

Headers: `Retry-After`, `X-RateLimit-Limit`, `X-RateLimit-Remaining`.

Too many writes from this key.:

```json
{
  "error": {
    "code": "rate_limited",
    "message": "Too many requests (limit 30). Slow down and retry in 12 seconds."
  }
}
```
