Docs · Reference
Indexer API
Read-only JSON over HTTP plus a push WebSocket, served by the Backstock indexer. CORS is open.
Base URL and conventions
Base URL: https://indexer-production-231f.up.railway.app. Every launch row carries its quote: quoteMint, quoteSymbol and quoteDecimals. Amounts in strings are raw integers (quote base units at quoteDecimals; coin base units at 6 decimals), with USD values alongside; times are unix seconds. For xStocks, raw amounts are what the chain holds; the UI amount is raw × the issuer’s current multiplier. Errors are { "error": "…" } with a status code; paging uses exclusive before cursors.
curl https://indexer-production-231f.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, vault value, backers repaid and paid out, vault withdrawals (USD) |
| 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 in the quote asset and in USD (tf 60, 300, 900, 3600, 86400) |
| GET /api/candles?ids=&tf= | Candles for up to 50 launches in one call, keyed by the ids as given (unknown ids omitted) |
| GET /api/launches/:mint/backers | Backers with deposit, claimed and claimable |
| GET /api/launches/:mint/deposits | Raise deposits |
| GET /api/launches/:mint/activity?type= | Protocol events for one launch (e.g. vault_withdrawn, backers_paid) |
| GET /api/launches/:mint/holders?limit= | Coin holders, vault and venue labelled |
| GET /api/launches/:mint/comments | Thread, newest first |
| GET /api/search?q= | Launches and wallets |
| GET /api/users/:wallet | Profile and stats for any wallet |
| GET /api/portfolio/:wallet | Positions and claimables |
| 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-231f.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-231f.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: backstock:<kind>:v1, the subject, the SHA-256 of the payload and a unix timestamp (±300 s). Each signed message is accepted once. Signing costs nothing and sends no transaction.