Two queries per table
Each table gets a singular query keyed by its primary key and a plural query that lists rows.
The plural queries take the same arguments everywhere:
totalCount is only computed when you select it, so leave it out of queries you run often.
Pagination
Page forward withafter: endCursor while hasNextPage is true, keeping where, orderBy and orderDirection identical between calls:
Filters
Thewhere object accepts the column name for equality plus operator suffixes. Which suffixes exist depends on the column type:
Bigint comparisons take the value as a string:
Currency codes
Currencies are keyed by theirbytes32 code: the ASCII code right-padded with zeros, written as a 66-character hex string. INR is
launch.currency, currency.symbol) let you filter on the readable code instead. rate, vaultEvent and vaultSnapshot only carry the hex code, so encode it first:
USD is always registered. Its rate is fixed at 1e18 and never appears in rates.
Relations
Relations let you nest one table inside another instead of issuing a second query. Nested lists take the samewhere, orderBy, orderDirection and limit arguments.
Scalars and units
Everybigint column is returned as a decimal string, and every hex column as a lowercase 0x string. Timestamps are unix seconds.
A USD price for display is
priceQuote / rate. A price in any other currency is the USD price multiplied by that currency’s rate. The units page explains the same conventions from the contract side.
Semantics worth knowing
trade.priceQuoteis the execution price of that trade,quoteAmount / tokenAmount.launch.lastPriceQuoteand the candles use the spot price after the trade: the curve’sspotPrice()recomputed from the event’stokensSoldandrealQuotewhile the launch is on the curve, and the pool price derived fromsqrtPriceX96after graduation.- A buy’s
quoteAmountis the gross quote paid, fee included. A sell’squoteAmountis the net quote received.feeis stored separately in both cases. For pool swapsfeeis an estimate: the pool fee in pips applied to the input amount and converted to quote units. trade.traderis the transaction sender. The contract-level caller is normally the Router or the Factory.holderrows exclude the bonding curve, the Uniswap v4PoolManagerand the burn address, and rows are deleted when a balance reaches zero, solaunch.holderCountequals the number ofholderrows for that launch.vaultSnapshotreadsvault.status()at the event’s block. Whenstatus()reverts because the oracle price is older than its stale limit, the same accounting is recomputed fromvault.assets()and the last known rate, and the row is written withfresh: false.currencyrows are seeded from the registry the first time any handler needs them and kept in sync byCurrencySetandRatePosted. The oracle may post codes the registry does not list; those land inrateswithout acurrencyrow.- On Robinhood Chain post-graduation swaps are not indexed (see how the data is produced).
tradeCount,volumeQuoteand the candles of a graduated launch cover its curve phase only there.
HTTP endpoints
The non-GraphQL routes (/health, /ready, /status, /metrics) and the web app’s /api/chains and /api/deployment are described by the OpenAPI document in this section’s “HTTP endpoints” group, with an interactive playground per endpoint. POST /graphql is listed there too so you can try a query without leaving the docs.