/health require an API key. Product queries require an explicit chain_id; the API never combines chains implicitly.
Endpoint summary
GET /health is liveness only: it returns service status, API version, build ID, and time. It does not guarantee that Convex, Redis, RPC, Pinata, or transaction preparation is available.
Ordinary token, wallet, activity, claim, and transaction-status reads use the existing indexed or materialized launchpad data and do not add a chain RPC per request. Holder snapshots use their documented holder provider. Live suite and quote sections in /config, swap operations, claim preparation, creator actions, and launch preparation verify the chain state they need.
Live configuration
GET /config accepts include=chains,suites,quotes. The default returns all three sections.
include=chainsuses the static production chain registry and does not call an RPC. Its chain capabilities report the launch token mode; Base activation isnot_checked, while Robinhood isnot_applicable.- Suite or quote sections are read at one chain block and include
as_of_block. On Base, the same block also verifies B20 activation. active_only=trueomits historical suites and quote assets that cannot create new launches.- Stock routes follow the shared Launchpad suite and quote catalog. An active response includes a stock suite and its quotes only when catalogued assets are registered on the live factory and stock creation is enabled. There is no API-only chain allowlist or manual release flag.
- A suite exposes only integration capabilities, contract addresses, current supply,
config_version, and creation state. - A creation fee appears only when its live amount is nonzero.
chain.capabilities.b20_asset_status is active. If ActivationRegistry cannot be verified, the API returns 503 temporarily_unavailable instead of reporting a potentially executable route.
Historical suites remain available with active_only=false so direct integrations can resolve existing launches safely.
Token discovery
GET /tokens combines listing, search, creator filtering, and ranking:
Each result has stable sections:
token: address, name, symbol, decimals, and effective imagelaunch: creator, suite, pool, quote, feature flags, transaction provenance, creation time, and a creation fee only when the paid amount was nonzeromarket_data: price, market cap, liquidity, 1-hour, 6-hour, 24-hour, and lifetime activity, plus freshness fields
null, not zero. Trending returns ordinary market values and order only; ranking scores, scoring explanations, pins, and internal quality fields are private.
Quote decimals come from the indexed launch or the shared quote registry. A truly unknown historical admin-added quote returns quote.decimals: null; the API never guesses units.
Ranked lists are live rather than frozen snapshots. A cursor binds the filters and source position, not an immutable ranking snapshot, so tokens can move between pages while ranking updates. Deduplicate by (chain_id, token.address) and restart when the API returns 409 cursor_stale.
Token detail
pool,market. announcements_limit defaults to 3 and is capped at 10.
The detailed token object adds full metadata, links, total supply, historical contract addresses, and these optional sections:
pool: currencies, PoolManager, hook, frozen fee split, anti-snipe clock, locked seed ranges, and initial seeded token amountmarket_data: ATH market cap in quote currency, unique traders, pool state, and fee revenue by currencyallocations: exact amount, supply basis points, and transaction provenancevesting: total, vested, claimed, claimable, schedule, next unlock, and stateannouncements: recent creator messages and their on-chain provenance
Token activity
Setkind=trades or kind=announcements.
Trades contain structured token and quote amounts, pool state, fee credits, referrer, comment, timestamp, and on-chain provenance. Announcements contain the creator message, URI, timestamp, and provenance.
One optional trade identity filter may be used: wallet, transaction_hash, or referrer. from is inclusive and to is exclusive; both use Unix seconds.
Activity and holder endpoints first verify that the address is a visible launchpad token. Arbitrary external tokens return 404.
Holder snapshots
A holder response has a normal page plus top-levelsummary:
supply_percent is derived from indexed total supply. meta.generated_at records when the gateway formed the response; the API does not invent a provider snapshot timestamp. If the provider cannot produce a holder result, it returns 503 temporarily_unavailable instead of a misleading empty list.
Wallet activity and claims
Wallet activity is structured bykind; it does not return UI titles, raw metadata JSON, or internal event keys. Supported kinds are launch, launch fee, trade, allocation, vesting registration or claim, fee credit or claim, announcement, and metadata.
GET /wallets/{address}/claims requires kind=fee|vesting because fee and vesting positions use separate cursor domains. Its page limit defaults to 25 and is capped at 50.
- Fee positions support
state=claimable|alland optionalcurrency_address. - Vesting positions support
state=claimable|locked|complete|all, optionaltoken_address, and optionalinclude=schedulefor the complete unlock schedule. - Vesting positions are returned only when they resolve to a visible launch and supported historical suite.
- A fee balance is scoped to escrow, recipient, and currency. It may represent credits from multiple pools, so it is not assigned to one launch incorrectly.
Transaction status
GET /transactions/{chain_id}/{tx_hash} is the indexed public view, not a live RPC receipt endpoint. When indexed, it separates two states:
chain.status: unknown, pending, succeeded, reverted, or replacedindexing.status: not seen, processing, or complete
operations contains only public launchpad actions with their transaction provenance. Raw worker jobs, provider responses, governance events, queue state, and internal errors are never returned.
Existing chain indexers and webhooks discover wallet-broadcast transactions normally, so the API does not expose a transaction-notification write. Before a hash is observed, data is null; use your own chain provider to poll the receipt for immediate confirmation and retry this endpoint for launchpad indexing state.
Pagination and freshness
meta.generated_at is when the gateway formed the response. Resource-level updated_at, observed or confirmed block, and finality fields describe source freshness. The gateway does not add another product-response cache.