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
| Parameter | Type | Default | Description |
|---|---|---|---|
cursor | string | none | Pagination cursor |
limit | number | 20 | Items per page |
state | string | none | Filter by settlement state (e.g., "AuctionActive", "Settled") |
authority | string | none | Filter 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:
| Value | Meaning |
|---|---|
Created | Launch created, escrows not yet initialized |
EscrowsInitialized | Escrows set up, auction not yet initialized |
AuctionReady | Auction initialized, not yet started |
AuctionActive | Auction is live and accepting bids |
AuctionEnded | Auction time has expired (slots_remaining = 0) |
Graduated | Auction raised enough currency to graduate |
Finalized | Auction finalized, ready for proceeds sweep |
ProceedsSwept | Proceeds swept, ready for pool creation |
PoolCreated | Raydium pool created, ready for settlement |
Settled | Fully settled, token trading on Raydium |
Cancelled | Launch was cancelled |
EmergencyWithdrawn | Emergency withdrawal executed |
FailedRecovery | Recovery from failed state |
Get Launch Detail
GET /api/launches/:pubkey
Returns full detail for a single launch, including associated auction data.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
pubkey | string | Base58-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
| Status | Reason |
|---|---|
| 400 | Missing required auth fields, invalid category, or field too long |
| 403 | Wallet signature verification failed or signer is not the launch authority |
| 404 | Launch not found |
| 500 | Internal error during metadata update |