Developer API
TradeSys API v1
Programmatic access to every trade, every exchange, every token. Server-side, perpetual, tick-level. REST over HTTPS. Bearer-token auth. Edge-cached responses.
Authentication
Every request to /api/v1/* must carry a Bearer key. Create one at /settings/api-keys.
curl -H "Authorization: Bearer ts_live_..." \ https://tradesys.io/api/v1/tokens
Keys are returned in full exactly once. Store them securely — we only retain a sha256 hash, so a lost key cannot be recovered.
Pricing & limits
Free
$0
- Req / min
- 60
- Monthly quota
- 1,000 / mo
Public + listed-token endpoints. Hard 429 / 402 at limit.
Pro
$29 / mo
- Req / min
- 300
- Monthly quota
- 100,000 / mo
Same surface as Free, higher cadence. Suits a single polling bot at 30s.
Enterprise
contact sales
- Req / min
- 1,200
- Monthly quota
- 2,000,000 / mo
High-cadence consumers + multiple bots. Custom SLA on request.
Internal
recommendedself-mint
- Req / min
- uncapped
- Monthly quota
- uncapped
Internal-grade tier for first-party bots and admin-analytics endpoints. Bypasses both rate gates.
Every response carries X-RateLimit-Remaining-Minute and X-RateLimit-Remaining-Month headers. 429 on per-minute breach, 402 on quota exhaustion. Internal-tier keys skip both checks and unlock the admin-analytics surface below.
Endpoints
/api/v1/tokensList every trade-analysis token TradeSys tracks. Metadata only — use the per-token endpoints for market data.
curl -H "Authorization: Bearer $KEY" \
https://tradesys.io/api/v1/tokens
# { "tokens": [{ "id": "helium", "symbol": "HNT", "name": "Helium", ... }], "count": 23 }/api/v1/tokens/{id}/marketsCross-venue liquidity snapshot. 24h volume, VWAP, cross-venue median price, three synthetic slippage bands per venue.
curl -H "Authorization: Bearer $KEY" \
https://tradesys.io/api/v1/tokens/helium/markets
# { "token_id": "helium", "markets": [
# { "exchange": "binance", "volume_24h": 12340000,
# "price_last": 2.41, "slippage_10k_bps": 2.3, ... },
# ...
# ], "count": 37 }/api/v1/tokens/{id}/tradesPaginated trades across every venue for a token. Forward streaming: poll with ?since=<cursor_newest>. Historical backfill: walk backward with ?before=<cursor_oldest>.
Query params
- since
- (number) Epoch ms — return trades newer than this. For live polling pass cursor_newest from the prior response.
- before
- (number) Epoch ms — return trades older than this. For historical backfill pass cursor_oldest from the prior response.
- limit
- (number) Max 100000. Default 100.
- exchange
- (string) Optional venue filter (binance, uniswap, etc.).
curl -H "Authorization: Bearer $KEY" \
"https://tradesys.io/api/v1/tokens/helium/trades?limit=1000"
# { "token_id": "helium",
# "trades": [
# { "id": "binance-HNTUSDT-123", "ts": 1776580487000,
# "price": 2.41, "size": 23.5, "side": "buy",
# "exchange": "binance", "pair": "HNTUSDT" },
# ...
# ],
# "cursor": 1776580487000,
# "cursor_newest": 1776580487000,
# "cursor_oldest": 1776580401000,
# "count": 1000 }/api/v1/tokens/{id}/exportStreaming bulk export of every trade for a token. NDJSON or CSV. Use for one-time bot backfill — then switch to /trades?since=<last_ts> for live updates. Internal-tier keys recommended (no quota burn).
Query params
- format
- (string) jsonl (default) or csv.
- exchange
- (string) Optional venue filter.
- from
- (number) Epoch ms inclusive lower bound. Default 0.
- to
- (number) Epoch ms exclusive upper bound. Default = now.
curl -H "Authorization: Bearer $KEY" \ "https://tradesys.io/api/v1/tokens/eat/export?format=jsonl" \ -o eat-trades.jsonl # 1.5M+ trades stream in ~30s on internal tier
/api/v1/tokens/{id}/insightsAI-generated commentary + signal stream for a token. Same data that powers the /tbt-analysis page's signal feed: typed insights with title, message body, severity, and metadata. Types include commentary (AI narrative), whale, wash, smart, spike, volume, arb, liquidity, burst, cluster, derivatives. Newest-first by generated_at.
Query params
- since
- (number) Epoch ms — insights generated after this. For live polling pass cursor_newest from the prior response.
- before
- (number) Epoch ms — insights older than this. For backfill pass cursor_oldest.
- limit
- (number) 1-1000, default 100.
- type
- (string) Comma-separated filter (e.g. type=commentary,wash). Omit for all types.
- ai_only
- (boolean) true to return only ai_generated=TRUE rows (the narrative commentary). Default false.
- min_severity
- (number) Filter by severity, default 1.
- include_expired
- (boolean) Include rows past expires_at (historical analysis). Default false.
# Stream just the AI commentary, live polling
curl -H "Authorization: Bearer $KEY" \
"https://tradesys.io/api/v1/tokens/375ai/insights?ai_only=true&limit=20"
# { "token_id": "375ai", "symbol": "EAT",
# "insights": [
# { "id": 280788, "type": "commentary", "severity": 1, "token": "EAT",
# "title": "Bitmart premium: $0.02911 vs Kraken $0.0289",
# "message": "0.7% arb spread between Bitmart and Kraken on a token with active wash signals — the arb bots are eating well, at least.",
# "metadata": {"kind": "commentary", "ai_driven": true},
# "ai_generated": true,
# "generated_at": "2026-05-10T09:07:05.771Z", "generated_ts": 1778425625771,
# "expires_at": "2026-05-10T13:07:05.771Z", "expires_ts": 1778440025771,
# "dedupe_key": "..." },
# ...
# ],
# "cursor_newest": 1778425625771, "cursor_oldest": 1778425500000, "count": 20 }/api/v1/tokens/{id}/depth-historyOrder-book ±2% depth time-series per (token, exchange, pair). Sourced from liquidity_snapshots, refreshed every 5 minutes. Use for routing decisions, spread monitoring, depth-aware position sizing.
Query params
- exchange
- (string) Required. Exchange id (binance, bitmart, biconomy, ...).
- pair
- (string) Optional exact pair (e.g. EAT/USDT). When omitted, sums depth across all pairs on that exchange.
- hours
- (number) Lookback 1–168, default 24.
curl -H "Authorization: Bearer $KEY" \
"https://tradesys.io/api/v1/tokens/helium/depth-history?exchange=binance&hours=24"
# { "token_id": "helium", "exchange": "binance", "pair": null, "hours": 24,
# "points": [
# { "ts": 1776580487000, "ask_2pct_usd": 312445.2,
# "bid_2pct_usd": 287901.4, "mid_price": 2.41, "spread_pct": 0.04 },
# ...
# ],
# "summary": { "latest_ask": 312445.2, "latest_bid": 287901.4,
# "ask_change_pct": -2.1, "bid_change_pct": 1.4, "count": 288 } }Internal-tier analytics endpoints
Three deeper analytics endpoints accept either an admin session OR an internal-tier API key. Free / Pro / Enterprise tiers are not authorized — these are admin-grade analytics with no rate limits attached. Mint an internal key at /settings/api-keys via:
curl -X POST -H "Content-Type: application/json" \
-d '{"tier":"internal","label":"my-bot"}' \
https://tradesys.io/api/api-keys -b "<your-session-cookie>"Then call:
/api/admin/exchange-analysisPer-exchange behaviour metrics for a token over its full collection history. Lifetime + recent (24h/7d/30d) stats, behavioural distribution (avg/median/p95 trade size USD, price stability), order-book depth (latest + 7d averages), status (collection_enabled/banned/disabled_reason).
Query params
- token
- (string) Required. Token slug or symbol (e.g. 375ai or EAT).
curl -H "Authorization: Bearer ts_int_..." \ "https://tradesys.io/api/admin/exchange-analysis?token=375ai"
/api/admin/sell-impact-analysisEmpirical realized price impact of historical sells, bucketed by sell size USD. For every past sell on USD-quoted pairs, computes the same venue's MIN(price) over the next 5 min and 15 min, then aggregates into median/p25/p75 drop_pct per (exchange, size_bucket).
Query params
- token
- (string) Required. Token slug or symbol.
- days
- (number) Lookback 1-90, default 30.
- min_notional
- (number) Min sell size USD to include, default 50.
curl -H "Authorization: Bearer ts_int_..." \ "https://tradesys.io/api/admin/sell-impact-analysis?token=375ai&days=30"
/api/admin/venue-dislocationCross-venue price dislocation analyzer + wash signature. For every minute the target venue traded, compares its median price to each reference venue's median in the same minute. Plus per-venue wash fingerprint: median trade size, p95, frac_self_repeat_1s (the canonical wash-bot signal).
Query params
- token
- (string) Required.
- venue
- (string) Required. Target venue id.
- ref
- (string) Comma-separated reference venues. Default bybit,bingx,biconomy.
- days
- (number) Lookback 1-90, default 30.
curl -H "Authorization: Bearer ts_int_..." \ "https://tradesys.io/api/admin/venue-dislocation?token=375ai&venue=bitmart&days=30"
Public / unauthenticated
Some endpoints don't require a key — they power the website itself and are cached aggressively at the edge. Feel free to embed.
- GET /api/public/screener — one-row-per-token universe snapshot
- GET /api/public/big-swaps?minutes=15 — largest cross-venue trades in the window
- GET /api/public/signal-score/{id} — composite 0-99 heat score
- GET /api/public/trust-scores — per-venue trust snapshot
- GET /feed/digests.xml — weekly research digests (Atom)
- GET /feed/token/{id}/signals.xml — per-token signal fires (Atom)
Versioning
The v1 contract above is stable. Breaking changes ship under /api/v2 with a deprecation window of at least 90 days. Additive fields on existing responses are not considered breaking — always ignore unknown keys on the client.
Status
Live health at /exchanges (per-venue trust score, uptime, latency) and system error rate at /admin (admin-only).