Integration
Indexer API
The GraphQL and WebSocket endpoints the app itself reads, with an example query.
View as MarkdownIf you do not want to index the chain yourself, the indexer behind Bull Launch answers GraphQL over HTTP, and a WebSocket per token for live market and discussion updates. It is the same API the app uses.
| GraphQL | https://api.bulllaunch.fun/graphql |
| WebSocket | wss://api.bulllaunch.fun/v1/tokens/{token}/market-stream |
| Deadline | The backend enforces its own 10s query deadline and answers DEADLINE_EXCEEDED. |
Every paged response carries a checkpoint { blockNumber timestamp }. Check it before trusting a figure: it tells you how far behind the chain the answer is, and it is the fastest way to tell an indexer that is merely lagging from one following the wrong chain.
// The newest launches, the same query the home page runs
const r = await fetch("https://api.bulllaunch.fun/graphql", {
method: "POST",
headers: { "content-type": "application/json" },
body: JSON.stringify({
query: `query { discoverLaunches(order: NEW, first: 5) {
nodes {
token { address symbol image description }
market { poolId baseAsset { symbol } }
bondingProgressBps
}
checkpoint { blockNumber timestamp }
endCursor hasNextPage
} }`,
}),
});CORS is allowlisted per origin. If you are calling from a browser on your own domain, ask the team to add it, otherwise a preflight is refused and the browser discards every reply.
