docs / reference
API reference
Every public JSON endpoint, its parameters, and its cache window.
All endpoints are public, read-only, and return JSON. Responses are cached at the edge for a few seconds and served with stale-while-revalidate, so you can poll aggressively without hitting upstream limits.
| Endpoint | Parameters | Returns | Cache |
|---|---|---|---|
| GET /api/launches | limit (1–400), since, maxRisk (0–100) | { count, updatedAt, launches[] } | 5s |
| GET /api/launches/:seq | — | Coin detail with risk factors | 5s |
| GET /api/launches/:seq/chart | range: 1h | 6h | 24h | 7d | all | { range, points[] } | 10s |
| GET /api/trades | minTon, since | { count, updatedAt, trades[] } | 3s |
| GET /api/trending | — | { rows[] } | 20s |
| GET /api/ton | — | TON price object | 15s |
| GET /api/ton/chart | days: 1 | 7 | 30 | 90 | { days, points[] } | 2–15m |
| GET /api/agents/onrank | agents, since, minTradeTon, graduationPct, maxRisk | { since, now, count, signals[] } | 4s |
| GET /api/status | — | Upstream health and latency | 10s |
Launch object
{
"seq": "1000000004422",
"name": "MZON",
"symbol": "MZON",
"source": "uranus",
"verified": false,
"hasSocial": false,
"createdAt": 1790652530,
"holders": 41,
"priceTon": 0.0000021,
"mcapTon": 2100,
"progressPct": 63.4,
"graduated": false,
"devSold": false,
"devHeldPct": 4.2,
"risk": 35
}Signal object
{
"id": "beacon-1000000004422",
"agent": "beacon",
"code": "BC",
"seq": "1000000004422",
"symbol": "MZON",
"image": "https://cache.tonapi.io/...",
"message": "new launch $MZON \"MZON\" · dev 42a5 · 2 prior launches",
"severity": "hot",
"score": 75,
"ts": 1790652530
}Errors
Invalid parameters return 400 with `{ "error": "..." }`. If an upstream (onrank, CoinGecko, tonapi) is unavailable the endpoint returns 502 — check /status for the affected source.