> ## 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 terms and costs for a quote token right now



## OpenAPI

````yaml /openapi.json get /api/launch/estimate
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/estimate:
    get:
      tags:
        - Launch
      summary: Launch terms and costs for a quote token right now
      operationId: estimateLaunch
      parameters:
        - name: quote
          in: query
          required: true
          schema:
            $ref: '#/components/schemas/Address'
        - name: mode
          in: query
          required: true
          schema:
            type: string
            enum:
              - standard
              - rewards
      responses:
        '200':
          description: Estimate.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LaunchEstimate'
        '422':
          description: >-
            `quote_unpriced`, `quote_illiquid`, `unsupported_quote`,
            `standard_pair_sol` (a standard coin paired with a token other than
            SOL), `transfer_fee_quote_unsupported` or `request_invalid`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LaunchError'
        '429':
          $ref: '#/components/responses/RateLimited'
        '503':
          description: >-
            `unavailable`, `price_unavailable`, or `price_pending`: the pair
            token's USD price is being fetched (an estimate never prices a token
            itself; it queues it). Ask again in a few seconds.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LaunchError'
components:
  schemas:
    Address:
      type: string
      pattern: ^[1-9A-HJ-NP-Za-km-z]{32,44}$
      description: Base58 Solana address.
      examples:
        - So11111111111111111111111111111111111111112
    LaunchEstimate:
      type: object
      required:
        - deploymentId
        - quoteMint
        - mode
        - configInstructionBase64
        - quoteTokenProgram
        - tokenBadge
        - serverTime
        - validUntil
        - economics
        - costs
        - sharedConfig
        - transactionCount
      properties:
        deploymentId:
          type: string
        quoteMint:
          $ref: '#/components/schemas/Address'
        mode:
          type: string
          enum:
            - standard
            - rewards
        configInstructionBase64:
          type: string
          contentEncoding: base64
        quoteTokenProgram:
          $ref: '#/components/schemas/Address'
        tokenBadge:
          anyOf:
            - $ref: '#/components/schemas/Address'
            - type: 'null'
        serverTime:
          type: integer
        validUntil:
          type: integer
          description: >-
            Server time until which this estimate's terms are current: 120
            seconds (earlier only if the stored pair-token price would become
            too old).
        economics:
          $ref: '#/components/schemas/LaunchEconomics'
        costs:
          $ref: '#/components/schemas/LaunchCosts'
        sharedConfig:
          anyOf:
            - $ref: '#/components/schemas/Address'
            - type: 'null'
          description: >-
            The registered config the launch would use, or null when the creator
            would pay for the band's config.
        transactionCount:
          type: integer
          enum:
            - 1
            - 2
    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
    LaunchEconomics:
      type: object
      description: The launch terms the config encodes.
      properties:
        policyRevision:
          type: string
        initialMarketCapUsd:
          type: number
        graduationMarketCapUsd:
          type: number
        migrationQuoteThreshold:
          $ref: '#/components/schemas/Atoms'
        curveFees:
          $ref: '#/components/schemas/LaunchFeeShares'
        migratedFees:
          $ref: '#/components/schemas/LaunchFeeShares'
        antiSniping:
          type: object
          description: >-
            Launch-protection fee: starts high and falls linearly to the curve
            fee within a few seconds. The creator's first buy in the pool
            transaction pays the curve fee.
        priceObservedAt:
          type: integer
          description: >-
            Unix seconds: when the price provider observed the pair token's
            stored USD price (refreshed weekly). Launches accept stored prices
            up to about 8 days old.
        priceBand:
          type: object
          properties:
            index:
              type: integer
            referenceUsd:
              type: number
            stepBps:
              type: integer
    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.
    Error:
      type: object
      required:
        - error
      properties:
        code:
          type: string
          description: >-
            Stable machine-readable code. Always present on /api/v1 routes and
            429 responses.
          enum:
            - request_invalid
            - request_too_large
            - origin_forbidden
            - not_found
            - method_not_allowed
            - rate_limited
            - unavailable
        error:
          type: string
          description: Plain-language explanation.
    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'
    LaunchFeeShares:
      type: object
      required:
        - creatorBps
        - holderBps
        - platformBps
        - recipientBps
        - grossFeeNumerator
        - grossFeeBps
      properties:
        creatorBps:
          type: number
          description: >-
            Basis points of trading volume; fractional where the creator's
            whole-percent share requires it (a standard coin's creator earns
            49.5).
        holderBps:
          type: number
          description: >-
            Basis points of trading volume; fractional where the creator's
            whole-percent share requires it (a standard coin's creator earns
            49.5).
        platformBps:
          type: number
          description: >-
            Basis points of trading volume; fractional where the creator's
            whole-percent share requires it (a standard coin's creator earns
            49.5).
        recipientBps:
          type: number
          description: >-
            Basis points of trading volume; fractional where the creator's
            whole-percent share requires it (a standard coin's creator earns
            49.5).
        grossFeeNumerator:
          type: string
          description: Fee numerator over 1e9.
        grossFeeBps:
          type: number
        creatorTradingFeePercentage:
          type: integer
          minimum: 0
          maximum: 100
          description: >-
            DBC's native creator share: whole percent of the fee after the
            protocol share. 0 after graduation and for coins launched before
            revision v5.
        protocolFeeNumerator:
          type: string
          description: The protocol's share, as a fee numerator over 1e9 of trading volume.
        creatorFeeNumerator:
          type: string
          description: >-
            The creator's share, paid by the pool, as a fee numerator over 1e9
            of trading volume.
        partnerFeeNumerator:
          type: string
          description: >-
            The partner fee the platform collects (holders plus platform), as a
            fee numerator over 1e9 of trading volume.
        holderFeeNumerator:
          type: string
          description: >-
            Holder rewards (reward coins), as a fee numerator over 1e9 of
            trading volume.
        platformFeeNumerator:
          type: string
          description: The platform's share, as a fee numerator over 1e9 of trading volume.
      description: >-
        Shares of trading volume. From policy revision
        `pump-style-usd-airdrops-v5` the pool pays the creator natively
        (`creatorTradingFeePercentage` of the fee left after the protocol's 20%:
        33 on standard coins, 0.495% of volume; 20 on reward coins, 0.5%); the
        platform collects only the rest (the partner fee). Earlier revisions
        omit the numerator fields.
  responses:
    RateLimited:
      description: Too many requests in this route class. Wait `Retry-After` seconds.
      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/Error'
          example:
            code: rate_limited
            error: Too many requests. Please wait a moment and try again.
  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.