{"name":"Token Deployer API","version":"2.0.0","description":"Stateless REST API for deploying tokens on pump.fun with optional Jito bundle support.","flow":["1. Upload your token image and metadata via POST /ipfs to get a metadataUri.","2. Deploy the token via POST /deploy using that metadataUri."],"endpoints":[{"method":"GET","path":"/","description":"This documentation page."},{"method":"POST","path":"/wallets/generate","description":"Generate one or more fresh Solana keypairs. Useful for creating bundle wallets before a deploy.","contentType":"application/json","parameters":{"optional":{"count":{"type":"integer","default":1,"min":1,"max":20,"description":"Number of wallets to generate. Omit for a single wallet."}}},"example":{"request":{"count":2}},"response":{"success":{"success":true,"wallets":[{"address":"Pubkey1...","privateKey":"base58PrivKey1..."},{"address":"Pubkey2...","privateKey":"base58PrivKey2..."}]},"error":{"success":false,"error":"count must be an integer between 1 and 20"}}},{"method":"POST","path":"/ipfs","description":"Upload token metadata and image to IPFS. Returns a metadata URI for use with /deploy.","contentType":"multipart/form-data","parameters":{"required":{"name":{"type":"string","description":"Token name as it will appear on pump.fun"},"symbol":{"type":"string","description":"Token ticker symbol (e.g. \"DOGE\")"},"image":{"type":"file","description":"Token image file (png, jpg, gif, webp)"}},"optional":{"description":{"type":"string","description":"Token description shown on the pump.fun page"},"twitter":{"type":"string","description":"Twitter/X profile URL — displayed as a social link on the token page"},"telegram":{"type":"string","description":"Telegram group URL — displayed as a social link on the token page"},"website":{"type":"string","description":"Project website URL — displayed as a social link on the token page"}}},"example":{"request":"multipart/form-data — fields: name=\"My Token\", symbol=\"MTK\", description=\"A cool token\", twitter=\"https://x.com/mytoken\", image=<file>"},"response":{"success":{"metadataUri":"https://cf-ipfs.com/ipfs/Qm..."},"error":{"success":false,"error":"Error message"}}},{"method":"POST","path":"/deploy","description":"Deploy a token on pump.fun. Supports standard single-TX deployment or Jito bundle deployment with up to 4 additional buy wallets.","contentType":"application/json","parameters":{"required":{"privateKey":{"type":"string","description":"Deployer wallet private key (base58). This wallet pays for token creation and the optional dev buy."},"name":{"type":"string","description":"Token name (must match what was uploaded to /ipfs)"},"symbol":{"type":"string","description":"Token ticker symbol (must match what was uploaded to /ipfs)"},"metadataUri":{"type":"string","description":"IPFS metadata URI returned by POST /ipfs"}},"optional":{"mintPrivateKey":{"type":"string","description":"Mint keypair private key (base58). Controls the token mint address. If omitted, the server uses a vanity address ending in \"pump\" from the pool (if available), otherwise generates a random one."},"devBuySol":{"type":"number","description":"Amount of SOL the deployer wallet spends to buy tokens immediately after creation. This is the \"dev buy\" — the initial purchase from the bonding curve. Omit or set to 0 for no dev buy."},"mayhemMode":{"type":"boolean","default":false,"description":"When enabled, routes fees to pump.fun's reserved fee recipients instead of the standard ones. This is a pump.fun protocol-level toggle — use it if you know what it does."},"cashback":{"type":"boolean","default":false,"description":"When enabled, creator rewards are distributed back to traders rather than going to the deployer."},"bundleWallets":{"type":"array","maxItems":4,"description":"Enables Jito bundle deployment. An array of wallet objects that will each execute a buy on the bonding curve atomically in the same block as the token creation. Each wallet buys independently at the curve price.","items":{"privateKey":"Base58 private key for this buy wallet","buySol":"Amount of SOL this wallet spends to buy tokens"},"example":[{"privateKey":"<base58>","buySol":0.1}]},"jitoTipSol":{"type":"number","default":0.01,"description":"Jito validator tip in SOL (only used with bundleWallets). The server fetches the current 75th-percentile tip floor and uses whichever is higher — this value or the floor."}}},"examples":{"standard":{"description":"Deploy with a dev buy, no bundle","request":{"privateKey":"<base58 private key>","name":"My Token","symbol":"MTK","metadataUri":"https://cf-ipfs.com/ipfs/Qm...","devBuySol":0.5}},"bundle":{"description":"Deploy with a dev buy + 2 bundle wallets","request":{"privateKey":"<base58 private key>","name":"My Token","symbol":"MTK","metadataUri":"https://cf-ipfs.com/ipfs/Qm...","devBuySol":0.5,"jitoTipSol":0.01,"bundleWallets":[{"privateKey":"<base58 private key>","buySol":0.2},{"privateKey":"<base58 private key>","buySol":0.1}]}}},"response":{"standard":{"success":true,"mintAddress":"TokenMint111...pump","metadataUri":"https://cf-ipfs.com/ipfs/Qm...","signature":"5K7x..."},"bundle":{"success":true,"mintAddress":"TokenMint111...pump","metadataUri":"https://cf-ipfs.com/ipfs/Qm...","bundleId":"abc123...","devBuy":{"solSpent":0.5,"tokensReceived":12345678},"bundleBuys":[{"walletAddress":"...","solSpent":0.1,"tokensReceived":5000000}]},"error":{"success":false,"error":"Error message"}}},{"method":"GET","path":"/vanity/available","description":"Returns a boolean indicating whether the vanity address pool has at least one unused \"pump\" address available.","parameters":{},"example":{"request":"GET /vanity/available"},"response":{"available":{"success":true,"available":true},"unavailable":{"success":true,"available":false}}},{"method":"POST","path":"/token-meta","description":"Fetch on-chain metadata for any Solana token mint. Tries Metaplex Token Metadata first (older pump.fun tokens), then Token-2022 metadata extension (newer tokens). Also fetches the off-chain JSON at the metadata URI for social links and image URL.","contentType":"application/json","parameters":{"required":{"mint":{"type":"string","description":"Base58 mint address of the token to look up."}}},"example":{"request":{"mint":"vmLbJZfWVEf9AqBTBTcVXA87wBfPeQp98jbsnfwpump"}},"response":{"success":{"success":true,"mint":"vmLbJZfWVEf9AqBTBTcVXA87wBfPeQp98jbsnfwpump","name":"Token Name","symbol":"TKN","uri":"https://cf-ipfs.com/ipfs/Qm...","source":"metaplex","description":"Token description","twitter":"https://x.com/token","telegram":"https://t.me/token","website":"https://token.com","imageUrl":"https://cf-ipfs.com/ipfs/Qm..."},"error":{"success":false,"error":"No metadata found for that mint"}}},{"method":"POST","path":"/fees/balance","description":"Check claimable creator fee balance across both pump.fun (bonding curve) and pump-swap (AMM) programs. Works for pre-migration and post-migration tokens.","contentType":"application/json","parameters":{"required":{"privateKey or publicKey":{"type":"string","description":"Base58 private key or public key of the creator wallet. Use publicKey if you only need to check the balance without exposing your private key. Use privateKey to keep it consistent with other endpoints."}}},"examples":{"withPublicKey":{"description":"Check balance without exposing private key","request":{"publicKey":"<base58 public key>"}},"withPrivateKey":{"description":"Check balance using private key (consistent with other endpoints)","request":{"privateKey":"<base58 private key>"}}},"response":{"success":{"success":true,"address":"CreatorPublicKey...","balanceLamports":5000000,"balanceSol":0.005},"error":{"success":false,"error":"Error message"}}},{"method":"POST","path":"/fees/claim","description":"Claim all pending creator fees from both pump.fun (bonding curve) and pump-swap (AMM) programs in a single transaction.","contentType":"application/json","parameters":{"required":{"privateKey":{"type":"string","description":"Base58 private key of the creator wallet. Signs and pays for the claim transaction."}}},"example":{"request":{"privateKey":"<base58 private key>"}},"response":{"success":{"success":true,"address":"CreatorPublicKey...","claimedLamports":5000000,"claimedSol":0.005,"signatures":["5K7x..."]},"error":{"success":false,"error":"No fees available to claim"}}}],"notes":{"stateless":"Private keys are passed per request and never stored server-side.","mintPriority":"Mint address selection: explicit mintPrivateKey → vanity pool (\"pump\" suffix) → random keypair.","socials":"Twitter, Telegram, and Website URLs are embedded in the IPFS metadata during /ipfs upload. They appear as clickable links on the pump.fun token page. Cannot be changed after deployment.","balances":"Deployer wallet needs ~0.02 SOL overhead for token creation. Each bundle wallet needs its buySol amount + ~0.01 SOL buffer for rent and fees.","bundles":"Bundle deployments use Jito to land token creation + all buys atomically in a single block. Bundles retry up to 5 times with fresh blockhashes if not confirmed within 15 seconds.","solAmounts":"All SOL amounts are in SOL (not lamports). 1 SOL = 1,000,000,000 lamports."}}