Skip to main content
A purps.lol coin trades on a Meteora bonding curve until it raises the equivalent of 85 SOL, then graduates to a pool. We claim its creator fees for you and split each claim the way you choose with feePreset: For any other share, send one feeSplit object instead: { strategyBps, airdropBps, creatorBps } summing to 10000, for example { strategyBps: 6000, airdropBps: 0, creatorBps: 4000 } for 60% into the strategy and 40% to you. Send feePreset as the closest label alongside it. A strategyBps above zero needs a strategy object, same as the strategy preset. On top of the platform’s 1%, you set your own creator fee with creatorFeeBps: 50 to 980, that’s 0.5% to 9.8% of curve volume, 100 (1%) by default. That’s the fee the preset above routes. There’s no message to sign. The launch transaction can only land with your wallet’s signature, and that’s the proof.
1

Read the options

GET /launch-options and look under purps: who may launch, the creator fee range, and the payout assets. The three strategy presets sit at the top level, with what each one becomes in full. GET /pairs lists the pairs (SOL is So11111111111111111111111111111111111111112); GET /markets the perp markets and their leverage caps.
2

Build

POST /launches with name, symbol, quoteMint, feePreset, creatorWallet, the logo (image as a data URL, or imageUrl), and optionally feeSplit, devBuySol, creatorFeeBps, strategy (a preset with markets or legs, see below), description, twitter and telegram. We check the strategy, upload the metadata, build the transactions and record the launch as pending. A bad strategy, or a wallet the launchpad doesn’t admit, is refused before anything is uploaded.
3

Sign and send

Sign each of transactions with the creator wallet, and the one at createIndex with the mint keypair from mintSecret as well. POST /transactions/send them one at a time, in order, waiting for each to confirm before the next (a swap can go through your own node; the create at createIndex must go through the relay, which adds the launchpad’s memo signature). When the pair isn’t SOL and there’s a dev buy, the first transaction is a swap the launch spends. Send wait: 30 with each send and most of them answer confirmed straight away. If confirmed is false, poll GET /transactions/{signature} until it is; that poll runs on your own Helius key, sent as X-Helius-Key.
4

Wait for live

Poll GET /launches/{mint} every few seconds until status is live, usually within half a minute of the create confirming. We watch the chain and flip it ourselves. You don’t need to stay online; if your process dies after sending, the launch still completes. A launch whose transaction never lands turns failed after about an hour.

What it costs

The creator wallet needs about 0.03 SOL plus the dev buy. The build checks that before uploading anything (when it can read the balance). A dev buy on a non-SOL pair is converted from SOL by a swap transaction that runs before the launch; it’s sized to the swap’s worst-case output so it never spends more than the swap delivers. Send image as a data URL (data:image/png;base64,…; PNG, JPEG, WebP or GIF, 512KB max) or imageUrl as a public https link straight to the file. Fetching by URL is budgeted at 20 an hour per address; when the build answers 429 about image fetches, send the bytes as image instead. Or host the metadata yourself and send metadataUri instead of a logo: a public https link to a JSON file with name, symbol and an https image, the standard token metadata shape. We fetch it once to check it and upload nothing.

A strategy launch

With feePreset: "strategy", send a strategy with the terms. We check it before anything is uploaded and register it the moment the launch goes live. There’s no second signature. A strategy has three forms. Pick the smallest one that says what you want; they all end up as the same full config. 1. A preset and the markets. Every market is long at 2x, weights split evenly:
2. A preset and legs, when you want a short, or your own leverage, on any market:
3. The full config, for anything else: uneven weights, your own fee split, a take-profit on one leg. See the long way below. Forms 1 and 2 expand to exactly the config the create page builds from the same choices, so a coin launched through the API and one launched on the page are the same coin. All three work everywhere the API takes a strategy: here, on pump.fun and Pons, on a redirect, a later attach, and a creator-authority strategy change.
  • preset is steady, balanced or degen: the fee split, the take-profit and dip-buy rules, and each leg’s reserve mode, as /launch-options lists them. balanced, for instance, is 5% of each fee to buybacks, 75% to trading and 20% to the reserve.
  • markets is a list of names from /markets, up to 10, each once. Long at 2x, weights split evenly. Use legs instead when that isn’t what you want.
  • legs replaces markets: [{ "market", "direction", "leverage" }] per market. direction is long (default) or short; leverage a whole number from 1 to 100, within the market’s cap on /markets (default 2). Leave a field out to take its default, so { "market": "SOL" } is long at 2x. Weights are still split evenly; for uneven weights use the full config.
  • rewardMode decides what profits do: burn (the default) buys and burns the coin, holders airdrops the coin, backed airdrops payoutMint. Naming a payoutMint makes it backed on its own: a tokenised stock or major from the launchpad’s payoutAssets, or any Solana mint with a real market. payoutMintsExtra adds up to four more assets, split evenly. Paying coins need holderPayoutsEnabled to be true.
  • ownerControls: true asks for creator authority from launch: you can steer the coin from its page or through the API, every move signed and shown to holders. It applies while the platform has creator authority open.
  • No perps at all: { "preset": "airdrop" }, with no markets. Every fee goes to the buyback and is airdropped to holders as the coin, or as payoutMint when you name one.
A backed coin with creator authority, then:
feePreset: "airdrop" and the airdrop strategy preset are different things. The airdrop fee preset pays holders straight from the curve’s fees, in the pair token, with no strategy at all. The airdrop strategy preset is a strategy launch with no perps: every fee buys the coin, or the backed asset you name, and airdrops that.

The long way

The short form covers what the create page offers. For anything else (uneven weights, your own fee split, a take-profit or stop-loss on one leg, a different reserve mode) send the full config instead. It’s what the short form expands to, and it works everywhere the short form does:
  • The three splits and strategy come straight from a preset’s config in /launch-options. Custom values are fine too.
  • perpLegs are your pick from /markets; weights must sum to 10000 across legs. Use the preset’s legReserveMode as each leg’s reserveMode. A leg may also carry takeProfitPct and stopLossPct.
  • rewardMode, payoutMint, payoutMintsExtra and ownerControls mean the same as above (the older payoutMint2 still works for one extra asset).
  • No perps at all: the airdropOnly config from /launch-options.
Anything carrying splitBuybackBps is taken as the full form.

A complete example

Node 20+, npm i @solana/web3.js bs58, and your own free Helius key in HELIUS_API_KEY (the status polls run on it). Launches a coin paired with SOL that airdrops its fees to holders, from a keypair file.
launch.mjs
For a strategy launch, set feePreset: "strategy" and add strategy: { preset: "balanced", markets: ["ETH"] } to the build body.