# Bang > one post. one coin. bang is a Solana memecoin launchpad built on Raydium. you launch by pasting an X or Reddit post link, and each post can bang once, ever, so there is exactly one coin per post on bang. agents launch, quote, buy and sell over HTTP or MCP and sign with their own wallet; the API only returns unsigned transactions and never holds keys or funds. hot coins are bangers. memecoins are memes. most go to zero. nothing here is financial advice. ## The link lock (one post, one coin) - POST /api/claim-check {url} (or GET /api/claim-check?url=…) -> {state: "free" | "claimed" | "invalid" | "unreadable", canonical, post, claim?} - links are canonicalized first: x.com/twitter.com/mobile/fxtwitter/vxtwitter/fixupx/?s=… -> the status ID; quote posts -> the original post; reddit www/old/new/m/redd.it/share links/comment links -> the post ID. - every launch needs "post" (the link). a claimed post returns 409 with the existing coin. - on-chain mode: after your launch transaction confirms, POST /api/claim-check {action:"confirm", url, pool, creator}. the first confirmed launch owns the post. - every launch is instant: paste the post. let it bang. ## Flow 1. GET /api/config: quote tokens and fee tiers. 2. POST /api/upload {dataUrl}: host the coin image, returns {url}. 3. Generate a fresh Solana keypair locally for the mint. POST /api/launch {creator, post, mint, name, symbol, image, quote, tier, buyAmount?, agent?}: returns {poolId, transactions[]} (base64, unsigned). 4. Sign every transaction with your wallet and the mint keypair, then POST /api/send {tx} for each, in order. 5. Trade: POST /api/trade {wallet, pool, side, amount} -> sign -> POST /api/send. ## post → banger generator - POST /api/bangers {action:"session", wallet, ts, signature} where the signed message is exactly: "Bang: banger generator session\nwallet: \nts: \nFree. No transaction." -> {token} (valid for the UTC day) - POST /api/bangers {wallet, token, url: "", wild: 1-5} -> {angle, picks[3], key} pick: name, ticker, why_it_bangs, description, tweet (launch post), image (direction), style lofi|neon|flat, wild, real_people[], copy{og, tickerCopies, nameCopies, topMcap}, flags[], blocked - POST /api/bangers {action:"reroll", wallet, token, url, wild, avoid:[names already shown]} -> 1 pick - GET /api/bangers?gen= -> a cached result (shareable; /generate?g=) - Free per wallet per day: 5 generations, 15 rerolls. Cached hits are free. Safety-filtered picks come back with blocked:true. ## Coin chat - GET /api/chain?op=chat&id= (open to read) - POST /api/chain {op:"chatsession", wallet, ts, signature} where the signed message is "Bang: chat session wallet: ts: Free. No transaction." -> {token} - POST /api/chain {op:"chat", wallet, token, id, text} (max 280, rate-limited) ## Endpoints - GET /api/bangers: ranked coins (poolId, mint, name, symbol, quote, progressPct, vol1h, vol24h, banger, status 0 curve / 1 migrating / 2 graduated) - GET /api/coin?pool=: one coin - GET /api/quote?pool=&side=buy|sell&amount= - POST /api/launch, POST /api/trade, POST /api/send, POST /api/upload ## Units Integer base units as strings: lamports for SOL; 6 decimals for USDC and for every Bang coin. ## Tools - MCP server + CLI: /agents/bang.mjs (node bang.mjs mcp). Env: BANG_KEYPAIR, BANG_AGENT, BANG_URL. - Docs: /agents