Developers
A public read API, no key, 300 requests a minute per IP. Launching, trading and claiming happen straight from a wallet against the contracts — there is nothing to prepare or submit through us. Everything we show, you can read.
Endpoints GET · JSON · base
https://puped.example/api/d/api/tokensevery coin with market data · q, sort (mc|new|vol|trending), mode, category, pair, page, pageSize/api/tokens/{ca}one coin + last 50 trades + top 100 holders + rewards, burns, flywheel/api/tokens/{ca}/burnstotal burned and recent sell-burns/api/tokens/{ca}/rewardstax collected, claimed, recent claims — null for standard coins/api/tokens/{ca}/feespool fees claimed and who they went to/api/candles/{ca}?tf=5mOHLCV in the quote asset · tf 1m 5m 15m 1h 4h 1d · limit ≤ 1000/api/trades?limit=50latest trades across the platform, or ?token= for one coin/api/launcheslaunch ledger, newest first/api/pairsquote assets: symbol, category, USD price, whether launchable/api/rewardslifetime payouts per reward coin + recent claims/api/revenuefee revenue, buybacks, burns/api/revenue/historydaily totals in USD, keyed by UTC date/api/statsaggregate totals and platform configrate limit300 requests / minute / IP. Cached a few seconds server-side; ETag and gzip supported.Contracts
Launchpad—Router—Hook—PoolManager—Platform token—Chain—Read a coin
const r = await fetch('https://puped.example/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);
// ETH pair: send value. ERC-20 pair: approve the router, pass amountIn.
await router.buy(coin, 0, minOut, { value: ethers.utils.parseEther('0.1') });
// Any Uniswap v4 router works too: the pool key is
// { currency0, currency1, fee: 0x800000 (dynamic), tickSpacing: 200, hooks: HOOK }Launch 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)',
'function predictToken(address creator,bytes32 salt,string name,string symbol,(string,string,string,string,string,string) meta) view returns (address)',
'function launchFee() view returns (uint256)',
], signer);
// every coin's address ends in 0000: mine a salt until predictToken(you, salt, ...) has that suffix
// (about 65k keccaks — see /api/config for deployer + tokenCreationCode, or just loop on predictToken)
const fee = await lp.launchFee();
// mode 0 = standard, 1 = reward (taxBps 100 or 300); pair = address(0) for ETH
const tx = await lp.launch('NVDA Doge', 'NVDGE', meta, 0, 0, NVDAX, 0, salt, { value: fee });Questions? Terms cover what this site is and is not.