# Daily Tempest history per symbol

`GET https://api.skylit.ai/v1/vol/history`

API: Heatseeker.

One row per stored session, at that session's close (15:59 ET): OHLC,
SVX per tenor and weekend-adjusted, ATM vol, term slope,
30-day risk reversal / butterfly / ATM vol / skew slope, tilt, chain
depth (`n_used`), `calc_v`. Columnar: `dates[]` plus one array per
field in `columns`. Every value was knowable at that session's close;
features from session D predict D+1 onward. History starts where
Tempest's backfill does (up to about two years); `/v1/vol/symbols`
shows each symbol's last stored session.

**Cost:** per symbol-day: 1 credit per 10 symbol-weekdays in the
requested window, rounded up, minimum 1 (1 symbol x the default month
is 3; 10 symbols x one year is 261). Computed from the request, so
known before the call; holidays are not discounted.

## Authentication

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

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `symbols` | query | string | yes | Comma-separated Tempest symbols (up to 10). Tempest keys the S&P complex on the option root `SPXW` and Nasdaq-100 on `NDXP`; see `/v1/vol/symbols`. |
| `from` | query | string (date) | no | First session (`YYYY-MM-DD`, ET). Default one month before `to`. |
| `to` | query | string (date) | no | Last session, inclusive. Default today (ET). At most 800 calendar days after `from`. |
| `fields` | query | string | no | Comma-separated columns to return (default all). |

## Example request

```bash
curl "https://api.skylit.ai/v1/vol/history?symbols=NVDA,SPY" \
  -H "Authorization: Bearer $SKYLIT_API_KEY"
```

## Responses

### 200

OK.

Shape (placeholder values):

```json
{
  "data": {
    "from": "string",
    "to": "string",
    "symbols": [
      {
        "symbol": "string",
        "dates": [
          "string"
        ],
        "columns": {}
      }
    ],
    "missing": [
      {
        "symbol": "string",
        "reason": "not_covered"
      }
    ]
  },
  "meta": {
    "module": "string",
    "asOf": "string",
    "sessionDate": "string",
    "marketState": "pre_open",
    "frozen": false,
    "publishedAt": "string",
    "cached": false
  }
}
```

### 400

Request validation failed.

### 401

Missing API key (`unauthorized`), sent by the gateway.

### 402

Out of credits (`insufficient_credits`).

### 403

As `Forbidden`, or `not_entitled`: Tempest data is not enabled for this
account (it is in preview). Refunded.

### 404

Unknown symbol, no data available, or none of the requested
`expirations` exist for the symbol (`code: expiration_not_found`).

### 429

Per-minute rate limit exceeded.

Headers: `Retry-After`.

### 503

Tempest data is loading (`warming_up`, with `Retry-After`) or not configured (`unavailable`). Refunded.

### 504

The request did not finish in time (`gateway_timeout`). Refunded;
retry, or narrow the request.
