Docs · Reference
Indexer API
Read-only JSON over HTTP plus a push WebSocket, served by the Holdfast indexer. CORS is open.
Base URL and conventions
Base URL: https://indexer-production-454b.up.railway.app. Amounts in strings are raw integers (lamports; token base units with 6 decimals); fields ending in Sol are SOL floats; times are unix seconds. Errors are { "error": "…" } with a status code; paging uses exclusive before cursors.
curl https://indexer-production-454b.up.railway.app/api/launches?status=live&sort=trending&limit=5Endpoints
| Route | Returns |
|---|---|
| GET /api/health | Sync status, slot, lag |
| GET /api/platform | Platform account and default params |
| GET /api/stats | Launch counts, volume, locked vault SOL |
| GET /api/launches?status=&sort=&q=&limit=&offset= | Launch summaries (sort: new, trending, volume, mcap, raised) |
| GET /api/launches/:mint | One launch: on-chain snapshot + indexer fields |
| GET /api/launches/:mint/trades?before=&limit=&agent=1 | Trades, newest first; agent=1 for vault-agent trades |
| GET /api/launches/:mint/candles?tf= | OHLC candles (tf 60, 300, 900, 3600, 86400) |
| GET /api/launches/:mint/backers | Backers with deposit, claimed and claimable fees |
| GET /api/launches/:mint/deposits | Raise deposits |
| GET /api/launches/:mint/holders?limit= | Token holders, vault and curve labelled |
| GET /api/launches/:mint/traders | Top traders by volume |
| GET /api/launches/:mint/comments | Thread, newest first |
| GET /api/trending | King of the hill and the top 10 live launches |
| GET /api/leaderboard?kind=&window= | Backers, creators, traders or launches over 24h / 7d / all |
| GET /api/search?q= | Up to 8 launches and 8 wallets |
| GET /api/users/:wallet | Profile and stats for any wallet |
| GET /api/portfolio/:wallet | Positions, claimables and holdings, live from chain |
| GET /api/activity?limit= | Latest events across all launches |
| GET /api/agents | Vault-agent totals, window budgets and recent agent trades |
WebSocket
Connect to wss://indexer-production-454b.up.railway.app/ws. The server only pushes JSON messages: event (a new on-chain event), launch (a launch summary changed), comment, comment_deleted and reset (the index was rebuilt after a chain reset — drop caches).
const ws = new WebSocket("wss://indexer-production-454b.up.railway.app/ws");
ws.onmessage = (m) => {
const msg = JSON.parse(m.data);
if (msg.type === "event" && msg.event.isAgent) console.log("agent trade", msg.event);
};Signed writes
Comments and profiles are written with an Ed25519 signature of the wallet over a four-line message: holdfast:<kind>:v1, the subject, the SHA-256 of the payload and a unix timestamp (±300 s). Each signed message is accepted once. Signing a message costs nothing and sends no transaction.