Skip to content
TRADESYS

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

recommended

self-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

GET/api/v1/tokens

List 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 }
GET/api/v1/tokens/{id}/markets

Cross-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 }
GET/api/v1/tokens/{id}/trades

Paginated 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 }
GET/api/v1/tokens/{id}/export

Streaming 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
GET/api/v1/tokens/{id}/insights

AI-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 }
GET/api/v1/tokens/{id}/depth-history

Order-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:

GET/api/admin/exchange-analysis

Per-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"
GET/api/admin/sell-impact-analysis

Empirical 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"
GET/api/admin/venue-dislocation

Cross-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).