Skip to main content
Launchpad tokens go through a series of stages before they become fully tradeable on a DEX. This guide explains each stage, how to detect them with the Codex API, and which events fire along the way.This complements the Launchpads recipe which covers building a launchpad discovery UI.

The Stages

Tokens on bonding-curve launchpads (Pump.fun, Four.meme, LaunchLab, etc.) progress through these stages:
Deployed → Created → Bonding (Updated) → Completed → Migrated
StageWhat’s happeningKey fields
DeployedToken contract discovered on-chaineventType: Deployed
CreatedMetadata populated (name, symbol, image)eventType: Created
BondingTrading on bonding curve, graduationPercent rising from 0→100eventType: Updated, graduationPercent < 100
CompletedBonding curve filled — waiting for migrationcompleted: true, migrated: false
MigratedLiquidity moved to DEX pool — fully tradeablemigrated: true, migratedPoolAddress set
Completed vs Migrated: completed means the bonding curve is full. migrated means liquidity has actually moved to a DEX. For monitoring graduations via subscriptions, use Migrated events — Completed events are a legacy state and will be deprecated.
Not all launchpads have bonding curves. Protocols like Zora, Clanker, and Baseapp skip the bonding curve entirely. Tokens on these protocols go straight to “Created” without progressing through completion or migration. Fields like graduationPercent, completed, migrated, and migratedAt will be absent for these tokens.

Detecting Token State

Use the launchpad field on the token query to check a token’s current lifecycle stage.
Use this logic to determine the current stage:
function getTokenStage(launchpad) {
  if (!launchpad) return 'not-a-launchpad-token'
  if (launchpad.migrated) return 'migrated'
  if (launchpad.completed) return 'completed'
  if (launchpad.graduationPercent > 0) return 'bonding'
  return 'new'
}

Filtering by Stage

Use filterTokens with launchpad filters to query tokens at each stage. These are the same filters that power the columns in the Launchpads recipe.
Use launchpadName or launchpadProtocol to narrow down to a specific launchpad.
For a complete list of supported launchpad names, see the launchpadName filter options. For supported protocols, see LaunchpadTokenProtocol.

Real-Time Lifecycle Events

Subscribe to onLaunchpadTokenEventBatch to receive events as tokens progress through each stage. Filter by eventType to listen for specific transitions.
Updated events fire as tokens trade on the bonding curve. These include statistics like price, volume, and holder counts — fields that aren’t available on Created or Migrated events.
Subscribe to Migrated events to detect when a token graduates from its bonding curve and moves to a DEX pool.
Use onLaunchpadTokenEvent with an address to follow a single token through all its stages.
Launchpad events are extremely high-frequency. You must proxy this data through your backend to serve multiple users from a single subscription. We offer a monthly flat-rate option with unlimited requests. Contact us for more information.

Event Types Reference

Event TypeWhen it firesStats available?
DeployedToken contract discovered on-chainNo
CreatedToken metadata populatedNo
UpdatedToken stats change (trades, price, holders)Yes — price, volume, holders, sniper/bundler counts
CompletedBonding curve filled (legacy — use Migrated)No
MigratedLiquidity moved to DEX poolNo
UnconfirmedDeployedToken discovered before finalizationNo
UnconfirmedMetadataMetadata processed before finalizationNo
Statistics fields (price, volume1, holders, sniperCount, etc.) are only populated on Updated events. Other event types signal a state change but don’t include these metrics.

After Migration

Once a token migrates, it behaves like any other DEX token. You can switch from launchpad subscriptions to the standard Codex endpoints:
DataEndpoint
Price & volumepairMetadata using the migratedPoolAddress
Live priceonPairMetadataUpdated
TradesgetTokenEvents
Live tradesonTokenEventsCreated
ChartgetTokenBars
Live chartonTokenBarsUpdated
See the Token Dashboard recipe for the full post-migration data flow.

Protocols Without Bonding Curves

Some launchpad protocols don’t use bonding curves. Tokens on these protocols are created and immediately tradeable — they skip the bonding, completed, and migrated stages entirely.
ProtocolHas bonding curve?
Pump.funYes
Four.memeYes
LaunchLabYes
Meteora DBCYes
boop.funYes
ZoraNo
ClankerNo
BaseappNo
VirtualsNo
For tokens without bonding curves, the launchpad fields graduationPercent, completed, completedAt, migrated, migratedAt, and migratedPoolAddress will be absent. These tokens will only emit Created and Updated events.
Check out the related endpoints and types: