# One session's order ledger

> Every large SPX order of one session, sorted by the dealer gamma it added. A day whose ledger has not run answers 200 with an empty list and a note.

Source: https://firmtape.com/docs/developers/orders/day

Every large SPX order of one session, sorted by the dealer gamma it added. A day whose ledger has not run answers 200 with an empty list and a note.

`GET /orders/api/day`

Plan ORDERS · Key scope orders · Limit 20,000 calls a day on Orders API, 100,000 on Orders Team, per account · Version 1.0.0 · Since 2026-09-24

**This endpoint serves:** [ORDERS: Orders API and MCP](https://firmtape.com/docs/orders#orders-api), [ORDERS: The order ledger](https://firmtape.com/docs/orders#order-ledger). **Plan:** [ORDERS](https://firmtape.com/features/orders). Free on every finished session. Today's ledger, live, and the live POSITIONS check are the ORDERS plan.

## Parameters

| Name | What it does | Default | Error |
| --- | --- | --- | --- |
| `day` (required) query, string | The ET trading day, `YYYY-MM-DD`. |  | bad_day |

## Response

The ledger.

| Field | Meaning | Unit |
| --- | --- | --- |
| `day` (string) | The ET trading day. |  |
| `sym` (string) | `SPX`: an order is placed against the measured book, which only SPX has. |  |
| `min_premium` (number) | The premium floor the ledger was built at. | USD |
| `asof` (string \| null) | When the ledger was last rebuilt, ET. |  |
| `orders` (array) | Sorted by what the order did to the book, largest first; unpriced orders after them. |  |
| `orders[].oid` (string) | Stable id of the parent order within the session. |  |
| `orders[].t` (string) | When the parent order printed, ET (`HH:MM`). |  |
| `orders[].g` (number \| null) | Dealer gamma the order ADDED, $M per index point. Null when it could not be priced (usually inside the last half hour of its own expiry). Null is not zero. | $M per index point |
| `orders[].kind` (string) | The structure, from package reconstruction rather than leg count: `vertical`, `straddle`, `iron_condor`, `single` and the rest. |  |
| `orders[].legs` (string) | The contract, for reading: `7740P/7750P`. |  |
| `orders[].lg` (array) | The legs as data: `[strike, "C" \| "P", sign]`. The sign is what the package rule concluded the CUSTOMER did; 0 means it could not tell, never flat. |  |
| `orders[].exp` (string \| null) | The expiry carrying most of the order's gamma. |  |
| `orders[].size` (integer \| null) | Contracts in the parent order. |  |
| `orders[].net` (number \| null) | Net premium; a spread at its net. | $M |
| `orders[].flip` (number \| null) | Index points from the zero-gamma flip at that minute. | index points |
| `orders[].side` (over \| under \| null) | Which side of the flip. |  |
| `stats` (object) | The whole session's counts, not the page returned. |  |
| `stats.n` (integer) | Orders above the floor. |  |
| `stats.net` (number) | Their net premium. | $M |
| `stats.no_side` (integer) | Orders the package rule could not orient. |  |
| `stats.no_gamma` (integer) | Orders it could not price. |  |
| `stats.gamma_up` (integer) | Orders that added gamma. |  |
| `stats.gamma_dn` (integer) | Orders that removed gamma. |  |
| `note` (string) | Present when the day has no ledger yet: the list is empty and this says so. Not an error. |  |

## Errors

| Status | Code | What to do |
| --- | --- | --- |
| 400 | `bad_day` | `day` is not `YYYY-MM-DD`. Send the ET trading day as `YYYY-MM-DD`. |
| 401 | `no_key` | No key, or a revoked one. Send `Authorization: Bearer <key>` with a key of the product's scope. |
| 403 | `plan` | The account is not on the Orders API or Team plan. Move to the Orders API or Team plan. |
| 429 | `rate` | The day's calls are spent. Wait for midnight ET, when the count resets. |

## Request

```sh
curl \
  -H "Authorization: Bearer $FIRMTAPE_ORDERS_KEY" \
  "https://firmtape.com/orders/api/day?day=2026-10-09"
```

```python
import os, requests

H = {"Authorization": f"Bearer {os.environ['FIRMTAPE_ORDERS_KEY']}"}
r = requests.get("https://firmtape.com/orders/api/day?day=2026-10-09", headers=H)
print(r.status_code, r.text[:500])
```

```js
const r = await fetch("https://firmtape.com/orders/api/day?day=2026-10-09", {
  method: "GET",
  headers: { Authorization: `Bearer ${process.env.FIRMTAPE_ORDERS_KEY}` },
});
console.log(r.status, await r.text());
```

## Example response

```json
{
  "day": "2026-08-17",
  "sym": "SPX",
  "min_premium": 100000,
  "asof": "15:59:57",
  "orders": [
    {
      "oid": "p79654",
      "t": "13:43",
      "g": 7.25,
      "kind": "vertical",
      "legs": "7740P/7750P",
      "lg": [
        [
          7740,
          "P",
          1
        ],
        [
          7750,
          "P",
          -1
        ]
      ],
      "exp": "Aug 17",
      "size": 1958,
      "net": 0.15,
      "flip": 38,
      "side": "over"
    }
  ],
  "stats": {
    "n": 312,
    "net": 96.3,
    "no_side": 177,
    "no_gamma": 0,
    "gamma_up": 47,
    "gamma_dn": 74
  }
}
```

## Changes

- 2026-09-24: Added.
