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

# Launch a coin in one call

> Publishes the coin's image and details and returns its launch transaction, signed by everyone except the creator. Sign it as the creator and send it to any RPC; RUNNERS tracks the launch on chain by its pool address. Optionally poll confirm with the mint and the transaction signature.



## OpenAPI

````yaml /openapi.json post /api/launch/create
openapi: 3.1.0
info:
  title: RUNNERS Launch API
  version: 1.3.0
  summary: Launch a Solana coin from an agent or bot.
  description: >-
    Upload coin metadata, estimate launch costs, prepare unsigned launch
    transactions, sign locally, submit and confirm. All amounts use integer
    base-unit strings. No website session or integrator API key is required. See
    the Launch a coin guide for the optional authorization messages and the
    launchpad signer.
servers:
  - url: https://runners.family
    description: RUNNERS production API (Solana mainnet)
security: []
tags:
  - name: Launch
    description: >-
      Launch a coin from any HTTP client with an ed25519 keypair: upload the
      image and details, prepare (one transaction when a shared config exists
      for the quote token's price band, otherwise two), sign with the listed
      signers, submit (optionally relayed) and confirm. The launch transactions
      the creator's wallet signs authorize the coin; wallet message signatures
      for the upload and the preparation are optional. See the Launch a coin
      guide.
paths:
  /api/launch/create:
    post:
      tags:
        - Launch
      summary: Launch a coin in one call
      description: >-
        Publishes the coin's image and details and returns its launch
        transaction, signed by everyone except the creator. Sign it as the
        creator and send it to any RPC; RUNNERS tracks the launch on chain by
        its pool address. Optionally poll confirm with the mint and the
        transaction signature.
      operationId: createLaunch
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LaunchCreateRequest'
      responses:
        '200':
          description: The launch transaction to sign and send.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LaunchCreated'
        '403':
          description: '`origin_forbidden`.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LaunchError'
        '409':
          description: >-
            `config_required` (no launch configuration for the pair token's
            price band yet) or `conflict`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LaunchError'
        '413':
          description: '`request_too_large`.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LaunchError'
        '422':
          description: >-
            `request_invalid`, `image_invalid`, `standard_pair_sol`,
            `unsupported_quote`, `first_buy_too_large`, `first_buy_invalid` or
            `insufficient_funds`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LaunchError'
        '429':
          description: >-
            `rate_limited`, or `unsent_limit` (the wallet holds 500 one-call
            launches it has not sent).
          headers:
            Retry-After:
              $ref: '#/components/headers/Retry-After'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LaunchError'
        '503':
          description: '`unavailable`, `price_pending` or `price_unavailable`.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LaunchError'
components:
  schemas:
    LaunchCreateRequest:
      type: object
      required:
        - owner
        - name
        - symbol
        - image
        - imageType
      description: >-
        The coin's details and image. Name, symbol, description and links follow
        the metadata rules in the Launch a coin guide.
      properties:
        owner:
          $ref: '#/components/schemas/Address'
          description: The creator's wallet; it signs the returned transaction and pays.
        name:
          type: string
        symbol:
          type: string
          pattern: ^[A-Z0-9]{1,10}$
        description:
          type: string
          default: ''
        website:
          type: string
          default: ''
        x:
          type: string
          default: ''
        telegram:
          type: string
          default: ''
        image:
          type: string
          contentEncoding: base64
          description: >-
            Image bytes: PNG, JPEG, GIF or WebP, at most 5 MiB and 4096 x 4096
            pixels.
        imageType:
          type: string
          enum:
            - image/png
            - image/jpeg
            - image/gif
            - image/webp
        quoteMint:
          $ref: '#/components/schemas/Address'
          description: Pair token; defaults to SOL.
        mode:
          type: string
          enum:
            - standard
            - rewards
          description: Defaults to `standard` for SOL and `rewards` otherwise.
        firstBuy:
          $ref: '#/components/schemas/Atoms'
          description: Creator's initial buy in quote-token atoms; default "0".
        priority:
          $ref: '#/components/schemas/PriorityLevel'
        slippageBps:
          type: integer
          minimum: 0
          maximum: 5000
    LaunchCreated:
      type: object
      required:
        - transaction
        - mint
        - pool
        - config
        - quoteMint
        - mode
        - blockhash
        - lastValidBlockHeight
        - metadataUri
        - costs
        - firstBuyQuote
      properties:
        transaction:
          type: string
          contentEncoding: base64
          description: >-
            Legacy wire signed by everyone except the creator (the RUNNERS
            launchpad signer and the new mint). Add the creator's signature to
            these bytes and send it to any RPC before the blockhash expires.
        mint:
          $ref: '#/components/schemas/Address'
        pool:
          $ref: '#/components/schemas/Address'
        config:
          $ref: '#/components/schemas/Address'
        quoteMint:
          $ref: '#/components/schemas/Address'
        mode:
          type: string
          enum:
            - standard
            - rewards
        blockhash:
          type: string
        lastValidBlockHeight:
          $ref: '#/components/schemas/Height'
        metadataUri:
          type: string
        costs:
          $ref: '#/components/schemas/LaunchCosts'
        firstBuyQuote:
          anyOf:
            - type: object
              properties:
                amountIn:
                  $ref: '#/components/schemas/Atoms'
                tokensOut:
                  $ref: '#/components/schemas/Atoms'
                minimumOut:
                  $ref: '#/components/schemas/Atoms'
                supplyBps:
                  type: integer
                slippageBps:
                  type: integer
            - type: 'null'
    LaunchError:
      type: object
      required:
        - error
        - code
      properties:
        error:
          type: string
        code:
          type: string
          enum:
            - request_invalid
            - signature_invalid
            - authorization_expired
            - origin_forbidden
            - network_changed
            - unavailable
            - metadata_required
            - draft_changed
            - draft_not_found
            - draft_not_ready
            - already_submitted
            - not_retryable
            - upload_limit
            - price_unavailable
            - quote_unpriced
            - quote_illiquid
            - price_pending
            - price_changed
            - estimate_expired
            - estimate_changed
            - unsupported_quote
            - standard_pair_sol
            - transfer_fee_quote_unsupported
            - first_buy_too_large
            - first_buy_invalid
            - transaction_invalid
            - transaction_mismatch
            - transaction_expired
            - not_found
            - conflict
            - request_too_large
            - image_invalid
            - rate_limited
            - insufficient_funds
            - config_required
            - unsent_limit
    Address:
      type: string
      pattern: ^[1-9A-HJ-NP-Za-km-z]{32,44}$
      description: Base58 Solana address.
      examples:
        - So11111111111111111111111111111111111111112
    Atoms:
      type: string
      pattern: ^[0-9]{1,20}$
      description: >-
        Integer token amount in atoms (the token's smallest unit), as a decimal
        string. One whole token is 10^decimals atoms.
      examples:
        - '1000000'
    PriorityLevel:
      type: string
      enum:
        - normal
        - fast
        - turbo
      description: >-
        Priority fee level: the 50th, 75th or 95th percentile of recent fees
        paid for the same accounts, at least 1,000 / 10,000 / 100,000
        micro-lamports per compute unit, and at most 50,000 / 200,000 /
        1,000,000 lamports in total.
    Height:
      type: string
      pattern: ^(0|[1-9][0-9]{0,19})$
      description: Block height as a decimal string.
    LaunchCosts:
      type: object
      description: >-
        Rent the creator locks when the launch lands, in lamports (network and
        priority fees are separate). configRent is "0" when a shared config
        already exists. firstBuyRent is the token account an initial buy
        creates: included in poolRent and totalRent only when the launch has an
        initial buy (prepare knows its firstBuy; an estimate does not, so add
        firstBuyRent to an estimate for a launch with an initial buy). Every
        coin is a Token-2022 mint with its metadata in the mint: no metadata
        account or metadata fee. Rent uses the network's current rate.
      required:
        - configRent
        - poolRent
        - totalRent
        - firstBuyRent
        - wrappedSolRent
      properties:
        configRent:
          $ref: '#/components/schemas/Atoms'
        poolRent:
          $ref: '#/components/schemas/Atoms'
        totalRent:
          $ref: '#/components/schemas/Atoms'
        firstBuyRent:
          $ref: '#/components/schemas/Atoms'
        wrappedSolRent:
          type: string
          pattern: ^\d+$
          description: >-
            Rent of the temporary wrapped-SOL account a SOL first buy opens and
            closes in the same transaction (refunded), in lamports.
  headers:
    Retry-After:
      description: Seconds to wait before retrying.
      schema:
        type: integer
    RateLimit-Limit:
      description: Requests the client may make at once in this route class (bucket size).
      schema:
        type: integer
    RateLimit-Remaining:
      description: Requests available now.
      schema:
        type: integer
    RateLimit-Reset:
      description: Seconds until the bucket is full again.
      schema:
        type: integer
    RateLimit-Policy:
      description: >-
        `<requests>;w=<seconds>;burst=<burst>`: the sustained rate and the
        bucket size.
      schema:
        type: string
      example: 600;w=60;burst=120

````

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