Skip to main content

Live Launches & Graduations

The whole token lifecycle on Robinhood Chain, pushed the moment it happens. Three things arrive on this one socket:

  • Launches - a token appears on any launchpad: Pons, Flap, Bags, o1, Pools.trade, PAIR, Long, letscash, Varo or Virtuals.
  • Graduations - a Pons or Flap curve sells out and the token moves to its permanent pool.
  • New Uniswap v4 pools - including tokens launched straight on Uniswap, without a curve.

Free, no key, no account.

wss://api.shrine.trade/rh/api/launches/ws

Try it​

Pick what you want and connect. You'll get the most recent event immediately, then new ones as they happen.

Copy this​

Click the launchpads you want - the URL updates.

const ws = new WebSocket("wss://api.shrine.trade/rh/api/launches/ws");

ws.onmessage = (e) => {
const t = JSON.parse(e.data);
// t.type: new_launch, graduated or new_pool
console.log(JSON.stringify(t, null, 2));
};

Save it as launches.js and run node launches.js - no packages needed (Node 22+).

What you get​

On connect you're sent the single most recent event so the screen isn't blank, then everything new as it happens.

Each message has a type and a protocol:

typeprotocolMeans
new_launchPONSA token launched on the Pons curve - tradeable immediately.
new_launchFLAP, BAGS, O1, POOLS_TRADE, LETSCASH, PAIR, LONG, VARO, VIRTUALSA token launched on that launchpad. Where the launch opened a Uniswap v4 pool, the pool key rides along (poolId, currency0, currency1, fee, tickSpacing, hooks); a Bags launch carries its curve.
graduatedUNISWAP_V4A Pons curve sold out; the token moved to its Uniswap v4 pool.
graduatedFLAPA Flap curve sold out; the token moved to its Uniswap v2 pair.
new_poolUNISWAP_V4A Uniswap v4 pool was created. Includes graduations and tokens launched directly on Uniswap. When the pool carries a launchpad's hook, launchpad names it (BAGS, say).

Filter with ?protocols=PONS,FLAP,BAGS - any comma-separated set of the names above (omit it for everything), or use the picker above.

Fields that don't apply to an event are simply absent, so check type first.

{
"type": "new_launch",
"protocol": "PONS",
"token": "0x84BD8478c0…",
"curve": "0x2ffCc8d7…",
"deployer": "0x1a2b3c…",
"name": "Tollbooth",
"symbol": "TOLLBOOTH",
"pairToken": "ETH",
"launchConfigId": 0,
"graduationThreshold": "4200000000000000000",
"uri": "ipfs://bafy…",
"description": "the greenest coin on Robinhood Chain",
"socials": {
"twitter": "https://x.com/grene",
"telegram": "", "discord": "", "website": "", "farcaster": ""
},
"blockNumber": 50952986,
"txHash": "0x…",
"timestamp": 1756654321
}

uri, description and socials come off the token contract itself - Pons stores them on-chain, so the creator's image URI and links arrive with the event and there's nothing extra to fetch.

A new_pool event carries poolId, currency0, currency1, fee, tickSpacing and hooks instead. A hooks of 0x0000…0000 means a plain Uniswap pool with no Pons hook - i.e. someone launched directly on Uniswap rather than through a curve.

Don't buy the instant you see a launch

Pons has sniper protection and taxes buys for about 3 seconds after a launch, starting near 99% and decaying to zero. Buying the moment a launch appears in this feed hands over almost your entire order as tax.

Notes​

  • Reconnect on drop. Long-lived sockets die; reconnect and you're re-seeded with the recent launches, so you won't miss much.
  • One subscription per IP. A second launch-feed connection from the same address is refused with too_many_connections. One socket with no filter carries everything, so you need no more; the data stream is a separate kind and can be open alongside it.
  • Nothing is stored. This is a live feed, not an archive - there's no history endpoint and no backfill.