Skip to content

Launch configuration API

Clients can retrieve the launch matrix used by the current Candle application.

GET /api/v1/launch/quote-pairs

This 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:

FieldMeaning
chainsolana or hood
idStable request identifier such as sol, usdc, cndl, eth, or usdg
symbolDisplay symbol
addressSPL mint, wrapped-native address, or ERC-20 address
decimalsQuote-asset decimals
isNativeWhether the pair is funded with the chain’s native asset
supportsDevBuyWhether the web launcher offers an initial buy for this pair
headlessDevBuyWhether the headless launch API accepts a non-zero buyAmount for this pair
tiersSupported Open and/or Exclusive terms

Each tier contains:

FieldMeaning
thresholdRawMigration threshold in the quote asset’s smallest unit, encoded as a decimal string
raiseThreshold in whole quote units
startFdvStarting FDV denominated in the quote asset
bondingFdvFDV at graduation denominated in the quote asset
supplySoldPctPercentage of total supply sold at graduation

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.

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.

GET /api/v1/launch/presets

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

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.