# Intraday chart bars for a contract

`GET https://flow-api.skylit.ai/v1/contract/{symbol}/chart`

API: Flowseeker. Credits: 3.

Time-bucketed bars for a single contract — granular bid/mid/ask
execution split, premium and volume per side, daily cumulative
totals, VWAP, and (when available) IV and 30D average baselines.

## Authentication

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

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `symbol` | path | string | yes | OPRA option symbol in URL-safe form: `{ticker}__{YYMMDD}{C\|P}{strike×1000, 8 digits}` — the ticker and the 15-character contract block are joined by a **double underscore** (`__`). For example, an AAPL $250 call expiring 2026-01-17 is `AAPL__260117C00250000`. (A space-padded 21-char OCC form such as `AAPL 260117C00250000` is also accepted on some endpoints, but the `__` form is canonical and works across all contract routes.) |
| `interval` | query | string | yes | Trailing window — `{N}D` where N is 1–365 (e.g. `1D`, `7D`). |
| `bucket` | query | string | yes |  (one of `1min`, `5min`, `10min`, `15min`, `30min`, `1d`, `1w`) |

## Example request

```bash
curl "https://flow-api.skylit.ai/v1/contract/SPY__250516C00580000/chart?interval=1D&bucket=<bucket>" \
  -H "Authorization: Bearer $SKYLIT_API_KEY"
```

## Responses

### 200

Intraday bars for the contract.

Shape (placeholder values):

```json
{
  "data": [
    {
      "timestamp": "string",
      "timestampEnd": "string",
      "belowBidVolume": 0,
      "bidVolume": 0,
      "aboveBidVolume": 0,
      "midVolume": 0,
      "belowAskVolume": 0,
      "askVolume": 0,
      "aboveAskVolume": 0,
      "noSideVolume": 0,
      "candleVolume": 0,
      "candleVolumeNoMl": 0,
      "candlePremium": 0,
      "belowBidPremium": 0,
      "bidPremium": 0,
      "aboveBidPremium": 0,
      "midPremium": 0,
      "belowAskPremium": 0,
      "askPremium": 0,
      "aboveAskPremium": 0,
      "noSidePremium": 0,
      "dailyVolume": 0,
      "dailyPremium": 0,
      "vwap": 0,
      "iv": 0,
      "avgVolume": 0,
      "avgPremium": 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."
  }
}
```
