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

# Deploy a token

> Launch a token on a supported DEX from one of your wallets.

<Note>
  Token deploys are **Solana-only**. The supported DEXes (pump.fun, Bags, and
  Bonk) are all on Solana, and every amount is denominated in SOL (lamports). The
  EVM host serves swaps only — it returns `404` for this path.
</Note>


## OpenAPI

````yaml openapi.yaml POST /api/v1/deploy
openapi: 3.1.0
info:
  title: Bloom API
  version: 1.0.0
  description: |
    Programmatic trading and token-deploy API for Bloom. Drive swaps and token
    launches with a personal API key authenticated as a Bearer token.
servers:
  - url: https://eu.solana.bloombot.app
    description: Solana — EU
  - url: https://us.solana.bloombot.app
    description: Solana — US
  - url: https://evm.bloombot.app
    description: EVM
security:
  - bearerAuth: []
tags:
  - name: Trading
    description: Execute swaps across your wallets.
  - name: Deploy
    description: Launch new tokens.
paths:
  /api/v1/deploy:
    post:
      tags:
        - Deploy
      summary: Deploy a token
      description: |
        Launch a new token on Solana (pump.fun, Bags, or Bonk). Deploys are
        Solana-only and every amount is denominated in SOL (lamports); the EVM
        host returns `404` for this path. The creator wallet and any buyer
        wallets must be owned by your account.
      operationId: deploy
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeployRequest'
            examples:
              deploy:
                summary: Deploy a token on pump.fun with a bundled buyer
                value:
                  wallet_address: 7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU
                  metadata:
                    name: My Token
                    symbol: MTK
                    description: A community token launched via Bloom.
                    image_url: https://example.com/token-logo.png
                    twitter: https://x.com/mytoken
                    website: https://mytoken.xyz
                  configs:
                    - dex: pump_fun
                      data:
                        is_mayhem_mode: false
                        is_cashback_enabled: false
                  creator_buy_sol_amount: 100000000
                  buys:
                    - wallet_address: 9mZWxyz1234567890abcdef
                      sol_amount: 50000000
                      priority_fee_sol: 0.001
                  bundle_mode: packed
                  jito_tip: 5000000
                  slippage_bps: 500
      responses:
        '200':
          description: Deploy accepted.
          headers:
            X-RateLimit-Limit-Minute:
              description: Configured per-minute limit.
              schema:
                type: integer
            X-RateLimit-Limit-Hour:
              description: Configured per-hour limit.
              schema:
                type: integer
            X-RateLimit-Limit-Week:
              description: Configured per-week limit.
              schema:
                type: integer
            X-RateLimit-Remaining-Minute:
              description: Requests remaining in the current minute window.
              schema:
                type: integer
            X-RateLimit-Remaining-Hour:
              description: Requests remaining in the current hour window.
              schema:
                type: integer
            X-RateLimit-Remaining-Week:
              description: Requests remaining in the current week window.
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeployResponse'
        '400':
          description: >
            Bad request. Codes: INVALID_REQUEST, INVALID_IMAGE_URL,

            INVALID_BUNDLE_MODE, DUPLICATE_DEX, INVALID_DEX_CONFIG,

            INVALID_WALLET_ADDRESS, INVALID_BUY_WALLET,

            INVALID_DISTRIBUTION_WALLET, INSUFFICIENT_BALANCE,

            DISTRIBUTION_PERCENTAGE_EXCEEDS_CAP,
            DISTRIBUTIONS_REQUIRE_CREATOR_BUY,

            NON_PACKED_TOO_MANY_BUYS, BAGS_DESCRIPTION_REQUIRED,

            BAGS_FEE_CLAIMER_BPS_INVALID, BUNDLE_SIMULATION_FAILED.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: >-
            Unauthorized. Code: INVALID_AUTH_TOKEN (the auth token was
            rejected).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Too many requests. Code: RATE_LIMITED. The rejected request is not
            counted against your budget.
          headers:
            Retry-After:
              description: Seconds until the blocking window resets.
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Internal server error (code `INTERNAL`). The deploy could not be
            completed — safe to retry.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      servers:
        - url: https://eu.solana.bloombot.app
          description: Solana — EU
        - url: https://us.solana.bloombot.app
          description: Solana — US
components:
  schemas:
    DeployRequest:
      type: object
      required:
        - wallet_address
        - metadata
        - configs
      properties:
        wallet_address:
          type: string
          description: Creator wallet, must be yours.
        metadata:
          $ref: '#/components/schemas/TokenMetadata'
        configs:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/DexConfig'
        creator_buy_sol_amount:
          type: integer
          format: int64
          description: Lamports.
        buys:
          type: array
          items:
            $ref: '#/components/schemas/BuyConfig'
        bundle_mode:
          type: string
          enum:
            - packed
            - non_packed
            - sniper
        jito_tip:
          type: integer
          format: int64
          description: Lamports.
        slippage_bps:
          type: integer
          format: int64
        distributions:
          type: array
          items:
            $ref: '#/components/schemas/Distribution'
        mint_private_key:
          type: string
        creator_priority_fee_sol:
          type: number
          description: Priority fee in SOL.
    DeployResponse:
      type: object
      required:
        - success
        - data
      properties:
        success:
          type: boolean
          example: true
        data:
          type: object
          required:
            - mint_addresses
            - landed_txs
          properties:
            mint_addresses:
              type: array
              items:
                type: string
            landed_txs:
              type: array
              items:
                $ref: '#/components/schemas/LandedTx'
    ErrorResponse:
      type: object
      required:
        - success
        - error
      properties:
        success:
          type: boolean
          example: false
        error:
          type: object
          required:
            - code
            - message
          properties:
            code:
              type: string
            message:
              type: string
            details:
              type:
                - string
                - 'null'
    TokenMetadata:
      type: object
      required:
        - name
        - symbol
        - description
        - image_url
      properties:
        name:
          type: string
        symbol:
          type: string
        description:
          type: string
        image_url:
          type: string
          description: Must start with http.
        twitter:
          type: string
        website:
          type: string
    DexConfig:
      description: >
        A DEX configuration. JSON shape is `{ "dex": <pump_fun|bags|bonk>,
        "data": <variant config> }`.
      oneOf:
        - $ref: '#/components/schemas/PumpFunDexConfig'
        - $ref: '#/components/schemas/BagsDexConfig'
        - $ref: '#/components/schemas/BonkDexConfig'
      discriminator:
        propertyName: dex
        mapping:
          pump_fun:
            $ref: '#/components/schemas/PumpFunDexConfig'
          bags:
            $ref: '#/components/schemas/BagsDexConfig'
          bonk:
            $ref: '#/components/schemas/BonkDexConfig'
    BuyConfig:
      type: object
      required:
        - wallet_address
        - sol_amount
      properties:
        wallet_address:
          type: string
          description: A wallet that belongs to you.
        sol_amount:
          type: integer
          format: int64
          description: Lamports.
        priority_fee_sol:
          type: number
          description: Priority fee in SOL.
    Distribution:
      type: object
      required:
        - wallet_address
      properties:
        wallet_address:
          type: string
        amount:
          type: integer
          format: int64
        percentage:
          type: integer
          format: int32
    LandedTx:
      type: object
      required:
        - kind
        - dex
        - mint
        - signature
      properties:
        kind:
          type: string
        dex:
          type: string
        mint:
          type: string
        signature:
          type: string
    PumpFunDexConfig:
      type: object
      required:
        - dex
        - data
      properties:
        dex:
          type: string
          const: pump_fun
        data:
          $ref: '#/components/schemas/PumpFunDeployConfig'
    BagsDexConfig:
      type: object
      required:
        - dex
        - data
      properties:
        dex:
          type: string
          const: bags
        data:
          $ref: '#/components/schemas/BagsDeployConfig'
    BonkDexConfig:
      type: object
      required:
        - dex
        - data
      properties:
        dex:
          type: string
          const: bonk
        data:
          $ref: '#/components/schemas/BonkDeployConfig'
    PumpFunDeployConfig:
      type: object
      required:
        - is_mayhem_mode
        - is_cashback_enabled
      properties:
        is_mayhem_mode:
          type: boolean
        is_cashback_enabled:
          type: boolean
        quote_mint:
          type: string
          description: e.g. "sol" / "usdc".
        fee_share_recipients:
          type: array
          items:
            $ref: '#/components/schemas/FeeShareRecipient'
        is_charity_mode:
          type: boolean
        donate_gg_config_id:
          type: string
        charity_donation_bps:
          type: integer
        tokenized_agent:
          type: boolean
        tokenized_agent_buyback_bps:
          type: integer
        tokenized_agent_authority:
          type: string
    BagsDeployConfig:
      type: object
      required:
        - fee_claimers
      properties:
        fee_claimers:
          type: array
          items:
            $ref: '#/components/schemas/BagsFeeClaimer'
        fee_config_type:
          type: string
    BonkDeployConfig:
      type: object
      required:
        - mode
      properties:
        mode:
          type: string
          enum:
            - balanced
            - bonkers
        quote_token:
          type: string
    FeeShareRecipient:
      type: object
      required:
        - share_bps
      properties:
        address:
          type: string
        user_id:
          type: string
        platform:
          type: string
          enum:
            - pump
            - x
            - github
        share_bps:
          type: integer
    BagsFeeClaimer:
      type: object
      required:
        - bps
      properties:
        wallet_address:
          type: string
        provider:
          type: string
        username:
          type: string
        bps:
          type: integer
          format: int64
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Your Bloom API key, e.g. `Authorization: Bearer blm_sol_live_…`. Create
        one in Bloom Manager → Manage API Keys.

````