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.
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 to see them.
Getting started
Sign up with Google or email — no card required for the free tier. Then open your 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 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 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.
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.
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 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.