Source: https://tesseralytics.dev/faq

# Frequently asked questions

How the datasets are built, the caveats worth knowing before you backtest, and how plans and the API work. Still stuck? Email [info@tesseralytics.dev](mailto:info@tesseralytics.dev).

[Get a free API key](https://tesseralytics.dev/account) [Browse the catalog](https://tesseralytics.dev/datasets)

## The name

Tessera is Latin for a small tile — one piece of a larger picture.

The product is shaped the same way. Two large tiles are the ways in: the MCP intelligence layer, which answers cross-sectional questions in one call, and the REST API, which hands you the Parquet files. Every dataset beneath them is a small tile — one exact piece of the market. [Browse the catalog](https://tesseralytics.dev/datasets) to see them.

## Getting started

Sign up with Google or email — no card required for the free tier. Then open your [Account](https://tesseralytics.dev/account) page and create an API key. The raw key is shown **exactly once** at creation, so copy it somewhere safe. You can create more keys or revoke old ones at any time; revoked keys stop working immediately.

Pass your key as a bearer token. List what you can access with:

```
curl -H "Authorization: Bearer $TESSERA_API_KEY" \
  https://tesseralytics.dev/v1/datasets
```

See the full reference on the [API Docs](https://tesseralytics.dev/api-docs) page.

For a **closed month** the `…/download` endpoint returns a **302 redirect** to a temporary download URL. Follow redirects (`curl -L`) to stream the file straight to disk, then load it with Polars, pandas or DuckDB. If you'd rather receive the URL itself instead of being redirected, send `Accept: application/json` and you'll get a JSON body with the link.

The **current month** is still being written, so it is a set of per-day files instead of one — the same endpoint answers with JSON listing one URL per day. Fetch each and concatenate them.

## The data

The datasets are **sparse, not gap-filled**. A bucket only exists if there was activity in it — so in `gold_ohlcv_1m`, a one-minute bucket with **no trades has no row at all** (rather than a zero-volume/flat-price row). The same applies to the hourly datasets. If your model needs a continuous time grid, resample or forward-fill on your side after downloading — that way you stay in control of how gaps are treated.

All timestamps are **UTC** with microsecond (`µs`) precision. Each row's time column is the *start* of its bucket (e.g. the minute or hour bucket start).

Every dataset is partitioned per `(coin, month)`. A **closed month is a single Parquet file**: download one `(coin, month)` file per request and concatenate months locally to assemble a longer history.

The **current month is one file per day** (it is still being written, and a new day should not mean rewriting a whole month). Requesting it from the same `…/download` endpoint returns a list of URLs, one per day so far — fetch each and concatenate them in date order.

Running totals — cumulative volume delta (CVD), cumulative funding, and similar — are **spliced continuously across month boundaries**. The first row of a month carries on from where the previous month ended, so the series is already continuous; do **not** reset it to zero when you stitch consecutive months together.

NULL means "not defined for this row," not zero. For example `account_ls_ratio` is NULL when there are no shorts to divide by, and several concentration metrics are NULL when a side is empty. Each column's exact semantics are documented on the [Datasets](https://tesseralytics.dev/datasets) page.

HIP-3 (Hyperliquid Improvement Proposal 3) lets anyone deploy a perpetual futures market on Hyperliquid. Most HIP-3 markets track real-world assets — equity ETFs like `xyz:NVDA`, `xyz:TSLA`, `xyz:QQQ`, commodity ETFs like `xyz:GLD`, and crypto-native tokens deployed by third-party builders. They trade alongside core perps with the same full-depth order book, settlement and liquidation mechanics — but on assets Hyperliquid itself doesn't list. HIP-3 markets are **Pro-only** and available from **September 2025**, covering every HIP-3 launch from day one.

Core perps use their plain symbol (e.g. `BTC`, `ETH`). HIP-3 (builder-deployed) markets are namespaced by their deployer in lowercase, e.g. `xyz:NVDA`. HIP-3 markets are Pro-only.

Data is refreshed **every hour**: each hour's trades reach the gold datasets about half an hour after the hour closes, so a UTC day is complete by roughly **00:30 UTC** the following day and the current day's bars are already available. Partitions are per `(coin, month)`, and the current partial month is included — it's rewritten every hour alongside the closed months. The public `/v1/catalog` manifest says exactly what is there: `is_open` marks the month still being written and `last_time` is the newest row it holds. There's **no formal SLA or uptime guarantee** and we don't issue credits for delays.

Occasionally, yes. When upstream Hyperliquid data is missing for a window, that window is absent downstream too — it isn't synthesised or interpolated. This is rare, but worth handling defensively if your pipeline assumes unbroken coverage.

## Plans & billing

**Free** gives you order-flow-enriched minute OHLCV (`gold_ohlcv_1m`) — CVD, aggressor delta, VWAP, fees and more — for BTC, ETH, SOL and HYPE over the trailing month, with no card required. **Pro** ($29/mo) unlocks **full history**, adds the raw funding (`gold_funding_1h`) and positioning (`gold_positioning_1h`) datasets, and opens **all coins, including HIP-3 markets**. See [Pricing](https://tesseralytics.dev/pricing).

No. Every plan is all-you-can-eat — unlimited downloads, no per-GB egress fees. Pull the whole history as often as you like.

A flat-priced, one-time purchase of the closed months of all three datasets — the newest month sold is the last one finalised when you buy, the open month is never included, and the scope never grows afterwards. All three bundles carry the same three datasets and differ only in the markets they cover: the four majors (BTC, ETH, SOL and HYPE), the markets of the xyz HIP-3 deployer only (one of ten live HIP-3 deployers), or every coin we carry. The entitlement is perpetual and lives on your account — every API key you hold inherits it, and cancelling a Pro subscription does not affect it. Pro already includes the same content today, so a bundle is a perpetual copy of what you can already reach. A bundle grants no MCP entitlement: the intelligence layer stays subscription-only. See [Pricing](https://tesseralytics.dev/pricing#bundles).

If a coin or month falls outside your plan, the API returns **404** rather than 403. That's deliberate: it keeps the shape of the full catalog opaque to lower tiers. Upgrade to Pro to unlock funding, positioning and all coins.

Upgrade from your [Account](https://tesseralytics.dev/account) page — checkout is handled by Stripe. The same page links to the Stripe billing portal, where you can update your card or cancel. Cancelling stops the renewal; your Pro access continues until the end of the current billing period, then reverts to Free. Fees are non-refundable — there are no partial refunds for the unused part of a period.

## API & formats

Send your API key as a bearer token on every `/v1` request: `Authorization: Bearer <your-api-key>`. Account management endpoints use your signed-in browser session instead.

Everything is **Apache Parquet** — columnar, typed and compressed. It drops straight into Polars, pandas (`pd.read_parquet`) or DuckDB (`SELECT * FROM 'file.parquet'`) with no conversion.

Download URLs are **short-lived** by design. If a link has expired, just call the `…/download` endpoint again to mint a fresh one. Don't cache or share the URL itself — cache the dataset file, not the link.
