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

# Launchpad Stream

Launchpad Stream is a Multi-Events Stream mode for live swaps and new pool creations on launchpad pools.

<b>Identifier on Mobula:</b> `launchpad`

It only emits live WebSocket events after subscription. It does not send init, sync, or remove payloads.

### WebSocket frame model

Every Launchpad Stream message is wrapped in the standard Multi-Events WebSocket frame:

| Field            | Type                                               | Description                                    |
| ---------------- | -------------------------------------------------- | ---------------------------------------------- |
| `data`           | `LaunchpadSwapMessage \| LaunchpadCreationMessage` | Event payload.                                 |
| `chainId`        | `string`                                           | Chain identifier, for example `solana:solana`. |
| `duplicateCount` | `number`                                           | Duplicate counter for the emitted event.       |
| `subscriptionId` | `string`                                           | Subscription id that matched the event.        |
| `tag`            | `string`                                           | Optional tag from the subscription payload.    |

### Subscription fields

Use `events: ["launchpad"]` on the chain-specific Multi-Events endpoint.

| Field                  | Type       | Default         | Description                                                                                                                                             |
| ---------------------- | ---------- | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `chainIds`             | `string[]` | Required        | Chains to subscribe to. Use `["solana:solana"]` for Solana.                                                                                             |
| `events`               | `string[]` | Required        | Must include `launchpad`.                                                                                                                               |
| `createdWithinMinutes` | `number`   | Service default | Only emits swaps and creations for launchpad pools created within this window.                                                                          |
| `tokenState`           | `boolean`  | `true`          | When true, swap events include token-details state in `data.token`.                                                                                     |
| `transaction`          | `boolean`  | `true`          | When true, swap events include the transaction (swap) body. Combine with `tokenState` to ingest transactions and token state independently (see below). |
| `subscriptionId`       | `string`   | Auto-generated  | Identifier copied into matching responses.                                                                                                              |
| `subscriptionTracking` | `boolean`  | `false`         | Includes subscription details in response logs for debugging.                                                                                           |

`transaction` and `tokenState` independently gate the two halves of each swap-driven frame. Both default to `true`. `creation` events are never gated by these flags.

| `transaction` | `tokenState` | Frame on each swap                                                       |
| ------------- | ------------ | ------------------------------------------------------------------------ |
| `true`        | `true`       | `{ event: 'swap', swap, token }` (default)                               |
| `true`        | `false`      | flat swap object in `data`                                               |
| `false`       | `true`       | `{ event: 'tokenState', token }` — token state only, no transaction body |
| `false`       | `false`      | no swap frame — only `creation` events flow (creation-only feed)         |

```json theme={null}
{
  "type": "stream",
  "authorization": "YOUR_API_KEY",
  "payload": {
    "chainIds": ["solana:solana"],
    "events": ["launchpad"],
    "createdWithinMinutes": 1440,
    "tokenState": true,
    "transaction": true,
    "subscriptionId": "test-launchpad-solana",
    "subscriptionTracking": true
  }
}
```

### Data shapes

`tokenState` and `transaction` change only swap messages. Creation messages always use the creation shape.

```typescript theme={null}
type LaunchpadStreamFrame =
  | LaunchpadSwapWithTokenStateFrame
  | LaunchpadSwapFlatFrame
  | LaunchpadTokenStateOnlyFrame
  | LaunchpadCreationFrame;

interface LaunchpadFrameBase {
  chainId: string;
  duplicateCount: number;
  subscriptionId: string;
  tag?: string;
}

interface LaunchpadSwapWithTokenStateFrame extends LaunchpadFrameBase {
  data: {
    event: 'swap';
    swap: LaunchpadSwap;
    token: TokenDetailsState | null;
  };
}

interface LaunchpadSwapFlatFrame extends LaunchpadFrameBase {
  data: LaunchpadSwap;
}

interface LaunchpadTokenStateOnlyFrame extends LaunchpadFrameBase {
  data: {
    event: 'tokenState';
    token: TokenDetailsState | null;
    subscriptionId: string;
    timestamp: number;
  };
}

interface LaunchpadCreationFrame extends LaunchpadFrameBase {
  data: {
    event: 'creation';
    creation: PoolContextPayload;
    subscriptionId: string;
    timestamp: number;
  };
}
```

### Swap object

`data.swap` is the unified fast-trade swap object. With `tokenState: false`, this object is sent directly as `data`.

```typescript theme={null}
interface LaunchpadSwap {
  pair: string;
  date: number;
  tokenPrice: number;
  tokenPriceVs: number;
  tokenAmount: number;
  tokenAmountVs: number;
  tokenAmountUsd?: number;
  tokenNativePrice: number;
  tokenMarketCapUSD: number;
  type: 'buy' | 'sell' | string;
  operation: 'regular' | 'arbitrage' | 'mev' | string;
  blockchain: string;
  hash: string;
  sender: string;
  tokenAmountRaw: string;
  tokenAmountRawVs: string;
  labels: string[];
  preBalanceBaseToken: string | null;
  preBalanceQuoteToken: string | null;
  postBalanceBaseToken: string | null;
  postBalanceQuoteToken: string | null;
  postBalanceRecipientBaseToken: string | null;
  platform: string | null;
  swapRecipient: string | null;
  gasFeesUSD: number | null;
  platformFeesUSD: number | null;
  mevFeesUSD: number | null;
  totalFeesUSD: number | null;
  platformMetadata: Record<string, unknown> | null;
  event: 'swap';
  subscriptionId: string;
  timestamp: number;
}
```

### Token object

When `tokenState` is `true`, `data.token` is the full token-details state fetched right before the message is sent. It can be `null` if token state cannot be loaded.

The token object is not reduced for Launchpad Stream. The live example below includes the full token state returned for that event.

Complete `data.token` field inventory. Nullable fields (for example `sourceFactory`, `bondingCurveAddress`, `liquidityBurnPercentage`) are omitted from a message when their value is `null`, so a single response may not contain every field listed here:

`address`, `chainId`, `symbol`, `name`, `decimals`, `id`
`priceUSD`, `priceToken`, `priceTokenString`, `approximateReserveUSD`, `approximateReserveTokenRaw`, `approximateReserveToken`
`totalSupply`, `circulatingSupply`, `marketCapUSD`, `marketCapDilutedUSD`, `logo`, `originLogoUrl`
`exchange`, `factory`, `source`, `sourceFactory`, `sourceMetadata`, `sourceFactoryMetadata`, `liquidityUSD`
`liquidityMaxUSD`, `bonded`, `bondingPercentage`, `bondingCurveAddress`, `preBondingFactory`, `poolAddress`, `top10HoldingsPercentage`
`top50HoldingsPercentage`, `top100HoldingsPercentage`, `top200HoldingsPercentage`, `devHoldingsPercentage`, `insidersHoldingsPercentage`, `bundlersHoldingsPercentage`
`snipersHoldingsPercentage`, `proTradersHoldingsPercentage`, `freshTradersHoldingsPercentage`, `smartTradersHoldingsPercentage`, `insidersCount`, `bundlersCount`
`snipersCount`, `proTradersCount`, `freshTradersCount`, `smartTradersCount`, `smartTradersBuys`, `freshTradersBuys`
`proTradersBuys`, `blockchain`, `type`, `tokenType`, `deployer`, `bondedAt`
`athUSD`, `atlUSD`, `athDate`, `atlDate`, `priceChange1minPercentage`, `priceChange5minPercentage`
`priceChange1hPercentage`, `priceChange4hPercentage`, `priceChange6hPercentage`, `priceChange12hPercentage`, `priceChange24hPercentage`, `poolPriceChange1minPercentage`
`poolPriceChange5minPercentage`, `poolPriceChange1hPercentage`, `poolPriceChange4hPercentage`, `poolPriceChange6hPercentage`, `poolPriceChange12hPercentage`, `poolPriceChange24hPercentage`
`liquidityBurnPercentage`, `volume1minUSD`, `volume5minUSD`, `volume15minUSD`, `volume1hUSD`, `volume4hUSD`
`volume6hUSD`, `volume12hUSD`, `volume24hUSD`, `volumeBuy1minUSD`, `volumeBuy5minUSD`, `volumeBuy15minUSD`
`volumeBuy1hUSD`, `volumeBuy4hUSD`, `volumeBuy6hUSD`, `volumeBuy12hUSD`, `volumeBuy24hUSD`, `volumeSell1minUSD`
`volumeSell5minUSD`, `volumeSell15minUSD`, `volumeSell1hUSD`, `volumeSell4hUSD`, `volumeSell6hUSD`, `volumeSell12hUSD`
`volumeSell24hUSD`, `trades1min`, `trades5min`, `trades15min`, `trades1h`, `trades4h`
`trades6h`, `trades12h`, `trades24h`, `buys1min`, `buys5min`, `buys15min`
`buys1h`, `buys4h`, `buys6h`, `buys12h`, `buys24h`, `sells1min`
`sells5min`, `sells15min`, `sells1h`, `sells4h`, `sells6h`, `sells12h`
`sells24h`, `buyers1min`, `buyers5min`, `buyers15min`, `buyers1h`, `buyers4h`
`buyers6h`, `buyers12h`, `buyers24h`, `sellers1min`, `sellers5min`, `sellers15min`
`sellers1h`, `sellers4h`, `sellers6h`, `sellers12h`, `sellers24h`, `traders1min`
`traders5min`, `traders15min`, `traders1h`, `traders4h`, `traders6h`, `traders12h`
`traders24h`, `feesPaid1minUSD`, `feesPaid5minUSD`, `feesPaid15minUSD`, `feesPaid1hUSD`, `feesPaid4hUSD`
`feesPaid6hUSD`, `feesPaid12hUSD`, `feesPaid24hUSD`, `totalFeesPaidUSD`, `totalFeesPaidNativeRaw`, `organicTrades1min`
`organicTrades5min`, `organicTrades15min`, `organicTrades1h`, `organicTrades4h`, `organicTrades6h`, `organicTrades12h`
`organicTrades24h`, `organicTraders1min`, `organicTraders5min`, `organicTraders15min`, `organicTraders1h`, `organicTraders4h`
`organicTraders6h`, `organicTraders12h`, `organicTraders24h`, `organicVolume1minUSD`, `organicVolume5minUSD`, `organicVolume15minUSD`
`organicVolume1hUSD`, `organicVolume4hUSD`, `organicVolume6hUSD`, `organicVolume12hUSD`, `organicVolume24hUSD`, `organicVolumeBuy1minUSD`
`organicVolumeBuy5minUSD`, `organicVolumeBuy15minUSD`, `organicVolumeBuy1hUSD`, `organicVolumeBuy4hUSD`, `organicVolumeBuy6hUSD`, `organicVolumeBuy12hUSD`
`organicVolumeBuy24hUSD`, `organicVolumeSell1minUSD`, `organicVolumeSell5minUSD`, `organicVolumeSell15minUSD`, `organicVolumeSell1hUSD`, `organicVolumeSell4hUSD`
`organicVolumeSell6hUSD`, `organicVolumeSell12hUSD`, `organicVolumeSell24hUSD`, `organicBuys1min`, `organicBuys5min`, `organicBuys15min`
`organicBuys1h`, `organicBuys4h`, `organicBuys6h`, `organicBuys12h`, `organicBuys24h`, `organicSells1min`
`organicSells5min`, `organicSells15min`, `organicSells1h`, `organicSells4h`, `organicSells6h`, `organicSells12h`
`organicSells24h`, `organicBuyers1min`, `organicBuyers5min`, `organicBuyers15min`, `organicBuyers1h`, `organicBuyers4h`
`organicBuyers6h`, `organicBuyers12h`, `organicBuyers24h`, `organicSellers1min`, `organicSellers5min`, `organicSellers15min`
`organicSellers1h`, `organicSellers4h`, `organicSellers6h`, `organicSellers12h`, `organicSellers24h`, `trendingScore1min`
`trendingScore5min`, `trendingScore15min`, `trendingScore1h`, `trendingScore4h`, `trendingScore6h`, `trendingScore12h`
`trendingScore24h`, `createdAt`, `latestTradeDate`, `holdersCount`, `description`, `socials`
`security`, `twitterReusesCount`, `twitterRenameCount`, `twitterRenameHistory`, `deployerMigrationsCount`, `deployerTokensCount`
`securityScore`, `securityScoreUpdatedAt`, `dexscreenerListed`, `dexscreenerHeader`, `dexscreenerAdPaid`, `dexscreenerAdPaidDate`
`dexscreenerPendingAt`, `dexscreenerSocialPaid`, `dexscreenerSocialPaidDate`, `rank`, `liveStatus`, `liveThumbnail`
`livestreamTitle`, `liveReplyCount`, `dexscreenerBoosted`, `dexscreenerBoostedDate`, `dexscreenerBoostedAmount`, `dexScreenerEnhanced`
`cexs`, `i18n`, `isMayhemMode`, `isCashbackCoin`, `isAgentMode`, `isOGCoin`

### Swap message with token state

`tokenState` defaults to `true`. In this mode, `data.event` is `swap`, `data.swap` is the unified fast-trade swap payload, and `data.token` is the full token-details state fetched just before the payload is sent. The example below is not abbreviated.

```json theme={null}
{
  "data": {
    "event": "swap",
    "swap": {
      "pair": "CyHKMgQUqathJoFXHNmwULwW6rQCDupuabEw4vnuWtM2",
      "date": 1780877914613,
      "tokenPrice": 0,
      "tokenPriceVs": 0,
      "tokenAmount": 50678309.12766,
      "tokenAmountVs": 0.839097327,
      "tokenAmountUsd": 55.543780038760936,
      "tokenNativePrice": 0,
      "tokenMarketCapUSD": 0,
      "type": "sell",
      "operation": "mev",
      "blockchain": "Solana",
      "hash": "3x7RdppKRbydDdSgmwJKCDLuAzbDyaZ1zUJP6dVUU49rrw5ZntKcxHRGpCABijskKDxy1Kvz55Ny7nXutYriUSgC",
      "sender": "Gygj9QQby4j2jryqyqBHvLP7ctv2SaANgh4sCb69BUpA",
      "tokenAmountRaw": "50678309127660",
      "tokenAmountRawVs": "839097327",
      "labels": [],
      "preBalanceBaseToken": "0",
      "preBalanceQuoteToken": "0",
      "postBalanceBaseToken": "0",
      "postBalanceQuoteToken": "0",
      "postBalanceRecipientBaseToken": "0",
      "platform": null,
      "swapRecipient": "Gygj9QQby4j2jryqyqBHvLP7ctv2SaANgh4sCb69BUpA",
      "gasFeesUSD": 0.0017872563918280074,
      "platformFeesUSD": 0,
      "mevFeesUSD": 0,
      "totalFeesUSD": 0.0017872563918280074,
      "platformMetadata": null,
      "event": "swap",
      "subscriptionId": "test-launchpad-solana",
      "timestamp": 1780877915727
    },
    "token": {
      "address": "CiQx7YJKgs6fHNbPKivHzHinb1jWfH5VjEmLaNzjrtWb",
      "chainId": "solana:solana",
      "symbol": "GRIND",
      "name": "GRIND",
      "decimals": 6,
      "id": 0,
      "priceUSD": 8.583804321194622e-7,
      "priceToken": 1.2967342254868688e-8,
      "priceTokenString": "0.00000001296734225486868779643256",
      "approximateReserveUSD": 826.4803145707567,
      "approximateReserveTokenRaw": "962836853736356",
      "approximateReserveToken": 962836853.736356,
      "totalSupply": 1000000000,
      "circulatingSupply": 1000000000,
      "marketCapUSD": 858.3804321194622,
      "marketCapDilutedUSD": 858.3804321194622,
      "logo": "https://metadata.mobula.io/assets/logos/solana_solana_CiQx7YJKgs6fHNbPKivHzHinb1jWfH5VjEmLaNzjrtWb.webp",
      "originLogoUrl": "https://api.vortexdeployer.com/image/863b4e69-9ae5-43ac-be0d-31af39357402.webp",
      "exchange": {
        "name": "PumpFun",
        "logo": "https://dd.dexscreener.com/ds-data/dexes/pumpfun.png"
      },
      "factory": "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P",
      "source": "pumpfun",
      "sourceMetadata": {
        "name": "PumpFun",
        "logo": "https://dd.dexscreener.com/ds-data/dexes/pumpfun.png"
      },
      "sourceFactoryMetadata": {
        "name": "PumpFun",
        "logo": "https://dd.dexscreener.com/ds-data/dexes/pumpfun.png"
      },
      "liquidityUSD": 826.4803145707567,
      "liquidityMaxUSD": 1937.1871904771463,
      "bonded": false,
      "bondingPercentage": 13.89019622539957,
      "preBondingFactory": "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P",
      "poolAddress": "CyHKMgQUqathJoFXHNmwULwW6rQCDupuabEw4vnuWtM2",
      "top10HoldingsPercentage": 12.5606031151896,
      "top50HoldingsPercentage": 12.5606031151896,
      "top100HoldingsPercentage": 12.5606031151896,
      "top200HoldingsPercentage": 12.5606031151896,
      "devHoldingsPercentage": 12.5606031151896,
      "insidersHoldingsPercentage": 0,
      "bundlersHoldingsPercentage": 0,
      "snipersHoldingsPercentage": 0,
      "proTradersHoldingsPercentage": 12.5606031151896,
      "freshTradersHoldingsPercentage": 0,
      "smartTradersHoldingsPercentage": 0,
      "insidersCount": 0,
      "bundlersCount": 0,
      "snipersCount": 0,
      "proTradersCount": 1,
      "freshTradersCount": 0,
      "smartTradersCount": 0,
      "smartTradersBuys": 0,
      "freshTradersBuys": 0,
      "proTradersBuys": 1,
      "blockchain": "Solana",
      "type": "pumpfun",
      "tokenType": "2022",
      "deployer": "popsP556X4XMXK5m8P39axrL7QayAGPDU8AKYVE8kxS",
      "bondedAt": null,
      "athUSD": 0.000002120249752553076,
      "atlUSD": 0.000002120249752553076,
      "athDate": "2026-06-08T00:18:17.356Z",
      "atlDate": "2026-06-08T00:18:17.356Z",
      "priceChange1minPercentage": -52.633825148060076,
      "priceChange5minPercentage": -52.633825148060076,
      "priceChange1hPercentage": -52.633825148060076,
      "priceChange4hPercentage": -52.633825148060076,
      "priceChange6hPercentage": -52.633825148060076,
      "priceChange12hPercentage": -52.633825148060076,
      "priceChange24hPercentage": -52.633825148060076,
      "poolPriceChange1minPercentage": 0,
      "poolPriceChange5minPercentage": 0,
      "poolPriceChange1hPercentage": 0,
      "poolPriceChange4hPercentage": 0,
      "poolPriceChange6hPercentage": 0,
      "poolPriceChange12hPercentage": 0,
      "poolPriceChange24hPercentage": 0,
      "liquidityBurnPercentage": null,
      "volume1minUSD": 813.8668634152958,
      "volume5minUSD": 813.8668634152958,
      "volume15minUSD": 813.8668634152958,
      "volume1hUSD": 813.8668634152958,
      "volume4hUSD": 813.8668634152958,
      "volume6hUSD": 813.8668634152958,
      "volume12hUSD": 813.8668634152958,
      "volume24hUSD": 813.8668634152958,
      "volumeBuy1minUSD": 444.8868111282737,
      "volumeBuy5minUSD": 444.8868111282737,
      "volumeBuy15minUSD": 444.8868111282737,
      "volumeBuy1hUSD": 444.8868111282737,
      "volumeBuy4hUSD": 444.8868111282737,
      "volumeBuy6hUSD": 444.8868111282737,
      "volumeBuy12hUSD": 444.8868111282737,
      "volumeBuy24hUSD": 444.8868111282737,
      "volumeSell1minUSD": 368.98005228702215,
      "volumeSell5minUSD": 368.98005228702215,
      "volumeSell15minUSD": 368.98005228702215,
      "volumeSell1hUSD": 368.98005228702215,
      "volumeSell4hUSD": 368.98005228702215,
      "volumeSell6hUSD": 368.98005228702215,
      "volumeSell12hUSD": 368.98005228702215,
      "volumeSell24hUSD": 368.98005228702215,
      "trades1min": 32,
      "trades5min": 32,
      "trades15min": 32,
      "trades1h": 32,
      "trades4h": 32,
      "trades6h": 32,
      "trades12h": 32,
      "trades24h": 32,
      "buys1min": 20,
      "buys5min": 20,
      "buys15min": 20,
      "buys1h": 20,
      "buys4h": 20,
      "buys6h": 20,
      "buys12h": 20,
      "buys24h": 20,
      "sells1min": 12,
      "sells5min": 12,
      "sells15min": 12,
      "sells1h": 12,
      "sells4h": 12,
      "sells6h": 12,
      "sells12h": 12,
      "sells24h": 12,
      "buyers1min": 2,
      "buyers5min": 2,
      "buyers15min": 2,
      "buyers1h": 2,
      "buyers4h": 2,
      "buyers6h": 2,
      "buyers12h": 2,
      "buyers24h": 2,
      "sellers1min": 1,
      "sellers5min": 1,
      "sellers15min": 1,
      "sellers1h": 1,
      "sellers4h": 1,
      "sellers6h": 1,
      "sellers12h": 1,
      "sellers24h": 1,
      "traders1min": 2,
      "traders5min": 2,
      "traders15min": 2,
      "traders1h": 2,
      "traders4h": 2,
      "traders6h": 2,
      "traders12h": 2,
      "traders24h": 2,
      "feesPaid1minUSD": 0.9430137649966145,
      "feesPaid5minUSD": 0.9430137649966145,
      "feesPaid15minUSD": 0.9430137649966145,
      "feesPaid1hUSD": 0.9430137649966145,
      "feesPaid4hUSD": 0.9430137649966145,
      "feesPaid6hUSD": 0.9430137649966145,
      "feesPaid12hUSD": 0.9430137649966145,
      "feesPaid24hUSD": 0.9430137649966145,
      "totalFeesPaidUSD": 0.9327674241022644,
      "totalFeesPaidNativeRaw": "15493638",
      "organicTrades1min": 9,
      "organicTrades5min": 9,
      "organicTrades15min": 9,
      "organicTrades1h": 9,
      "organicTrades4h": 9,
      "organicTrades6h": 9,
      "organicTrades12h": 9,
      "organicTrades24h": 9,
      "organicTraders1min": 1,
      "organicTraders5min": 1,
      "organicTraders15min": 1,
      "organicTraders1h": 1,
      "organicTraders4h": 1,
      "organicTraders6h": 1,
      "organicTraders12h": 1,
      "organicTraders24h": 1,
      "organicVolume1minUSD": 265.26004317815915,
      "organicVolume5minUSD": 265.26004317815915,
      "organicVolume15minUSD": 265.26004317815915,
      "organicVolume1hUSD": 265.26004317815915,
      "organicVolume4hUSD": 265.26004317815915,
      "organicVolume6hUSD": 265.26004317815915,
      "organicVolume12hUSD": 265.26004317815915,
      "organicVolume24hUSD": 265.26004317815915,
      "organicVolumeBuy1minUSD": 265.26004317815915,
      "organicVolumeBuy5minUSD": 265.26004317815915,
      "organicVolumeBuy15minUSD": 265.26004317815915,
      "organicVolumeBuy1hUSD": 265.26004317815915,
      "organicVolumeBuy4hUSD": 265.26004317815915,
      "organicVolumeBuy6hUSD": 265.26004317815915,
      "organicVolumeBuy12hUSD": 265.26004317815915,
      "organicVolumeBuy24hUSD": 265.26004317815915,
      "organicVolumeSell1minUSD": 0,
      "organicVolumeSell5minUSD": 0,
      "organicVolumeSell15minUSD": 0,
      "organicVolumeSell1hUSD": 0,
      "organicVolumeSell4hUSD": 0,
      "organicVolumeSell6hUSD": 0,
      "organicVolumeSell12hUSD": 0,
      "organicVolumeSell24hUSD": 0,
      "organicBuys1min": 9,
      "organicBuys5min": 9,
      "organicBuys15min": 9,
      "organicBuys1h": 9,
      "organicBuys4h": 9,
      "organicBuys6h": 9,
      "organicBuys12h": 9,
      "organicBuys24h": 9,
      "organicSells1min": 0,
      "organicSells5min": 0,
      "organicSells15min": 0,
      "organicSells1h": 0,
      "organicSells4h": 0,
      "organicSells6h": 0,
      "organicSells12h": 0,
      "organicSells24h": 0,
      "organicBuyers1min": 1,
      "organicBuyers5min": 1,
      "organicBuyers15min": 1,
      "organicBuyers1h": 1,
      "organicBuyers4h": 1,
      "organicBuyers6h": 1,
      "organicBuyers12h": 1,
      "organicBuyers24h": 1,
      "organicSellers1min": 0,
      "organicSellers5min": 0,
      "organicSellers15min": 0,
      "organicSellers1h": 0,
      "organicSellers4h": 0,
      "organicSellers6h": 0,
      "organicSellers12h": 0,
      "organicSellers24h": 0,
      "trendingScore1min": 0,
      "trendingScore5min": 0,
      "trendingScore15min": 0,
      "trendingScore1h": 0,
      "trendingScore4h": 0,
      "trendingScore6h": 0,
      "trendingScore12h": 0,
      "trendingScore24h": 0,
      "createdAt": "2026-06-08T00:18:18.000Z",
      "latestTradeDate": "2026-06-08T00:18:34.613Z",
      "holdersCount": 3,
      "description": null,
      "socials": {
        "twitter": "https://x.com/humanevolvd/status/2063752344190226442?s=46",
        "website": null,
        "telegram": null,
        "others": {
          "showName": true,
          "createdOn": "https://pump.fun"
        }
      },
      "security": {
        "buyTax": "0",
        "sellTax": "0",
        "isFreezable": false,
        "transferTax": "0",
        "isBlacklisted": false,
        "noMintAuthority": true,
        "transferPausable": false
      },
      "twitterReusesCount": 0,
      "twitterRenameCount": 0,
      "twitterRenameHistory": [],
      "deployerMigrationsCount": 7,
      "deployerTokensCount": 817,
      "securityScore": null,
      "securityScoreUpdatedAt": null,
      "dexscreenerListed": false,
      "dexscreenerHeader": null,
      "dexscreenerAdPaid": false,
      "dexscreenerAdPaidDate": null,
      "dexscreenerPendingAt": null,
      "dexscreenerSocialPaid": false,
      "dexscreenerSocialPaidDate": null,
      "rank": null,
      "liveStatus": null,
      "liveThumbnail": null,
      "livestreamTitle": null,
      "liveReplyCount": null,
      "dexscreenerBoosted": false,
      "dexscreenerBoostedDate": null,
      "dexscreenerBoostedAmount": 0,
      "dexScreenerEnhanced": null,
      "cexs": [],
      "i18n": null,
      "isMayhemMode": true,
      "isCashbackCoin": false,
      "isAgentMode": null,
      "isOGCoin": null
    }
  },
  "chainId": "solana:solana",
  "duplicateCount": 1,
  "subscriptionId": "test-launchpad-solana"
}
```

### Swap message without token state

Set `tokenState` to `false` to skip the token-details lookup. In this mode, `data` is the flat unified fast-trade swap object.

```json theme={null}
{
  "data": {
    "event": "swap",
    "pair": "CyHKMgQUqathJoFXHNmwULwW6rQCDupuabEw4vnuWtM2",
    "date": 1780877914613,
    "tokenPrice": 0,
    "tokenPriceVs": 0,
    "tokenAmount": 50678309.12766,
    "tokenAmountVs": 0.839097327,
    "tokenAmountUsd": 55.543780038760936,
    "tokenNativePrice": 0,
    "tokenMarketCapUSD": 0,
    "type": "sell",
    "operation": "mev",
    "blockchain": "Solana",
    "hash": "3x7RdppKRbydDdSgmwJKCDLuAzbDyaZ1zUJP6dVUU49rrw5ZntKcxHRGpCABijskKDxy1Kvz55Ny7nXutYriUSgC",
    "sender": "Gygj9QQby4j2jryqyqBHvLP7ctv2SaANgh4sCb69BUpA",
    "tokenAmountRaw": "50678309127660",
    "tokenAmountRawVs": "839097327",
    "subscriptionId": "test-launchpad-solana",
    "timestamp": 1780877915727
  },
  "chainId": "solana:solana",
  "duplicateCount": 1,
  "subscriptionId": "test-launchpad-solana"
}
```

### Token-state-only message

Set `transaction` to `false` with `tokenState: true` to receive the token-details state without the transaction body. `data.token` is identical to the `token` object wrapped in the default swap message above.

```json theme={null}
{
  "data": {
    "event": "tokenState",
    "token": {
      "address": "CiQx7YJKgs6fHNbPKivHzHinb1jWfH5VjEmLaNzjrtWb",
      "chainId": "solana:solana",
      "symbol": "GRIND",
      "name": "GRIND"
    },
    "subscriptionId": "test-launchpad-solana",
    "timestamp": 1780877915727
  },
  "chainId": "solana:solana",
  "duplicateCount": 1,
  "subscriptionId": "test-launchpad-solana"
}
```

With both `transaction: false` and `tokenState: false`, swaps emit no frame at all — the subscription becomes a creation-only feed.

### Creation message

Creation events are emitted when a new launchpad pool payload is received. Neither `tokenState` nor `transaction` affects creation events.

`data.creation` is forwarded from the new pool payload:

```typescript theme={null}
interface PoolContextPayload {
  chainId: string;
  pool: EnrichedPoolData;
  token: EnrichedTokenData;
  justCreated: boolean;
  poolFull?: PoolFull;
  tokenFull?: TokenFull;
}
```

```json theme={null}
{
  "data": {
    "event": "creation",
    "creation": {
      "chainId": "solana:solana",
      "justCreated": true,
      "pool": {
        "address": "CyHKMgQUqathJoFXHNmwULwW6rQCDupuabEw4vnuWtM2",
        "type": "pumpfun",
        "createdAt": "2026-06-08T00:18:18.000Z"
      },
      "token": {
        "address": "CiQx7YJKgs6fHNbPKivHzHinb1jWfH5VjEmLaNzjrtWb",
        "chainId": "solana:solana",
        "symbol": "GRIND",
        "name": "GRIND"
      }
    },
    "subscriptionId": "test-launchpad-solana",
    "timestamp": 1780877915727
  },
  "chainId": "solana:solana",
  "duplicateCount": 1,
  "subscriptionId": "test-launchpad-solana"
}
```

### Field notes

* `data.swap` is the same unified fast-trade swap format used by Mobula fast-trade streams.
* `data.token` is the token-details state, not a pool creation payload.
* `data.creation` is the new pool payload forwarded by the stream service.
* `createdWithinMinutes` filters against the launchpad pool `createdAt`.
