> For the complete documentation index, see [llms.txt](https://resolvedmarkets.com/llms.txt). Every docs page is also served as Markdown: append `.md` to its URL or send `Accept: text/markdown`.

# Exchange Historical Snapshots

### GET /v1/exchange/snapshots — Exchange Historical Snapshots

Historical Hyperliquid orderbook time-series. Sampled at ~1/sec and deduplicated (unchanged books are skipped; a row is guaranteed at least every ~5s). Returns lightweight top-of-book metrics only — no full bid/ask arrays. Scale and Enterprise tiers only.

**Query parameters**

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `format` | string | no | json | Response encoding. csv and tsv return the row array as a flat file instead of a JSON envelope — the envelope moves to X-* response headers and nulls render as \N. REQUIRES SCALE OR ENTERPRISE (json is available on every tier). Works with includebook=true — the bids/asks ladders come through as compact JSON inside their cell, complete and parseable (pandas: df["bids"].apply(json.loads)). |
| `exchange` | string | yes | — | Exchange identifier |
| `symbol` | string | yes | — | Perp symbol — all 7 collected coins |
| `from` | string | no | — | Start timestamp (defaults to last 24h) |
| `to` | string | no | — | End timestamp |
| `limit` | number | no | 500 | Max rows (default 500, max 5000) |

**Example response**

```json
{
  "exchange": "hyperliquid_perp",
  "symbol": "BTC",
  "count": 100,
  "data": [
    {
      "timestamp": "2026-03-27 14:30:00.123",
      "best_bid": 87420.50,
      "best_ask": 87421.00,
      "mid_price": 87420.75,
      "spread": 0.50,
      "bid_depth_total": 4250000,
      "ask_depth_total": 3890000
    }
  ]
}
```
