Devnet

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.

Shell
curl https://indexer-production-454b.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, locked vault SOL
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 (tf 60, 300, 900, 3600, 86400)
GET /api/launches/:mint/backersBackers with deposit, claimed and claimable fees
GET /api/launches/:mint/depositsRaise deposits
GET /api/launches/:mint/holders?limit=Token holders, vault and curve labelled
GET /api/launches/:mint/tradersTop traders by volume
GET /api/launches/:mint/commentsThread, newest first
GET /api/trendingKing 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/:walletProfile and stats for any wallet
GET /api/portfolio/:walletPositions, claimables and holdings, live from chain
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-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).

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

Indexer synced· slot 505,237,409· lag 14Agent online· tick 15,520Devnet
Risks© 2026 Holdfast