# GET /v2/signals/{signal}/{ticker}/history/{interval}

**Signal history**

Returns a sequence of `{t, v}` bars for the requested signal × ticker at the chosen resolution. `t` is an ISO timestamp (or `YYYY-MM-DD` for daily/weekly). `v` is the signal value at that bar (a number for numeric signals, `true`/`false` for boolean flags).

## Plan access

- **Plan access.** Included on every plan.
- **Rate limit.** Hobby 60/min · Pro 2,000/min · Scale 10,000/min.
- **History.** Hobby 1y · Pro 5y · Scale all-time.

## Query / path parameters

| Name | In | Type | Required | Description |
|------|----|----|----------|-------------|
| `signal` | path | string | yes | A column on the wide-state tables (matches the schema page 1:1). Example: `rsi_14`. |
| `ticker` | path | string | yes | Ticker symbol. Example: `AAPL`. |
| `interval` | path | string | yes | Resolution. Daily-only signals (SMAs, RSI, MACD, fundamentals) are not stored at minute/hourly resolution; request `1d` for those. Enum: `1m`, `1h`, `1d`, `1w`. |
| `from` | query | string | no | Earliest bar timestamp (inclusive). YYYY-MM-DD or ISO. Defaults to your plan's history window. |
| `to` | query | string | no | Latest bar timestamp (inclusive). YYYY-MM-DD or ISO. Defaults to "now". |
| `limit` | query | integer | no | Page size. Max 1000. Default: `252`. |
| `cursor` | query | string | no | Opaque cursor. Walks back in time page-by-page from the most-recent bar. |

## Status codes

- **200** — Page of bars with `as_of`, `count`, `next_cursor`, and `bars`. Bars are returned in chronological order (earliest first); cursors walk backward through history.
- **400** — Invalid interval, signal not available at the chosen interval, beyond plan history window, or invalid cursor.
- **401** — Missing or invalid API key.

## Sample response

```json
{
  "as_of": "2026-05-14T11:41:01.000Z",
  "ticker": "AAPL",
  "signal": "rsi_14",
  "interval": "1d",
  "count": 5,
  "next_cursor": "eyJiZWZvcmVfdHMiOiIyMDI2LTA1LTA4In0",
  "bars": [
    { "t": "2026-05-08", "v": 72.94 },
    { "t": "2026-05-09", "v": 71.41 },
    { "t": "2026-05-12", "v": 73.21 },
    { "t": "2026-05-13", "v": 71.88 },
    { "t": "2026-05-14", "v": 70.55 }
  ]
}
```

## Examples

### AAPL RSI(14), daily, last week

Request:

```shell
curl "https://api.tickerbot.io/v2/signals/rsi_14/AAPL/history/1d?limit=5" \
  -H "Authorization: Bearer YOUR_KEY"
```

Response (`200`):

```json
{
  "as_of": "2026-05-14T11:41:01.000Z",
  "ticker": "AAPL",
  "signal": "rsi_14",
  "interval": "1d",
  "count": 5,
  "next_cursor": "eyJiZWZvcmVfdHMiOiIyMDI2LTA1LTA4In0",
  "bars": [
    { "t": "2026-05-08", "v": 72.94 },
    { "t": "2026-05-09", "v": 71.41 },
    { "t": "2026-05-12", "v": 73.21 },
    { "t": "2026-05-13", "v": 71.88 },
    { "t": "2026-05-14", "v": 70.55 }
  ]
}
```

### NVDA minute price, intraday

Request:

```shell
curl "https://api.tickerbot.io/v2/signals/price/NVDA/history/1m?from=2026-05-14T13:30:00Z&limit=3" \
  -H "Authorization: Bearer YOUR_KEY"
```

Response (`200`):

```json
{
  "as_of": "2026-05-14T11:41:01.000Z",
  "ticker": "NVDA",
  "signal": "price",
  "interval": "1m",
  "count": 3,
  "next_cursor": null,
  "bars": [
    { "t": "2026-05-14T13:30:00.000Z", "v": 226.41 },
    { "t": "2026-05-14T13:31:00.000Z", "v": 226.55 },
    { "t": "2026-05-14T13:32:00.000Z", "v": 226.62 }
  ]
}
```

### Boolean flag history: did AAPL hit a 52w high?

Request:

```shell
curl "https://api.tickerbot.io/v2/signals/at_52w_high/AAPL/history/1d?limit=5" \
  -H "Authorization: Bearer YOUR_KEY"
```

Response (`200`):

```json
{
  "as_of": "2026-05-14T11:41:01.000Z",
  "ticker": "AAPL",
  "signal": "at_52w_high",
  "interval": "1d",
  "count": 5,
  "next_cursor": "eyJiZWZvcmVfdHMiOiIyMDI2LTA1LTA4In0",
  "bars": [
    { "t": "2026-05-08", "v": false },
    { "t": "2026-05-09", "v": false },
    { "t": "2026-05-12", "v": true  },
    { "t": "2026-05-13", "v": true  },
    { "t": "2026-05-14", "v": false }
  ]
}
```

## Notes

- Coverage: minute bars are stored for the top-200 tickers by 30-day dollar volume (2-year window). All ~12,000 tickers have daily bars going back as far as Polygon supports (typically 2003 or IPO date).
- Minute and hourly resolutions only carry minute-tier columns (price, day_change_pct, gap_pct, volume_today, day_vwap, relative_volume, position-in-52w columns, pct_from_sma_50/200, pct_from_vwap). Daily-only columns (SMAs, RSI, MACD, fundamentals) return `signal_not_available_at_interval` if requested at 1m or 1h.

---

Interactive sandbox + parameter editor: https://tickerbot.io/api/endpoints/signals/history
