// docs
how it works
01 you create a coin: name, ticker, picture, and the pair (ARB or ETH). one signature. free, gas only.
02 the contract mints 1,000,000,000 coins and puts every one of them into a fresh Uniswap v4 pool. no wallet ever holds the supply.
03 the pool position lives inside the contract. it is not an lp token, it cannot be moved or withdrawn. trading opens the same block.
04 every swap leaves a small fee in the pool. the creator claims their cut from the coin page, paid in the pair asset only. the coin side of the fee is sold for the pair during the claim.
05 a coin created in sharing mode pays holders instead: every swap sets a slice aside in the pair asset, split by holdings, collected by the pool hook so it works on any router.
06 part of what the lair collects buys the ten biggest coins and sends them to the dead address. that is the hoard.
read api
public, no key, 300 requests a minute per IP. GET, JSON. base https://longcation.fun/api/d
GET /api/tokensevery coin with market data · q, sort (mc|new|vol|trending), mode, category, pair, page, pageSizeGET /api/tokens/{ca}one coin + last 50 trades + top 100 holders + rewards, fees, hoardGET /api/tokens/{ca}/rewardsholder payouts: collected, claimed, recent claims · null for coins that keep the feesGET /api/tokens/{ca}/feespool fees claimed and who they went toGET /api/candles/{ca}?tf=5mOHLCV in the pair asset · tf 1m 5m 15m 1h 4h 1d · limit ≤ 1000GET /api/trades?limit=50latest trades across the lair, or ?token= for one coinGET /api/launchescreate ledger, newest firstGET /api/pairspair assets: symbol, category, USD price, whether usable as a pairGET /api/rewardslifetime payouts per sharing coin + recent claimsGET /api/revenuegold collected, buys, burnsGET /api/revenue/historydaily totals in USD, keyed by UTC dateGET /api/flywheelthe hoard: current ten, rounds, totalsGET /api/statsaggregate totals and platform configcontracts
Launchpad—Router—Hook—Deployer—Create2Factory—PoolManager—Platform token—Chain—scripts
$ read a coin
const r = await fetch('https://longcation.fun/api/d/api/token/0xYourCoin');
const t = await r.json();
console.log(t.symbol, t.priceUsd, t.mc, t.pairSymbol);
t.tradesList.slice(0, 5).forEach(x => console.log(x.side, x.usd, 'USD', x.trader));$ buy from a script
const router = new ethers.Contract(ROUTER, [
'function buy(address coin,uint256 amountIn,uint256 minOut) payable returns (uint256)',
'function sell(address coin,uint256 amountIn,uint256 minOut) returns (uint256)',
], signer);
// ARB pair: approve the router for ARB, then pass amountIn. ETH pair: send value.
await router.buy(coin, ethers.utils.parseEther('25'), minOut);
// any Uniswap v4 router works too. pool key:
// { currency0, currency1, fee: 0x800000 (dynamic), tickSpacing: 200, hooks: HOOK }$ create from a script
const lp = new ethers.Contract(LAUNCHPAD, [
'function launch(string name,string symbol,(string uri,string logo,string description,string website,string twitter,string telegram) meta,uint8 mode,uint16 taxBps,address pair,uint256 pairBuyAmount,bytes32 salt) payable returns (address)',
], signer);
// salt: any bytes32 (no vanity suffix here). mode 0 = keeps the fees, 1 = shares (taxBps 100 or 300).
// pair = ARB address, or address(0) for ETH. pairBuyAmount = optional first buy (approve ARB first).
const tx = await lp.launch('Sunburnt Dragon', 'BURNT', meta, 0, 0, ARB, 0, ethers.utils.randomBytes(32));terms cover what this site is and is not.