High-performance Python client for the Tessera API — Hyperliquid datasets straight into Polars & DuckDB.
Project description
tessera-api
Clean Hyperliquid market data — straight into Polars & DuckDB.
The official Python client for Tessera — order-flow-enriched OHLCV, funding-rate, and positioning datasets built from raw Hyperliquid trade data, delivered as Parquet over a REST API.
tessera-api is built for quants and analysts who would rather write a query than babysit a
download. Point it at a (dataset, coin, month) and get a Polars LazyFrame or a DuckDB
relation back — read straight from object storage over range requests, with predicate and
projection pushdown. No temp files, no pandas round-trips, no glue code.
Install
pip install "tessera-api[polars]" # the headline path
pip install "tessera-api[duckdb]" # query with SQL instead
pip install "tessera-api[all]" # polars + duckdb + pandas escape hatch
Grab a free API key (no card required) at tesseralytics.dev and export it:
export TESSERA_API_KEY="sk_..."
Quickstart
import polars as pl
import tessera
client = tessera.TesseraClient() # reads $TESSERA_API_KEY
# Browse the catalog
for ds in client.datasets().datasets:
print(ds.name, ds.coins, ds.months.earliest, "→", ds.months.latest)
# One month of BTC minute candles → a Polars DataFrame. Read remotely, no temp files.
df = client.read("gold_ohlcv_1m", "BTC", "2026-05")
print(df.select("time", "close", "cvd", "vwap").tail())
# Lazy + pushdown: only the bytes you actually need cross the wire.
lf = client.scan("gold_ohlcv_1m", "BTC", tessera.MonthSpan("2025-10", "2026-05"))
big_prints = lf.filter(pl.col("aggressor_delta").abs() > 1_000).collect()
Prefer SQL?
rel = client.to_duckdb("gold_ohlcv_1m", ["BTC", "ETH"], "2026-05")
rel.filter("close > open").aggregate("coin, avg(cvd) AS mean_cvd, count(*) AS n", "coin").show()
Everything is async-native too — swap in tessera.AsyncTesseraClient and await it.
Why it's fast
- Remote range reads.
scan()hands Polars (or DuckDB) a presigned Parquet URL; only the footer and the row-groups/columns your query touches are fetched. - Lazy by default. Build a query graph across many months, then
.collect()once. - Parquet end-to-end. Tessera ships columnar Parquet; this client never detours through CSV
or
pandas.
Datasets
| Dataset | Granularity | Tier | Highlights |
|---|---|---|---|
gold_ohlcv_1m |
1 minute | Free + Pro | OHLCV, CVD, aggressor delta, VWAP, fees |
gold_funding_1h |
1 hour | Pro | Funding rates |
gold_positioning_1h |
1 hour | Pro | Open-interest / positioning analytics |
Free tier covers BTC, ETH, SOL, HYPE. Pro unlocks every coin (including HIP-3 markets) and the funding/positioning datasets. See the docs for the full column reference and recipes.
Documentation
- 📚 Guide & API reference: https://tesseralytics.dev/python-client
- 🧑💻 Runnable examples:
examples/ - 🌐 Product & pricing: https://tesseralytics.dev
License
MIT © Tessera. See LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tessera_api-0.1.0.tar.gz.
File metadata
- Download URL: tessera_api-0.1.0.tar.gz
- Upload date:
- Size: 132.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
85f621d9274e14d04a57b304b6193038f36f48f24c980c52745efd2b36df00af
|
|
| MD5 |
2a1cae45a50713751082f58a07ce1b1f
|
|
| BLAKE2b-256 |
6e81e4f3f10f47be2f7127dd4098e4c1c697b7acd3c53ed4a7a763457e2451df
|
Provenance
The following attestation bundles were made for tessera_api-0.1.0.tar.gz:
Publisher:
release.yml on tesseralytics/python-client
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tessera_api-0.1.0.tar.gz -
Subject digest:
85f621d9274e14d04a57b304b6193038f36f48f24c980c52745efd2b36df00af - Sigstore transparency entry: 1871233564
- Sigstore integration time:
-
Permalink:
tesseralytics/python-client@71772412b1f48db2b9798efd26c68ff1a5814169 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/tesseralytics
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@71772412b1f48db2b9798efd26c68ff1a5814169 -
Trigger Event:
push
-
Statement type:
File details
Details for the file tessera_api-0.1.0-py3-none-any.whl.
File metadata
- Download URL: tessera_api-0.1.0-py3-none-any.whl
- Upload date:
- Size: 32.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1e117ca71b5f4790706e13bcd6826138d5572439d7634e1c33f013f3f6816ad5
|
|
| MD5 |
cc08e4dc440a7ca70989032ff330b67a
|
|
| BLAKE2b-256 |
219eaf2840dc141a20c0a830a3bdff825850a07c4e1d6a0b81d67cb3fbf87d38
|
Provenance
The following attestation bundles were made for tessera_api-0.1.0-py3-none-any.whl:
Publisher:
release.yml on tesseralytics/python-client
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tessera_api-0.1.0-py3-none-any.whl -
Subject digest:
1e117ca71b5f4790706e13bcd6826138d5572439d7634e1c33f013f3f6816ad5 - Sigstore transparency entry: 1871233758
- Sigstore integration time:
-
Permalink:
tesseralytics/python-client@71772412b1f48db2b9798efd26c68ff1a5814169 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/tesseralytics
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@71772412b1f48db2b9798efd26c68ff1a5814169 -
Trigger Event:
push
-
Statement type: