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

# Check a launch's state



## OpenAPI

````yaml /openapi.json post /api/launch/confirm
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/confirm:
    post:
      tags:
        - Launch
      summary: Check a launch's state
      operationId: confirmLaunch
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - deploymentId
                - baseMint
                - signature
              properties:
                deploymentId:
                  type: string
                baseMint:
                  $ref: '#/components/schemas/Address'
                signature:
                  $ref: '#/components/schemas/Signature'
                  description: The pool transaction's signature.
      responses:
        '200':
          description: Launch state.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LaunchStatus'
        '404':
          description: '`not_found`.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LaunchError'
        '429':
          $ref: '#/components/responses/RateLimited'
components:
  schemas:
    Address:
      type: string
      pattern: ^[1-9A-HJ-NP-Za-km-z]{32,44}$
      description: Base58 Solana address.
      examples:
        - So11111111111111111111111111111111111111112
    Signature:
      type: string
      pattern: ^[1-9A-HJ-NP-Za-km-z]{64,88}$
      description: Base58 transaction signature.
    LaunchStatus:
      type: object
      required:
        - state
        - signature
        - configSignature
        - configLanded
        - retry
      properties:
        state:
          type: string
          enum:
            - signed
            - unknown
            - config_landed
            - confirmed
            - failed
            - expired
        signature:
          $ref: '#/components/schemas/Signature'
        configSignature:
          anyOf:
            - $ref: '#/components/schemas/Signature'
            - type: 'null'
        configLanded:
          type: boolean
        retry:
          anyOf:
            - type: string
              enum:
                - pool
                - both
            - type: 'null'
          description: >-
            Set when the attempt can no longer land: prepare again with the same
            mint, config key, upload and quote.
    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
    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.
  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.