# Daily history for a ticker

`GET https://flow-api.skylit.ai/v1/underlying/{ticker}/history`

API: Flowseeker.

Daily aggregates (premium, volume, call/put split, net premium)
between `startDate` and `endDate` (inclusive), one row per
trading day with activity.

## Authentication

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

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `ticker` | path | string | yes | Underlying ticker symbol (uppercase, e.g. `SPY`, `AAPL`). |
| `start_date` | query | string (date) | yes |  |
| `end_date` | query | string (date) | yes |  |

## Example request

```bash
curl "https://flow-api.skylit.ai/v1/underlying/SPY/history?start_date=2026-01-02&end_date=2026-01-31" \
  -H "Authorization: Bearer $SKYLIT_API_KEY"
```

## Responses

### 200

One row per trading day.

Shape (placeholder values):

```json
{
  "data": [
    {
      "date": "string",
      "totalPremium": 0,
      "totalVolume": 0,
      "callPremium": 0,
      "putPremium": 0,
      "callVolume": 0,
      "putVolume": 0,
      "netPremium": 0
    }
  ],
  "meta": {
    "timestamp": "string",
    "requestId": "d7574836"
  }
}
```

### 400

Request validation failed.

invalidParam:

```json
{
  "error": {
    "code": "BAD_REQUEST",
    "message": "Invalid parameter 'timeframe': must be one of [1m, 5m, 15m, 1h, 4h, 1d, 1w, 1M]"
  }
}
```

### 401

Missing or invalid API key.

missingKey:

```json
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Authentication required"
  }
}
```

### 402

The account's shared Skylit credit balance is lower than this route's cost. Top up to continue. Carries `X-Credits-Remaining: 0`.

Headers: `X-Credits-Remaining`.

outOfCredits:

```json
{
  "error": {
    "code": "insufficient_credits",
    "message": "Out of credits. Top up to continue making requests."
  }
}
```

### 429

Per-minute rate limit exceeded.

Headers: `Retry-After`.

tooFast:

```json
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Rate limit of 100 req/min exceeded. Retry after 18s."
  }
}
```
