# Futures order and fill history

`GET https://app.skylit.ai/api/nexus/v1/trading/accounts/{account}/orders`

API: Nexus.

The orders your keys placed in this account, newest first, with the `clientOrderId` each was sent with, the key that placed it, and each fill's commission and gross realized P/L (0 on a fill that only opened). Page back with `before`: send the `placedAt` of the last order you have.

## Authentication

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

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `account` | path | string | yes | `practice`, `evaluation` or `funded` (when you have exactly one running), or a futures account id from capabilities. |
| `limit` | query | integer | no | Page size. (default `50`; min 1; max 200) |
| `before` | query | string (date-time) | no | Only orders placed before this time, like `2026-10-09T14:00:00Z`. |

## Example request

```bash
curl "https://app.skylit.ai/api/nexus/v1/trading/accounts/practice/orders" \
  -H "Authorization: Bearer $SKYLIT_API_KEY"
```

## Responses

### 200

The orders. `meta.count` is how many are on this page.

One filled market order.:

```json
{
  "data": [
    {
      "id": "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d",
      "assetClass": "futures",
      "source": "api",
      "account": {
        "id": "3c2b1a90-5e4d-4f3a-8b2c-1d0e9f8a7b6c",
        "kind": "practice",
        "name": "Paper"
      },
      "symbol": "NQZ26",
      "side": "buy",
      "quantity": 1,
      "role": "entry",
      "orderType": "market",
      "status": "filled",
      "fillPrice": 25312.25,
      "placedAt": "2026-10-09T14:35:10Z",
      "filledAt": "2026-10-09T14:35:10Z",
      "clientOrderId": "bot-0143",
      "keyId": "key_3f9a1c",
      "commissionCents": 214,
      "realizedPnlCents": 0
    }
  ],
  "meta": {
    "count": 1,
    "limit": 50
  }
}
```

### 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`, `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."
  }
}
```

### 403

The key works but the account can't do this. Codes: `account_suspended`, `nexus_access_denied`, `futures_access_denied`.

The account doesn't include Nexus.:

```json
{
  "error": {
    "code": "nexus_access_denied",
    "message": "This Skylit account doesn't include Nexus, so it can't place Nexus trades."
  }
}
```

### 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. Code: `rate_limited`.

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."
  }
}
```

### 503

Try again in a moment (honour `Retry-After` when it's sent). Codes: `stale_quote`, `no_live_price`, `rules_pending`, `unavailable`, `auth_unavailable`, `access_check_unavailable`, `api_keys_unavailable`, `trades_api_disabled`.

Headers: `Retry-After`.

No live price right now.:

```json
{
  "error": {
    "code": "no_live_price",
    "message": "There's no live price for this contract right now, so nothing was filled. Try again in a moment."
  }
}
```
