Authentication
There is only one URL for everyone — you never change it:
https://api.tillacrypto.com
All endpoints live under /v1.
What the API supports
| Feature | Support |
|---|---|
| HTTPS | HTTPS only, TLS 1.2 or newer, HSTS |
| Auth | your key in a header: X-API-Key or Authorization: Bearer |
| CORS | open to every origin: call it from a browser app, a notebook or a dashboard on any site (no cookies, ever) |
| Formats | json, csv, ndjson, parquet with ?format= |
| Compression | gzip |
| Rate limits | X-RateLimit-* headers on every keyed answer; 429 with Retry-After |
| Paging | X-More and X-Next-Start headers |
| Live | Server-Sent Events on /v1/<tier>/stream, plus tick, resume and changes |
| Errors | JSON body with the HTTP status; X-Request-Id on every answer |
| Machine-readable | OpenAPI 3, llms.txt and an MCP server for AI agents |
Every data call needs a key. Send it in either header:
X-API-Key: tk_live_xxxxxxxxxxxxxxxxxxxxxxxx
Authorization: Bearer tk_live_xxxxxxxxxxxxxxxxxxxxxxxx
Getting a key. Create a free account and press Generate on your dashboard — or, with no account at all, POST /v1/demo_key returns a free key (one per address per day). A paid plan upgrades the key you already have; nothing to change in your code.
The tier is in the path. GET /v1/<tier>/raw/<lane> serves that tier's slice, and your key must be that tier or higher. A Pro key may call /v1/free/... and is served the Free slice; a Free key calling /v1/pro/... gets 403.
- No key → 401. An unknown or revoked key → 403. A bad key never silently downgrades to Free.
- Rotate any time from your dashboard: the old key stops instantly, your plan and history carry over.
- Your key is yours: never publish it in a public web page or a public repo. For a public site, call TILLA from your own server.
curl -H "X-API-Key: tk_live_xxx" \
"https://api.tillacrypto.com/v1/free/raw/1min?series=btc_close,eth_close&limit=5"
Formats: json (default), csv, ndjson or parquet on every data call, with ?format=.
Timestamps are UTC: YYYY-MM-DD HH:MM:SS, and YYYY-MM-DD on daily and slower lanes. timestamp is always the first column. A bar labelled T covers the period ending at T — the 12:00:00 hourly bar is 11:00 to 12:00.