Launch configuration API
Clients can retrieve the launch matrix used by the current Candle application.
List quote pairs
Section titled “List quote pairs”GET /api/v1/launch/quote-pairsThis endpoint does not require authentication. It returns the supported base pairs for Solana and Hood and the curve terms available for each tier.
Use ?chain=solana or ?chain=hood to request one network. An unknown chain returns 400.
The response carries a top-level matrixVersion, and the endpoint serves a strong ETag with Cache-Control. Send If-None-Match on subsequent requests and you get a 304 when nothing has changed, which makes polling the matrix cheap enough to do on a schedule.
{ "payload": { "pairs": { "solana": [ { "chain": "solana", "id": "sol", "symbol": "SOL", "address": "So11111111111111111111111111111111111111112", "decimals": 9, "isNative": true, "supportsDevBuy": true, "tiers": { "open": { "symbol": "SOL", "thresholdRaw": "80000000000", "raise": 80, "startFdv": 24.8, "bondingFdv": 799.83, "supplySoldPct": 85 } } } ] }, "defaults": { "solana": "sol" } }}Each pair contains:
| Field | Meaning |
|---|---|
chain | solana or hood |
id | Stable request identifier such as sol, usdc, cndl, eth, or usdg |
symbol | Display symbol |
address | SPL mint, wrapped-native address, or ERC-20 address |
decimals | Quote-asset decimals |
isNative | Whether the pair is funded with the chain’s native asset |
supportsDevBuy | Whether the web launcher offers an initial buy for this pair |
headlessDevBuy | Whether the headless launch API accepts a non-zero buyAmount for this pair |
tiers | Supported Open and/or Exclusive terms |
Each tier contains:
| Field | Meaning |
|---|---|
thresholdRaw | Migration threshold in the quote asset’s smallest unit, encoded as a decimal string |
raise | Threshold in whole quote units |
startFdv | Starting FDV denominated in the quote asset |
bondingFdv | FDV at graduation denominated in the quote asset |
supplySoldPct | Percentage of total supply sold at graduation |
Launch request fields
Section titled “Launch request fields”Approved launch clients send the selected pair’s id back as quoteAsset. The tier is sent as mode with value open or exclusive.
Do not send economic curve constants from the client. The server resolves the pair and tier against its own allowlisted matrix and supplies the canonical configuration.
If quoteAsset is omitted, the server defaults to SOL on Solana and ETH on Hood. Older Solana web clients that omit mode default to Exclusive for backward compatibility, while Hood defaults to Open. The Headless launch API defaults mode to Open on both chains. New clients should always send both fields explicitly.
Initial buy restriction
Section titled “Initial buy restriction”The two flags differ on purpose, because the two flows fund a buy differently.
The web launcher (supportsDevBuy) includes an initial buy in the launch transaction only for SOL-quoted Solana launches, which is what it has always done.
The headless launch API (headlessDevBuy) is wider: SOL, USDC, and CNDL quoted Solana launches all bundle the buy atomically into the launch transaction, with SPL pairs drawing from the launching wallet’s existing token balance, and ETH-quoted Hood launches run the buy as a separate best-effort transaction immediately after the launch. USDG-quoted Hood launches have no dev-buy path; launch first and buy separately.
Read capability from these flags rather than hardcoding a list. Per-pair ceilings and error codes are documented on the Headless launch API page.
Presets
Section titled “Presets”GET /api/v1/launch/presetsFirst-party named launch configurations, each a fully resolved set of fields joined with the live tier terms and the current matrixVersion:
solana-open-sol (the default for time-sensitive launches), solana-exclusive-sol, solana-open-usdc, hood-open-eth-v4, hood-open-eth-v3, hood-open-usdg-v4.
A preset is shared vocabulary, not a new request field: expand one client-side into a normal launch body and send that. The launch endpoint never sees preset names, so a preset can never smuggle economics past the server’s own matrix. The TypeScript SDK ships expandPreset for exactly this merge.
Update policy
Section titled “Update policy”Integrations should refresh the matrix rather than hard-code the list indefinitely. New quote pairs or tiers may be added, but an existing pair’s identifier and decimal interpretation must not be silently repurposed.