# Implied-volatility term structure per symbol

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

API: Heatseeker.

The symbol's implied-volatility term structure: one row per listed expiry
used (days to expiry and the implied vol there), for contango/backwardation
reads. The headline slope and curve state are in `/v1/vol/iv`.
Optional `term.earnings_context` describes scheduled earnings exposure in the
calendar-day 9-day and 30-day readings. `overlap_9d` and `overlap_30d` are
`none` (before the known report), `partial` (spans the report), `full`
(includes it), or null (unavailable). A report beyond nine days can already
overlap the 9-day reading. This does not attribute premium or predict a flip.
`date` and `timing` (`bmo` / `amc`) describe the recorded report, which can
change; `within_9d` is nullable. `status` is `scheduled`, `limited`,
`calendar_unavailable`, `no_report`, `timing_unknown`, or `report_passed`.
Missing fields and nulls must not be treated as `none`.
Response: `data.symbols[]` has `symbol`, `asOf`, `sessionDate`, `stale` and `term`.
Symbols Tempest does not cover are listed in `data.missing`. **Cost:** 1 credit per call (up to 10 symbols).

## 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`. |

## Example request

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

## Responses

### 200

OK.

Shape (placeholder values):

```json
{
  "data": {
    "symbols": [
      {
        "symbol": "string",
        "asOf": "string",
        "sessionDate": "string",
        "stale": false
      }
    ],
    "missing": [
      {
        "symbol": "string",
        "reason": "not_covered"
      }
    ]
  },
  "meta": {
    "module": "string",
    "asOf": "string",
    "sessionDate": "string",
    "marketState": "pre_open",
    "frozen": false,
    "publishedAt": "string",
    "cached": false,
    "attribution": {
      "text": "Powered by Skylit",
      "url": "string",
      "required": false,
      "license": "personal",
      "shareable": false,
      "shareClass": "derived",
      "terms": "string"
    }
  }
}
```

### 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.
