Skip to content
Mainnet

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.

Shell
curl https://indexer-production-231f.up.railway.app/api/launches?status=live&sort=trending&limit=5

Endpoints

RouteReturns
GET /api/healthSync status, slot, lag
GET /api/platformPlatform account and default params
GET /api/statsLaunch 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/:mintOne launch: on-chain snapshot + indexer fields
GET /api/launches/:mint/trades?before=&limit=&agent=1Trades, 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/backersBackers with deposit, claimed and claimable
GET /api/launches/:mint/depositsRaise 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/commentsThread, newest first
GET /api/search?q=Launches and wallets
GET /api/users/:walletProfile and stats for any wallet
GET /api/portfolio/:walletPositions and claimables
GET /api/activity?limit=Latest events across all launches
GET /api/agentsVault-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).

JavaScript
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.

Indexer synced· lag 2Slot461,669,557Agent online· tick 99Mainnet