> ## 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.

# Build a launch

> Builds the unsigned transactions of one launch. Nothing is signed for your wallets and
nothing is sent. The fields a request needs depend on the platform: pick the matching
body below. The whole call is bounded at 90 seconds (`504`).

Request-shape errors answer `400`, and a catalogued launchpad without a builder `501`.
Refusals raised inside a builder answer `502` (`launch_failed`) with the reason in
`error.message`, even when the fix is on your side: balances, curve limits, on-chain fee
caps, quote assets and Bags, but also some checks that need no network (pump's
`mintKey`, pump wallet addresses, missing image).


The create and the first buys, unsigned. Also at `/v1/launch/{chain}`.

Guides: [Launch overview](/launch/overview) (the transaction plan, mint keys, errors), [Solana launchpads](/launch/solana), [Robinhood Chain](/launch/robinhood).

<Warning>
  Many fixable inputs come back as `502 launch_failed`, not `400`: a 32-byte `mintKey`, an underfunded payer, a curve setting out of the launchpad's range. Read `error.message`.
</Warning>


## OpenAPI

````yaml launch.openapi.yaml POST /launch/{chain}
openapi: 3.1.0
info:
  title: Raze Launch API
  version: 1.0.0
  description: >
    Builds **unsigned** token-deploy transactions: one token create plus the
    first buys, from up

    to 50 wallets. The service never signs for your wallets, never broadcasts
    and never holds

    funds; you sign every transaction with your own keys and send them however
    you like.


    **Live builders**

    - Solana (`sol`): Pump.fun (`pump`), Raydium LaunchLab (`raydium`, with the
    LetsBonk, Bonkers,
      Balanced, StonkFun and USD1 modes) and Meteora DBC through Bags (`meteora` / `bags`).
    - Robinhood Chain (`robinhood`, chain id 4663): pons.family V2 (default) and
    V1 (`pons`).

    - `eth`, `bsc`, `base` and the other catalogued launchpads answer `501`.


    **Solana transactions** are v1 transactions (SIMD-0385): up to 4096 bytes,
    no address lookup

    tables, compute budget inside the message. Your signer must support v1.
    `transactions[0]` is

    the create (with the creator's buy inside it), then one buy per other
    wallet, in the order the

    buys were priced. `legs[i]` says who signs `transactions[i]`. The mint's
    signature is already

    in the create; every wallet slot is empty. The one exception is a Bags
    launch, whose first

    transaction is a v0 transaction that Bags builds and partly signs.


    **Robinhood** returns EIP-1559 (type 2) transaction objects in
    `unsignedTxs`, to sign with the

    `from` key.


    **Envelope.** Every answer is `{ "ok", "data", "error", "nextCursor" }`. On
    success `ok` is

    `true` and `error` is `null`; on failure `ok` is `false`, `data` is `null`
    and `error` is

    `{ "code", "message" }`. Responses carry `Cache-Control: no-store`.


    **Amounts** in requests are whole units of the quote asset (`0.5` = 0.5 SOL,
    `10` = 10 USD1),

    unless a field says otherwise.


    **RPC.** Each create reads the chain through `rpcUrl` from the body. When it
    is missing the

    service falls back to its environment (`SOLANA_RPC`; `HOOD_RPC` or
    `EVM_RPC_HOOD`, then a

    public Robinhood node).
servers:
  - url: http://127.0.0.1:8788
    description: Your launch service (default port)
security: []
tags:
  - name: catalog
    description: Health, chains and launchpads
  - name: launch
    description: Build unsigned launch transactions
paths:
  /launch/{chain}:
    parameters:
      - $ref: '#/components/parameters/chain'
    post:
      tags:
        - launch
      summary: Build a launch
      description: >
        Builds the unsigned transactions of one launch. Nothing is signed for
        your wallets and

        nothing is sent. The fields a request needs depend on the platform: pick
        the matching

        body below. The whole call is bounded at 90 seconds (`504`).


        Request-shape errors answer `400`, and a catalogued launchpad without a
        builder `501`.

        Refusals raised inside a builder answer `502` (`launch_failed`) with the
        reason in

        `error.message`, even when the fix is on your side: balances, curve
        limits, on-chain fee

        caps, quote assets and Bags, but also some checks that need no network
        (pump's

        `mintKey`, pump wallet addresses, missing image).
      operationId: createLaunch
      requestBody:
        $ref: '#/components/requestBodies/Launch'
      responses:
        '200':
          $ref: '#/components/responses/Launch'
        '400':
          $ref: '#/components/responses/BadRequest'
        '501':
          $ref: '#/components/responses/NotImplemented'
        '502':
          $ref: '#/components/responses/LaunchFailed'
        '504':
          $ref: '#/components/responses/Timeout'
components:
  parameters:
    chain:
      name: chain
      in: path
      required: true
      description: >-
        `sol` (alias `solana`) or `robinhood` (aliases `hood`, `rh`, `robin`,
        `robinhoodchain`, `4663`). `eth` (`ethereum`), `bsc` (`bnb`, `binance`,
        `binancesmartchain`) and `base` are recognised but have no builder. Case
        and punctuation are ignored.
      schema:
        type: string
        example: sol
  requestBodies:
    Launch:
      required: true
      description: >-
        JSON. Unknown fields are ignored; a field with the wrong type is a
        `400`. The `Content-Type` header is not checked.
      content:
        application/json:
          schema:
            oneOf:
              - $ref: '#/components/schemas/PumpLaunch'
              - $ref: '#/components/schemas/LaunchLabLaunch'
              - $ref: '#/components/schemas/BagsLaunch'
              - $ref: '#/components/schemas/PonsLaunch'
          examples:
            pump:
              summary: Pump.fun, creator plus two buyers
              value:
                platform: pump
                wallets:
                  - 2qPNgjtkrEN5T1uoEENQx2xMRfomyJYm5o4pZwYa32CP
                  - GU5Y6qEsqDYRG7iuSzFhbcHsPfXyz5FTeUwFmdJMxCvB
                  - ERFXmFZ7n3MSUBQeFX44U4iCNQGLBNbhDawebzU9JDdp
                amounts:
                  - 0.5
                  - 0.2
                  - 0.1
                token:
                  name: Docs Test
                  symbol: DOCS
                  description: docs
                  image: https://example.com/i.png
                  metadataUri: https://example.com/meta.json
                slippageBps: 1000
                computeUnitPrice: 100000
                jitoTipAmountSol: 0.001
                rpcUrl: https://api.mainnet-beta.solana.com
            pumpCreateOnly:
              summary: Pump.fun create only, holder rewards, base64
              value:
                platform: pump
                wallets:
                  - 2qPNgjtkrEN5T1uoEENQx2xMRfomyJYm5o4pZwYa32CP
                amounts:
                  - 0
                holderReward: true
                creatorFeeBps: 100
                encoding: base64
                token:
                  name: Docs Test
                  symbol: DOCS
                  image: https://example.com/i.png
                  metadataUri: https://example.com/meta.json
                rpcUrl: https://api.mainnet-beta.solana.com
            letsbonk:
              summary: Raydium LaunchLab (LetsBonk), quoted in SOL
              value:
                platform: raydium
                bonkType: letsbonk
                wallets:
                  - 2qPNgjtkrEN5T1uoEENQx2xMRfomyJYm5o4pZwYa32CP
                  - GU5Y6qEsqDYRG7iuSzFhbcHsPfXyz5FTeUwFmdJMxCvB
                  - ERFXmFZ7n3MSUBQeFX44U4iCNQGLBNbhDawebzU9JDdp
                amounts:
                  - 0.5
                  - 0.2
                  - 0.1
                slippageBps: 500
                jitoTipAmountSol: 0.001
                token:
                  name: Docs Test
                  symbol: DOCS
                  image: https://example.com/i.png
                  metadataUri: https://example.com/meta.json
                rpcUrl: https://api.mainnet-beta.solana.com
            usd1:
              summary: Raydium LaunchLab quoted in USD1, with a 1% product fee
              value:
                platform: usd1
                wallets:
                  - 2qPNgjtkrEN5T1uoEENQx2xMRfomyJYm5o4pZwYa32CP
                  - GU5Y6qEsqDYRG7iuSzFhbcHsPfXyz5FTeUwFmdJMxCvB
                amounts:
                  - 10
                  - 5
                feeWallet: GN1AZrbcH3XFgmUUtGSDZGaFnXj9vJD5bqEfZR4RT8hL
                feeBps: 100
                token:
                  name: Docs Test
                  symbol: DOCS
                  image: https://example.com/i.png
                  metadataUri: https://example.com/meta.json
                rpcUrl: https://api.mainnet-beta.solana.com
            stonkfunReward:
              summary: StonkFun reward coin, 3% transfer tax
              value:
                platform: raydium
                bonkType: stonkfun-reward
                rewardTaxBps: 300
                wallets:
                  - 2qPNgjtkrEN5T1uoEENQx2xMRfomyJYm5o4pZwYa32CP
                amounts:
                  - 0.1
                token:
                  name: Docs Test
                  symbol: DOCS
                  image: https://example.com/i.png
                  metadataUri: https://example.com/meta.json
                rpcUrl: https://api.mainnet-beta.solana.com
            bagsProvision:
              summary: Bags, first call (provisions the fee-share config)
              value:
                platform: bags
                wallets:
                  - 2qPNgjtkrEN5T1uoEENQx2xMRfomyJYm5o4pZwYa32CP
                  - GU5Y6qEsqDYRG7iuSzFhbcHsPfXyz5FTeUwFmdJMxCvB
                amounts:
                  - 0.5
                  - 0.2
                feeClaimers:
                  - provider: twitter
                    username: docs_friend
                    share: 20
                token:
                  name: Docs Test
                  symbol: DOCS
                  description: docs
                  image: https://example.com/i.png
                rpcUrl: https://api.mainnet-beta.solana.com
            bagsResume:
              summary: Bags, second call (launch on the provisioned config)
              value:
                platform: bags
                wallets:
                  - 2qPNgjtkrEN5T1uoEENQx2xMRfomyJYm5o4pZwYa32CP
                  - GU5Y6qEsqDYRG7iuSzFhbcHsPfXyz5FTeUwFmdJMxCvB
                amounts:
                  - 0.5
                  - 0.2
                feeShareConfigKey: CNPjsdLahAWyAMDuLh9PwYKn9MSeuuMG9tqVg7a5SfXu
                mintPubkey: BsUYc4mfQBLxuEcXdPnyZ1HFT7iuE6VEVVoLJKkKBAGS
                jitoTipAmountSol: 0.001
                token:
                  name: Docs Test
                  symbol: DOCS
                  description: docs
                  image: https://example.com/i.png
                  metadataUri: <the metadataUri returned by the first call>
                rpcUrl: https://api.mainnet-beta.solana.com
            ponsV2:
              summary: pons V2, native ETH dev buy
              value:
                platform: pons
                wallets:
                  - '0x5f330f0d2ec6349a1634248ef0379ef346dde24f'
                  - '0x114378fd054c017ecbe90d74103067e44a1204b2'
                devBuyEth: 0.001
                creatorTaxBps: 100
                socials:
                  twitter: https://x.com/docs
                token:
                  name: Docs Test
                  symbol: DOCS
                  description: docs test token
                  image: >-
                    ipfs://bafkreigh2akiscaildcqabsyg3dfr6chu3fgpregiymsck7e7aqa4s52zy
                rpcUrl: https://robinhood-rpc.publicnode.com
            ponsV2Usdg:
              summary: pons V2 paired with USDG (approve, then launchAndBuy)
              value:
                platform: pons
                wallets:
                  - '0x5f330f0d2ec6349a1634248ef0379ef346dde24f'
                quote: USDG
                amounts:
                  - 10
                token:
                  name: Docs Test
                  symbol: DOCS
                  description: docs test token
                  image: >-
                    ipfs://bafkreigh2akiscaildcqabsyg3dfr6chu3fgpregiymsck7e7aqa4s52zy
                rpcUrl: https://robinhood-rpc.publicnode.com
            ponsV1:
              summary: pons V1 (explicit quote address)
              value:
                platform: pons
                ponsVersion: v1
                wallets:
                  - '0x5f330f0d2ec6349a1634248ef0379ef346dde24f'
                quote: 0x<an address the V1 factory allows (isAllowedQuote)>
                token:
                  name: Docs Test
                  symbol: DOCS
                  description: docs test token
                  image: >-
                    ipfs://bafkreigh2akiscaildcqabsyg3dfr6chu3fgpregiymsck7e7aqa4s52zy
                rpcUrl: https://robinhood-rpc.publicnode.com
  responses:
    Launch:
      description: The unsigned transactions of the launch
      content:
        application/json:
          schema:
            allOf:
              - $ref: '#/components/schemas/Envelope'
              - type: object
                properties:
                  data:
                    oneOf:
                      - $ref: '#/components/schemas/SolanaLaunchResult'
                      - $ref: '#/components/schemas/BagsProvisionResult'
                      - $ref: '#/components/schemas/PonsV2Result'
                      - $ref: '#/components/schemas/PonsV1Result'
          examples:
            pump:
              summary: Pump.fun, create plus two buys
              value:
                ok: true
                data:
                  platform: pump
                  family: solana
                  mint: Af6hqgjTc5fBuQR3nVwdaZRjM3opeRC9122uQiifEsid
                  transactions:
                    - 9Z1toeB5upUXCq8vMt7VP7wSB6D5VvK8Kz2QKc4dPn5kY1vT…znsFkN7T
                    - 8jNQYWuScTknmgbLHMRzAUvhNpqS6MZi9GvZATb3bZJR8UhH…VeEEFeQw
                    - RPGHZnfEe3xe9hdnzH6FwECtjWrCtjpBMhDcfTfV2G1yBaoS…inkRW3Jw
                  legs:
                    - kind: create
                      wallet: 2qPNgjtkrEN5T1uoEENQx2xMRfomyJYm5o4pZwYa32CP
                      walletIndex: 0
                      version: 1
                    - kind: buy
                      wallet: GU5Y6qEsqDYRG7iuSzFhbcHsPfXyz5FTeUwFmdJMxCvB
                      walletIndex: 1
                      version: 1
                    - kind: buy
                      wallet: ERFXmFZ7n3MSUBQeFX44U4iCNQGLBNbhDawebzU9JDdp
                      walletIndex: 2
                      version: 1
                error: null
                nextCursor: null
            pumpCreateOnly:
              summary: Pump.fun create only, base64
              value:
                ok: true
                data:
                  platform: pump
                  family: solana
                  encoding: base64
                  mint: pCqoo7W6nD9QssrWJH7MdoBT9VUx9eqxBCygXbSg5gq
                  transactions:
                    - gQIACA8AAAA6cInW/1WEplyvOzn/UFDcTe9PrDzUCOveDX71…smx3AQ==
                  legs:
                    - kind: create
                      wallet: 2qPNgjtkrEN5T1uoEENQx2xMRfomyJYm5o4pZwYa32CP
                      walletIndex: 0
                      version: 1
                error: null
                nextCursor: null
            letsbonk:
              summary: Raydium LaunchLab, create plus two buys
              value:
                ok: true
                data:
                  platform: raydium
                  family: solana
                  mint: Af6hqgjTc5fBuQR3nVwdaZRjM3opeRC9122uQiifEsid
                  pool: 38EqJ6t1XxuUAdmsWA8Ep9YyDhTxffVadQWYhtEhscuu
                  transactions:
                    - RPJmd1pJB93CNErzAXR6EsKUKR68Eoa9pfw3RnNH6BwCDnuU…1qMZqgRP
                    - AQ1z3AQ9pSFMALh3UZEHqYRMdRhtq86L1a6fZKTF2sGCvPvx…aqL78rUf
                    - We7d2Atv8caX1JwDN8NbJ2oktjSNMtwTn4UfUVQyQMcAyh4Q…ajd6KwSX
                  legs:
                    - kind: create
                      wallet: 2qPNgjtkrEN5T1uoEENQx2xMRfomyJYm5o4pZwYa32CP
                      walletIndex: 0
                      version: 1
                    - kind: buy
                      wallet: GU5Y6qEsqDYRG7iuSzFhbcHsPfXyz5FTeUwFmdJMxCvB
                      walletIndex: 1
                      version: 1
                    - kind: buy
                      wallet: ERFXmFZ7n3MSUBQeFX44U4iCNQGLBNbhDawebzU9JDdp
                      walletIndex: 2
                      version: 1
                error: null
                nextCursor: null
            usd1:
              summary: Raydium LaunchLab in USD1
              value:
                ok: true
                data:
                  platform: raydium
                  family: solana
                  mint: 9rnuFnGqG7qToDPQeg9HB9rmdG2nhhrXpzTZNzcRnJdk
                  pool: DsMkd5Hc91gv7FqLkPhzeEjPMDo12jQHA241dbtsUKoi
                  transactions:
                    - 2TBgDPKpBY29V3yKYbfNANsmY8PzuWRHVLfmTyEpBNd1SF8v…7Ezn1P1y
                    - ZSb5XoD2X2grXUXXia8xGVGy1JaXaiaRrKjeD2s5czWBRxMN…XWDVLfF5
                  legs:
                    - kind: create
                      wallet: 2qPNgjtkrEN5T1uoEENQx2xMRfomyJYm5o4pZwYa32CP
                      walletIndex: 0
                      version: 1
                    - kind: buy
                      wallet: GU5Y6qEsqDYRG7iuSzFhbcHsPfXyz5FTeUwFmdJMxCvB
                      walletIndex: 1
                      version: 1
                error: null
                nextCursor: null
            bagsProvision:
              summary: Bags, first call (illustrative)
              value:
                ok: true
                data:
                  platform: meteora
                  family: solana
                  mint: BsUYc4mfQBLxuEcXdPnyZ1HFT7iuE6VEVVoLJKkKBAGS
                  config: CNPjsdLahAWyAMDuLh9PwYKn9MSeuuMG9tqVg7a5SfXu
                  metadataUri: <metadata URI from Bags>
                  transactions: []
                  stages:
                    - name: Fee-share config
                      description: >-
                        Sign and land these Bags-built transactions to create
                        fee-share config
                        CNPjsdLahAWyAMDuLh9PwYKn9MSeuuMG9tqVg7a5SfXu, wait for
                        confirmation, then call the launch again with
                        feeShareConfigKey=…, mintPubkey=… and token.metadataUri
                        set to the returned metadataUri — it completes in one
                        call. …
                      transactions:
                        - <Bags-built config transaction, base58>
                      requiresConfirmation: true
                error: null
                nextCursor: null
            bagsResume:
              summary: Bags, second call (illustrative)
              value:
                ok: true
                data:
                  platform: meteora
                  family: solana
                  mint: BsUYc4mfQBLxuEcXdPnyZ1HFT7iuE6VEVVoLJKkKBAGS
                  pool: XJfZAScb9yRkVULpMfRdEjbrHKK1MtocyNSze6ezoPf
                  config: CNPjsdLahAWyAMDuLh9PwYKn9MSeuuMG9tqVg7a5SfXu
                  feeClaimer: BsxpNHaXMR7GzabVpvmpcpxUD3je2VWDhmQVanM7MQt3
                  transactions:
                    - >-
                      <Bags launch transaction (v0, partly signed by Bags),
                      base58>
                    - <buy transaction of wallets[1] (v1), base58>
                  legs:
                    - kind: create
                      wallet: 2qPNgjtkrEN5T1uoEENQx2xMRfomyJYm5o4pZwYa32CP
                      walletIndex: 0
                      version: 0
                    - kind: buy
                      wallet: GU5Y6qEsqDYRG7iuSzFhbcHsPfXyz5FTeUwFmdJMxCvB
                      walletIndex: 1
                      version: 1
                error: null
                nextCursor: null
            ponsV2:
              summary: pons V2, launchAndBuy in native ETH
              value:
                ok: true
                data:
                  platform: pons
                  family: evm
                  chainId: 4663
                  mint: '0x344c0f98C1181B7eAf3F0D811a9E44DBBEc50E2E'
                  predictedToken: '0x344c0f98C1181B7eAf3F0D811a9E44DBBEc50E2E'
                  predictedCurve: '0x1700ce50a095fe1603979d0945feBC10Dc4E36b5'
                  pool: '0x1700ce50a095fe1603979d0945feBC10Dc4E36b5'
                  config: '0'
                  economics: >-
                    0xa9fc75d4203a33fe660e8fa32c74c3aa41c1fda4bf23d3a39b6bc22a1f8b1ca7
                  factory: '0x7eD598BcEf8bd9Edd8C97A195C6d13f40801EC7e'
                  router: '0xe33E9E479dF8802cb0866d5d05258bEc4cF62948'
                  feeClaimer: '0x5f330F0d2ec6349a1634248ef0379EF346dDE24f'
                  launchFee: '0x1c6bf52634000'
                  pairToken: '0x0000000000000000000000000000000000000000'
                  salt: >-
                    0xa557a17863633f622289fdbac21cae7f475359d29c0256f7d25b761ceb795de8
                  metadataUri: >-
                    ipfs://bafkreigh2akiscaildcqabsyg3dfr6chu3fgpregiymsck7e7aqa4s52zy
                  transactions:
                    - 0xf85f8e4100000000000000000000000000000000000000…4a1204b2
                  unsignedTxs:
                    - stage: launchAndBuy
                      chainId: 4663
                      type: 2
                      from: '0x5f330F0d2ec6349a1634248ef0379EF346dDE24f'
                      to: '0xe33E9E479dF8802cb0866d5d05258bEc4cF62948'
                      data: >-
                        0xf85f8e4100000000000000000000000000000000000000…4a1204b2
                      value: '0x5543df729c000'
                      nonce: '0x129'
                      gas: '0x39f10f'
                      maxFeePerGas: '0x27f6781'
                      maxPriorityFeePerGas: '0x1'
                  stages:
                    - kind: launchAndBuy
                      tx:
                        stage: launchAndBuy
                        chainId: 4663
                        type: 2
                        from: '0x5f330F0d2ec6349a1634248ef0379EF346dDE24f'
                        to: '0xe33E9E479dF8802cb0866d5d05258bEc4cF62948'
                        data: 0xf85f8e41…4a1204b2
                        value: '0x5543df729c000'
                        nonce: '0x129'
                        gas: '0x39f10f'
                        maxFeePerGas: '0x27f6781'
                        maxPriorityFeePerGas: '0x1'
                error: null
                nextCursor: null
            ponsV2Usdg:
              summary: pons V2 with USDG, deployer without ETH (no prediction)
              value:
                ok: true
                data:
                  platform: pons
                  family: evm
                  chainId: 4663
                  mint: null
                  config: '0'
                  economics: >-
                    0x7909a028ec0fee3564b05d53b74cd91d79786f17ac5aa90be360c0b78201e86a
                  factory: '0x7eD598BcEf8bd9Edd8C97A195C6d13f40801EC7e'
                  router: '0xe33E9E479dF8802cb0866d5d05258bEc4cF62948'
                  feeClaimer: '0x5f330F0d2ec6349a1634248ef0379EF346dDE24f'
                  launchFee: '0x1c6bf52634000'
                  pairToken: '0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168'
                  salt: >-
                    0x953a342e2cbe6e351cdfcaf375198536c497f9138960d9a5e7b92a4dfaa17d4b
                  metadataUri: >-
                    ipfs://bafkreigh2akiscaildcqabsyg3dfr6chu3fgpregiymsck7e7aqa4s52zy
                  transactions:
                    - 0x095ea7b3000000000000000000000000e33e9e479df880…00989680
                    - 0xf85f8e4100000000000000000000000000000000000000…00000000
                  unsignedTxs:
                    - stage: approve
                      chainId: 4663
                      type: 2
                      from: '0x5f330F0d2ec6349a1634248ef0379EF346dDE24f'
                      to: '0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168'
                      data: 0x095ea7b3…00989680
                      value: '0x0'
                      nonce: '0x0'
                      gas: '0xe6a9'
                      maxFeePerGas: '0x272c521'
                      maxPriorityFeePerGas: '0x1'
                    - stage: launchAndBuy
                      chainId: 4663
                      type: 2
                      from: '0x5f330F0d2ec6349a1634248ef0379EF346dDE24f'
                      to: '0xe33E9E479dF8802cb0866d5d05258bEc4cF62948'
                      data: 0xf85f8e41…00000000
                      value: '0x1c6bf52634000'
                      nonce: '0x1'
                      gas: '0x44aa20'
                      maxFeePerGas: '0x272c521'
                      maxPriorityFeePerGas: '0x1'
                  stages:
                    - kind: approve
                      tx:
                        stage: approve
                        chainId: 4663
                        type: 2
                        from: '0x5f330F0d2ec6349a1634248ef0379EF346dDE24f'
                        to: '0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168'
                        data: 0x095ea7b3…00989680
                        value: '0x0'
                        nonce: '0x0'
                        gas: '0xe6a9'
                        maxFeePerGas: '0x272c521'
                        maxPriorityFeePerGas: '0x1'
                    - kind: launchAndBuy
                      tx:
                        stage: launchAndBuy
                        chainId: 4663
                        type: 2
                        from: '0x5f330F0d2ec6349a1634248ef0379EF346dDE24f'
                        to: '0xe33E9E479dF8802cb0866d5d05258bEc4cF62948'
                        data: 0xf85f8e41…00000000
                        value: '0x1c6bf52634000'
                        nonce: '0x1'
                        gas: '0x44aa20'
                        maxFeePerGas: '0x272c521'
                        maxPriorityFeePerGas: '0x1'
                error: null
                nextCursor: null
            ponsV1:
              summary: pons V1 (illustrative)
              value:
                ok: true
                data:
                  platform: pons
                  family: evm
                  chainId: 4663
                  mint: 0x<predicted token>
                  predictedToken: 0x<predicted token>
                  factory: '0xE1aD3F2C507c2d4128c166d5Fa78Cc86CC94913c'
                  factoryNonce: 1234
                  pairToken: 0x<quote>
                  startTick: 112200
                  opening:
                    fdvQuote: 13410.95
                    quotePerToken: 0.00001341095
                    tokenIs0: false
                  metadataUri: >-
                    ipfs://bafkreigh2akiscaildcqabsyg3dfr6chu3fgpregiymsck7e7aqa4s52zy
                  transactions:
                    - 0x<launch calldata>
                  unsignedTxs:
                    - stage: launch
                      chainId: 4663
                      type: 2
                      from: '0x5f330F0d2ec6349a1634248ef0379EF346dDE24f'
                      to: '0xE1aD3F2C507c2d4128c166d5Fa78Cc86CC94913c'
                      data: 0x<launch calldata>
                      value: '0x0'
                      nonce: '0x0'
                      gas: '0x632ea0'
                      maxFeePerGas: '0x272c521'
                      maxPriorityFeePerGas: '0x1'
                  stages:
                    - kind: launch
                      tx:
                        stage: launch
                        chainId: 4663
                        type: 2
                        from: '0x5f330F0d2ec6349a1634248ef0379EF346dDE24f'
                        to: '0xE1aD3F2C507c2d4128c166d5Fa78Cc86CC94913c'
                        data: 0x<launch calldata>
                        value: '0x0'
                        nonce: '0x0'
                        gas: '0x632ea0'
                        maxFeePerGas: '0x272c521'
                        maxPriorityFeePerGas: '0x1'
                error: null
                nextCursor: null
    BadRequest:
      description: The request is invalid; nothing was built
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
          examples:
            noWallets:
              summary: No wallet
              value:
                ok: false
                data: null
                error:
                  code: bad_request
                  message: wallets[0] is required (creator / payer)
                nextCursor: null
            tooManyWallets:
              summary: More than 50 Solana wallets
              value:
                ok: false
                data: null
                error:
                  code: bad_request
                  message: >-
                    51 wallets, the most is 50 (wallets[0], the creator,
                    included): each wallet gets a transaction of its own
                nextCursor: null
            invalidJson:
              summary: Wrong field type
              value:
                ok: false
                data: null
                error:
                  code: bad_request
                  message: >-
                    Invalid JSON: invalid type: string "500", expected u32 at
                    line 1 column 102
                nextCursor: null
            unknownPlatform:
              summary: Unknown platform
              value:
                ok: false
                data: null
                error:
                  code: bad_request
                  message: >-
                    unknown platform "uniswap" — expected pump, raydium
                    (bonk/usd1), or meteora (bags)
                nextCursor: null
            cashback:
              summary: Cashback asked on pump
              value:
                ok: false
                data: null
                error:
                  code: bad_request
                  message: >-
                    cashback is deprecated: pump.fun no longer creates cashback
                    coins. Use holderReward instead.
                nextCursor: null
            mayhemPair:
              summary: Mayhem on a custom pair
              value:
                ok: false
                data: null
                error:
                  code: bad_request
                  message: >-
                    mayhem mode is not available on a custom pair — pump.fun
                    allows it only on SOL and USDC
                nextCursor: null
            raydiumMintKey:
              summary: 32-byte mintKey on Raydium
              value:
                ok: false
                data: null
                error:
                  code: bad_request
                  message: >-
                    mintKey for raydium must be a 64-byte secret; a 32-byte
                    pubkey is only a bags resume's mintPubkey
                nextCursor: null
            bonkType:
              summary: platform bonk without bonkType
              value:
                ok: false
                data: null
                error:
                  code: bad_request
                  message: >-
                    unknown bonkType "bonk" — expected "standard" (= "letsbonk"
                    / "memes"), "bonkers" (= "tech", the mode that pays a 0.05%
                    creator fee), "balanced", "stonkfun", or "stonkfun-reward"
                    (a Token-2022 coin with an immutable transfer tax paid to
                    holders). For any other LaunchLab platform config, pass its
                    address as platformConfig.
                nextCursor: null
            rewardTax:
              summary: rewardTaxBps not offered
              value:
                ok: false
                data: null
                error:
                  code: bad_request
                  message: >-
                    rewardTaxBps 200 is not offered: StonkFun's reward rule
                    admits 100 or 300 (1% or 3%)
                nextCursor: null
            ponsTax:
              summary: pons creator tax above the factory cap
              value:
                ok: false
                data: null
                error:
                  code: bad_request
                  message: creator tax 5000 bps is outside 0–1000 (maxCreatorTaxBps)
                nextCursor: null
            ponsQuoteV1:
              summary: pons V1 quote not allowed
              value:
                ok: false
                data: null
                error:
                  code: bad_request
                  message: >-
                    quote 0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73 is not
                    launchable on pons: isAllowedQuote() is false, so launch
                    would revert QuoteNotGraduated()
                nextCursor: null
            noRpc:
              summary: No rpcUrl and no fallback on the server
              value:
                ok: false
                data: null
                error:
                  code: bad_request
                  message: >-
                    rpcUrl is required (or set SOLANA_RPC / HOOD_RPC on the
                    launch server)
                nextCursor: null
    NotImplemented:
      description: The chain or launchpad is catalogued but has no builder
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
          examples:
            evm:
              summary: eth, bsc or base
              value:
                ok: false
                data: null
                error:
                  code: not_implemented
                  message: token deploy is not implemented for eth yet
                nextCursor: null
            solPad:
              summary: Catalogued Solana pad
              value:
                ok: false
                data: null
                error:
                  code: not_implemented
                  message: Solana pad "surge" is catalogued but has no builder yet
                nextCursor: null
            hoodPad:
              summary: Catalogued Robinhood pad
              value:
                ok: false
                data: null
                error:
                  code: not_implemented
                  message: >-
                    Robinhood pad hood.fun is known but not wired — launch
                    builds pons V2 only. Returning unsigned txs against a
                    guessed factory would spend gas to discover the ABI.
                nextCursor: null
    LaunchFailed:
      description: >-
        A check that reads the chain or a third party refused the launch, or a
        read failed. The message says which; many are fixable on your side.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
          examples:
            pumpMintKey:
              summary: 32-byte mintKey on pump
              value:
                ok: false
                data: null
                error:
                  code: launch_failed
                  message: >-
                    mintKey is a 32-byte public key: its secret is held
                    elsewhere (pump.fun's vanity mints are signed by pump's
                    API), and that API signs v0 transactions only while every
                    launch is v1. Send the mint's 64-byte secret as mintKey, or
                    omit it and a mint is generated.
                nextCursor: null
            creatorFee:
              summary: Flat creator fee above pump's cap
              value:
                ok: false
                data: null
                error:
                  code: launch_failed
                  message: >-
                    creator fee 5000 bps is over the 300 bps the program allows
                    (Global.maxConfigurableCreatorFeeBps)
                nextCursor: null
            pumpQuote:
              summary: Pump quote given as a ticker
              value:
                ok: false
                data: null
                error:
                  code: launch_failed
                  message: >-
                    quoteMint "USDC" is not a valid mint address (use "SOL" or a
                    base58 mint)
                nextCursor: null
            underfunded:
              summary: LaunchLab payer cannot pay the create
              value:
                ok: false
                data: null
                error:
                  code: launch_failed
                  message: >-
                    wallets[0] (2qPNgjtkrEN5T1uoEENQx2xMRfomyJYm5o4pZwYa32CP)
                    holds 0.000000000 SOL but this launch needs at least
                    0.528641040 (528641040 lamports) — a LaunchLab create debits
                    0.024532480 of rent and Metaplex fees (mint + pool + vaults
                    + metadata) plus its own transaction fees before any buy,
                    plus the 0.500000 being bought. Below that the bundle dies
                    on chain after the mint is already spent, so it is refused
                    here instead.
                nextCursor: null
            fundRaising:
              summary: LaunchLab raise below the launchpad minimum
              value:
                ok: false
                data: null
                error:
                  code: launch_failed
                  message: >-
                    fundRaising 10000000000 lamports is below the launchpad
                    minimum 24000000000 (24.00 SOL,
                    global_config.min_fund_raising_b)
                nextCursor: null
            oversubscribed:
              summary: Buys past the LaunchLab raise target
              value:
                ok: false
                data: null
                error:
                  code: launch_failed
                  message: >-
                    the raise target (totalQuoteFundRaising = 85000000000) is
                    fully subscribed by the buys before wallets[1] — that buyer
                    would receive nothing. Drop them or reduce the earlier
                    amounts.
                nextCursor: null
            bagsKey:
              summary: The service has no Bags API key
              value:
                ok: false
                data: null
                error:
                  code: launch_failed
                  message: >-
                    platform "meteora" needs a Bags API key in
                    $RAZE_BAGS_API_KEY (or $BAGS_API_KEY). Unlike pumpfun and
                    raydium, a Bags launch cannot be built locally — the pool
                    creator, the payer and the vanity base mint are all signed
                    by Bags — so their API is required.
                nextCursor: null
            wrongChain:
              summary: rpcUrl is not a Robinhood node
              value:
                ok: false
                data: null
                error:
                  code: launch_failed
                  message: >-
                    rpcUrl answered chainId 1, expected 4663 (Robinhood).
                    Refusing to build.
                nextCursor: null
    Timeout:
      description: The build took longer than 90 seconds
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
          example:
            ok: false
            data: null
            error:
              code: upstream_timeout
              message: Launch request timed out
            nextCursor: null
  schemas:
    PumpLaunch:
      title: Pump.fun (sol)
      description: >-
        `POST /launch/sol` with `platform` `pump` (or absent). Create via
        `create_v2`, the creator's `buy_v2` fused into it, then one `buy_v2` per
        other wallet.
      allOf:
        - $ref: '#/components/schemas/SolanaCommon'
        - type: object
          properties:
            platform:
              type: string
              default: pump
              description: >-
                `pump`, `pumpfun`, `pump.fun` (case and punctuation ignored), or
                absent.
            amounts:
              type: array
              items:
                type: number
                minimum: 0
              description: >-
                Whole units of the quote (SOL by default). A wallet past the end
                of `amounts` buys `amounts[0]`; with no amounts at all every
                wallet buys 0.01. Send explicit zeros for wallets that must not
                buy. Every wallet after the first spends a random 0–2% less than
                its amount (see `config.trading.decreaseRange`).
            mintKey:
              type: string
              description: >-
                The mint's 64-byte secret key, base58. Signs the create here.
                Absent: a mint is generated and returned as `mint`. A 32-byte
                public key is refused (`502`). Alias `mintPubkey`.
            mintPubkey:
              type: string
              description: Alias of `mintKey`
            quoteMint:
              type: string
              default: SOL
              description: >-
                Quote asset: `SOL` (exact spelling), the USDC mint
                `EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v`, or any mint in
                pump's quote registry (decimals read from chain). Anything else,
                tickers included, is a `502`. Alias `quote`.
            quote:
              type: string
              description: Alias of `quoteMint`
            mayhem:
              type: boolean
              description: >-
                Mayhem Mode. Aliases `mayhemMode`, `isMayhemMode`, `pumpType`
                (precedence `mayhem` > `mayhemMode` > `pumpType`). SOL or USDC
                quote only.
            mayhemMode:
              type: boolean
              description: Alias of `mayhem` (also `isMayhemMode`)
            pumpType:
              type: boolean
              description: Alias of `mayhem` (it is not a launch mode)
            holderReward:
              type: boolean
              description: >-
                Holder-rewards coin: creator fees go to holders, permanently.
                Refused when pump's Global disables it. Aliases
                `isHolderReward`, `holder_reward`.
            creatorFeeBps:
              type: integer
              minimum: 0
              description: >-
                Flat creator fee replacing pump's standard schedule; `0` or
                absent keeps the standard schedule. At most
                `Global.maxConfigurableCreatorFeeBps` (300 on 2026-10-01), read
                from chain. Aliases `creator_fee_bps`, `creatorFeeBasisPoints`,
                `creator_fee_basis_points`.
            cashBack:
              type: boolean
              description: >-
                `true` is refused (400): pump no longer creates cashback coins.
                Alias `isCashBack`.
            offchainCreator:
              type: string
              description: >-
                Public key written as the coin's creator instead of
                `wallets[0]`. Only for a launch with no buy at all: every amount
                must be an explicit 0. Alias `displayCreator`.
            slippageBps:
              type: integer
              default: 9900
              description: >-
                Each buy is an exact-token buy capped at `quote × (1 +
                floor(slippageBps / 10) / 1000)` (0.1% steps). Default 99%.
            computeUnitLimit:
              type: integer
              default: 600000
              description: >-
                Limit of the buy transactions only. The create always asks for
                400000.
            config:
              type: object
              description: >-
                Legacy nested shape `{ tokenCreation: { metadata,
                defaultSolAmount, isMayhemMode, isHolderReward, creatorFeeBps,
                quoteMint }, trading: { slippageBps, decreaseRange: { min, max
                }, computeUnitPrice, computeUnitLimit }, jito }`. When present
                it replaces `token`, `quoteMint` and `slippageBps`, and missing
                amounts default to `defaultSolAmount` (0.01); the Jito tip still
                comes from `jitoTipSol`. `decreaseRange` (percent, default min
                2, max 8) lowers each other buyer's spend by a random amount
                below `min`%; `{ min: 0, max: 0 }` turns it off.
    LaunchLabLaunch:
      title: Raydium LaunchLab (sol)
      description: >-
        `POST /launch/sol` with `platform` `raydium`, `letsbonk`, `bonkers`,
        `stonk`, `stonkfun`, `launchlab`, `usd1` (also `bonk`, `bonkersfun`,
        which need `bonkType`). Create via `initialize_v2` (or
        `initialize_with_token_2022` on StonkFun) with the creator's
        `buy_exact_in` fused, then one `buy_exact_in` per other wallet. The
        payer's SOL balance is checked against the create's rent (`502` when
        short).
      allOf:
        - $ref: '#/components/schemas/SolanaCommon'
        - type: object
          required:
            - platform
          properties:
            platform:
              type: string
              description: >-
                `usd1` quotes the curve in USD1 with USD1 defaults. When neither
                `bonkType` nor `brand` is sent, `letsbonk`, `stonkfun`, `stonk`
                and `bonkers` (exact lowercase) pick that mode, `bonk` is
                refused (`400`), and the others use LetsBonk standard.
              enum:
                - raydium
                - letsbonk
                - bonk
                - launchlab
                - stonkfun
                - stonk
                - bonkers
                - bonkersfun
                - usd1
            bonkType:
              type: string
              default: standard
              description: >-
                LaunchLab mode (exact spelling): `standard` / `letsbonk` /
                `memes` / `platformId`; `bonkers` / `tech` / `techPlatformId`
                (0.05% creator fee); `balanced` / `balancedPlatformId`;
                `stonkfun` / `stonkfun-standard` / `stonk` (Token-2022 mint);
                `stonkfun-reward` / `stonkfun-rewards` / `reward` (Token-2022
                with a transfer tax paid to holders). Alias `brand`, which wins
                over it.
            brand:
              type: string
              description: Alias of `bonkType` (wins over it)
            platformConfig:
              type: string
              description: Any LaunchLab platform-config address. Wins over `bonkType`.
            quoteMint:
              type: string
              default: SOL
              description: >-
                `SOL` / `WSOL`, `USD1` (case-insensitive) or any base58 mint
                that has a LaunchLab constant-product config; decimals and token
                program are read from chain. With `platform: usd1`, empty or
                `SOL` means USD1. Alias `quote`.
            quote:
              type: string
              description: Alias of `quoteMint`
            mintKey:
              type: string
              description: >-
                The mint's 64-byte secret key, base58. Absent: generated and
                returned as `mint`. A 32-byte key is refused (`400`). Alias
                `mintPubkey`.
            mintPubkey:
              type: string
              description: Alias of `mintKey`
            amounts:
              type: array
              items:
                type: number
                minimum: 0
              description: >-
                Whole quote units (SOL, USD1, …) spent per wallet. Missing
                entries are 0 (no buy). Each buy is exact-in with a minimum out.
            creatorBuy:
              type: number
              minimum: 0
              description: Creator's buy; overrides `amounts[0]`
            slippageBps:
              type: integer
              minimum: 0
              maximum: 10000
              default: 9900
              description: >-
                Minimum out = expected tokens × (1 − slippageBps / 10000), at
                least 1.
            computeUnitLimit:
              type: integer
              description: >-
                Applies to the create and the buys. Defaults 400000 (create) and
                120000 (buy).
            rewardTaxBps:
              type: integer
              enum:
                - 0
                - 100
                - 300
              description: >-
                StonkFun reward-coin transfer tax: 100 (default) or 300, only
                with `bonkType: stonkfun-reward`. `0` is accepted elsewhere.
                Aliases `reward_tax_bps`, `transferFeeBps`, `transfer_fee_bps`.
            decimals:
              type: integer
              default: 6
              minimum: 0
              maximum: 255
              description: Token decimals
            supply:
              type: integer
              default: 1000000000000000
              description: Total supply in raw units (default 1e9 tokens at 6 decimals)
            totalBaseSell:
              type: integer
              description: >-
                Raw units sold on the curve. Default 793100000000000 (SOL) or
                732500000000000 (USD1). Must be > supply / 2 and < supply.
            fundRaising:
              type: number
              description: >-
                Raise target in whole quote units. Default 85 SOL, or 8024.37 on
                USD1. At least the launchpad minimum read from chain (24 SOL on
                2026-10-01).
            fundRaisingQuote:
              description: Raise target as a number or `{ sol, usd1 }`. `fundRaising` wins.
              oneOf:
                - type: number
                - type: object
                  properties:
                    sol:
                      type: number
                    usd1:
                      type: number
            vesting:
              type: object
              description: >-
                Creator lockup. Flat `totalLockedAmount`, `cliffPeriod`,
                `unlockPeriod` are read when this object omits them.
              properties:
                totalLockedAmount:
                  type: integer
                  default: 0
                  description: Raw token units locked
                cliffPeriod:
                  type: integer
                  default: 0
                  description: Passed to LaunchLab as is
                unlockPeriod:
                  type: integer
                  default: 0
                  description: Must be > 0 when something is locked
            totalLockedAmount:
              type: integer
              description: Flat alternative to `vesting.totalLockedAmount`
            cliffPeriod:
              type: integer
              description: Flat alternative to `vesting.cliffPeriod`
            unlockPeriod:
              type: integer
              description: Flat alternative to `vesting.unlockPeriod`
    BagsLaunch:
      title: Meteora DBC / Bags (sol)
      description: >-
        `POST /launch/sol` with `platform` `meteora`, `bags` or `bagsfm`. Two
        calls: without `feeShareConfigKey` the service reserves a mint on Bags
        and returns the fee-share config transactions as a stage; land them,
        then call again with `feeShareConfigKey`, `mintPubkey` and
        `token.metadataUri` to get the launch. Needs a Bags API key on the
        server (`RAZE_BAGS_API_KEY` or `BAGS_API_KEY`). SOL quote only.
      allOf:
        - $ref: '#/components/schemas/SolanaCommon'
        - type: object
          required:
            - platform
          properties:
            platform:
              type: string
              enum:
                - meteora
                - bags
                - bagsfm
            amounts:
              type: array
              items:
                type: number
                minimum: 0
              description: >-
                SOL per wallet. `amounts[0]` is the creator's buy inside Bags'
                transaction. Every other wallet must have an amount above 0: the
                call that builds the launch refuses a zero (`502`).
            creatorBuy:
              type: number
              minimum: 0
              description: Creator's buy in SOL; overrides `amounts[0]`
            feeClaimers:
              type: array
              description: >-
                Who shares the coin's trading fees besides the creator, who
                keeps the remainder. Total at most 10000 bps, at most 15
                recipients counting the creator, no duplicate handle, no zero
                share. Alias `bagsFeeClaimers`.
              items:
                type: object
                required:
                  - provider
                  - username
                properties:
                  provider:
                    type: string
                    enum:
                      - twitter
                      - tiktok
                      - kick
                      - github
                      - instagram
                      - onlyfans
                      - solana
                  username:
                    type: string
                    description: The handle, or the public key for `solana`
                  bps:
                    type: integer
                    minimum: 1
                    description: Share in basis points
                  share:
                    type: number
                    description: >-
                      Share in percent (40 = 4000 bps), used when `bps` is
                      absent
            bagsFeeClaimers:
              type: array
              items:
                type: object
              description: Alias of `feeClaimers`
            bagsConfigType:
              type: string
              default: ba28db46-ea6f-4452-8218-5587f6aca0a1
              description: >-
                Bags fee template UUID (fee rate and migration split). Alias
                `configType`.
            configType:
              type: string
              description: Alias of `bagsConfigType`
            feeShareConfigKey:
              type: string
              description: >-
                Second call: the config created by the first call's stage.
                Requires the mint the first call reserved (`mintPubkey`).
            mintPubkey:
              type: string
              description: >-
                Second call: the mint returned by the first call. `mintKey`
                (32-byte public key or 64-byte secret) is accepted too. Ignored
                without `feeShareConfigKey`.
            mintKey:
              type: string
              description: See `mintPubkey`
            slippageBps:
              type: integer
              minimum: 0
              maximum: 10000
              default: 9900
              description: Minimum out of the other wallets' buys, as in LaunchLab.
            computeUnitLimit:
              type: integer
              default: 150000
              description: >-
                Limit of the service's buy transactions; Bags' transaction keeps
                its own budget.
            jitoTipSol:
              type: number
              description: >-
                On the last buy. Refused (`502`) when the launch has no buy
                besides the creator's.
    PonsLaunch:
      title: pons.family (robinhood)
      description: >-
        `POST /launch/robinhood` with `platform` `pons` (or absent).
        `ponsVersion` picks V2 (default) or V1. Returns EIP-1559 transactions
        for `wallets[0]` to sign. Only `wallets[0]` buys (the dev buy); in V2
        the other wallets are exempted from the snipe tax.
      type: object
      required:
        - wallets
      properties:
        platform:
          type: string
          default: pons
          description: >-
            `pons`, `pons.family`, `ponsv1` or `v1` (these two still build V2
            unless `ponsVersion` is `v1`).
        ponsVersion:
          type: string
          enum:
            - v2
            - v1
            - '1'
          default: v2
          description: '`v1` or `1` builds V1; `v2` builds V2; anything else is a `400`.'
        wallets:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/Wallet'
          description: >-
            `wallets[0]` is the deployer (EVM address). V2 adds the others to
            the snipe-tax exemptions.
        rpcUrl:
          type: string
          description: >-
            Robinhood Chain RPC (must answer chain id 4663). Alias `rpc`. Falls
            back to `HOOD_RPC`, `EVM_RPC_HOOD`, then
            https://robinhood-rpc.publicnode.com.
        token:
          $ref: '#/components/schemas/Token'
        quote:
          type: string
          default: eth
          description: >-
            V2: `eth` / `native` / `0` / empty, a pair symbol (AAPL, AMD, AMZN,
            COIN, COST, CRCL, DELL, DJT, GLD, GME, GOOGL, HIMS, LLY, META, MSFT,
            MSTR, MU, NVDA, PLTR, QQQ, RBLX, RDDT, SNDK, SPCX, SPY, TSLA, TSM,
            TTWO, USDG, USO) or a pair address the factory approves. V1:
            required, a 0x address the V1 factory allows. Aliases `pairToken`,
            `launchCurrency`, `quoteMint` (precedence `pairToken` >
            `launchCurrency` > `quote` > `quoteMint`).
        pairToken:
          type: string
          description: Alias of `quote`
        launchCurrency:
          type: string
          description: Alias of `quote`
        devBuyEth:
          type: number
          minimum: 0
          description: >-
            Dev buy in whole units of the quote (ETH or the pair token; V1
            always 18 decimals). Aliases, in order: `buyAmount`, `creatorBuy`,
            `amounts[0]`. V2 ignores amounts set on wallet objects.
        buyAmount:
          type: number
          description: Alias of `devBuyEth`
        creatorBuy:
          type: number
          description: Alias of `devBuyEth`
        amounts:
          type: array
          items:
            type: number
          description: '`amounts[0]` is the dev buy when no other buy field is set'
        devBuyMinOut:
          description: >-
            Minimum tokens out of the dev buy, raw units: integer, decimal
            string or 0x hex (V2 also takes a float, scaled by 1e18). Absent:
            derived from the opening price and `slippageBps`; V2 refuses (`400`)
            when the pair has no known seed.
          oneOf:
            - type: integer
            - type: number
            - type: string
        slippageBps:
          type: integer
          minimum: 0
          default: 1500
          description: Used only to derive `devBuyMinOut`; capped at 9000.
        creatorTaxBps:
          type: integer
          minimum: 0
          default: 0
          description: >-
            V2: creator tax, at most the factory's `maxCreatorTaxBps` (1000 on
            2026-10-01).
        creatorFeeRecipient:
          type: string
          description: >-
            V2: `deployer` / `holders` (both mean `wallets[0]`) or an address.
            Aliases `creatorFeeTarget` (wins) and `creatorFeeWallet`.
        creatorFeeTarget:
          type: string
          description: Alias of `creatorFeeRecipient`
        creatorFeeWallet:
          type: string
          description: Alias of `creatorFeeRecipient`
        buybackEnabled:
          type: boolean
          default: false
          description: V2
        socials:
          type: object
          description: >-
            V2: wins over flat
            `twitter`/`telegram`/`discord`/`website`/`farcaster` and over
            `token.*`.
          properties:
            twitter:
              type: string
            telegram:
              type: string
            discord:
              type: string
            website:
              type: string
            farcaster:
              type: string
        snipeTaxExemptions:
          type: array
          items:
            type: string
          description: >-
            V2: extra exempt addresses. With the deployer, `blockZeroWallets`
            and `wallets[1..]`, at most 32 after de-duplication.
        blockZeroWallets:
          type: array
          items:
            type: string
          description: 'V2: more exempt addresses'
        salt:
          type: string
          description: >-
            V2: 32-byte hex salt; random when absent (so the predicted token
            changes per call).
        launchConfigId:
          type: integer
          default: 0
          description: 'V2: launch config; only 0 answers today'
        factory:
          type: string
          description: 'V1: must equal 0xE1aD3F2C507c2d4128c166d5Fa78Cc86CC94913c when sent.'
        tickMagnitude:
          type: integer
          default: 112200
          description: >-
            V1: opening tick magnitude, a multiple of 200 between 20000 and
            140000. The sign follows the token/quote address order.
        startTick:
          type: integer
          description: >-
            V1: explicit start tick; must have the right sign and open within 1%
            of the intended FDV.
        wethQuoteFee:
          type: integer
          default: 10000
          description: >-
            V1: Uniswap V3 fee tier of the WETH/quote pool the dev buy routes
            through; the pool must exist.
    Envelope:
      type: object
      required:
        - ok
        - data
        - error
        - nextCursor
      properties:
        ok:
          type: boolean
          description: '`true` on success'
        data:
          description: The result; `null` on failure
        error:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/Error'
        nextCursor:
          type: 'null'
          description: Always `null` (nothing here is paged)
    SolanaLaunchResult:
      title: Solana launch
      type: object
      properties:
        platform:
          type: string
          enum:
            - pump
            - raydium
            - meteora
        family:
          type: string
          const: solana
        mint:
          type: string
          description: The token mint (generated, yours, or reserved by Bags)
        transactions:
          type: array
          items:
            type: string
          description: >-
            Serialized transactions, base58 (or base64 with `encoding`). `[0]`
            is the create, with the creator's buy inside it when the creator
            buys; then one buy per other wallet in pricing order. The mint
            signature is present; wallet signature slots are empty.
        legs:
          type: array
          items:
            $ref: '#/components/schemas/TxLeg'
        encoding:
          type: string
          const: base64
          description: Present only when the transactions are base64
        pool:
          type: string
          description: 'raydium: the LaunchLab pool; meteora: the DBC pool'
        config:
          type: string
          description: 'meteora: the fee-share config used'
        feeClaimer:
          type: string
          description: 'meteora: where the config sends the coin''s trading fees'
    BagsProvisionResult:
      title: Bags first call
      type: object
      properties:
        platform:
          type: string
          const: meteora
        family:
          type: string
          const: solana
        mint:
          type: string
          description: The mint Bags reserved; send it back as `mintPubkey`
        config:
          type: string
          description: The fee-share config to create; send it back as `feeShareConfigKey`
        metadataUri:
          type: string
          description: Send it back as `token.metadataUri`
        transactions:
          type: array
          maxItems: 0
          items:
            type: string
        stages:
          type: array
          items:
            type: object
            properties:
              name:
                type: string
                example: Fee-share config
              description:
                type: string
              transactions:
                type: array
                items:
                  type: string
                description: Bags-built config transactions to sign and land first
              requiresConfirmation:
                type: boolean
                const: true
    PonsV2Result:
      title: pons V2
      type: object
      properties:
        platform:
          type: string
          const: pons
        family:
          type: string
          const: evm
        chainId:
          type: integer
          const: 4663
        mint:
          type:
            - string
            - 'null'
          description: >-
            The predicted token; `null` when the simulation failed (for example
            a deployer without enough ETH).
        predictedToken:
          type: string
          description: Present when the simulation succeeded
        predictedCurve:
          type: string
          description: Present when the simulation succeeded
        pool:
          type: string
          description: Same as `predictedCurve`
        unsignedTxs:
          type: array
          items:
            $ref: '#/components/schemas/UnsignedEvmTx'
          description: >-
            In order: `approve` (pair-token buys only), then `launch` (factory)
            or `launchAndBuy` (router).
        stages:
          type: array
          items:
            $ref: '#/components/schemas/EvmStage'
        transactions:
          type: array
          items:
            type: string
          description: The `data` of each unsigned transaction
        config:
          type: string
          description: The launch config id
        feeClaimer:
          type: string
          description: The creator-fee recipient written in the token params
        metadataUri:
          type: string
          description: The logo URL written on chain
        factory:
          type: string
        router:
          type: string
        salt:
          type: string
          description: The 32-byte salt used
        launchFee:
          type: string
          description: Factory launch fee, 0x hex wei (0.0005 ETH on 2026-10-01)
        pairToken:
          type: string
          description: The quote; the zero address for native ETH
        economics:
          type: string
          description: '`previewLaunchEconomics` result, bytes32 hex'
    PonsV1Result:
      title: pons V1
      type: object
      properties:
        platform:
          type: string
          const: pons
        family:
          type: string
          const: evm
        chainId:
          type: integer
          const: 4663
        mint:
          type: string
          description: The predicted token (CREATE address of the factory's current nonce)
        predictedToken:
          type: string
        factory:
          type: string
        factoryNonce:
          type: integer
          description: The factory nonce the prediction used
        pairToken:
          type: string
        startTick:
          type: integer
        opening:
          type: object
          properties:
            fdvQuote:
              type: number
              description: Opening fully diluted value in quote units (1e9 supply)
            quotePerToken:
              type: number
            tokenIs0:
              type: boolean
        metadataUri:
          type: string
          description: The logo URL
        unsignedTxs:
          type: array
          items:
            $ref: '#/components/schemas/UnsignedEvmTx'
        stages:
          type: array
          items:
            $ref: '#/components/schemas/EvmStage'
        transactions:
          type: array
          items:
            type: string
    ErrorEnvelope:
      type: object
      required:
        - ok
        - data
        - error
        - nextCursor
      properties:
        ok:
          type: boolean
          const: false
        data:
          type: 'null'
        error:
          $ref: '#/components/schemas/Error'
        nextCursor:
          type: 'null'
    SolanaCommon:
      type: object
      required:
        - wallets
      properties:
        wallets:
          type: array
          minItems: 1
          maxItems: 50
          items:
            $ref: '#/components/schemas/Wallet'
          description: >-
            Base58 public keys. `wallets[0]` is the creator: it pays and signs
            the create and makes the creator's buy inside it. Every other wallet
            with a non-zero amount gets one buy transaction of its own. At most
            50, the creator included.
        walletAddresses:
          type: array
          items:
            type: string
          description: >-
            Alias of `wallets` (strings only), read when `wallets` is absent or
            empty.
        amounts:
          type: array
          items:
            type: number
            minimum: 0
          description: >-
            Buy per wallet, aligned with `wallets`, in whole units of the quote
            asset. `amounts[0]` is the creator's buy; `0` builds no buy for that
            wallet.
        rpcUrl:
          type: string
          format: uri
          description: >-
            Solana RPC used for every chain read. Alias `rpc`. Falls back to the
            server's `SOLANA_RPC`.
        rpc:
          type: string
          description: Alias of `rpcUrl`
        token:
          $ref: '#/components/schemas/Token'
        name:
          type: string
          description: Flat alternative to `token.name`
        symbol:
          type: string
          description: Flat alternative to `token.symbol`
        description:
          type: string
          description: Flat alternative to `token.description`
        image:
          type: string
          description: Flat image URL (also `logo`, `imageUrl`)
        logo:
          type: string
          description: Flat image URL
        imageUrl:
          type: string
          description: Flat image URL
        metadataUri:
          type: string
          description: Flat alternative to `token.uri`
        twitter:
          type: string
        telegram:
          type: string
        website:
          type: string
        encoding:
          type: string
          enum:
            - base58
            - bs58
            - base64
            - b64
          default: base58
          description: >-
            Encoding of the returned transactions (and of
            `stages[].transactions`).
        slippageBps:
          type: integer
          minimum: 0
          description: >-
            Slippage tolerance in basis points. Default and meaning differ per
            platform (see each platform).
        computeUnitPrice:
          type: integer
          minimum: 0
          default: 50000
          description: >-
            Priority price in micro-lamports per compute unit. Written into each
            v1 message as a priority fee of `ceil(limit × price / 1e6)`
            lamports.
        computeUnitLimit:
          type: integer
          minimum: 0
          maximum: 4294967295
          description: >-
            Compute-unit limit. Which transactions it sizes differs per
            platform.
        jitoTipSol:
          type: number
          minimum: 0
          default: 0
          description: >-
            Jito tip in SOL, sent to
            `Cw8CFyM9FkoMi7K7Crf6HNQqf4uEMzpKw6QNghXLvLkY` from the last buy
            transaction only, never from a create. `0` or absent sends no tip.
            Alias `jitoTipAmountSol`.
        jitoTipAmountSol:
          type: number
          description: Alias of `jitoTipSol`
        feeWallet:
          type: string
          description: >-
            Product-fee recipient. With `feeBps`, every buy pays `feeBps` of its
            quote amount to this wallet inside its own transaction. Both or
            neither (`400`).
        feeBps:
          type: integer
          minimum: 0
          description: Product fee in basis points of each buy. Not capped by the service.
    Wallet:
      description: >-
        A wallet address, or `{ address, amount }`. When any object in `wallets`
        carries an `amount`, those amounts are used (missing ones count as 0)
        and `amounts` is ignored.
      oneOf:
        - type: string
        - type: object
          required:
            - address
          properties:
            address:
              type: string
            amount:
              type: number
              description: Whole units of the quote asset
    Token:
      type: object
      description: >-
        Token metadata. Flat top-level fields of the same name are used when
        this object is absent.
      properties:
        name:
          type: string
          description: 'Token name (pons: at most 32 characters)'
        symbol:
          type: string
          description: 'Ticker (pons: at most 10 characters; a leading `$` is removed)'
        description:
          type: string
          description: Required by pons
        image:
          type: string
          description: Image URL. Read as `file`, then `image`, then `imageUrl`
        imageUrl:
          type: string
          description: Alias of `image`
        file:
          type: string
          description: Alias of `image` (wins over it)
        uri:
          type: string
          description: >-
            Pre-built metadata JSON URI (`http(s)://`, `ipfs://`, or a path
            containing `/ipfs/` on pump). Skips both IPFS uploads on pump and
            LaunchLab; Bags embeds it. Alias `metadataUri`.
        metadataUri:
          type: string
          description: Alias of `uri`
        twitter:
          type: string
        telegram:
          type: string
        website:
          type: string
        discord:
          type: string
          description: pons V2 only
        farcaster:
          type: string
          description: pons V2 only
    Error:
      type: object
      required:
        - code
        - message
      properties:
        code:
          type: string
          enum:
            - bad_request
            - not_implemented
            - launch_failed
            - upstream_timeout
          description: >-
            `bad_request` (400), `not_implemented` (501), `launch_failed` (502),
            `upstream_timeout` (504).
        message:
          type: string
          description: Human-readable reason; not a stable identifier
    TxLeg:
      type: object
      description: >-
        Who signs one Solana transaction, at the same index as in
        `transactions`.
      properties:
        kind:
          type: string
          enum:
            - create
            - buy
          description: '`transactions[0]` is the create, every later one a buy'
        wallet:
          type: string
          description: >-
            The request wallet that signs it (the fee payer; on Bags'
            transaction, `wallets[0]`)
        walletIndex:
          type:
            - integer
            - 'null'
          description: Its index in `wallets`. Indices skip wallets that buy nothing.
        version:
          type: integer
          enum:
            - 0
            - 1
          description: 'Wire version: 1, except Bags'' launch transaction (0).'
    UnsignedEvmTx:
      type: object
      description: An EIP-1559 transaction to sign with `from` and broadcast.
      properties:
        stage:
          type: string
          enum:
            - approve
            - launch
            - launchAndBuy
        chainId:
          type: integer
          example: 4663
        type:
          type: integer
          const: 2
        from:
          type: string
        to:
          type: string
        data:
          type: string
          description: Calldata, 0x hex
        value:
          type: string
          description: Wei, 0x hex
        nonce:
          type: string
          description: 0x hex, from the pending count (0x0 when the read fails)
        gas:
          type: string
          description: >-
            0x hex; estimated, or 4500000 (V2 launch), 6500000 (V1) or 80000
            (approve) when estimation fails
        maxFeePerGas:
          type: string
          description: '0x hex wei: 2 × gas price + priority fee'
        maxPriorityFeePerGas:
          type: string
          description: 0x hex wei
    EvmStage:
      type: object
      properties:
        kind:
          type: string
          enum:
            - approve
            - launch
            - launchAndBuy
        tx:
          $ref: '#/components/schemas/UnsignedEvmTx'

````

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