Programmatic Data Access
REST API endpoints for automated data workflows. Authenticate with a Bearer token, request any instrument, and receive a signed download URL — all in a single HTTP call.
How It Works
Three steps from API key to data in your pipeline.
Get API Key
Subscribe to the Enterprise tier and receive a unique il_xxxxx API key via email.
Query Endpoint
Send a GET request to /api/deliver with your API key in the Authorization header.
Download Data
Receive a JSON response containing a time-limited signed download_url — stream it directly into your pipeline.
API Documentation
Everything you need to integrate Imbalance Labs data into your automated workflows.
Endpoint
/api/deliver?key=datasets/full/{ticker}_5m_depth10_derived.csv.gzReplace {ticker} with the uppercase instrument symbol (e.g., BTC, ETH, SOL).
Authentication
Include your API key in the Authorization header using the Bearer scheme:
Authorization: Bearer il_your_api_key_hereResponse
A successful request returns a JSON object with a signed, time-limited download URL:
{
"download_url": "https://xxxxxxxxx.blob.vercel-storage.com/datasets/full/BTC_5m_depth10_derived.csv.gz?token=...",
"key": "datasets/full/BTC_5m_depth10_derived.csv.gz",
"expires_in": "5 minutes"
}Example — curl
# Fetch a signed download URL for BTC orderbook data
curl -s \
-H "Authorization: Bearer il_your_api_key_here" \
"https://imbalancelabs.com/api/deliver?key=datasets/full/BTC_5m_depth10_derived.csv.gz"
# Download the file using the returned URL
curl -o BTC_5m_depth10_derived.csv.gz "$(
curl -s \
-H "Authorization: Bearer il_your_api_key_here" \
"https://imbalancelabs.com/api/deliver?key=datasets/full/BTC_5m_depth10_derived.csv.gz" \
| jq -r '.download_url'
)"Example — Python
import requests, gzip, io
import pandas as pd
API_KEY = "il_your_api_key_here"
BASE = "https://imbalancelabs.com"
TICKER = "BTC"
# 1. Get signed download URL
resp = requests.get(
f"{BASE}/api/deliver",
params={"key": f"datasets/full/{TICKER}_5m_depth10_derived.csv.gz"},
headers={"Authorization": f"Bearer {API_KEY}"},
)
resp.raise_for_status()
download_url = resp.json()["download_url"]
# 2. Download & load into pandas
data = requests.get(download_url).content
df = pd.read_csv(io.BytesIO(data), compression="gzip")
print(f"Loaded {len(df):,} rows × {len(df.columns)} columns")
print(df.head())Available Datasets
All 24 instruments accessible via the API. Use the key path in your ?key= query parameter.
| # | Ticker | API Key Path |
|---|---|---|
| 01 | BTC | datasets/full/BTC_5m_depth10_derived.csv.gz |
| 02 | ETH | datasets/full/ETH_5m_depth10_derived.csv.gz |
| 03 | SOL | datasets/full/SOL_5m_depth10_derived.csv.gz |
| 04 | BNB | datasets/full/BNB_5m_depth10_derived.csv.gz |
| 05 | XRP | datasets/full/XRP_5m_depth10_derived.csv.gz |
| 06 | DOGE | datasets/full/DOGE_5m_depth10_derived.csv.gz |
| 07 | ADA | datasets/full/ADA_5m_depth10_derived.csv.gz |
| 08 | AVAX | datasets/full/AVAX_5m_depth10_derived.csv.gz |
| 09 | LINK | datasets/full/LINK_5m_depth10_derived.csv.gz |
| 10 | DOT | datasets/full/DOT_5m_depth10_derived.csv.gz |
| 11 | NEAR | datasets/full/NEAR_5m_depth10_derived.csv.gz |
| 12 | SUI | datasets/full/SUI_5m_depth10_derived.csv.gz |
| 13 | OP | datasets/full/OP_5m_depth10_derived.csv.gz |
| 14 | ARB | datasets/full/ARB_5m_depth10_derived.csv.gz |
| 15 | SEI | datasets/full/SEI_5m_depth10_derived.csv.gz |
| 16 | TIA | datasets/full/TIA_5m_depth10_derived.csv.gz |
| 17 | INJ | datasets/full/INJ_5m_depth10_derived.csv.gz |
| 18 | APT | datasets/full/APT_5m_depth10_derived.csv.gz |
| 19 | FIL | datasets/full/FIL_5m_depth10_derived.csv.gz |
| 20 | LTC | datasets/full/LTC_5m_depth10_derived.csv.gz |
| 21 | ETC | datasets/full/ETC_5m_depth10_derived.csv.gz |
| 22 | WIF | datasets/full/WIF_5m_depth10_derived.csv.gz |
| 23 | XLM | datasets/full/XLM_5m_depth10_derived.csv.gz |
| 24 | ATOM | datasets/full/ATOM_5m_depth10_derived.csv.gz |
API Pricing
One plan. Full programmatic access to every instrument.
- ✓Dedicated API key with Bearer token authentication
- ✓Full access to all 24 instruments — 5m depth-10 datasets
- ✓Daily automated updatesComing Soon
- ✓Dedicated support — direct email line
- ✓Custom datasets — instruments, timeframes, depth levels on request
Frequently Asked Questions
Q1What are the API rate limits?
Enterprise API keys are currently limited to 60 requests per minute and 1,000 requests per day. Each request generates a time-limited signed download URL. If you need higher throughput for batch pipelines, contact us to discuss a custom rate limit increase.
Q2How fresh is the data?
The 5-minute depth datasets are currently updated on a monthly cadence. Daily automated updates are on our roadmap and will be available to all Enterprise API subscribers at no additional cost once launched.
Q3How do I manage or rotate my API key?
API keys are issued manually during onboarding. If you need to rotate your key (e.g., after a suspected leak), email imbalancelabs@gmail.com and we will generate a new key and invalidate the old one within 24 hours. Self-service key management is coming soon.