> ## Documentation Index
> Fetch the complete documentation index at: https://docs.raze.bot/llms.txt
> Use this file to discover all available pages before exploring further.

# Solana launchpads

> Pump.fun, Raydium LaunchLab and Meteora DBC through Bags: what each reads and refuses.

`POST /launch/sol` with `platform`, `wallets`, the amounts, `token` and `rpcUrl`. The [transaction plan](/launch/overview#the-solana-transaction-plan) is the same on every platform.

```bash theme={null}
curl -s -X POST "$LAUNCH/launch/sol" -H 'content-type: application/json' -d '{
  "platform": "pump",
  "rpcUrl": "https://api.mainnet-beta.solana.com",
  "wallets": ["<creator>", "<buyer 1>", "<buyer 2>"],
  "amounts": [0.5, 0.2, 0.2],
  "token": { "name": "Example", "symbol": "EXM", "description": "…", "image": "https://…/logo.png" },
  "slippageBps": 1000,
  "jitoTipSol": 0.001
}'
```

## Common fields

| Field | |
| - | - |
| `wallets` | Addresses, or `{ address, amount }` objects. `wallets[0]` is the creator and pays the create. At most 50. |
| `amounts` | What each wallet spends, in whole units of the quote (SOL, USDC, USD1): `0.5` is 0.5 SOL. Ignored when the wallet objects carry `amount`. |
| `token` | `name`, `symbol`, `description`, `image`, socials, or a ready `metadataUri` |
| `slippageBps` | Slippage of every buy |
| `computeUnitPrice`, `computeUnitLimit` | Priority price in micro-lamports per unit (default 50,000), and the compute limit |
| `jitoTipSol` | Jito tip on the last buy, in SOL (default 0) |
| `feeWallet`, `feeBps` | A product fee on every buy, paid to `feeWallet`; both or neither |
| `encoding` | `base58` (default) or `base64` for `transactions` |
| `mintKey` | The mint's 64-byte secret; generated when absent |
| `rpcUrl` | Your Solana RPC |

Unknown fields are ignored.

## Pump.fun

`platform: "pump"` (the default).

* **Quote**: `quoteMint` `SOL` (default), the USDC mint, or another mint pump.fun allows as a quote. Spell SOL exactly `SOL`; other tickers are refused.
* **Amounts**: a wallet past the end of `amounts` buys `amounts[0]`, and with no `amounts` at all every wallet buys 0.01 SOL. Send `0` for a wallet that must not buy. Every buyer after the creator spends a small random amount less than asked (up to 2%), so the buys do not look identical.
* **Slippage**: each buy is an exact-token buy with a quote cap of `slippageBps` above its price (default 99%).
* **Mayhem Mode**: `mayhem: true` (or `mayhemMode`, `pumpType`). Only with a SOL or USDC quote.
* **Holder rewards**: `holderReward: true` creates a coin whose creator fee goes to holders (permanent).
* **Flat creator fee**: `creatorFeeBps`, up to the maximum pump.fun's program allows (300 bps at the time of writing).
* **Cashback** coins are deprecated: `cashBack: true` is refused.
* **Display creator**: `offchainCreator` sets the creator shown on pump.fun, only on a launch with no buy.

The answer carries `mint`, `transactions` and `legs`.

## Raydium LaunchLab

`platform: "raydium"` (or `letsbonk`, `launchlab`) builds a LetsBonk coin quoted in SOL. Choose another platform config with `bonkType`:

| `bonkType` | Platform |
| - | - |
| `standard` (default) | LetsBonk |
| `bonkers` | Bonkers (1% fee plus a 0.05% creator fee) |
| `balanced` | Balanced |
| `stonkfun` | StonkFun (Token-2022 mint) |
| `stonkfun-reward` | StonkFun reward coin (Token-2022 with a transfer tax: `rewardTaxBps` 100 or 300) |

Or pass the config address as `platformConfig`. `platform: "usd1"` is the same builder quoted in USD1.

<Warning>
  `platform: "bonk"` alone is refused with `400 unknown bonkType "bonk"`. Use `raydium` or `letsbonk`, with `bonkType` for the other platforms.
</Warning>

| Field | |
| - | - |
| `quoteMint` | `SOL` (default), `USD1`, or a mint with a LaunchLab config |
| `creatorBuy` | The creator's buy; overrides `amounts[0]` |
| `fundRaising` / `fundRaisingQuote` | The raise target in whole quote units (default 85 SOL, or 8,024.37 USD1). `fundRaisingQuote` may be `{ sol, usd1 }`. |
| `supply`, `totalBaseSell`, `decimals` | Curve settings, in base units (defaults: 10¹⁵ supply, 6 decimals) |
| `vesting` | `{ totalLockedAmount, cliffPeriod, unlockPeriod }` |
| `slippageBps` | Minimum output of each buy (default 9900) |

The service checks the curve against the launchpad's live rules (minimum raise, sell rate, supply) and the creator's SOL balance before building, and refuses with `502` and the reason. A buyer whose turn comes after the raise is full is refused too. A wallet with no amount simply does not buy. The answer adds `pool`, the LaunchLab pool of the new mint.

## Meteora DBC through Bags

`platform: "meteora"` (or `bags`) launches through Bags, in two calls. The service needs a Bags API key in its environment (`BAGS_API_KEY`); a self-hosted service needs its own.

<Steps>
  <Step title="Provision">
    The first call (no `feeShareConfigKey`) reserves a `…BAGS` mint on Bags (irreversible) and answers `mint`, `config`, `metadataUri` and `stages`: the fee-share config transactions. Sign and land them.
  </Step>

  <Step title="Launch">
    Call again with `feeShareConfigKey` (the `config` from step 1), `mintPubkey` (the reserved `mint`) and `token.metadataUri`. The answer is the launch: Bags' transaction first (v0, partly signed by Bags), then one v1 buy per other wallet.
  </Step>
</Steps>

* SOL quote only. Every wallet after the creator must buy a non-zero amount.
* `feeClaimers`: up to 15 `{ provider, username, bps }` (providers `twitter`, `tiktok`, `kick`, `github`, `instagram`, `onlyfans`, `solana`) sharing the creator fee; the creator keeps the rest.
* A Jito tip needs at least one buy transaction to ride on.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.