Skip to main content

Launch Endpoints

Endpoints for querying Launchpad program data, including token launches, their settlement status, and protocol configuration.

List Launches

GET /api/launches

Returns a paginated list of launches ordered by confirmation slot (newest first). Each launch is joined with its associated auction config and state.

Query Parameters

ParameterTypeDefaultDescription
cursorstringnonePagination cursor
limitnumber20Items per page
statestringnoneFilter by settlement state (e.g., "AuctionActive", "Settled")
authoritystringnoneFilter by launch creator address

Example

# All launches
curl "https://cca-indexer-production.up.railway.app/api/launches?limit=10"

# Active auctions only
curl "https://cca-indexer-production.up.railway.app/api/launches?state=AuctionActive"

# Launches by a specific creator
curl "https://cca-indexer-production.up.railway.app/api/launches?authority=XyZ789..."

Response

Each launch includes a display_status field derived from the settlement state and live auction data:

{
"data": [
{
"pubkey": "LaunchPubkey123...",
"authority": "XyZ789...",
"token_mint": "TokenMint123...",
"token_name": "Demo Token",
"token_symbol": "DEMO",
"settlement_state": "AuctionActive",
"display_status": "AuctionActive",
"auction_config": "AbC123...",
"auction_start_slot": "312000000",
"auction_end_slot": "312100000",
"auction_clearing_price": "158456325028528675187087",
"auction_total_bids": "12",
"auction_currency_raised": "5000000000",
"auction_is_graduated": false,
"auction_slots_remaining": "50000"
}
],
"next_cursor": "...",
"has_more": false
}

Display Status Values

The display_status field is computed from the settlement state and live auction data:

ValueMeaning
CreatedLaunch created, escrows not yet initialized
EscrowsInitializedEscrows set up, auction not yet initialized
AuctionReadyAuction initialized, not yet started
AuctionActiveAuction is live and accepting bids
AuctionEndedAuction time has expired (slots_remaining = 0)
GraduatedAuction raised enough currency to graduate
FinalizedAuction finalized, ready for proceeds sweep
ProceedsSweptProceeds swept, ready for pool creation
PoolCreatedRaydium pool created, ready for settlement
SettledFully settled, token trading on Raydium
CancelledLaunch was cancelled
EmergencyWithdrawnEmergency withdrawal executed
FailedRecoveryRecovery from failed state

Get Launch Detail

GET /api/launches/:pubkey

Returns full detail for a single launch, including associated auction data.

Path Parameters

ParameterTypeDescription
pubkeystringBase58-encoded launch config public key

Example

curl https://cca-indexer-production.up.railway.app/api/launches/LaunchPubkey123...

Returns the same fields as the list endpoint, but for a single launch. Returns 404 if not found.


Get Launch Status

GET /api/launches/:pubkey/status

Returns settlement state and key lifecycle timestamps for a launch.

Example

curl https://cca-indexer-production.up.railway.app/api/launches/LaunchPubkey123.../status

Response

{
"pubkey": "LaunchPubkey123...",
"settlement_state": "Settled",
"display_status": "Settled",
"final_clearing_price": "158456325028528675187087",
"total_proceeds": "5000000000",
"total_tokens_cleared": "750000000",
"raydium_pool": "PoolPubkey123...",
"created_at_ts": "2026-02-05T12:00:00Z",
"finalized_at": "2026-02-06T12:00:00Z",
"pool_created_at": "2026-02-06T12:05:00Z",
"settled_at": "2026-02-06T12:10:00Z",
"finalized_slot": "312100500",
"auction_start_slot": "312000000",
"auction_end_slot": "312100000",
"auction_clearing_price": "158456325028528675187087",
"auction_total_bids": "12",
"auction_currency_raised": "5000000000",
"auction_is_graduated": true,
"auction_slots_remaining": "0"
}

Get Protocol Config

GET /api/protocol

Returns the singleton protocol configuration set by the Launchpad admin.

Example

curl https://cca-indexer-production.up.railway.app/api/protocol

Response

{
"pubkey": "ProtocolConfig123...",
"admin": "AdminPubkey...",
"fee_bps": 250,
"min_auction_duration_slots": "10000",
"max_auction_duration_slots": "1000000",
"quote_mint": "QuoteMint123..."
}

Returns 404 if no protocol config has been initialized.


Update Launch Metadata

POST /api/launches/:pubkey/metadata

Submit off-chain metadata for a launch. Requires wallet signature authentication -- the signer must be the launch authority.

Request Body

{
"description": "A description of the project (max 2000 chars)",
"image_url": "https://example.com/image.png",
"website_url": "https://example.com",
"twitter_url": "https://twitter.com/project",
"discord_url": "https://discord.gg/project",
"telegram_url": "https://t.me/project",
"category": "DeFi",
"creator_name": "Project Team",
"signature": "<Ed25519 signature>",
"message": "<signed message>",
"public_key": "<signer public key>"
}

Valid Categories

DeFi, Gaming, Social, Meme, Infrastructure, Other

Response

{
"success": true,
"pubkey": "LaunchPubkey123..."
}

Error Responses

StatusReason
400Missing required auth fields, invalid category, or field too long
403Wallet signature verification failed or signer is not the launch authority
404Launch not found
500Internal error during metadata update