Pump.fun & PumpSwap

How to detect pump.fun graduations the moment they happen

Detect pump.fun graduations in real time by subscribing to the Anaxer graduations WebSocket stream, which emits a graduated event - including timeToGraduateSeconds and liquiditySol - the instant a token completes its bonding curve.

4 min readAnton Gilborn

Detect pump.fun graduations by subscribing to the Anaxer graduations WebSocket stream. It emits a graduated event - including timeToGraduateSeconds and liquiditySol - the instant a token completes its bonding curve and migrates to a live pool. No polling, no pool-watching, no log decoding.

Who is this guide for?

This guide is for developers who need to act the instant a token graduates from pump.fun to PumpSwap:

  • Trading and sniper bots that enter at pool creation
  • Graduation alert bots (Telegram, Discord, webhooks)
  • Trading dashboards and token explorers
  • Analytics platforms tracking graduation rates and liquidity
  • PumpSwap liquidity and monitoring tools

If you only need a periodic list of recent graduations, the REST graduations endpoint is simpler. If you need to react the moment it happens, use the stream below.

Why do graduations matter?

A graduation is the transition from the pump.fun bonding curve to an open PumpSwap market. It is one of the highest-signal moments for a token: liquidity appears, price discovery opens up, and trading behavior changes. Catching it a few seconds late can mean missing the move entirely.

Detecting this against a raw RPC means watching the pump.fun program, decoding the migration instruction, and resolving the new PumpSwap pool - several moving parts that all have to stay correct as the program evolves. Anaxer collapses that into a single parsed event. (For how this compares to decoding a raw Yellowstone gRPC stream yourself, see raw gRPC or parsed events.)

How do I subscribe to graduations?

Open the stream and subscribe to the graduations channel.

const ws = new WebSocket("wss://api.anaxer.com/v1/stream?apiKey=YOUR_KEY");

ws.addEventListener("open", () => {
  ws.send(JSON.stringify({
    type: "subscribe",
    id: "grads",
    channel: "graduations",
    filters: { excludeMayhem: true, minLiquiditySol: 50 }
  }));
});

ws.addEventListener("message", (event) => {
  const envelope = JSON.parse(event.data);
  if (envelope.channel === "graduations") {
    const msg = envelope.data;
    console.log(
      `${msg.symbol} graduated in ${msg.timeToGraduateSeconds}s · ${msg.liquiditySol} SOL`
    );
  }
});

Pump.fun Mayhem-mode tokens can graduate with far less SOL in the pool than a classic ~85 SOL graduation. The filters above drop Mayhem coins and any graduation whose liquiditySol is below 50 (including null). Omit the filters if you want every graduation.

What does a graduation event contain?

The moment a token fills its bonding curve, the graduations stream pushes a card like this - the migration confirmed, with time-to-graduate attached:

Bonding curve
Graduated

Here is the same event as raw JSON. Raw amounts are strings, uiAmount is a number where present, timestamps are epoch milliseconds, and the slot orders it against every other on-chain event:

{
  "type": "graduated",
  "source": "pump_fun",
  "mint": "2ajrYELtYtvtJd8fQAGXpfQbgXXZe3YjPtNJ9K3bpump",
  "name": "Pepe",
  "symbol": "PEPE",
  "creator": "7BvK3nF2HxR8mP5qW9tL4sY6jC1dA8eU3gN2fM5A1zXY",
  "uri": "https://ipfs.io/ipfs/QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG",
  "mayhemMode": false,
  "socials": {
    "website": "https://www.pepe.vip",
    "twitter": "https://x.com/pepecoineth",
    "telegram": "https://t.me/pepe_coin"
  },
  "liquiditySol": 85.005,
  "timeToGraduateSeconds": 4523,
  "signature": "8Hn2vQ3xR7mLdW9fJcY6zT1nGpK5uA3oXvE2mBpS8dRzL4nJb9FgKtR5zXvY2mNc8hAeQ4WcS7pTz",
  "slot": 309845102,
  "timestamp": 1751009291000
}

timeToGraduateSeconds is how long the token took to fill its bonding curve. liquiditySol is the SOL seeded into the AMM at graduation (classic Pump.fun ≈ 85 SOL; thin Mayhem grads can be single-digit). Combined with mint, name, symbol, creator, and mayhemMode, you can act without a follow-up RPC call.

Per-channel subscription caps

One WebSocket connection may subscribe to multiple channels. Your plan caps concurrent subscriptions per channel across your account — Free: 1, Starter: 1, Pro: 2 — and every connection shares that counter. You can follow both creations and graduations on a single connection as long as each channel stays within its account-wide cap.

How do I backfill graduations I missed?

Track the last event timestamp (unix ms) and backfill with REST after any disconnect — there is no REST since parameter:

curl "https://api.anaxer.com/v1/graduations?from=<lastEventTimestamp>&limit=100" \
  -H "Authorization: Bearer YOUR_KEY"

Use the last event's unix-ms timestamp for from (list windows are retention-clamped). The response mirrors the stream event shape (walk next for pagination). See the graduations stream reference and the REST graduations endpoint for all parameters.

Troubleshooting: why am I missing graduations?

A few issues account for almost every missed or duplicate graduation:

  • No events at all. Send { type: "subscribe", id, channel: "graduations" } inside the open handler and confirm the { "type": "subscribed" } acknowledgement before expecting events.
  • You see the launch but never the graduation. Those are two separate events. Subscribe to graduations (or both creations and graduations on the same connection) - a token can graduate hours or days after it launches.
  • Duplicate graduations after a reconnect. Deduplicate by mint, and backfill with from set to the last event timestamp rather than replaying the whole window.

Next steps

Pair graduations with the creations stream to follow a token all the way from launch to live pool. Read the Solana streaming guide to make each connection production-ready. Prefer asking questions to writing WebSocket code? Claude can analyze graduations directly through the Anaxer MCP server. The pump.fun API covers the full ecosystem - launches, graduations, PumpSwap trades, and prices. Ready to build? Grab a free key in the console.

Frequently asked questions

What is a pump.fun graduation?

A graduation is when a pump.fun token completes its bonding curve and migrates to a live PumpSwap pool. It marks the transition from the launch curve to open-market trading and is a high-signal event for traders.

Does the graduation event include time-to-graduate and liquidity?

Yes. Anaxer graduation events include timeToGraduateSeconds, liquiditySol (SOL seeded into the AMM, or null if unknown), mayhemMode, uri, name, symbol, creator, and socials, so you can act without a follow-up lookup.

What is Mayhem mode and how do I skip thin graduations?

Pump.fun Mayhem-mode tokens can graduate with far less pool SOL than a classic ~85 SOL graduation. Every graduated event includes mayhemMode and liquiditySol. Use excludeMayhem: true and/or minLiquiditySol (e.g. 50) on the stream or REST endpoint. A set minLiquiditySol excludes events where liquiditySol is null. Pre-feature REST rows have no backfill.

Is the graduations stream available on the free plan?

Yes. The graduations stream is included on the Anaxer free plan alongside creations, with no card required.

How fast are graduation events delivered?

Anaxer delivers graduation events in under 450ms from on-chain confirmation, already parsed into JSON, so your bot or alert fires almost the moment a token migrates.

What is PumpSwap?

PumpSwap is the automated market maker (AMM) that pump.fun tokens migrate to when they graduate. Once a token completes its bonding curve, its liquidity moves into a PumpSwap pool where it trades on the open market.

Last updated July 25, 2026.

Start streaming Solana data

Anaxer gives you real-time pump.fun and PumpSwap streams and REST APIs on a flat plan. The free tier needs no card.

Written by Anton Gilborn · Senior Platform Engineer, Anaxer

Anton is a senior platform engineer at Anaxer, where he builds the real-time streaming infrastructure behind its Solana data API - token launches, graduations, DEX trades, prices, and transfers. He writes about low-latency streaming architecture and building fast on-chain apps.

Keep reading