Skip to main content

Live Launches & Graduations

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

  • Flap launches - a token appears on the Flap bonding curve. Several hundred a day.
  • four.meme launches - a token appears on the four.meme bonding curve, with its quote asset, tax and anti-sniper flag. Thousands a day.
  • Graduations - a curve on either launchpad sells out and the token moves to its permanent PancakeSwap pool.

Free, no key, no account.

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

Try it​

Choose a filter and connect. The latest event arrives at once, and everything after it streams in live.

Copy this​

Click Flap, four.meme or PancakeSwap to choose what the script receives - the URL updates.

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

ws.onmessage = (e) => {
const t = JSON.parse(e.data);
// t.type: new_launch or graduated
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​

The first message after connecting is a replay of the most recent event, so a fresh client has something to show. After that, every message is new.

A message is classified by two fields, type and protocol:

typeprotocolMeans
new_launchFLAPA token launched on the Flap curve - tradeable immediately.
new_launchFOURMEMEA token launched on the four.meme curve - tradeable immediately, at the opening anti-sniper fee if it has one.
graduatedPANCAKESWAPA Flap or four.meme curve sold out; the token moved to its PancakeSwap pool. launchpad says which.

Every message also carries launchpad, FLAP or FOURMEME. Filter with ?protocols=FLAP, ?protocols=FOURMEME or ?protocols=PANCAKESWAP, comma-separated for several, or omit it for everything; a launchpad's name matches its launches and its graduations, PANCAKESWAP matches every graduation. Or use the picker above.

Optional fields are omitted rather than sent as null, so branch on type before reading anything else.

{
"type": "new_launch",
"protocol": "FLAP",
"token": "0x2f1952E00F6BA7655993120B8c41E5ab511e7777",
"name": "星际巨舰",
"symbol": "星际巨舰",
"creator": "0xF31b8fcD326e0aD7837af0aefed60cC71Db82595",
"quoteToken": "BNB",
"tokenType": "tax_v3",
"buyTaxBps": 1000,
"sellTaxBps": 1000,
"graduationSupply": "800000000000000000000000000",
"meta": "bafkreidrm6a6ieclmputpy2iw5wxqkpcttpapxidcxpl5z5lj…",
"metaUri": "https://ipfs.io/ipfs/bafkreidrm6a6ieclmputpy2iw5wxqkpcttpapxidcxpl5z5lj…",
"blockNumber": 120101041,
"txHash": "0x…",
"timestamp": 1788610321
}

tokenType, the tax and the quote asset come from Flap's Portal at the moment of the event, so a sniper can decide on a launch without another request: skip 10% sell taxes, take only BNB-priced tokens, only stock-priced ones, whatever the rule is. quoteToken is a ticker (BNB, USD1, NVDAB, TSLAB...) for every asset in Supported quote assets, and an address for a quote the API has no name for, such as another Flap token. meta is the IPFS CID of the creator's metadata JSON (image, description, socials); metaUri is the same thing through a gateway.

A four.meme launch:

{
"type": "new_launch",
"protocol": "FOURMEME",
"launchpad": "FOURMEME",
"token": "0x9B051aE1e5d818F7e4666e64037196E3A206FFfF",
"name": "VLEPE",
"symbol": "VLEPE",
"creator": "0x002B0e22bE5F0B19295674B1A3E31795cC5B7483",
"quoteToken": "DJTB",
"tokenType": "tax_v9",
"buyTaxBps": 300,
"sellTaxBps": 300,
"graduationSupply": "800000000000000000000000000",
"graduationQuote": "1000000000000000000000",
"antiSniper": false,
"requestId": "103015779",
"infoUri": "https://four.meme/meme-api/v1/private/token/get/v2?address=0x9b051ae1e5d818f7e4666e64037196e3a206ffff",
"blockNumber": 123474388,
"txHash": "0x…",
"timestamp": 1790125683
}

The quote asset, the tax and the anti-sniper flag come from four.meme's contracts at the moment of the launch, the same way. tokenType is standard, tax, tax_v8 or tax_v9 (four.meme's tax-token generations; the last two tax buys and sells at buyTaxBps / sellTaxBps). graduationQuote is the raise at which the curve graduates, in the quote asset's base units. antiSniper: true means the trading fee starts high and decays block by block; Token Info shows the fee right now as currentBuyFeeBps. infoUri is four.meme's own record of the token: image, description and socials. launchTime is present when the creator scheduled trading to open later.

A graduated event carries pool (the PancakeSwap pool), liquidityTokens and liquidityQuote (what the launchpad put in it) instead, plus launchpad for where the token came from.

Buy quotas, taxes and anti-sniper fees

Some Flap launches cap what one wallet may buy on the curve, most launches on both launchpads carry a tax, and a four.meme launch with antiSniper: true charges a trading fee that starts high and falls block by block. All of it is in Token Info and in every quote from Buy & Sell, so a sniper that reads the quote before sending never overpays.

Notes​

  • Reconnect on drop. Long-lived sockets die; reconnect and you're re-seeded with the most recent event, so you won't miss much.
  • One socket per IP. A second is turned away with too_many_connections. An unfiltered socket already carries every event, so one is enough.