> ## Documentation Index
> Fetch the complete documentation index at: https://docs.codex.io/llms.txt
> Use this file to discover all available pages before exploring further.

# onLaunchpadTokenEventBatch

> Live-streamed launchpad token events batched (more efficient).

<div data-generated>
  ## GraphQL

  ```
  type Subscription {
    # Requires a Growth or Enterprise plan.
    onLaunchpadTokenEventBatch(
      input: OnLaunchpadTokenEventBatchInput
    ): [LaunchpadTokenEventOutput!]!
  }

  type SocialLinks {
    bitcointalk: String
    blog: String
    coingecko: String
    coinmarketcap: String
    discord: String
    email: String
    facebook: String
    github: String
    instagram: String
    linkedin: String
    reddit: String
    slack: String
    telegram: String
    twitch: String
    twitter: String
    website: String
    wechat: String
    whitepaper: String
    youtube: String
  }

  type TokenInfo {
    id: String!
    address: String!
    circulatingSupply: String
    cmcId: Int
    gridAssetId: String
    bluechipRating: String
    isScam: Boolean
    name: String
    networkId: Int!
    symbol: String!
    totalSupply: String
    imageThumbHash: String
    imageThumbUrl: String
    imageSmallUrl: String
    imageLargeUrl: String
    imageBannerUrl: String
    videoExternalUrl: String
    description: String
  }

  type OrganizationUrl {
    url: String!
    type: String
  }

  type OrganizationSocial {
    url: String!
    type: String
  }

  type AssetDeployment {
    id: String!
    networkId: Int!
    address: String!
    standard: String
    assetId: String!
    rootId: String!
    token: EnhancedToken
  }

  type Asset {
    id: String!
    name: String
    description: String
    ticker: String
    type: String
    status: String
    icon: String
    rootId: String!
    assetDeployments: [AssetDeployment!]!
  }

  type Organization {
    name: String!
    foundingDate: String
    descriptionShort: String
    descriptionLong: String
    tagLine: String
    type: String
    sector: String
    urls: [OrganizationUrl!]!
    socials: [OrganizationSocial!]!
    logo: String
    icon: String
    header: String
    rootId: String!
    assets: [Asset!]!
  }

  type ExplorerTokenData {
    id: String!
    blueCheckmark: Boolean
    description: String
    divisor: String
    tokenPriceUSD: String
    tokenType: String
  }

  type Exchange {
    id: String!
    address: String!
    color: String
    name: String
    exchangeVersion: String
    iconUrl: String
    networkId: Int!
    tradeUrl: String
  }

  enum WalletCategory {
    NORMIE
    TOKEN_CREATOR
    EXCHANGE
    DEFI_EXCHANGE
    PAIR
    PAIR_TOKEN_HOLDER
    POOL_AUTHORITY
    STAKING_VAULT
    NOTORIOUS
  }

  type WalletFunding {
    fundedByAddress: String!
    fundedByLabel: String
    fundedAt: Int!
    tokenAddress: String!
    networkId: Int!
    amount: String!
    transactionHash: String!
  }

  type WalletPolymarketProfile {
    proxyWallet: String!
    xUsername: String
    displayName: String
    pseudonym: String
    profileImageUrl: String
    verifiedBadge: Boolean
    displayUsernamePublic: Boolean
    fetchedAt: Int!
  }

  type Wallet {
    address: String!
    category: WalletCategory
    firstSeenTimestamp: Int
    firstFunding: WalletFunding
    identityLabels: [String!]
    avatarUrl: String
    displayName: String
    twitterId: String
    twitterUsername: String
    telegramId: String
    telegramUsername: String
    website: String
    discordId: String
    discordUsername: String
    githubId: String
    githubUsername: String
    farcasterId: String
    farcasterUsername: String
    description: String
    ethosScore: Int
    ethosLevel: String
    ethosVerified: Boolean
    identitySource: String
    identityUpdatedAt: Int
    polymarket: WalletPolymarketProfile
    tokensCreatedCount: Int
    tokensMigratedCount: Int
  }

  type LaunchpadData {
    launchpadName: String
    graduationPercent: Float
    poolAddress: String
    completedAt: Int
    completed: Boolean
    completedSlot: Int
    migratedSlot: Int
    migratedAt: Int
    migrated: Boolean
    migratedPoolAddress: String
    launchpadProtocol: String
    launchpadIconUrl: String
    isCashbackEnabled: Boolean
    category: String
  }

  type TokenExtrema {
    id: String!
    address: String!
    networkId: Int!
    athPrice: String!
    athPriceTimestamp: Int!
    atlPrice: String!
    atlPriceTimestamp: Int!
    athFdv: String!
    athFdvTimestamp: Int!
    atlFdv: String!
    atlFdvTimestamp: Int!
    athCircMc: String!
    athCircMcTimestamp: Int!
    atlCircMc: String!
    atlCircMcTimestamp: Int!
  }

  type CoinCommunity {
    id: String!
    createdAt: Int!
    postCount: Int!
    memberCount: Int!
    likeCount: Int!
    lastPostAt: Int
  }

  type Token2022ScaledUiAmountConfig {
    authority: String
    multiplier: Float!
    newMultiplierEffectiveTimestamp: String
    newMultiplier: Float
  }

  type Token2022Extensions {
    scaledUiAmountConfig: Token2022ScaledUiAmountConfig
  }

  type B20Extensions {
    multiplier: String
    multiplierObservedAt: String
    pausedTransfer: Boolean
    pausedMint: Boolean
    pausedBurn: Boolean
    supplyCap: String
  }

  type TokenExtensions {
    token2022: Token2022Extensions
    b20: B20Extensions
  }

  type Erc7572CustomInfo {
    type: String!
    featuredImage: String
    collaborators: [String!]
  }

  enum CategoryType {
    CANONICAL
    NARRATIVE
  }

  enum CategoryStatus {
    DRAFT
    ACTIVE
    ARCHIVED
  }

  type Category {
    id: String!
    name: String!
    shortName: String
    slug: String!
    description: String
    type: CategoryType!
    status: CategoryStatus!
    parentId: String
    memberCount: Int
  }

  type EnhancedToken {
    id: String!
    address: String!
    cmcId: Int
    decimals: Int!
    isScam: Boolean
    name: String
    networkId: Int!
    symbol: String
    socialLinks: SocialLinks
    info: TokenInfo
    gridAssetId: String
    bluechipRating: String
    organization: Organization
    asset: Asset
    exchanges: [Exchange!]
    creatorAddress: String
    creator: Wallet
    createBlockNumber: Int
    createTransactionHash: String
    createdAt: Int
    mintable: String
    freezable: String
    isFreezableValid: Boolean
    isMintableValid: Boolean
    launchpad: LaunchpadData
    top10HoldersPercent: Float
    profanity: Boolean
    extrema: TokenExtrema
    coinCommunity: CoinCommunity
    extensions: TokenExtensions
    tokenStandardCustomData: Erc7572CustomInfo
    categories: [Category!]
  }

  enum LaunchpadTokenEventType {
    Deployed
    Created
    Updated
    Completed
    Migrated
    UnconfirmedDeployed
    UnconfirmedMetadata
    UnconfirmedCompleted
  }

  type LaunchpadTokenEventOutput {
    address: String!
    networkId: Int!
    protocol: String!
    launchpadName: String!
    token: EnhancedToken!
    buyCount1: Int
    eventType: LaunchpadTokenEventType!
    holders: Int
    marketCap: String
    price: Float
    sellCount1: Int
    volume1: Int
    transactions1: Int
    liquidity: String
    poolFees1: String
    baseFees1: String
    priorityFees1: String
    builderTips1: String
    l1DataFees1: String
    totalFees1: String
    feeToVolumeRatio1: Float
    sniperCount: Float
    sniperHeldPercentage: Float
    bundlerCount: Float
    bundlerHeldPercentage: Float
    insiderCount: Float
    insiderHeldPercentage: Float
    suspiciousCount: Float
    suspiciousHeldPercentage: Float
    devHeldPercentage: Float
    top10HoldersPercent: Float
    devWallet: Wallet
  }

  enum LaunchpadTokenProtocol {
    Pump
    PumpMayhem
    FourMeme
    RaydiumLaunchpad
    BoopFun
    Vertigo
    Rainbow
    EgoTech
    ArenaTrade
    Moonit
    MeteoraDBC
    Baseapp
    BaseappCreator
    ZoraV4
    ZoraCreatorV4
    Virtuals
    Clanker
    HeavenAMM
    TokenMillV2
    TokenMillEVM
    ClankerV4
    Printr
    BonadFun
    NadFun
    Kumbaya
    Doppler
    Flaunch
    Liquid
  }

  input OnLaunchpadTokenEventBatchInput {
    protocol: LaunchpadTokenProtocol
    protocols: [LaunchpadTokenProtocol!]
    networkId: Int
    launchpadName: String
    launchpadNames: [String!]
    eventType: LaunchpadTokenEventType
  }
  ```
</div>

<Warning>
  Launchpad events are extremely high-frequency and will send a large number of requests. We offer a monthly flat-rate option with unlimited requests for this subscription. [Contact us](mailto:hello@codex.io?subject=Launchpad%20Events%20Subscription) for more information.
</Warning>

<Info>
  For monitoring pool graduations, use `Migrated` events instead of `Completed` events. While both event types are currently saved to our database, only `Migrated` events are actively emitted via subscriptions. The `Completed` event is a legacy state and will be deprecated in a future release.
</Info>

You can find a complete list of supported launchpad protocols [here](/api-reference/enums/launchpadtokenprotocol), and a list of filterable launchpad names [here](/api-reference/input-objects/onlaunchpadtokeneventbatchinput). For more information on our Launchpad event subscriptions, see our [Launchpads recipe](/recipes/launchpads) page.

### Example

<a href="/explore" target="_blank" rel="noopener noreferrer">Test this query in the Explorer →</a>

```graphql theme={null}
subscription {
  onLaunchpadTokenEventBatch(
    input: {
      protocol: Pump
      eventType: Created
    }
  ) {
    address
    networkId
    eventType
    launchpadName
    marketCap
    price
    liquidity
    holders
    volume1
    transactions1
    buyCount1
    sellCount1
    sniperCount
    sniperHeldPercentage
    devHeldPercentage
    token {
      name
      symbol
      info {
        imageThumbUrl
      }
    }
  }
}
```

```json Example Response theme={null}
{
  "data": {
    "onLaunchpadTokenEventBatch": [
      {
        "address": "AiXmBp6aV8RNpump1XnR2oPpdjHhfNcYRpump6gT2pump",
        "networkId": 1399811149,
        "eventType": "Created",
        "launchpadName": "Pump.fun",
        "marketCap": "6823.45",
        "price": 0.000006823,
        "liquidity": "4521.12",
        "holders": 42,
        "volume1": 1250,
        "transactions1": 18,
        "buyCount1": 12,
        "sellCount1": 6,
        "sniperCount": 2,
        "sniperHeldPercentage": 0.05,
        "devHeldPercentage": 0.02,
        "token": {
          "name": "Example Token",
          "symbol": "EXAMPLE",
          "info": {
            "imageThumbUrl": "https://example.com/image.png"
          }
        }
      }
    ]
  }
}
```

### Usage Guidelines

* Filter by `protocol` (e.g., `Pump`, `Clanker`, `Virtuals`) or `launchpadName` for more specific filtering
* Use `eventType` to subscribe to specific lifecycle events: `Created`, `Updated`, `Migrated`
* Events are batched for efficiency - each message may contain multiple token events
* Use `networkId` to filter by specific chain (e.g., 1399811149 for Solana, 8453 for Base)
* Monitor `sniperCount`, `bundlerCount`, and `insiderCount` to assess token quality
* Use `devHeldPercentage` to check developer token holdings

### Troubleshooting Tips

<AccordionGroup>
  <Accordion title="What's the difference between eventType options?">
    * `Deployed`: Token contract discovered on-chain
    * `Created`: Token has metadata populated
    * `Updated`: Token stats updated (price, volume, holders)
    * `Migrated`: Token graduated from bonding curve to DEX
    * `UnconfirmedDeployed`/`UnconfirmedMetadata`: Early events before finalization
  </Accordion>

  <Accordion title="Why use this instead of onLaunchpadTokenEvent?">
    `onLaunchpadTokenEventBatch` batches multiple events per message, reducing WebSocket overhead. Use this for high-throughput applications monitoring many tokens.
  </Accordion>

  <Accordion title="How do I monitor token graduations?">
    Subscribe to `eventType: Migrated` to receive events when tokens graduate from bonding curves to DEX pools. This is the recommended approach over `Completed` events.
  </Accordion>

  <Accordion title="What do sniperCount and bundlerCount indicate?">
    `sniperCount` is wallets that bought very early (potential bots). `bundlerCount` is wallets that bundled transactions. High values may indicate coordinated buying or manipulation.
  </Accordion>

  <Accordion title="`Created` events have a 3-4s delay. Is there a faster way to see newly launched tokens?">
    Use `eventType: Deployed` instead for faster updates. The two events are:

    * **`Deployed`** — sent immediately when the token contract is discovered (minimal latency). Includes fundamentals but may lack metadata like images.
    * **`Created`** — sent after metadata is fetched (3-4s latency). Includes complete token information.

    For the fastest results, subscribe to both and resolve the models on the frontend: use `Deployed` for immediate notification and `Created` to fill in metadata when it arrives. We have plans to reduce `Created` latency further (especially on Solana) while keeping the same `Deployed` → `Created` flow.
  </Accordion>
</AccordionGroup>

### Related Recipes

* [Launchpads](/recipes/launchpads): Build a launchpad discovery view with real-time token lifecycle updates
* [Launchpad Lifecycle](/recipes/launchpad-lifecycle): Understand how tokens progress through launchpad stages from bonding curve to graduation
