openapi: 3.1.0
info:
  title: o1 Launchpad Public API
  version: 1.0.0
  description: >-
    Non-custodial API for launchpad data and unsigned transaction preparation on
    Base and Robinhood.
externalDocs:
  description: Error codes, rate limits, and safe retry guidance
  url: https://docs.o1.exchange/launchpad/api/errors-and-limits
servers:
  - url: https://api.launch.o1.exchange/v1
    description: Production
security:
  - ApiKeyAuth: []
tags:
  - name: Meta
    description: Service health and live integration configuration.
  - name: Tokens
    description: Token discovery, detail, activity, and holder data.
  - name: Wallets
    description: Public wallet activity and claim positions.
  - name: Transactions
    description: Indexed launchpad transaction state.
  - name: Launches
    description: Unsigned launch transaction preparation.
  - name: Swaps
    description: Exact-input swap quotes and unsigned router transactions.
  - name: Claims
    description: Unsigned fee and vesting claim transactions.
  - name: Creators
    description: Unsigned creator announcement and metadata transactions.
paths:
  /health:
    get:
      tags:
        - Meta
      operationId: getHealth
      summary: Check API health
      description: >-
        Check service availability and the running API build without querying
        launchpad data.
      security: []
      responses:
        '200':
          description: The API process is available.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Health'
  /config:
    get:
      tags:
        - Meta
      operationId: getConfig
      summary: Get API configuration
      description: >-
        Get production suites, contract addresses, quote assets, capabilities,
        and live creation state for one chain.
      parameters:
        - name: chain_id
          in: query
          required: true
          description: >-
            Production chain to query: 8453 for Base or 4663 for Robinhood
            Chain.
          example: 8453
          schema:
            $ref: '#/components/schemas/ChainId'
        - name: market
          in: query
          description: >-
            Launch market to include: standard tokens, RWA assets, or all
            markets.
          schema:
            type: string
            enum:
              - standard
              - rwa
              - all
            default: all
        - name: include
          in: query
          description: 'Comma-separated sections to return: chains, suites, and quotes.'
          schema:
            type: string
            default: chains,suites,quotes
        - name: active_only
          in: query
          description: >-
            When true, omit historical suites and quote assets that cannot
            create new launches.
          schema:
            type: boolean
            default: true
      responses:
        '200':
          description: Current launchpad integration configuration.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConfigurationResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '422':
          $ref: '#/components/responses/Unprocessable'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalError'
        '502':
          $ref: '#/components/responses/UpstreamError'
        '503':
          $ref: '#/components/responses/Unavailable'
        '504':
          $ref: '#/components/responses/UpstreamTimeout'
  /tokens:
    get:
      tags:
        - Tokens
      operationId: listTokens
      summary: List tokens
      description: >-
        Browse launches by market, quote, and indexed ordering with cursor
        pagination.
      parameters:
        - name: chain_id
          in: query
          required: true
          description: >-
            Production chain to query: 8453 for Base or 4663 for Robinhood
            Chain.
          example: 8453
          schema:
            $ref: '#/components/schemas/ChainId'
        - name: market
          in: query
          description: >-
            Launch market to include: standard tokens, RWA assets, or all
            markets.
          schema:
            type: string
            enum:
              - standard
              - rwa
              - all
            default: all
        - name: cursor
          in: query
          description: >-
            Opaque continuation cursor returned by the previous page. Do not
            parse or modify it.
          schema:
            type: string
            maxLength: 4096
        - name: limit
          in: query
          description: Maximum number of resources to return.
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 25
        - name: quote_address
          in: query
          description: Return only tokens paired with this quote-asset address.
          schema:
            $ref: '#/components/schemas/Address'
        - name: sort
          in: query
          description: >-
            Indexed ordering. newest and oldest use launch time; the remaining
            values rank highest first.
          schema:
            type: string
            enum:
              - newest
              - oldest
              - trending
              - liquidity
              - market_cap
              - volume_24h
            default: newest
      responses:
        '200':
          description: A page of launchpad tokens.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TokenListResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '409':
          $ref: '#/components/responses/Conflict'
        '422':
          $ref: '#/components/responses/Unprocessable'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalError'
        '502':
          $ref: '#/components/responses/UpstreamError'
        '503':
          $ref: '#/components/responses/Unavailable'
        '504':
          $ref: '#/components/responses/UpstreamTimeout'
  /tokens/search:
    get:
      tags:
        - Tokens
      operationId: searchTokens
      summary: Search tokens
      description: >-
        Search tracked launches by token address, name, symbol, creator, pool
        ID, or launch transaction. Matching results use one deterministic
        liquidity ordering.
      parameters:
        - name: chain_id
          in: query
          required: true
          description: >-
            Production chain to query: 8453 for Base or 4663 for Robinhood
            Chain.
          example: 8453
          schema:
            $ref: '#/components/schemas/ChainId'
        - name: market
          in: query
          description: >-
            Launch market to include: standard tokens, RWA assets, or all
            markets.
          schema:
            type: string
            enum:
              - standard
              - rwa
              - all
            default: all
        - name: cursor
          in: query
          description: >-
            Opaque continuation cursor returned by the previous page. Do not
            parse or modify it.
          schema:
            type: string
            maxLength: 4096
        - name: limit
          in: query
          description: Maximum number of resources to return.
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 25
        - name: quote_address
          in: query
          description: Return only tokens paired with this quote-asset address.
          schema:
            $ref: '#/components/schemas/Address'
        - name: q
          in: query
          required: true
          description: >-
            Search token address, name, symbol, creator address, pool ID, or
            launch transaction hash. Results are ordered by liquidity.
          schema:
            type: string
            minLength: 1
            maxLength: 128
      responses:
        '200':
          description: A page of matching launchpad tokens.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TokenListResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '409':
          $ref: '#/components/responses/Conflict'
        '422':
          $ref: '#/components/responses/Unprocessable'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalError'
        '502':
          $ref: '#/components/responses/UpstreamError'
        '503':
          $ref: '#/components/responses/Unavailable'
        '504':
          $ref: '#/components/responses/UpstreamTimeout'
  /creators/{address}/tokens:
    get:
      tags:
        - Tokens
      operationId: listCreatorTokens
      summary: List creator tokens
      description: List launches created by one wallet in newest or oldest order.
      parameters:
        - name: address
          in: path
          required: true
          description: Wallet address.
          schema:
            $ref: '#/components/schemas/Address'
        - name: chain_id
          in: query
          required: true
          description: >-
            Production chain to query: 8453 for Base or 4663 for Robinhood
            Chain.
          example: 8453
          schema:
            $ref: '#/components/schemas/ChainId'
        - name: market
          in: query
          description: >-
            Launch market to include: standard tokens, RWA assets, or all
            markets.
          schema:
            type: string
            enum:
              - standard
              - rwa
              - all
            default: all
        - name: cursor
          in: query
          description: >-
            Opaque continuation cursor returned by the previous page. Do not
            parse or modify it.
          schema:
            type: string
            maxLength: 4096
        - name: limit
          in: query
          description: Maximum number of resources to return.
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 25
        - name: quote_address
          in: query
          description: Return only tokens paired with this quote-asset address.
          schema:
            $ref: '#/components/schemas/Address'
        - name: sort
          in: query
          description: Creation-time ordering.
          schema:
            type: string
            enum:
              - newest
              - oldest
            default: newest
      responses:
        '200':
          description: A page of the creator's launchpad tokens.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TokenListResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '409':
          $ref: '#/components/responses/Conflict'
        '422':
          $ref: '#/components/responses/Unprocessable'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalError'
        '502':
          $ref: '#/components/responses/UpstreamError'
        '503':
          $ref: '#/components/responses/Unavailable'
        '504':
          $ref: '#/components/responses/UpstreamTimeout'
  /tokens/{chain_id}/{token_address}:
    get:
      tags:
        - Tokens
      operationId: getToken
      summary: Get token details
      description: >-
        Get one token's launch data and optionally include its pool, market,
        allocations, vesting, and recent announcements.
      parameters:
        - name: chain_id
          in: path
          required: true
          description: >-
            Production chain containing the resource: 8453 for Base or 4663 for
            Robinhood Chain.
          schema:
            $ref: '#/components/schemas/ChainId'
        - name: token_address
          in: path
          required: true
          description: Launch token contract address.
          schema:
            $ref: '#/components/schemas/Address'
        - name: include
          in: query
          description: >-
            Comma-separated related sections to return: pool, market,
            allocations, vesting, and announcements.
          schema:
            type: string
            default: pool,market
        - name: announcements_limit
          in: query
          description: >-
            Maximum recent announcements. Send only with include=announcements;
            when omitted, the API uses 3.
          schema:
            type: integer
            minimum: 1
            maximum: 10
      responses:
        '200':
          description: Launch and requested token resources.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TokenDetailResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/Unprocessable'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalError'
        '502':
          $ref: '#/components/responses/UpstreamError'
        '503':
          $ref: '#/components/responses/Unavailable'
        '504':
          $ref: '#/components/responses/UpstreamTimeout'
  /tokens/{chain_id}/{token_address}/trades:
    get:
      tags:
        - Tokens
      operationId: listTokenTrades
      summary: List token trades
      description: >-
        Page through canonical trades for one tracked launch token. Use at most
        one identity filter per request.
      parameters:
        - name: chain_id
          in: path
          required: true
          description: >-
            Production chain containing the resource: 8453 for Base or 4663 for
            Robinhood Chain.
          schema:
            $ref: '#/components/schemas/ChainId'
        - name: token_address
          in: path
          required: true
          description: Launch token contract address.
          schema:
            $ref: '#/components/schemas/Address'
        - name: cursor
          in: query
          description: >-
            Opaque continuation cursor returned by the previous page. Do not
            parse or modify it.
          schema:
            type: string
            maxLength: 4096
        - name: limit
          in: query
          description: Maximum number of resources to return.
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 25
        - name: wallet
          in: query
          description: >-
            Filter by the trading wallet, not the router executor. Mutually
            exclusive with transaction_hash and referrer.
          schema:
            $ref: '#/components/schemas/Address'
        - name: transaction_hash
          in: query
          description: >-
            Filter trades by transaction. Mutually exclusive with wallet and
            referrer.
          schema:
            $ref: '#/components/schemas/TransactionHash'
        - name: referrer
          in: query
          description: >-
            Filter trades by referrer. Mutually exclusive with wallet and
            transaction_hash.
          schema:
            $ref: '#/components/schemas/Address'
        - name: from
          in: query
          description: >-
            Inclusive start time in Unix seconds. Must be earlier than to when
            both are sent.
          schema:
            type: integer
            minimum: 0
            maximum: 4102444800
        - name: to
          in: query
          description: >-
            Exclusive end time in Unix seconds. Must be later than from when
            both are sent.
          schema:
            type: integer
            minimum: 1
            maximum: 4102444800
      responses:
        '200':
          description: A page of canonical trades.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TokenTradesResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/Conflict'
        '422':
          $ref: '#/components/responses/Unprocessable'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalError'
        '502':
          $ref: '#/components/responses/UpstreamError'
        '503':
          $ref: '#/components/responses/Unavailable'
        '504':
          $ref: '#/components/responses/UpstreamTimeout'
  /tokens/{chain_id}/{token_address}/announcements:
    get:
      tags:
        - Tokens
      operationId: listTokenAnnouncements
      summary: List announcements
      description: Page through creator announcements for one tracked launch token.
      parameters:
        - name: chain_id
          in: path
          required: true
          description: >-
            Production chain containing the resource: 8453 for Base or 4663 for
            Robinhood Chain.
          schema:
            $ref: '#/components/schemas/ChainId'
        - name: token_address
          in: path
          required: true
          description: Launch token contract address.
          schema:
            $ref: '#/components/schemas/Address'
        - name: cursor
          in: query
          description: >-
            Opaque continuation cursor returned by the previous page. Do not
            parse or modify it.
          schema:
            type: string
            maxLength: 4096
        - name: limit
          in: query
          description: Maximum number of resources to return.
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 25
      responses:
        '200':
          description: A page of creator announcements.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TokenAnnouncementsResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/Conflict'
        '422':
          $ref: '#/components/responses/Unprocessable'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalError'
        '502':
          $ref: '#/components/responses/UpstreamError'
        '503':
          $ref: '#/components/responses/Unavailable'
        '504':
          $ref: '#/components/responses/UpstreamTimeout'
  /tokens/{chain_id}/{token_address}/holders:
    get:
      tags:
        - Tokens
      operationId: getTokenHolders
      summary: List token holders
      description: Get a provider-backed holder snapshot for one tracked launch token.
      parameters:
        - name: chain_id
          in: path
          required: true
          description: >-
            Production chain containing the resource: 8453 for Base or 4663 for
            Robinhood Chain.
          schema:
            $ref: '#/components/schemas/ChainId'
        - name: token_address
          in: path
          required: true
          description: Launch token contract address.
          schema:
            $ref: '#/components/schemas/Address'
        - name: cursor
          in: query
          description: >-
            Opaque continuation cursor returned by the previous page. Do not
            parse or modify it.
          schema:
            type: string
            maxLength: 4096
        - name: limit
          in: query
          description: Maximum number of holders to return.
          schema:
            type: integer
            minimum: 1
            maximum: 200
            default: 50
      responses:
        '200':
          description: A holder page and snapshot summary.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HolderListResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/Conflict'
        '422':
          $ref: '#/components/responses/Unprocessable'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalError'
        '502':
          $ref: '#/components/responses/UpstreamError'
        '503':
          $ref: '#/components/responses/Unavailable'
        '504':
          $ref: '#/components/responses/UpstreamTimeout'
  /wallets/{address}:
    get:
      tags:
        - Wallets
      operationId: getWallet
      summary: Get wallet overview
      description: >-
        Get a compact launchpad overview with the wallet's latest launch, latest
        activity, and claimable-position flags.
      parameters:
        - name: address
          in: path
          required: true
          description: Wallet address.
          schema:
            $ref: '#/components/schemas/Address'
        - name: chain_id
          in: query
          required: true
          description: >-
            Production chain to query: 8453 for Base or 4663 for Robinhood
            Chain.
          example: 8453
          schema:
            $ref: '#/components/schemas/ChainId'
        - name: market
          in: query
          description: >-
            Launch market to include: standard tokens, RWA assets, or all
            markets.
          schema:
            type: string
            enum:
              - standard
              - rwa
              - all
            default: all
      responses:
        '200':
          description: >-
            The wallet's public launchpad overview, or null when it has no
            matching activity.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WalletSummaryResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '422':
          $ref: '#/components/responses/Unprocessable'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalError'
        '502':
          $ref: '#/components/responses/UpstreamError'
        '503':
          $ref: '#/components/responses/Unavailable'
        '504':
          $ref: '#/components/responses/UpstreamTimeout'
  /wallets/{address}/activity:
    get:
      tags:
        - Wallets
      operationId: getWalletActivity
      summary: List wallet activity
      description: Page through structured public launchpad activity involving one wallet.
      parameters:
        - name: address
          in: path
          required: true
          description: Wallet address.
          schema:
            $ref: '#/components/schemas/Address'
        - name: chain_id
          in: query
          required: true
          description: >-
            Production chain to query: 8453 for Base or 4663 for Robinhood
            Chain.
          example: 8453
          schema:
            $ref: '#/components/schemas/ChainId'
        - name: market
          in: query
          description: >-
            Launch market to include: standard tokens, RWA assets, or all
            markets.
          schema:
            type: string
            enum:
              - standard
              - rwa
              - all
            default: all
        - name: cursor
          in: query
          description: >-
            Opaque continuation cursor returned by the previous page. Do not
            parse or modify it.
          schema:
            type: string
            maxLength: 4096
        - name: limit
          in: query
          description: Maximum number of resources to return.
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 25
        - name: kind
          in: query
          description: Activity kind to return.
          schema:
            type: string
            enum:
              - all
              - launch
              - launch_fee
              - trade
              - allocation
              - vesting_registered
              - vesting_claimed
              - fee_credited
              - fee_claimed
              - announcement
              - metadata
            default: all
        - name: from
          in: query
          description: >-
            Inclusive start time in Unix seconds. Must be earlier than to when
            both are sent.
          schema:
            type: integer
            minimum: 0
            maximum: 4102444800
        - name: to
          in: query
          description: >-
            Exclusive end time in Unix seconds. Must be later than from when
            both are sent.
          schema:
            type: integer
            minimum: 1
            maximum: 4102444800
      responses:
        '200':
          description: A page of wallet activity.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WalletActivityResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '409':
          $ref: '#/components/responses/Conflict'
        '422':
          $ref: '#/components/responses/Unprocessable'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalError'
        '502':
          $ref: '#/components/responses/UpstreamError'
        '503':
          $ref: '#/components/responses/Unavailable'
        '504':
          $ref: '#/components/responses/UpstreamTimeout'
  /wallets/{address}/fee-claims:
    get:
      tags:
        - Wallets
      operationId: listWalletFeeClaims
      summary: List fee claims
      description: Page through fee positions for one wallet.
      parameters:
        - name: address
          in: path
          required: true
          description: Wallet address.
          schema:
            $ref: '#/components/schemas/Address'
        - name: chain_id
          in: query
          required: true
          description: >-
            Production chain to query: 8453 for Base or 4663 for Robinhood
            Chain.
          example: 8453
          schema:
            $ref: '#/components/schemas/ChainId'
        - name: market
          in: query
          description: >-
            Launch market to include: standard tokens, RWA assets, or all
            markets.
          schema:
            type: string
            enum:
              - standard
              - rwa
              - all
            default: all
        - name: cursor
          in: query
          description: >-
            Opaque continuation cursor returned by the previous page. Do not
            parse or modify it.
          schema:
            type: string
            maxLength: 4096
        - name: limit
          in: query
          description: Maximum number of claim positions to return.
          schema:
            type: integer
            minimum: 1
            maximum: 50
            default: 25
        - name: state
          in: query
          description: >-
            claimable returns positions with a confirmed positive balance; all
            also includes empty positions.
          schema:
            type: string
            enum:
              - claimable
              - all
            default: claimable
        - name: currency_address
          in: query
          description: Filter fee positions by payout currency.
          schema:
            $ref: '#/components/schemas/Address'
      responses:
        '200':
          description: A page of fee positions.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WalletFeeClaimsResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '409':
          $ref: '#/components/responses/Conflict'
        '422':
          $ref: '#/components/responses/Unprocessable'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalError'
        '502':
          $ref: '#/components/responses/UpstreamError'
        '503':
          $ref: '#/components/responses/Unavailable'
        '504':
          $ref: '#/components/responses/UpstreamTimeout'
  /wallets/{address}/vesting:
    get:
      tags:
        - Wallets
      operationId: listWalletVesting
      summary: List vesting positions
      description: Page through vesting positions for one beneficiary.
      parameters:
        - name: address
          in: path
          required: true
          description: Wallet address.
          schema:
            $ref: '#/components/schemas/Address'
        - name: chain_id
          in: query
          required: true
          description: >-
            Production chain to query: 8453 for Base or 4663 for Robinhood
            Chain.
          example: 8453
          schema:
            $ref: '#/components/schemas/ChainId'
        - name: market
          in: query
          description: >-
            Launch market to include: standard tokens, RWA assets, or all
            markets.
          schema:
            type: string
            enum:
              - standard
              - rwa
              - all
            default: all
        - name: cursor
          in: query
          description: >-
            Opaque continuation cursor returned by the previous page. Do not
            parse or modify it.
          schema:
            type: string
            maxLength: 4096
        - name: limit
          in: query
          description: Maximum number of claim positions to return.
          schema:
            type: integer
            minimum: 1
            maximum: 50
            default: 25
        - name: state
          in: query
          description: >-
            Filter by currently claimable, still locked, completed, or all
            vesting positions.
          schema:
            type: string
            enum:
              - claimable
              - locked
              - complete
              - all
            default: claimable
        - name: token_address
          in: query
          description: Filter vesting positions by launch token.
          schema:
            $ref: '#/components/schemas/Address'
        - name: include
          in: query
          description: >-
            Set to schedule to add the full unlock schedule to each returned
            position.
          schema:
            type: string
            enum:
              - schedule
      responses:
        '200':
          description: A page of vesting positions.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WalletVestingResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '409':
          $ref: '#/components/responses/Conflict'
        '422':
          $ref: '#/components/responses/Unprocessable'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalError'
        '502':
          $ref: '#/components/responses/UpstreamError'
        '503':
          $ref: '#/components/responses/Unavailable'
        '504':
          $ref: '#/components/responses/UpstreamTimeout'
  /transactions/{chain_id}/{tx_hash}:
    get:
      tags:
        - Transactions
      operationId: getTransactionStatus
      summary: Get transaction status
      description: >-
        Read indexed status for a wallet-broadcast transaction. Data is null
        until the transaction is observed.
      parameters:
        - name: chain_id
          in: path
          required: true
          description: >-
            Production chain containing the resource: 8453 for Base or 4663 for
            Robinhood Chain.
          schema:
            $ref: '#/components/schemas/ChainId'
        - name: tx_hash
          in: path
          required: true
          description: Transaction hash.
          schema:
            $ref: '#/components/schemas/TransactionHash'
      responses:
        '200':
          description: Indexed launchpad transaction state, or null before it is observed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionStatusResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '422':
          $ref: '#/components/responses/Unprocessable'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalError'
        '502':
          $ref: '#/components/responses/UpstreamError'
        '503':
          $ref: '#/components/responses/Unavailable'
        '504':
          $ref: '#/components/responses/UpstreamTimeout'
  /launches/prepare:
    post:
      tags:
        - Launches
      operationId: prepareLaunch
      summary: Prepare a launch
      description: >-
        Validate inputs and any current creation-fee requirement, pin metadata,
        mine an 01 address, simulate against the verified chain snapshot, and
        return unsigned wallet steps.
      parameters:
        - name: Idempotency-Key
          in: header
          required: true
          description: >-
            Generate a random UUID for each new request and reuse it only when
            retrying that exact request. A different payload is rejected.
          schema:
            type: string
            minLength: 1
            maxLength: 255
            x-mint:
              pre:
                - Unique retry ID
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LaunchPrepareRequest'
      responses:
        '200':
          description: An unsigned launch transaction plan.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LaunchPrepareResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '409':
          $ref: '#/components/responses/Conflict'
        '413':
          $ref: '#/components/responses/TooLarge'
        '422':
          $ref: '#/components/responses/Unprocessable'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalError'
        '502':
          $ref: '#/components/responses/UpstreamError'
        '503':
          $ref: '#/components/responses/Unavailable'
        '504':
          $ref: '#/components/responses/UpstreamTimeout'
  /swaps/quote:
    post:
      tags:
        - Swaps
      operationId: quoteSwap
      summary: Quote a swap
      description: >-
        Get a live exact-input launch-pool quote, minimum output, and any ERC-20
        approval or Permit2 signature requirements. The quote expires after 2
        minutes.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SwapQuoteRequest'
      responses:
        '200':
          description: A signed short-lived quote and prerequisite steps.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SwapQuoteResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '413':
          $ref: '#/components/responses/TooLarge'
        '422':
          $ref: '#/components/responses/Unprocessable'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalError'
        '502':
          $ref: '#/components/responses/UpstreamError'
        '503':
          $ref: '#/components/responses/Unavailable'
        '504':
          $ref: '#/components/responses/UpstreamTimeout'
  /swaps/prepare:
    post:
      tags:
        - Swaps
      operationId: prepareSwap
      summary: Prepare a swap
      description: >-
        Requote an unmodified quote_id, preserve its reviewed slippage floor,
        simulate, and return an unsigned Universal Router transaction.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SwapPrepareRequest'
      responses:
        '200':
          description: An unsigned swap transaction plan.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SwapPrepareResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '409':
          $ref: '#/components/responses/Conflict'
        '413':
          $ref: '#/components/responses/TooLarge'
        '422':
          $ref: '#/components/responses/Unprocessable'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalError'
        '502':
          $ref: '#/components/responses/UpstreamError'
        '503':
          $ref: '#/components/responses/Unavailable'
        '504':
          $ref: '#/components/responses/UpstreamTimeout'
  /claims/fees/prepare:
    post:
      tags:
        - Claims
      operationId: prepareFeeClaims
      summary: Prepare fee claims
      description: >-
        Verify fee-claim positions and return one independent unsigned
        transaction per position.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FeeClaimsPrepareRequest'
      responses:
        '200':
          description: Unsigned trading-fee claim transactions.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FeeClaimsPrepareResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '409':
          $ref: '#/components/responses/Conflict'
        '413':
          $ref: '#/components/responses/TooLarge'
        '422':
          $ref: '#/components/responses/Unprocessable'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalError'
        '502':
          $ref: '#/components/responses/UpstreamError'
        '503':
          $ref: '#/components/responses/Unavailable'
        '504':
          $ref: '#/components/responses/UpstreamTimeout'
  /claims/vesting/prepare:
    post:
      tags:
        - Claims
      operationId: prepareVestingClaims
      summary: Prepare vesting claims
      description: >-
        Verify unlocked vesting positions and return one independent unsigned
        transaction per position.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VestingClaimsPrepareRequest'
      responses:
        '200':
          description: Unsigned vesting-claim transactions.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VestingClaimsPrepareResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '409':
          $ref: '#/components/responses/Conflict'
        '413':
          $ref: '#/components/responses/TooLarge'
        '422':
          $ref: '#/components/responses/Unprocessable'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalError'
        '502':
          $ref: '#/components/responses/UpstreamError'
        '503':
          $ref: '#/components/responses/Unavailable'
        '504':
          $ref: '#/components/responses/UpstreamTimeout'
  /tokens/{chain_id}/{token_address}/announcements/prepare:
    post:
      tags:
        - Creators
      operationId: prepareAnnouncement
      summary: Prepare an announcement
      description: >-
        Verify the launch creator and return an unsigned AnnouncementRegistry
        transaction.
      parameters:
        - name: chain_id
          in: path
          required: true
          description: >-
            Production chain containing the resource: 8453 for Base or 4663 for
            Robinhood Chain.
          schema:
            $ref: '#/components/schemas/ChainId'
        - name: token_address
          in: path
          required: true
          description: Launch token contract address.
          schema:
            $ref: '#/components/schemas/Address'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AnnouncementPrepareRequest'
      responses:
        '200':
          description: An unsigned announcement transaction plan.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AnnouncementPrepareResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/Conflict'
        '413':
          $ref: '#/components/responses/TooLarge'
        '422':
          $ref: '#/components/responses/Unprocessable'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalError'
        '502':
          $ref: '#/components/responses/UpstreamError'
        '503':
          $ref: '#/components/responses/Unavailable'
        '504':
          $ref: '#/components/responses/UpstreamTimeout'
  /tokens/{chain_id}/{token_address}/metadata/onchain/prepare:
    post:
      tags:
        - Creators
      operationId: prepareOnchainMetadata
      summary: Prepare an on-chain metadata update
      description: Update the token name, symbol, or one on-chain extra-metadata key.
      parameters:
        - name: chain_id
          in: path
          required: true
          description: >-
            Production chain containing the resource: 8453 for Base or 4663 for
            Robinhood Chain.
          schema:
            $ref: '#/components/schemas/ChainId'
        - name: token_address
          in: path
          required: true
          description: Launch token contract address.
          schema:
            $ref: '#/components/schemas/Address'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MetadataPrepareRequest'
      responses:
        '200':
          description: An unsigned on-chain metadata transaction plan.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MetadataPrepareResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/Conflict'
        '413':
          $ref: '#/components/responses/TooLarge'
        '422':
          $ref: '#/components/responses/Unprocessable'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalError'
        '502':
          $ref: '#/components/responses/UpstreamError'
        '503':
          $ref: '#/components/responses/Unavailable'
        '504':
          $ref: '#/components/responses/UpstreamTimeout'
  /tokens/{chain_id}/{token_address}/metadata/document/prepare:
    post:
      tags:
        - Creators
      operationId: prepareMetadataDocument
      summary: Prepare a metadata document update
      description: >-
        Merge and pin token description, image, website, X, or Telegram updates,
        then return one unsigned contract-URI transaction.
      parameters:
        - name: chain_id
          in: path
          required: true
          description: >-
            Production chain containing the resource: 8453 for Base or 4663 for
            Robinhood Chain.
          schema:
            $ref: '#/components/schemas/ChainId'
        - name: token_address
          in: path
          required: true
          description: Launch token contract address.
          schema:
            $ref: '#/components/schemas/Address'
        - name: Idempotency-Key
          in: header
          required: true
          description: >-
            Generate a random UUID for each new request and reuse it only when
            retrying that exact request. A different payload is rejected.
          schema:
            type: string
            minLength: 1
            maxLength: 255
            x-mint:
              pre:
                - Unique retry ID
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MetadataDocumentPrepareRequest'
      responses:
        '200':
          description: An unsigned token metadata-document transaction plan.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MetadataPrepareResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/Conflict'
        '413':
          $ref: '#/components/responses/TooLarge'
        '422':
          $ref: '#/components/responses/Unprocessable'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalError'
        '502':
          $ref: '#/components/responses/UpstreamError'
        '503':
          $ref: '#/components/responses/Unavailable'
        '504':
          $ref: '#/components/responses/UpstreamTimeout'
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: Production API key beginning with o1_launch_.
  schemas:
    Address:
      type: string
      pattern: ^0x[0-9a-fA-F]{40}$
      examples:
        - '0x1111111111111111111111111111111111111111'
      description: >-
        EVM address. The zero address represents native currency only where
        documented.
    NonZeroAddress:
      type: string
      pattern: ^0x[0-9a-fA-F]{40}$
      examples:
        - '0x1111111111111111111111111111111111111111'
      description: Non-zero EVM address.
      not:
        const: '0x0000000000000000000000000000000000000000'
    TransactionHash:
      type: string
      pattern: ^0x[0-9a-fA-F]{64}$
      examples:
        - '0x1111111111111111111111111111111111111111111111111111111111111111'
      description: 32-byte hexadecimal hash.
    RawAmount:
      type: string
      pattern: ^(0|[1-9][0-9]*)$
      examples:
        - '1000000000000000000'
      description: Unsigned integer encoded as a base-10 string to preserve full precision.
    ChainId:
      type: integer
      enum:
        - 8453
        - 4663
      examples:
        - 8453
      description: 'Production chain ID: 8453 for Base or 4663 for Robinhood Chain.'
    Market:
      type: string
      enum:
        - standard
        - rwa
      description: 'Launch market: standard tokens or RWA assets.'
    Finality:
      type: string
      enum:
        - observed
        - confirmed
    ResponseMeta:
      type: object
      required:
        - request_id
        - generated_at
        - warnings
      properties:
        request_id:
          type: string
          examples:
            - req_01JZZZZZZZZZZZZZZZZZZZZZZZ
        generated_at:
          type: string
          format: date-time
          examples:
            - 2026-07-31T12:00:00.000Z
        warnings:
          type: array
          items:
            type: string
    Pagination:
      type: object
      required:
        - next_cursor
        - has_more
        - limit
      properties:
        next_cursor:
          type:
            - string
            - 'null'
        has_more:
          type: boolean
        limit:
          type: integer
          minimum: 1
    InvalidParameter:
      type: object
      required:
        - name
        - reason
        - detail
      properties:
        name:
          type: string
        reason:
          type: string
        detail:
          type: string
        allowed:
          type: array
          items:
            type: string
    Problem:
      type: object
      required:
        - type
        - title
        - status
        - code
        - detail
        - action
        - instance
        - request_id
      properties:
        type:
          type: string
          format: uri
          description: >-
            Canonical section of the public error guide for this stable problem
            code.
          examples:
            - https://docs.o1.exchange/launchpad/api/errors-and-limits#not-found
        title:
          type: string
        status:
          type: integer
          minimum: 400
          maximum: 599
        code:
          type: string
          enum:
            - invalid_request
            - unknown_parameter
            - duplicate_parameter
            - incompatible_parameters
            - invalid_parameter
            - missing_idempotency_key
            - invalid_idempotency_key
            - missing_api_key
            - invalid_api_key
            - origin_not_allowed
            - insufficient_scope
            - wallet_not_authorized
            - not_found
            - stale_plan
            - stale_quote
            - salt_unavailable
            - invalid_permit
            - approval_not_confirmed
            - announcement_id_conflict
            - cursor_filter_mismatch
            - cursor_stale
            - idempotency_in_progress
            - nothing_to_claim
            - unsupported_operation
            - unsupported_chain
            - idempotency_key_reused
            - invalid_amount
            - invalid_referrer
            - invalid_allocation
            - invalid_vesting
            - insufficient_balance
            - quote_unavailable
            - simulation_failed
            - rate_limit_exceeded
            - quota_exceeded
            - internal_error
            - upstream_error
            - temporarily_unavailable
            - upstream_timeout
          description: >-
            Stable machine-readable error code. Branch on this value instead of
            detail.
        detail:
          type: string
        action:
          type: string
          description: Safe next step for the caller.
        instance:
          type: string
        request_id:
          type: string
        invalid_parameters:
          type: array
          items:
            $ref: '#/components/schemas/InvalidParameter'
        suggested_endpoint:
          type: string
        resource:
          type: string
        chain_id:
          type: integer
          enum:
            - 8453
            - 4663
          examples:
            - 8453
          description: 'Production chain ID: 8453 for Base or 4663 for Robinhood Chain.'
        token_address:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        asset:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        actual_raw:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: >-
            Unsigned integer encoded as a base-10 string to preserve full
            precision.
        required_raw:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: >-
            Unsigned integer encoded as a base-10 string to preserve full
            precision.
    Health:
      type: object
      required:
        - status
        - api_version
        - build_id
        - time
      properties:
        status:
          type: string
          const: ok
        api_version:
          type: string
          const: v1
        build_id:
          type: string
        time:
          type: string
          format: date-time
          examples:
            - 2026-07-31T12:00:00.000Z
    CreationFee:
      type: object
      required:
        - amount_raw
        - currency_address
      properties:
        amount_raw:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: >-
            Unsigned integer encoded as a base-10 string to preserve full
            precision.
        currency_address:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        decimals:
          type: integer
          minimum: 0
          maximum: 255
        symbol:
          type: string
    TokenSummaryIdentity:
      type: object
      required:
        - address
        - name
        - symbol
        - decimals
      properties:
        address:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        name:
          type: string
        symbol:
          type: string
        decimals:
          type: integer
          minimum: 0
          maximum: 255
        image_url:
          type: string
          format: uri
    TokenDetailIdentity:
      type: object
      required:
        - address
        - name
        - symbol
        - decimals
        - total_supply_raw
      properties:
        address:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        name:
          type: string
        symbol:
          type: string
        decimals:
          type: integer
          minimum: 0
          maximum: 255
        image_url:
          type: string
          format: uri
        description:
          type: string
        contract_uri:
          type: string
        website:
          type: string
          format: uri
        x:
          type: string
          format: uri
        telegram:
          type: string
          format: uri
        total_supply_raw:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: >-
            Unsigned integer encoded as a base-10 string to preserve full
            precision.
    QuoteIdentity:
      type: object
      required:
        - address
        - symbol
        - decimals
      properties:
        address:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        symbol:
          type: string
        decimals:
          type:
            - integer
            - 'null'
          minimum: 0
          maximum: 255
    TokenReference:
      type: object
      required:
        - chain_id
        - market
        - address
        - name
        - symbol
        - decimals
      properties:
        chain_id:
          type: integer
          enum:
            - 8453
            - 4663
          examples:
            - 8453
          description: 'Production chain ID: 8453 for Base or 4663 for Robinhood Chain.'
        market:
          type: string
          enum:
            - standard
            - rwa
          description: 'Launch market: standard tokens or RWA assets.'
        address:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        name:
          type: string
        symbol:
          type: string
        decimals:
          type: integer
          minimum: 0
          maximum: 255
        image_url:
          type: string
          format: uri
    OnchainReference:
      type: object
      properties:
        transaction_hash:
          type: string
          pattern: ^0x[0-9a-fA-F]{64}$
          examples:
            - '0x1111111111111111111111111111111111111111111111111111111111111111'
          description: 32-byte hexadecimal hash.
        block_number:
          type: integer
          minimum: 0
        block_hash:
          type: string
          pattern: ^0x[0-9a-fA-F]{64}$
          examples:
            - '0x1111111111111111111111111111111111111111111111111111111111111111'
          description: 32-byte hexadecimal hash.
        log_index:
          type: integer
          minimum: 0
        finality:
          type: string
          enum:
            - observed
            - confirmed
    VestingOnchainReference:
      type: object
      required:
        - transaction_hash
        - finality
      properties:
        transaction_hash:
          type: string
          pattern: ^0x[0-9a-fA-F]{64}$
          examples:
            - '0x1111111111111111111111111111111111111111111111111111111111111111'
          description: 32-byte hexadecimal hash.
        block_number:
          type: integer
          minimum: 0
        block_hash:
          type: string
          pattern: ^0x[0-9a-fA-F]{64}$
          examples:
            - '0x1111111111111111111111111111111111111111111111111111111111111111'
          description: 32-byte hexadecimal hash.
        log_index:
          type: integer
          minimum: 0
        finality:
          type: string
          enum:
            - observed
            - confirmed
    TransactionRequest:
      type: object
      required:
        - chain_id
        - from
        - to
        - data
        - value
      properties:
        chain_id:
          type: integer
          enum:
            - 8453
            - 4663
          examples:
            - 8453
          description: 'Production chain ID: 8453 for Base or 4663 for Robinhood Chain.'
        from:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: Wallet expected to send this transaction.
        to:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: Verified contract or approval target.
        data:
          type: string
          pattern: ^0x(?:[0-9a-fA-F]{2})*$
          description: Complete transaction calldata. Do not modify it.
        value:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: >-
            Native-currency value in base units. Use 0 when no native value is
            required.
    TypedDataField:
      type: object
      required:
        - name
        - type
      properties:
        name:
          type: string
        type:
          type: string
    Permit2TypedDataDomain:
      type: object
      required:
        - name
        - chainId
        - verifyingContract
      properties:
        name:
          type: string
          const: Permit2
        chainId:
          type: integer
          enum:
            - 8453
            - 4663
          examples:
            - 8453
          description: 'Production chain ID: 8453 for Base or 4663 for Robinhood Chain.'
        verifyingContract:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
    Permit2TypedDataTypes:
      type: object
      required:
        - PermitSingle
        - PermitDetails
      properties:
        PermitSingle:
          type: array
          items:
            $ref: '#/components/schemas/TypedDataField'
        PermitDetails:
          type: array
          items:
            $ref: '#/components/schemas/TypedDataField'
    Permit2DetailsMessage:
      type: object
      required:
        - token
        - amount
        - expiration
        - nonce
      properties:
        token:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        amount:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: >-
            Unsigned integer encoded as a base-10 string to preserve full
            precision.
        expiration:
          type: integer
          minimum: 1
        nonce:
          type: integer
          minimum: 0
    Permit2Message:
      type: object
      required:
        - details
        - spender
        - sigDeadline
      properties:
        details:
          $ref: '#/components/schemas/Permit2DetailsMessage'
        spender:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        sigDeadline:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: >-
            Unsigned integer encoded as a base-10 string to preserve full
            precision.
    TypedDataRequest:
      type: object
      required:
        - domain
        - types
        - primaryType
        - message
      properties:
        domain:
          $ref: '#/components/schemas/Permit2TypedDataDomain'
        types:
          $ref: '#/components/schemas/Permit2TypedDataTypes'
        primaryType:
          type: string
          const: PermitSingle
        message:
          $ref: '#/components/schemas/Permit2Message'
    Simulation:
      type: object
      required:
        - status
      properties:
        status:
          type: string
          enum:
            - succeeded
            - not_run
          description: >-
            succeeded means the step simulated; not_run means a prerequisite
            must be completed first.
        block_number:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: Block used for simulation when status is succeeded.
    TransactionStep:
      oneOf:
        - type: object
          required:
            - id
            - kind
            - label
            - depends_on
            - transaction
          properties:
            id:
              type: string
            kind:
              type: string
              const: transaction
            label:
              type: string
            depends_on:
              type: array
              items:
                type: string
              description: Step IDs that must be completed before this step.
            transaction:
              $ref: '#/components/schemas/TransactionRequest'
            simulation:
              $ref: '#/components/schemas/Simulation'
        - type: object
          required:
            - id
            - kind
            - label
            - depends_on
            - typed_data
          properties:
            id:
              type: string
            kind:
              type: string
              const: typed_data
            label:
              type: string
            depends_on:
              type: array
              items:
                type: string
              description: Step IDs that must be completed before this step.
            typed_data:
              $ref: '#/components/schemas/TypedDataRequest'
            simulation:
              $ref: '#/components/schemas/Simulation'
    PlanIssue:
      type: object
      required:
        - code
        - severity
      properties:
        code:
          type: string
        severity:
          type: string
          enum:
            - blocking
            - action_required
            - warning
        detail:
          type: string
        asset:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        spender:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        actual_raw:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: >-
            Unsigned integer encoded as a base-10 string to preserve full
            precision.
        required_raw:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: >-
            Unsigned integer encoded as a base-10 string to preserve full
            precision.
        remediation_step_id:
          type: string
    TransactionPlan:
      type: object
      required:
        - chain_id
        - actor
        - prepared_at
        - expires_at
        - observed_block
        - issues
        - steps
      properties:
        chain_id:
          type: integer
          enum:
            - 8453
            - 4663
          examples:
            - 8453
          description: 'Production chain ID: 8453 for Base or 4663 for Robinhood Chain.'
        actor:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: Wallet expected to send the returned transaction steps.
        prepared_at:
          type: string
          format: date-time
          examples:
            - 2026-07-31T12:00:00.000Z
          description: Time the plan was prepared.
        expires_at:
          type: string
          format: date-time
          examples:
            - 2026-07-31T12:00:00.000Z
          description: >-
            Complete the plan before this time; expired plans must be prepared
            again.
        observed_block:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: Chain block used for validation and simulation.
        issues:
          type: array
          items:
            $ref: '#/components/schemas/PlanIssue'
          description: Warnings or actions required before execution.
        steps:
          type: array
          items:
            $ref: '#/components/schemas/TransactionStep'
          description: >-
            Unsigned steps in execution order. Follow each step's depends_on
            values.
    ChainCapabilities:
      type: object
      required:
        - launch_token_mode
        - b20_asset_status
      properties:
        launch_token_mode:
          type: string
          enum:
            - b20
            - erc20
        b20_asset_status:
          type: string
          enum:
            - active
            - inactive
            - not_checked
            - not_applicable
          description: >-
            Live B20 feature status. Static chain-only requests return
            not_checked; non-B20 chains return not_applicable.
    ChainConfiguration:
      type: object
      required:
        - chain_id
        - name
        - native_currency
        - capabilities
      properties:
        chain_id:
          type: integer
          enum:
            - 8453
            - 4663
          examples:
            - 8453
          description: 'Production chain ID: 8453 for Base or 4663 for Robinhood Chain.'
        name:
          type: string
        native_currency:
          type: object
          required:
            - symbol
            - decimals
          properties:
            symbol:
              type: string
            decimals:
              type: integer
              minimum: 0
              maximum: 255
        capabilities:
          $ref: '#/components/schemas/ChainCapabilities'
    SuiteContracts:
      type: object
      required:
        - factory
        - hook
        - fee_escrow
        - vesting_vault
        - announcement_registry
        - pool_manager
        - state_view
        - quoter
        - universal_router
        - permit2
      properties:
        factory:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        hook:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        fee_escrow:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        vesting_vault:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        announcement_registry:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        pool_manager:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        state_view:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        quoter:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        universal_router:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        permit2:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
    SuiteCapabilities:
      type: object
      required:
        - launch_creation_fee
        - announcements
        - vesting
        - editable_metadata
        - quote_revisions
        - launch_creation_switch
      properties:
        launch_creation_fee:
          type: boolean
        announcements:
          type: boolean
        vesting:
          type: boolean
        editable_metadata:
          type: boolean
        quote_revisions:
          type: boolean
        launch_creation_switch:
          type: boolean
    ConfigurationCreationFee:
      type: object
      required:
        - amount_raw
        - currency
        - symbol
        - decimals
      properties:
        amount_raw:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: >-
            Unsigned integer encoded as a base-10 string to preserve full
            precision.
        currency:
          type: string
        symbol:
          type: string
        decimals:
          type: integer
          minimum: 0
          maximum: 255
    ContractSuite:
      type: object
      required:
        - id
        - version
        - chain_id
        - route
        - active_for_creation
        - creation_available
        - first_block
        - token_mode
        - contracts
        - capabilities
      properties:
        id:
          type: string
        version:
          type: string
        chain_id:
          type: integer
          enum:
            - 8453
            - 4663
          examples:
            - 8453
          description: 'Production chain ID: 8453 for Base or 4663 for Robinhood Chain.'
        route:
          type: string
          enum:
            - standard
            - rwa
          description: 'Launch market: standard tokens or RWA assets.'
        active_for_creation:
          type: boolean
        creation_available:
          type: boolean
        first_block:
          type: integer
          minimum: 0
        token_mode:
          type: string
          enum:
            - b20
            - erc20
        config_version:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: >-
            Unsigned integer encoded as a base-10 string to preserve full
            precision.
        launch_supply_raw:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: >-
            Unsigned integer encoded as a base-10 string to preserve full
            precision.
        launch_creation_enabled:
          type: boolean
        creation_fee:
          $ref: '#/components/schemas/ConfigurationCreationFee'
        contracts:
          $ref: '#/components/schemas/SuiteContracts'
        capabilities:
          $ref: '#/components/schemas/SuiteCapabilities'
    QuoteConfiguration:
      type: object
      required:
        - address
        - symbol
        - decimals
        - route
        - suite_id
        - registered
        - selectable
      properties:
        address:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        symbol:
          type: string
        name:
          type: string
        decimals:
          type: integer
          minimum: 0
          maximum: 255
        route:
          type: string
          enum:
            - standard
            - rwa
          description: 'Launch market: standard tokens or RWA assets.'
        suite_id:
          type: string
        registered:
          type: boolean
        selectable:
          type: boolean
        quote_revision:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: >-
            Unsigned integer encoded as a base-10 string to preserve full
            precision.
        creation_fee:
          $ref: '#/components/schemas/ConfigurationCreationFee'
    Configuration:
      type: object
      properties:
        chain:
          $ref: '#/components/schemas/ChainConfiguration'
        supported_chain_ids:
          type: array
          items:
            type: integer
            enum:
              - 8453
              - 4663
            examples:
              - 8453
            description: 'Production chain ID: 8453 for Base or 4663 for Robinhood Chain.'
        suites:
          type: array
          items:
            $ref: '#/components/schemas/ContractSuite'
        quotes:
          type: array
          items:
            $ref: '#/components/schemas/QuoteConfiguration'
        as_of_block:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: >-
            Unsigned integer encoded as a base-10 string to preserve full
            precision.
    SuiteReference:
      type: object
      required:
        - id
      properties:
        id:
          type: string
        version:
          type: string
    LaunchFeatures:
      type: object
      required:
        - allocations
        - vesting
        - editable_metadata
      properties:
        allocations:
          type: boolean
        vesting:
          type: boolean
        editable_metadata:
          type: boolean
    LaunchContracts:
      type: object
      required:
        - factory_address
        - hook_address
        - fee_escrow_address
        - vesting_vault_address
        - announcement_registry_address
      properties:
        factory_address:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        hook_address:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        fee_escrow_address:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        vesting_vault_address:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        announcement_registry_address:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
    LaunchSummary:
      type: object
      required:
        - creator_address
        - suite
        - pool_id
        - quote
        - features
        - onchain
        - created_at
      properties:
        creator_address:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        suite:
          $ref: '#/components/schemas/SuiteReference'
        pool_id:
          type: string
          pattern: ^0x[0-9a-fA-F]{64}$
          examples:
            - '0x1111111111111111111111111111111111111111111111111111111111111111'
          description: 32-byte hexadecimal hash.
        quote:
          $ref: '#/components/schemas/QuoteIdentity'
        features:
          $ref: '#/components/schemas/LaunchFeatures'
        onchain:
          $ref: '#/components/schemas/OnchainReference'
        created_at:
          type: string
          format: date-time
          examples:
            - 2026-07-31T12:00:00.000Z
        creation_fee:
          $ref: '#/components/schemas/CreationFee'
    LaunchDetail:
      type: object
      required:
        - creator_address
        - suite
        - pool_id
        - quote
        - features
        - contracts
        - onchain
        - created_at
      properties:
        creator_address:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        suite:
          $ref: '#/components/schemas/SuiteReference'
        pool_id:
          type: string
          pattern: ^0x[0-9a-fA-F]{64}$
          examples:
            - '0x1111111111111111111111111111111111111111111111111111111111111111'
          description: 32-byte hexadecimal hash.
        quote:
          $ref: '#/components/schemas/QuoteIdentity'
        features:
          $ref: '#/components/schemas/LaunchFeatures'
        contracts:
          $ref: '#/components/schemas/LaunchContracts'
        onchain:
          $ref: '#/components/schemas/OnchainReference'
        created_at:
          type: string
          format: date-time
          examples:
            - 2026-07-31T12:00:00.000Z
        creation_fee:
          $ref: '#/components/schemas/CreationFee'
    MarketWindow:
      type: object
      required:
        - trades
        - volume_quote_raw
      properties:
        trades:
          type:
            - integer
            - 'null'
        volume_quote_raw:
          oneOf:
            - type: string
              pattern: ^(0|[1-9][0-9]*)$
              examples:
                - '1000000000000000000'
              description: >-
                Unsigned integer encoded as a base-10 string to preserve full
                precision.
            - type: 'null'
        volume_usd:
          type:
            - number
            - 'null'
    MarketLifetime:
      type: object
      required:
        - trades
        - volume_quote_raw
      properties:
        trades:
          type:
            - integer
            - 'null'
        volume_quote_raw:
          oneOf:
            - type: string
              pattern: ^(0|[1-9][0-9]*)$
              examples:
                - '1000000000000000000'
              description: >-
                Unsigned integer encoded as a base-10 string to preserve full
                precision.
            - type: 'null'
    FeeRevenue:
      type: object
      required:
        - currency_address
        - creator_raw
        - referrer_raw
        - platform_raw
      properties:
        currency_address:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        creator_raw:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: >-
            Unsigned integer encoded as a base-10 string to preserve full
            precision.
        referrer_raw:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: >-
            Unsigned integer encoded as a base-10 string to preserve full
            precision.
        platform_raw:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: >-
            Unsigned integer encoded as a base-10 string to preserve full
            precision.
    MarketDataSummary:
      type: object
      required:
        - price
        - market_cap
        - liquidity
        - activity
        - last_trade_at
        - quote_price
        - data_status
        - observed_block
        - confirmed_block
        - updated_at
      properties:
        price:
          type: object
          required:
            - quote
            - usd
          properties:
            quote:
              type:
                - number
                - 'null'
            usd:
              type:
                - number
                - 'null'
        market_cap:
          type: object
          required:
            - quote
            - usd
          properties:
            quote:
              type:
                - number
                - 'null'
            usd:
              type:
                - number
                - 'null'
        liquidity:
          type: object
          required:
            - quote
            - usd
          properties:
            quote:
              type:
                - number
                - 'null'
            usd:
              type:
                - number
                - 'null'
        activity:
          type: object
          required:
            - 1h
            - 6h
            - 24h
            - lifetime
          properties:
            1h:
              $ref: '#/components/schemas/MarketWindow'
            6h:
              $ref: '#/components/schemas/MarketWindow'
            24h:
              $ref: '#/components/schemas/MarketWindow'
            lifetime:
              $ref: '#/components/schemas/MarketLifetime'
        last_trade_at:
          oneOf:
            - type: string
              format: date-time
              examples:
                - 2026-07-31T12:00:00.000Z
            - type: 'null'
        quote_price:
          type: object
          required:
            - usd
            - updated_at
          properties:
            usd:
              type:
                - number
                - 'null'
            updated_at:
              oneOf:
                - type: string
                  format: date-time
                  examples:
                    - 2026-07-31T12:00:00.000Z
                - type: 'null'
        data_status:
          type: string
          enum:
            - fresh
            - syncing
            - partial
            - stale
        observed_block:
          type:
            - integer
            - 'null'
        confirmed_block:
          type:
            - integer
            - 'null'
        updated_at:
          oneOf:
            - type: string
              format: date-time
              examples:
                - 2026-07-31T12:00:00.000Z
            - type: 'null'
    MarketDataDetail:
      type: object
      required:
        - price
        - market_cap
        - liquidity
        - activity
        - last_trade_at
        - unique_traders_24h
        - pool_state
        - fee_revenue
        - quote_price
        - data_status
        - observed_block
        - confirmed_block
        - updated_at
      properties:
        price:
          type: object
          required:
            - quote
            - usd
          properties:
            quote:
              type:
                - number
                - 'null'
            usd:
              type:
                - number
                - 'null'
        market_cap:
          type: object
          required:
            - quote
            - usd
            - ath_quote
          properties:
            quote:
              type:
                - number
                - 'null'
            usd:
              type:
                - number
                - 'null'
            ath_quote:
              type:
                - number
                - 'null'
        liquidity:
          type: object
          required:
            - quote
            - usd
          properties:
            quote:
              type:
                - number
                - 'null'
            usd:
              type:
                - number
                - 'null'
        activity:
          type: object
          required:
            - 1h
            - 6h
            - 24h
            - lifetime
          properties:
            1h:
              $ref: '#/components/schemas/MarketWindow'
            6h:
              $ref: '#/components/schemas/MarketWindow'
            24h:
              $ref: '#/components/schemas/MarketWindow'
            lifetime:
              $ref: '#/components/schemas/MarketLifetime'
        last_trade_at:
          oneOf:
            - type: string
              format: date-time
              examples:
                - 2026-07-31T12:00:00.000Z
            - type: 'null'
        unique_traders_24h:
          type:
            - integer
            - 'null'
        pool_state:
          type: object
          required:
            - tick
            - sqrt_price_x96
            - liquidity_raw
          properties:
            tick:
              type:
                - integer
                - 'null'
            sqrt_price_x96:
              oneOf:
                - type: string
                  pattern: ^(0|[1-9][0-9]*)$
                  examples:
                    - '1000000000000000000'
                  description: >-
                    Unsigned integer encoded as a base-10 string to preserve
                    full precision.
                - type: 'null'
            liquidity_raw:
              oneOf:
                - type: string
                  pattern: ^(0|[1-9][0-9]*)$
                  examples:
                    - '1000000000000000000'
                  description: >-
                    Unsigned integer encoded as a base-10 string to preserve
                    full precision.
                - type: 'null'
        fee_revenue:
          type: array
          items:
            $ref: '#/components/schemas/FeeRevenue'
        quote_price:
          type: object
          required:
            - usd
            - updated_at
          properties:
            usd:
              type:
                - number
                - 'null'
            updated_at:
              oneOf:
                - type: string
                  format: date-time
                  examples:
                    - 2026-07-31T12:00:00.000Z
                - type: 'null'
        data_status:
          type: string
          enum:
            - fresh
            - syncing
            - partial
            - stale
        observed_block:
          type:
            - integer
            - 'null'
        confirmed_block:
          type:
            - integer
            - 'null'
        updated_at:
          oneOf:
            - type: string
              format: date-time
              examples:
                - 2026-07-31T12:00:00.000Z
            - type: 'null'
    TokenListItem:
      type: object
      required:
        - chain_id
        - market
        - token
        - launch
      properties:
        chain_id:
          type: integer
          enum:
            - 8453
            - 4663
          examples:
            - 8453
          description: 'Production chain ID: 8453 for Base or 4663 for Robinhood Chain.'
        market:
          type: string
          enum:
            - standard
            - rwa
          description: 'Launch market: standard tokens or RWA assets.'
        token:
          $ref: '#/components/schemas/TokenSummaryIdentity'
        launch:
          $ref: '#/components/schemas/LaunchSummary'
        market_data:
          oneOf:
            - $ref: '#/components/schemas/MarketDataSummary'
            - type: 'null'
    PoolSeedPosition:
      type: object
      required:
        - tick_lower
        - tick_upper
        - liquidity_raw
      properties:
        tick_lower:
          type: integer
        tick_upper:
          type: integer
        liquidity_raw:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: >-
            Unsigned integer encoded as a base-10 string to preserve full
            precision.
    FeeDistribution:
      type: object
      required:
        - creator
        - platform
        - referrer
      properties:
        creator:
          type: integer
          minimum: 0
          maximum: 10000
        platform:
          type: integer
          minimum: 0
          maximum: 10000
        referrer:
          type: integer
          minimum: 0
          maximum: 10000
    PoolFees:
      type: object
      required:
        - base_fee_bps
        - distribution_bps
      properties:
        base_fee_bps:
          type: integer
          minimum: 0
          maximum: 10000
        distribution_bps:
          $ref: '#/components/schemas/FeeDistribution'
    AntiSnipe:
      type: object
      required:
        - clock
        - start_total_bps
      properties:
        clock:
          type: string
          enum:
            - block
            - timestamp
        start_total_bps:
          type: integer
          minimum: 0
          maximum: 10000
        window_seconds:
          type: integer
          minimum: 0
        launch_time:
          type: string
          format: date-time
          examples:
            - 2026-07-31T12:00:00.000Z
        window_blocks:
          type: integer
          minimum: 0
        launch_block:
          type: integer
          minimum: 0
    PoolSeed:
      type: object
      required:
        - positions
      properties:
        token_amount_raw:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: >-
            Unsigned integer encoded as a base-10 string to preserve full
            precision.
        positions:
          type: array
          items:
            $ref: '#/components/schemas/PoolSeedPosition'
    Pool:
      type: object
      required:
        - pool_id
        - pool_manager_address
        - currency0_address
        - currency1_address
        - token_is_currency0
        - hook_address
        - tick_spacing
        - fees
        - anti_snipe
        - seed
        - onchain
      properties:
        pool_id:
          type: string
          pattern: ^0x[0-9a-fA-F]{64}$
          examples:
            - '0x1111111111111111111111111111111111111111111111111111111111111111'
          description: 32-byte hexadecimal hash.
        pool_manager_address:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        currency0_address:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        currency1_address:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        token_is_currency0:
          type: boolean
        hook_address:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        tick_spacing:
          type: integer
        fees:
          $ref: '#/components/schemas/PoolFees'
        anti_snipe:
          $ref: '#/components/schemas/AntiSnipe'
        seed:
          $ref: '#/components/schemas/PoolSeed'
        onchain:
          $ref: '#/components/schemas/OnchainReference'
    Allocation:
      type: object
      required:
        - recipient
        - amount_raw
        - onchain
      properties:
        recipient:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        amount_raw:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: >-
            Unsigned integer encoded as a base-10 string to preserve full
            precision.
        supply_bps:
          type: integer
          minimum: 0
          maximum: 10000
        onchain:
          $ref: '#/components/schemas/OnchainReference'
    VestingPoint:
      type: object
      required:
        - unlocks_at
        - cumulative_amount_raw
        - cumulative_bps
      properties:
        unlocks_at:
          type: string
          format: date-time
          examples:
            - 2026-07-31T12:00:00.000Z
        cumulative_amount_raw:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: >-
            Unsigned integer encoded as a base-10 string to preserve full
            precision.
        cumulative_bps:
          type: integer
          minimum: 0
          maximum: 10000
    VestingPosition:
      type: object
      required:
        - kind
        - chain_id
        - market
        - suite
        - vault_address
        - token_address
        - token
        - beneficiary
        - total_raw
        - vested_raw
        - claimed_raw
        - claimable_raw
        - state
        - onchain
      properties:
        kind:
          type: string
          const: vesting
        chain_id:
          type: integer
          enum:
            - 8453
            - 4663
          examples:
            - 8453
          description: 'Production chain ID: 8453 for Base or 4663 for Robinhood Chain.'
        market:
          type: string
          enum:
            - standard
            - rwa
          description: 'Launch market: standard tokens or RWA assets.'
        suite:
          $ref: '#/components/schemas/SuiteReference'
        vault_address:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            Registered VestingVault for this position. Copy this value to vault
            in /claims/vesting/prepare.
        token_address:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: Launch token held by this vesting position.
        token:
          $ref: '#/components/schemas/TokenReference'
        beneficiary:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: Wallet entitled to and receiving the vested tokens.
        total_raw:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: >-
            Unsigned integer encoded as a base-10 string to preserve full
            precision.
        vested_raw:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: >-
            Unsigned integer encoded as a base-10 string to preserve full
            precision.
        claimed_raw:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: >-
            Unsigned integer encoded as a base-10 string to preserve full
            precision.
        claimable_raw:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: >-
            Unsigned integer encoded as a base-10 string to preserve full
            precision.
        schedule:
          type: array
          items:
            $ref: '#/components/schemas/VestingPoint'
        next_unlock_at:
          type: string
          format: date-time
          examples:
            - 2026-07-31T12:00:00.000Z
        completed_at:
          type: string
          format: date-time
          examples:
            - 2026-07-31T12:00:00.000Z
        state:
          type: string
          enum:
            - locked
            - claimable
            - complete
        price_usd:
          type: number
          minimum: 0
        onchain:
          $ref: '#/components/schemas/VestingOnchainReference'
    Announcement:
      type: object
      required:
        - kind
        - announcement_id
        - token_address
        - creator_address
        - description
        - timestamp
        - onchain
      properties:
        kind:
          type: string
          const: announcement
        announcement_id:
          type: string
          pattern: ^0x[0-9a-fA-F]{64}$
          examples:
            - '0x1111111111111111111111111111111111111111111111111111111111111111'
          description: 32-byte hexadecimal hash.
        token_address:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        creator_address:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        description:
          type: string
        uri:
          type: string
        timestamp:
          type: string
          format: date-time
          examples:
            - 2026-07-31T12:00:00.000Z
        onchain:
          $ref: '#/components/schemas/OnchainReference'
    FeeCredit:
      type: object
      required:
        - recipient
        - role
        - currency_address
        - amount_raw
      properties:
        recipient:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        role:
          type: string
          enum:
            - creator
            - platform
            - referrer
            - unknown
        currency_address:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        amount_raw:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: >-
            Unsigned integer encoded as a base-10 string to preserve full
            precision.
    Trade:
      type: object
      required:
        - kind
        - chain_id
        - market
        - suite
        - pool_id
        - token_address
        - quote_address
        - side
        - executor
        - amounts
        - pool_state
        - fees
        - timestamp
        - onchain
      properties:
        kind:
          type: string
          const: trade
        chain_id:
          type: integer
          enum:
            - 8453
            - 4663
          examples:
            - 8453
          description: 'Production chain ID: 8453 for Base or 4663 for Robinhood Chain.'
        market:
          type: string
          enum:
            - standard
            - rwa
          description: 'Launch market: standard tokens or RWA assets.'
        suite:
          $ref: '#/components/schemas/SuiteReference'
        pool_id:
          type: string
          pattern: ^0x[0-9a-fA-F]{64}$
          examples:
            - '0x1111111111111111111111111111111111111111111111111111111111111111'
          description: 32-byte hexadecimal hash.
        token_address:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        quote_address:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        side:
          type: string
          enum:
            - buy
            - sell
            - unknown
        actor:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        executor:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        amounts:
          type: object
          required:
            - token_raw
            - quote_raw
          properties:
            token_raw:
              type: string
              pattern: ^(0|[1-9][0-9]*)$
              examples:
                - '1000000000000000000'
              description: >-
                Unsigned integer encoded as a base-10 string to preserve full
                precision.
            quote_raw:
              type: string
              pattern: ^(0|[1-9][0-9]*)$
              examples:
                - '1000000000000000000'
              description: >-
                Unsigned integer encoded as a base-10 string to preserve full
                precision.
        pool_state:
          type: object
          required:
            - sqrt_price_x96
            - liquidity_raw
            - tick
          properties:
            sqrt_price_x96:
              type: string
              pattern: ^(0|[1-9][0-9]*)$
              examples:
                - '1000000000000000000'
              description: >-
                Unsigned integer encoded as a base-10 string to preserve full
                precision.
            liquidity_raw:
              type: string
              pattern: ^(0|[1-9][0-9]*)$
              examples:
                - '1000000000000000000'
              description: >-
                Unsigned integer encoded as a base-10 string to preserve full
                precision.
            tick:
              type: integer
        fees:
          type: object
          required:
            - currency_address
            - total_raw
            - credits
          properties:
            currency_address:
              type: string
              pattern: ^0x[0-9a-fA-F]{40}$
              examples:
                - '0x1111111111111111111111111111111111111111'
              description: >-
                EVM address. The zero address represents native currency only
                where documented.
            total_raw:
              type: string
              pattern: ^(0|[1-9][0-9]*)$
              examples:
                - '1000000000000000000'
              description: >-
                Unsigned integer encoded as a base-10 string to preserve full
                precision.
            credits:
              type: array
              items:
                $ref: '#/components/schemas/FeeCredit'
        referrer:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        comment:
          type: string
        timestamp:
          type: string
          format: date-time
          examples:
            - 2026-07-31T12:00:00.000Z
        onchain:
          $ref: '#/components/schemas/OnchainReference'
    TokenActivity:
      oneOf:
        - $ref: '#/components/schemas/Trade'
        - $ref: '#/components/schemas/Announcement'
    Holder:
      type: object
      required:
        - address
        - balance_raw
        - balance
      properties:
        address:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        balance_raw:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: >-
            Unsigned integer encoded as a base-10 string to preserve full
            precision.
        balance:
          type: string
        value_usd:
          type: number
          minimum: 0
        supply_percent:
          type: number
          minimum: 0
          maximum: 100
    HolderSummary:
      type: object
      required:
        - status
        - total_holders
        - top_10_percent
      properties:
        status:
          type: string
          const: ready
        total_holders:
          type: integer
          minimum: 0
        top_10_percent:
          type:
            - number
            - 'null'
          minimum: 0
          maximum: 100
    WalletActivityDetails:
      type: object
      properties:
        amount_raw:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: >-
            Unsigned integer encoded as a base-10 string to preserve full
            precision.
        amount:
          type: string
        quote_address:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        side:
          type: string
          enum:
            - buy
            - sell
        quote_amount_raw:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: >-
            Unsigned integer encoded as a base-10 string to preserve full
            precision.
        pool_id:
          type: string
          pattern: ^0x[0-9a-fA-F]{64}$
          examples:
            - '0x1111111111111111111111111111111111111111111111111111111111111111'
          description: 32-byte hexadecimal hash.
        credit_count:
          type: integer
          minimum: 0
        fee_escrow_address:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        metadata_key:
          type: string
        description:
          type: string
    WalletActivity:
      type: object
      required:
        - chain_id
        - market
        - kind
        - details
        - timestamp
        - onchain
      properties:
        chain_id:
          type: integer
          enum:
            - 8453
            - 4663
          examples:
            - 8453
          description: 'Production chain ID: 8453 for Base or 4663 for Robinhood Chain.'
        market:
          type: string
          enum:
            - standard
            - rwa
          description: 'Launch market: standard tokens or RWA assets.'
        kind:
          type: string
          enum:
            - launch
            - launch_fee
            - trade
            - allocation
            - vesting_registered
            - vesting_claimed
            - fee_credited
            - fee_claimed
            - announcement
            - metadata
        role:
          type: string
        token:
          $ref: '#/components/schemas/TokenReference'
        token_address:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        details:
          $ref: '#/components/schemas/WalletActivityDetails'
        timestamp:
          type: string
          format: date-time
          examples:
            - 2026-07-31T12:00:00.000Z
        onchain:
          $ref: '#/components/schemas/OnchainReference'
    WalletSummary:
      type: object
      required:
        - wallet
        - chain_id
        - market
        - latest_launch
        - latest_activity
        - has_claimable_fees
        - has_claimable_vesting
      properties:
        wallet:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        chain_id:
          type: integer
          enum:
            - 8453
            - 4663
          examples:
            - 8453
          description: 'Production chain ID: 8453 for Base or 4663 for Robinhood Chain.'
        market:
          type: string
          enum:
            - standard
            - rwa
            - all
        latest_launch:
          oneOf:
            - $ref: '#/components/schemas/TokenListItem'
            - type: 'null'
        latest_activity:
          oneOf:
            - $ref: '#/components/schemas/WalletActivity'
            - type: 'null'
        has_claimable_fees:
          type: boolean
        has_claimable_vesting:
          type: boolean
    QuoteAsset:
      type: object
      required:
        - address
        - symbol
        - decimals
      properties:
        address:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        symbol:
          type: string
        decimals:
          type: integer
          minimum: 0
          maximum: 255
        name:
          type: string
        image_url:
          type: string
          format: uri
    FeeClaimCurrency:
      type: object
      required:
        - address
        - kind
      properties:
        address:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            Payout currency. Copy this value to currency in
            /claims/fees/prepare.
        kind:
          type: string
        quote:
          $ref: '#/components/schemas/QuoteAsset'
        token:
          $ref: '#/components/schemas/TokenReference'
    FeeClaimPosition:
      type: object
      required:
        - kind
        - chain_id
        - market
        - suite
        - fee_escrow_address
        - recipient
        - currency
        - claimable_raw
        - credited_raw
        - claimed_raw
        - reconciliation
      properties:
        kind:
          type: string
          const: fee
        chain_id:
          type: integer
          enum:
            - 8453
            - 4663
          examples:
            - 8453
          description: 'Production chain ID: 8453 for Base or 4663 for Robinhood Chain.'
        market:
          type: string
          enum:
            - standard
            - rwa
          description: 'Launch market: standard tokens or RWA assets.'
        suite:
          $ref: '#/components/schemas/SuiteReference'
        fee_escrow_address:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            Registered FeeEscrow for this position. Copy this value to
            fee_escrow in /claims/fees/prepare.
        recipient:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: Wallet entitled to and receiving this trading-fee balance.
        currency:
          $ref: '#/components/schemas/FeeClaimCurrency'
        claimable_raw:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: >-
            Unsigned integer encoded as a base-10 string to preserve full
            precision.
        credited_raw:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: >-
            Unsigned integer encoded as a base-10 string to preserve full
            precision.
        claimed_raw:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: >-
            Unsigned integer encoded as a base-10 string to preserve full
            precision.
        reconciliation:
          type: string
          enum:
            - confirmed
            - pending
            - unavailable
        last_activity_at:
          type: string
          format: date-time
          examples:
            - 2026-07-31T12:00:00.000Z
        price_usd:
          type: number
          minimum: 0
    WalletClaim:
      oneOf:
        - $ref: '#/components/schemas/FeeClaimPosition'
        - $ref: '#/components/schemas/VestingPosition'
    TransactionOperation:
      type: object
      required:
        - kind
        - onchain
      properties:
        kind:
          type: string
          enum:
            - launch
            - launch_fee
            - trade
            - allocation
            - vesting_registered
            - vesting_claimed
            - fee_claimed
            - claim
            - announcement
            - metadata
        onchain:
          $ref: '#/components/schemas/OnchainReference'
    TransactionStatus:
      type: object
      required:
        - chain_id
        - transaction_hash
        - chain
        - indexing
        - operations
        - launches
      properties:
        chain_id:
          type: integer
          enum:
            - 8453
            - 4663
          examples:
            - 8453
          description: 'Production chain ID: 8453 for Base or 4663 for Robinhood Chain.'
        transaction_hash:
          type: string
          pattern: ^0x[0-9a-fA-F]{64}$
          examples:
            - '0x1111111111111111111111111111111111111111111111111111111111111111'
          description: 32-byte hexadecimal hash.
        chain:
          type: object
          required:
            - status
            - finality
          properties:
            status:
              type: string
              enum:
                - unknown
                - pending
                - succeeded
                - reverted
                - replaced
            block_number:
              type: integer
              minimum: 0
            replacement_transaction_hash:
              type: string
              pattern: ^0x[0-9a-fA-F]{64}$
              examples:
                - >-
                  0x1111111111111111111111111111111111111111111111111111111111111111
              description: 32-byte hexadecimal hash.
            finality:
              type:
                - string
                - 'null'
              enum:
                - observed
                - confirmed
                - null
        indexing:
          type: object
          required:
            - status
          properties:
            status:
              type: string
              enum:
                - not_seen
                - processing
                - complete
            updated_at:
              type: string
              format: date-time
              examples:
                - 2026-07-31T12:00:00.000Z
        operations:
          type: array
          items:
            $ref: '#/components/schemas/TransactionOperation'
        launches:
          type: array
          items:
            $ref: '#/components/schemas/TokenListItem'
    TokenDetail:
      type: object
      required:
        - chain_id
        - market
        - token
        - launch
      properties:
        chain_id:
          type: integer
          enum:
            - 8453
            - 4663
          examples:
            - 8453
          description: 'Production chain ID: 8453 for Base or 4663 for Robinhood Chain.'
        market:
          type: string
          enum:
            - standard
            - rwa
          description: 'Launch market: standard tokens or RWA assets.'
        token:
          $ref: '#/components/schemas/TokenDetailIdentity'
        launch:
          $ref: '#/components/schemas/LaunchDetail'
        pool:
          oneOf:
            - $ref: '#/components/schemas/Pool'
            - type: 'null'
        market_data:
          oneOf:
            - $ref: '#/components/schemas/MarketDataDetail'
            - type: 'null'
        allocations:
          type: array
          items:
            $ref: '#/components/schemas/Allocation'
        vesting:
          type: array
          items:
            $ref: '#/components/schemas/VestingPosition'
        announcements:
          type: array
          items:
            $ref: '#/components/schemas/Announcement'
    MetadataPair:
      type: object
      required:
        - key
        - value
      properties:
        key:
          type: string
          minLength: 1
          maxLength: 64
          description: Unique metadata key within this request.
        value:
          type: string
          maxLength: 512
          description: Value stored under this metadata key.
    AllocationRequest:
      type: object
      required:
        - recipient
        - amount
      properties:
        recipient:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: Wallet receiving the allocation at launch.
          not:
            const: '0x0000000000000000000000000000000000000000'
        amount:
          type: string
          pattern: ^(?:0|[1-9][0-9]*)(?:\.[0-9]{1,18})?$
          description: >-
            Token amount in whole token units, not raw base units. Up to 18
            decimal places.
    VestingStepRequest:
      type: object
      required:
        - delay_days
        - percent
      properties:
        delay_days:
          type: integer
          minimum: 1
          maximum: 49710
          description: >-
            Days after launch when this step unlocks. Step delays must strictly
            increase.
        percent:
          oneOf:
            - type: string
            - type: number
          description: >-
            Share unlocked by this step, not a cumulative value. Supports up to
            2 decimals; all steps must total 100%.
    VestingRequest:
      type: object
      required:
        - beneficiary
        - amount
        - steps
      properties:
        beneficiary:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: Wallet receiving vested tokens as they unlock.
          not:
            const: '0x0000000000000000000000000000000000000000'
        amount:
          type: string
          pattern: ^(?:0|[1-9][0-9]*)(?:\.[0-9]{1,18})?$
          description: >-
            Total vested amount in whole token units, not raw base units. Up to
            18 decimal places.
        steps:
          type: array
          minItems: 1
          maxItems: 24
          items:
            $ref: '#/components/schemas/VestingStepRequest'
          description: Unlock schedule. Percentages must total 100%.
    LaunchPrepareRequest:
      type: object
      required:
        - chain_id
        - creator
        - market
        - quote_address
        - token
      properties:
        chain_id:
          type: integer
          enum:
            - 8453
            - 4663
          examples:
            - 8453
          description: 'Production chain ID: 8453 for Base or 4663 for Robinhood Chain.'
        creator:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: Wallet that will sign and send the prepared launch transaction.
          not:
            const: '0x0000000000000000000000000000000000000000'
        market:
          type: string
          enum:
            - standard
            - rwa
          description: >-
            Launch route to use. The selected quote must be active for this
            market.
        quote_address:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            Active quote address returned by GET /config for the selected chain
            and market. The zero address represents an active native-currency
            quote.
        token:
          type: object
          required:
            - name
            - symbol
            - image_base64
            - image_type
          properties:
            name:
              type: string
              minLength: 1
              maxLength: 50
              description: Token name.
            symbol:
              type: string
              minLength: 1
              maxLength: 11
              pattern: ^\S+$
              description: Token symbol with no whitespace.
            description:
              type: string
              maxLength: 2000
              default: ''
              description: Optional token description limited to 2000 UTF-8 bytes.
            image_base64:
              type: string
              minLength: 1
              maxLength: 3000000
              contentEncoding: base64
              description: >-
                Valid base64 image data whose decoded bytes are at most 2 MB and
                match image_type.
            image_type:
              type: string
              enum:
                - image/png
                - image/jpeg
                - image/webp
                - image/gif
              description: Image media type. Must match the decoded image_base64 data.
            website:
              anyOf:
                - type: string
                  format: uri
                  maxLength: 2048
                  pattern: ^https?://[^/]*\.[^/]+(?:/.*)?$
                - type: string
                  const: ''
              default: ''
              description: Optional website URL. Leave empty to omit it.
            x:
              anyOf:
                - type: string
                  format: uri
                  maxLength: 2048
                  pattern: ^https?://(?:www\.)?x\.com/.+
                - type: string
                  const: ''
              default: ''
              description: >-
                Optional Twitter/X profile URL. Use an x.com link or leave empty
                to omit it.
            telegram:
              anyOf:
                - type: string
                  format: uri
                  maxLength: 2048
                  pattern: ^https?://(?:www\.)?(?:t\.me|telegram\.me)/.+
                - type: string
                  const: ''
              default: ''
              description: Optional Telegram profile URL. Leave empty to omit it.
            editable_metadata:
              type: boolean
              default: false
              description: >-
                Grant the creator metadata-update authority. This does not grant
                mint, burn, pause, operator, or ownership powers.
            extra_metadata:
              type: array
              maxItems: 16
              default: []
              description: Unique key-value entries with a combined 4096 UTF-8-byte limit.
              items:
                $ref: '#/components/schemas/MetadataPair'
          description: >-
            Token identity, public profile, image, and optional metadata
            settings.
        allocations:
          type: array
          maxItems: 128
          default: []
          items:
            $ref: '#/components/schemas/AllocationRequest'
          description: >-
            Optional immediate token allocations, subject to the live launch
            caps.
        vesting:
          type: array
          maxItems: 64
          default: []
          items:
            $ref: '#/components/schemas/VestingRequest'
          description: Optional vested token allocations, subject to the live launch caps.
    SwapQuoteRequest:
      type: object
      required:
        - chain_id
        - wallet
        - token_address
        - side
        - amount_in_raw
        - slippage_bps
      properties:
        chain_id:
          type: integer
          enum:
            - 8453
            - 4663
          examples:
            - 8453
          description: 'Production chain ID: 8453 for Base or 4663 for Robinhood Chain.'
        wallet:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: Wallet that will execute the prepared swap.
          not:
            const: '0x0000000000000000000000000000000000000000'
        token_address:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            Tracked launch token to buy or sell, returned as token.address by
            GET /tokens.
          not:
            const: '0x0000000000000000000000000000000000000000'
        side:
          type: string
          enum:
            - buy
            - sell
          description: >-
            buy spends the quote asset for launch tokens; sell spends launch
            tokens for the quote asset.
        amount_in_raw:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: >-
            Exact input in base units: quote-asset units for buy, launch-token
            units for sell. Range: 1 through uint128 max.
        slippage_bps:
          type: integer
          minimum: 0
          maximum: 4999
          examples:
            - 50
          description: >-
            Slippage tolerance in basis points. 1 bps = 0.01%; 50 means 0.5%,
            100 means 1%, and 300 means 3%. The swap reverts below the
            calculated minimum output.
        referrer:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            Optional eligible referral wallet. It cannot be the trader, creator,
            platform treasury, or router.
          not:
            const: '0x0000000000000000000000000000000000000000'
        comment:
          type: string
          maxLength: 32
          description: Optional hook comment limited to 32 UTF-8 bytes.
    SwapPrepareRequest:
      type: object
      required:
        - quote_id
        - wallet
      properties:
        quote_id:
          type: string
          minLength: 16
          maxLength: 8192
          description: >-
            Opaque signed quote_id returned by /swaps/quote. Do not modify it;
            quotes expire after 2 minutes.
        wallet:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: Executing wallet. Must match the wallet used to create the quote.
          not:
            const: '0x0000000000000000000000000000000000000000'
        permit2_signature:
          type: string
          pattern: ^0x(?:[0-9a-fA-F]{2})+$
          maxLength: 2048
          description: >-
            Permit2 typed-data signature when the quote includes a
            permit-signature step. Omit it otherwise.
    FeeClaimRequest:
      title: Trading fee claim
      description: One creator, platform, or referral trading-fee position.
      type: object
      required:
        - recipient
        - fee_escrow
        - currency
        - mode
      properties:
        recipient:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: Wallet owed the trading-fee balance.
          not:
            const: '0x0000000000000000000000000000000000000000'
        fee_escrow:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: Copy fee_escrow_address from GET /wallets/{address}/fee-claims.
          not:
            const: '0x0000000000000000000000000000000000000000'
        currency:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            Copy currency.address from the fee position. The zero address
            represents native currency.
        mode:
          type: string
          enum:
            - to_recipient
            - redirect
          description: >-
            to_recipient pays the recorded recipient; redirect pays destination
            and requires caller to equal recipient.
        destination:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: Required only when mode is redirect.
          not:
            const: '0x0000000000000000000000000000000000000000'
      allOf:
        - if:
            properties:
              mode:
                const: redirect
            required:
              - mode
          then:
            required:
              - destination
        - if:
            properties:
              mode:
                const: to_recipient
            required:
              - mode
          then:
            not:
              required:
                - destination
    VestingClaimRequest:
      title: Vesting claim
      description: One unlocked vesting position.
      type: object
      required:
        - beneficiary
        - token_address
        - vault
      properties:
        beneficiary:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            Wallet whose vesting position is claimed and that receives the
            unlocked tokens. It may differ from caller.
          not:
            const: '0x0000000000000000000000000000000000000000'
        token_address:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: Copy token_address from GET /wallets/{address}/vesting.
          not:
            const: '0x0000000000000000000000000000000000000000'
        vault:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: Copy vault_address from GET /wallets/{address}/vesting.
          not:
            const: '0x0000000000000000000000000000000000000000'
    FeeClaimsPrepareRequest:
      type: object
      required:
        - chain_id
        - caller
        - claims
      properties:
        chain_id:
          type: integer
          enum:
            - 8453
            - 4663
          examples:
            - 8453
          description: 'Production chain ID: 8453 for Base or 4663 for Robinhood Chain.'
        caller:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            Wallet sending the returned transactions. It must equal recipient
            only when mode is redirect.
          not:
            const: '0x0000000000000000000000000000000000000000'
        claims:
          type: array
          items:
            $ref: '#/components/schemas/FeeClaimRequest'
          minItems: 1
          maxItems: 10
          description: >-
            One to 10 distinct creator, platform, or referral fee positions.
            Each item returns an independent transaction.
      example:
        chain_id: 8453
        caller: '0x1111111111111111111111111111111111111111'
        claims:
          - recipient: '0x1111111111111111111111111111111111111111'
            fee_escrow: '0x2222222222222222222222222222222222222222'
            currency: '0x0000000000000000000000000000000000000000'
            mode: to_recipient
    VestingClaimsPrepareRequest:
      type: object
      required:
        - chain_id
        - caller
        - claims
      properties:
        chain_id:
          type: integer
          enum:
            - 8453
            - 4663
          examples:
            - 8453
          description: 'Production chain ID: 8453 for Base or 4663 for Robinhood Chain.'
        caller:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: Wallet sending the returned vesting-claim transactions.
          not:
            const: '0x0000000000000000000000000000000000000000'
        claims:
          type: array
          items:
            $ref: '#/components/schemas/VestingClaimRequest'
          minItems: 1
          maxItems: 10
          description: >-
            One to 10 distinct unlocked vesting positions. Each item returns an
            independent transaction.
      example:
        chain_id: 8453
        caller: '0x1111111111111111111111111111111111111111'
        claims:
          - beneficiary: '0x1111111111111111111111111111111111111111'
            token_address: '0x2222222222222222222222222222222222222222'
            vault: '0x3333333333333333333333333333333333333333'
    AnnouncementPrepareRequest:
      type: object
      required:
        - creator
        - description
      properties:
        creator:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: Launch creator wallet that will send the returned transaction.
          not:
            const: '0x0000000000000000000000000000000000000000'
        description:
          type: string
          minLength: 1
          maxLength: 1000
          description: Non-empty creator message, limited to 1000 UTF-8 bytes.
        uri:
          type: string
          maxLength: 512
          pattern: ^(?:$|https://.+|ipfs://.+|ar://.+)
          default: ''
          description: >-
            Optional HTTPS, IPFS, or Arweave resource URI. An omitted value is
            normalized to an empty string.
    MetadataPrepareRequest:
      oneOf:
        - type: object
          required:
            - actor
            - operation
            - name
          properties:
            actor:
              type: string
              pattern: ^0x[0-9a-fA-F]{40}$
              examples:
                - '0x1111111111111111111111111111111111111111'
              description: Wallet holding metadata-update authority.
              not:
                const: '0x0000000000000000000000000000000000000000'
            operation:
              type: string
              enum:
                - update_name
              description: Update the token name.
            name:
              type: string
              minLength: 1
              maxLength: 50
              description: New token name.
        - type: object
          required:
            - actor
            - operation
            - symbol
          properties:
            actor:
              type: string
              pattern: ^0x[0-9a-fA-F]{40}$
              examples:
                - '0x1111111111111111111111111111111111111111'
              description: Wallet holding metadata-update authority.
              not:
                const: '0x0000000000000000000000000000000000000000'
            operation:
              type: string
              enum:
                - update_symbol
              description: Update the token symbol.
            symbol:
              type: string
              minLength: 1
              maxLength: 11
              pattern: ^\S+$
              description: New token symbol with no whitespace.
        - type: object
          required:
            - actor
            - operation
            - key
            - value
          properties:
            actor:
              type: string
              pattern: ^0x[0-9a-fA-F]{40}$
              examples:
                - '0x1111111111111111111111111111111111111111'
              description: Wallet holding metadata-update authority.
              not:
                const: '0x0000000000000000000000000000000000000000'
            operation:
              type: string
              enum:
                - update_extra_metadata
              description: Set one on-chain extra-metadata key.
            key:
              type: string
              minLength: 1
              maxLength: 64
              description: Metadata key to update.
            value:
              type: string
              maxLength: 512
              description: New value for the metadata key.
      discriminator:
        propertyName: operation
    MetadataDocumentPrepareRequest:
      type: object
      required:
        - actor
        - document
      properties:
        actor:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: Wallet holding metadata-update authority.
          not:
            const: '0x0000000000000000000000000000000000000000'
        document:
          type: object
          properties:
            description:
              type: string
              maxLength: 2000
              description: >-
                Omit to preserve the current description; send an empty string
                to clear it.
            website:
              anyOf:
                - type: string
                  format: uri
                  maxLength: 2048
                  pattern: ^https?://[^/]*\.[^/]+(?:/.*)?$
                - type: string
                  const: ''
                - type: 'null'
              description: >-
                Omit to preserve the current website; send an empty string or
                null to clear it.
            x:
              anyOf:
                - type: string
                  format: uri
                  maxLength: 2048
                  pattern: ^https?://(?:www\.)?x\.com/.+
                - type: string
                  const: ''
                - type: 'null'
              description: >-
                Omit to preserve the current Twitter/X link; send an empty
                string or null to clear it.
            telegram:
              anyOf:
                - type: string
                  format: uri
                  maxLength: 2048
                  pattern: ^https?://(?:www\.)?(?:t\.me|telegram\.me)/.+
                - type: string
                  const: ''
                - type: 'null'
              description: >-
                Omit to preserve the current Telegram link; send an empty string
                or null to clear it.
            image_uri:
              type: string
              pattern: ^ipfs://[^/?#\s]+(?:/[^\s]*)?$
              maxLength: 512
              description: >-
                Existing ipfs:// image URI. Use this instead of image_base64
                when the image is already pinned.
            image_base64:
              type: string
              minLength: 1
              maxLength: 3000000
              contentEncoding: base64
              description: >-
                Valid base64 image data whose decoded bytes are at most 2 MB and
                match image_type.
            image_type:
              type: string
              enum:
                - image/png
                - image/jpeg
                - image/webp
                - image/gif
              description: Required with image_base64 and must match the decoded image.
          minProperties: 1
          allOf:
            - not:
                required:
                  - image_uri
                  - image_base64
            - if:
                required:
                  - image_base64
              then:
                required:
                  - image_type
            - if:
                required:
                  - image_type
              then:
                required:
                  - image_base64
          description: >-
            Description, image, and links to merge into the token metadata
            document. Omitted fields stay unchanged.
    LaunchReviewAllocation:
      type: object
      required:
        - recipient
        - amount_raw
      properties:
        recipient:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        amount_raw:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: >-
            Unsigned integer encoded as a base-10 string to preserve full
            precision.
    LaunchReviewVestingStep:
      type: object
      required:
        - delay_seconds
        - cumulative_bps
        - cumulative_amount_raw
      properties:
        delay_seconds:
          type: integer
          minimum: 86400
          description: Seconds after launch when this step unlocks.
        cumulative_bps:
          type: integer
          minimum: 1
          maximum: 10000
          description: Total unlocked share by this step. 10,000 bps = 100%.
        cumulative_amount_raw:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: Total token base units unlocked by this step.
    LaunchReviewVesting:
      type: object
      required:
        - beneficiary
        - amount_raw
        - steps
      properties:
        beneficiary:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        amount_raw:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: >-
            Unsigned integer encoded as a base-10 string to preserve full
            precision.
        steps:
          type: array
          items:
            $ref: '#/components/schemas/LaunchReviewVestingStep'
    LaunchReview:
      type: object
      required:
        - market
        - token
        - quote_address
        - total_supply_raw
        - pool_supply_raw
        - allocations
        - vesting
      properties:
        market:
          type: string
          enum:
            - standard
            - rwa
          description: 'Launch market: standard tokens or RWA assets.'
        token:
          type: object
          required:
            - name
            - symbol
            - editable_metadata
            - extra_metadata
          properties:
            name:
              type: string
            symbol:
              type: string
            editable_metadata:
              type: boolean
            extra_metadata:
              type: array
              items:
                $ref: '#/components/schemas/MetadataPair'
        quote_address:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        total_supply_raw:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: >-
            Unsigned integer encoded as a base-10 string to preserve full
            precision.
        pool_supply_raw:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: >-
            Unsigned integer encoded as a base-10 string to preserve full
            precision.
        allocations:
          type: array
          items:
            $ref: '#/components/schemas/LaunchReviewAllocation'
        vesting:
          type: array
          items:
            $ref: '#/components/schemas/LaunchReviewVesting'
    SwapQuoteReview:
      type: object
      required:
        - token_address
        - side
        - input_currency
        - output_currency
        - amount_in_raw
        - expected_out_raw
        - minimum_out_raw
        - slippage_bps
      properties:
        token_address:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        side:
          type: string
          enum:
            - buy
            - sell
        input_currency:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        output_currency:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        amount_in_raw:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: Exact input amount in input-currency base units.
        expected_out_raw:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: Quoted output in output-currency base units.
        minimum_out_raw:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: Minimum accepted output after applying slippage_bps.
        slippage_bps:
          type: integer
          minimum: 0
          maximum: 4999
          description: Slippage tolerance used to calculate minimum_out_raw. 100 bps = 1%.
        referrer:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        comment:
          type: string
    SwapPrepareReview:
      type: object
      required:
        - token_address
        - side
        - input_currency
        - output_currency
        - amount_in_raw
        - reviewed_expected_out_raw
        - reviewed_minimum_out_raw
        - refreshed_expected_out_raw
        - execution_minimum_out_raw
        - slippage_bps
      properties:
        token_address:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        side:
          type: string
          enum:
            - buy
            - sell
        input_currency:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        output_currency:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        amount_in_raw:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: Exact input amount in input-currency base units.
        reviewed_expected_out_raw:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: Expected output from the original quote.
        reviewed_minimum_out_raw:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: Minimum output accepted by the original quote.
        refreshed_expected_out_raw:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: Expected output from the live quote refreshed during preparation.
        execution_minimum_out_raw:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: Minimum output encoded into the router transaction.
        slippage_bps:
          type: integer
          minimum: 0
          maximum: 4999
          description: Slippage tolerance carried from the original quote. 100 bps = 1%.
        referrer:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        comment:
          type: string
    PreparedFeeClaim:
      type: object
      required:
        - kind
        - recipient
        - destination
        - fee_escrow
        - currency
        - claimable_raw
        - step_id
      properties:
        kind:
          type: string
          const: fee
        recipient:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        destination:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        fee_escrow:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        currency:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        claimable_raw:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: >-
            Unsigned integer encoded as a base-10 string to preserve full
            precision.
        step_id:
          type: string
    PreparedVestingClaim:
      type: object
      required:
        - kind
        - beneficiary
        - destination
        - token_address
        - vault
        - claimable_raw
        - step_id
      properties:
        kind:
          type: string
          const: vesting
        beneficiary:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        destination:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        token_address:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        vault:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        claimable_raw:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: >-
            Unsigned integer encoded as a base-10 string to preserve full
            precision.
        step_id:
          type: string
    FeeClaimsReview:
      type: object
      required:
        - claims
        - atomic
      properties:
        claims:
          type: array
          items:
            $ref: '#/components/schemas/PreparedFeeClaim'
        atomic:
          type: boolean
          const: false
          example: false
    VestingClaimsReview:
      type: object
      required:
        - claims
        - atomic
      properties:
        claims:
          type: array
          items:
            $ref: '#/components/schemas/PreparedVestingClaim'
        atomic:
          type: boolean
          const: false
          example: false
    AnnouncementReview:
      type: object
      required:
        - token_address
        - description
        - uri
      properties:
        token_address:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        description:
          type: string
        uri:
          type: string
    MetadataReview:
      oneOf:
        - type: object
          required:
            - operation
            - token_address
            - name
          properties:
            operation:
              type: string
              const: update_name
            token_address:
              type: string
              pattern: ^0x[0-9a-fA-F]{40}$
              examples:
                - '0x1111111111111111111111111111111111111111'
              description: >-
                EVM address. The zero address represents native currency only
                where documented.
            name:
              type: string
        - type: object
          required:
            - operation
            - token_address
            - symbol
          properties:
            operation:
              type: string
              const: update_symbol
            token_address:
              type: string
              pattern: ^0x[0-9a-fA-F]{40}$
              examples:
                - '0x1111111111111111111111111111111111111111'
              description: >-
                EVM address. The zero address represents native currency only
                where documented.
            symbol:
              type: string
        - type: object
          required:
            - operation
            - token_address
            - description
            - website
            - x
            - telegram
            - metadata_uri
            - image_url
          properties:
            operation:
              type: string
              const: update_metadata_document
            token_address:
              type: string
              pattern: ^0x[0-9a-fA-F]{40}$
              examples:
                - '0x1111111111111111111111111111111111111111'
              description: >-
                EVM address. The zero address represents native currency only
                where documented.
            description:
              type: string
            website:
              type:
                - string
                - 'null'
              format: uri
            x:
              type:
                - string
                - 'null'
              format: uri
            telegram:
              type:
                - string
                - 'null'
              format: uri
            metadata_uri:
              type: string
            image_url:
              type:
                - string
                - 'null'
              format: uri
        - type: object
          required:
            - operation
            - token_address
            - key
            - value
          properties:
            operation:
              type: string
              const: update_extra_metadata
            token_address:
              type: string
              pattern: ^0x[0-9a-fA-F]{40}$
              examples:
                - '0x1111111111111111111111111111111111111111'
              description: >-
                EVM address. The zero address represents native currency only
                where documented.
            key:
              type: string
            value:
              type: string
      discriminator:
        propertyName: operation
    LaunchPrepareResult:
      allOf:
        - $ref: '#/components/schemas/TransactionPlan'
        - type: object
          required:
            - predicted_token_address
            - suite_id
            - metadata_uri
            - image_url
            - review
          properties:
            predicted_token_address:
              type: string
              pattern: ^0x[0-9a-fA-F]{40}$
              examples:
                - '0x1111111111111111111111111111111111111111'
              description: >-
                EVM address. The zero address represents native currency only
                where documented.
            suite_id:
              type: string
            metadata_uri:
              type: string
            image_url:
              type:
                - string
                - 'null'
              format: uri
            creation_fee:
              $ref: '#/components/schemas/CreationFee'
            review:
              $ref: '#/components/schemas/LaunchReview'
    SwapQuoteResult:
      type: object
      required:
        - quote_id
        - prepared_at
        - expires_at
        - chain_id
        - observed_block
        - input_currency
        - output_currency
        - amount_in_raw
        - expected_out_raw
        - minimum_out_raw
        - quote_gas
        - review
        - issues
        - steps
      properties:
        quote_id:
          type: string
          description: >-
            Opaque signed quote for /swaps/prepare. Do not modify it and use it
            before expires_at.
        prepared_at:
          type: string
          format: date-time
          examples:
            - 2026-07-31T12:00:00.000Z
        expires_at:
          type: string
          format: date-time
          examples:
            - 2026-07-31T12:00:00.000Z
        chain_id:
          type: integer
          enum:
            - 8453
            - 4663
          examples:
            - 8453
          description: 'Production chain ID: 8453 for Base or 4663 for Robinhood Chain.'
        observed_block:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: Chain block used to produce this quote.
        input_currency:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        output_currency:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          examples:
            - '0x1111111111111111111111111111111111111111'
          description: >-
            EVM address. The zero address represents native currency only where
            documented.
        amount_in_raw:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: Exact input amount in input-currency base units.
        expected_out_raw:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: Quoted output in output-currency base units.
        minimum_out_raw:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: Minimum accepted output after applying the requested slippage.
        quote_gas:
          type: string
          pattern: ^(0|[1-9][0-9]*)$
          examples:
            - '1000000000000000000'
          description: Gas estimate returned by the v4 Quoter.
        review:
          $ref: '#/components/schemas/SwapQuoteReview'
        issues:
          type: array
          items:
            $ref: '#/components/schemas/PlanIssue'
        steps:
          type: array
          items:
            $ref: '#/components/schemas/TransactionStep'
    SwapPrepareResult:
      allOf:
        - $ref: '#/components/schemas/TransactionPlan'
        - type: object
          required:
            - refreshed_expected_out_raw
            - minimum_out_raw
            - review
          properties:
            refreshed_expected_out_raw:
              type: string
              pattern: ^(0|[1-9][0-9]*)$
              examples:
                - '1000000000000000000'
              description: >-
                Unsigned integer encoded as a base-10 string to preserve full
                precision.
            minimum_out_raw:
              type: string
              pattern: ^(0|[1-9][0-9]*)$
              examples:
                - '1000000000000000000'
              description: >-
                Unsigned integer encoded as a base-10 string to preserve full
                precision.
            review:
              $ref: '#/components/schemas/SwapPrepareReview'
    FeeClaimsPrepareResult:
      allOf:
        - $ref: '#/components/schemas/TransactionPlan'
        - type: object
          required:
            - review
          properties:
            review:
              $ref: '#/components/schemas/FeeClaimsReview'
    VestingClaimsPrepareResult:
      allOf:
        - $ref: '#/components/schemas/TransactionPlan'
        - type: object
          required:
            - review
          properties:
            review:
              $ref: '#/components/schemas/VestingClaimsReview'
    AnnouncementPrepareResult:
      allOf:
        - $ref: '#/components/schemas/TransactionPlan'
        - type: object
          required:
            - announcement_id
            - review
          properties:
            announcement_id:
              type: string
              pattern: ^0x[0-9a-fA-F]{64}$
              examples:
                - >-
                  0x1111111111111111111111111111111111111111111111111111111111111111
              description: 32-byte hexadecimal hash.
            review:
              $ref: '#/components/schemas/AnnouncementReview'
    MetadataPrepareResult:
      allOf:
        - $ref: '#/components/schemas/TransactionPlan'
        - type: object
          required:
            - review
          properties:
            metadata_uri:
              type: string
            image_url:
              type:
                - string
                - 'null'
              format: uri
            review:
              $ref: '#/components/schemas/MetadataReview'
    ConfigurationResponse:
      type: object
      required:
        - data
        - meta
      properties:
        data:
          $ref: '#/components/schemas/Configuration'
        meta:
          $ref: '#/components/schemas/ResponseMeta'
    TokenListResponse:
      type: object
      required:
        - data
        - pagination
        - meta
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/TokenListItem'
        pagination:
          $ref: '#/components/schemas/Pagination'
        meta:
          $ref: '#/components/schemas/ResponseMeta'
    TokenDetailResponse:
      type: object
      required:
        - data
        - meta
      properties:
        data:
          $ref: '#/components/schemas/TokenDetail'
        meta:
          $ref: '#/components/schemas/ResponseMeta'
    TokenActivityResponse:
      type: object
      required:
        - data
        - pagination
        - meta
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/TokenActivity'
        pagination:
          $ref: '#/components/schemas/Pagination'
        meta:
          $ref: '#/components/schemas/ResponseMeta'
    TokenTradesResponse:
      type: object
      required:
        - data
        - pagination
        - meta
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Trade'
        pagination:
          $ref: '#/components/schemas/Pagination'
        meta:
          $ref: '#/components/schemas/ResponseMeta'
    TokenAnnouncementsResponse:
      type: object
      required:
        - data
        - pagination
        - meta
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Announcement'
        pagination:
          $ref: '#/components/schemas/Pagination'
        meta:
          $ref: '#/components/schemas/ResponseMeta'
    HolderListResponse:
      type: object
      required:
        - data
        - pagination
        - meta
        - summary
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Holder'
        pagination:
          $ref: '#/components/schemas/Pagination'
        meta:
          $ref: '#/components/schemas/ResponseMeta'
        summary:
          $ref: '#/components/schemas/HolderSummary'
    WalletSummaryResponse:
      type: object
      required:
        - data
        - meta
      properties:
        data:
          oneOf:
            - $ref: '#/components/schemas/WalletSummary'
            - type: 'null'
        meta:
          $ref: '#/components/schemas/ResponseMeta'
    WalletActivityResponse:
      type: object
      required:
        - data
        - pagination
        - meta
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/WalletActivity'
        pagination:
          $ref: '#/components/schemas/Pagination'
        meta:
          $ref: '#/components/schemas/ResponseMeta'
    WalletClaimsResponse:
      type: object
      required:
        - data
        - pagination
        - meta
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/WalletClaim'
        pagination:
          $ref: '#/components/schemas/Pagination'
        meta:
          $ref: '#/components/schemas/ResponseMeta'
    WalletFeeClaimsResponse:
      type: object
      required:
        - data
        - pagination
        - meta
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/FeeClaimPosition'
        pagination:
          $ref: '#/components/schemas/Pagination'
        meta:
          $ref: '#/components/schemas/ResponseMeta'
    WalletVestingResponse:
      type: object
      required:
        - data
        - pagination
        - meta
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/VestingPosition'
        pagination:
          $ref: '#/components/schemas/Pagination'
        meta:
          $ref: '#/components/schemas/ResponseMeta'
    TransactionStatusResponse:
      type: object
      required:
        - data
        - meta
      properties:
        data:
          oneOf:
            - $ref: '#/components/schemas/TransactionStatus'
            - type: 'null'
        meta:
          $ref: '#/components/schemas/ResponseMeta'
    LaunchPrepareResponse:
      type: object
      required:
        - data
        - meta
      properties:
        data:
          $ref: '#/components/schemas/LaunchPrepareResult'
        meta:
          $ref: '#/components/schemas/ResponseMeta'
    SwapQuoteResponse:
      type: object
      required:
        - data
        - meta
      properties:
        data:
          $ref: '#/components/schemas/SwapQuoteResult'
        meta:
          $ref: '#/components/schemas/ResponseMeta'
    SwapPrepareResponse:
      type: object
      required:
        - data
        - meta
      properties:
        data:
          $ref: '#/components/schemas/SwapPrepareResult'
        meta:
          $ref: '#/components/schemas/ResponseMeta'
    FeeClaimsPrepareResponse:
      type: object
      required:
        - data
        - meta
      properties:
        data:
          $ref: '#/components/schemas/FeeClaimsPrepareResult'
        meta:
          $ref: '#/components/schemas/ResponseMeta'
    VestingClaimsPrepareResponse:
      type: object
      required:
        - data
        - meta
      properties:
        data:
          $ref: '#/components/schemas/VestingClaimsPrepareResult'
        meta:
          $ref: '#/components/schemas/ResponseMeta'
    AnnouncementPrepareResponse:
      type: object
      required:
        - data
        - meta
      properties:
        data:
          $ref: '#/components/schemas/AnnouncementPrepareResult'
        meta:
          $ref: '#/components/schemas/ResponseMeta'
    MetadataPrepareResponse:
      type: object
      required:
        - data
        - meta
      properties:
        data:
          $ref: '#/components/schemas/MetadataPrepareResult'
        meta:
          $ref: '#/components/schemas/ResponseMeta'
  responses:
    BadRequest:
      description: The request syntax, parameter combination, cursor, or body is invalid.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
    Unauthorized:
      description: >-
        The API key is missing, malformed, expired, revoked, or otherwise
        invalid.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
    Forbidden:
      description: >-
        The API key scope, browser origin, or connected wallet is not
        authorized.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
    NotFound:
      description: The requested tracked launchpad resource does not exist.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
    Conflict:
      description: >-
        The request conflicts with current cursor, quote, claim, chain, or
        idempotency state.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
    TooLarge:
      description: The request body exceeds the operation's supported size.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
    Unprocessable:
      description: >-
        The request is valid JSON but is unsupported, invalid on-chain, or not
        executable.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
    RateLimited:
      description: >-
        The key, wallet, token, creator, or expensive operation exceeded a rate
        or concurrency limit.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
      headers:
        Retry-After:
          description: Seconds until the limited operation may be retried.
          schema:
            type: integer
            minimum: 1
    InternalError:
      description: >-
        An unexpected server fault occurred. Retry once, then contact support
        with the request_id if it persists.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
    UpstreamError:
      description: >-
        A required chain, metadata, indexer, or holder provider returned an
        invalid response.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
    Unavailable:
      description: >-
        A required service, chain dependency, cursor signer, or holder snapshot
        is unavailable.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
    UpstreamTimeout:
      description: A required upstream service timed out.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
