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

# List public creator markets

> Returns public markets newest first. Internal or retired market IDs are
excluded. Use `nextCursor` exactly as returned until it is null.




## OpenAPI

````yaml /api-reference/retardmarket_openapi.yml get /markets
openapi: 3.0.3
info:
  title: retard.market API
  version: 12.27.0
  description: |
    Attested Robinhood Chain reads for the experimental memecoin launch,
    trading, and staking protocol behind `/retard`. Each market is built around
    a fixed-supply creator memecoin paired with native ETH in a Uniswap v4 pool.
    The API exposes runtime identity, markets, quotes, activity, wallet holdings
    and positions, and funded creator-tip proofs.

    This protocol is experimental. Contracts, economics, API responses, and
    availability may change, and funds may be lost. Verify the runtime contract
    graph and simulate every wallet transaction immediately before signing. Use
    is subject to the VibeChain Terms of Service at
    https://vibechain.com/terms.

    Every endpoint requires a caller-specific VibeChain API key in the
    `API-KEY` header. Create one at
    https://docs.vibechain.com/api-reference/retardmarket-intro.
servers:
  - url: https://build.vibechain.com/api/retard/v1227
security:
  - ApiKeyAuth: []
tags:
  - name: Runtime
    description: Attested deployment identity and readiness
  - name: Markets
    description: Creator markets, quotes, schedules, and bounded activity
  - name: Wallets
    description: Wallet positions, holdings, and activity
  - name: Tips
    description: Safe-funded creator-tip root proofs
  - name: Airdrop
    description: Status of the deliberately parked airdrop feature
paths:
  /markets:
    get:
      tags:
        - Markets
      summary: List public creator markets
      description: |
        Returns public markets newest first. Internal or retired market IDs are
        excluded. Use `nextCursor` exactly as returned until it is null.
      operationId: listRetardMarkets
      parameters:
        - $ref: '#/components/parameters/NumericCursor'
        - $ref: '#/components/parameters/MarketLimit'
      responses:
        '200':
          description: One block-pinned market page
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MarketPage'
        '400':
          $ref: '#/components/responses/InvalidInput'
        '429':
          $ref: '#/components/responses/ApiKeyOrRateLimit'
        '503':
          $ref: '#/components/responses/Unavailable'
components:
  parameters:
    NumericCursor:
      in: query
      name: cursor
      required: false
      description: Zero-based numeric cursor
      schema:
        type: integer
        minimum: 0
        default: 0
    MarketLimit:
      in: query
      name: limit
      required: false
      schema:
        type: integer
        minimum: 1
        maximum: 24
        default: 24
  schemas:
    MarketPage:
      type: object
      required:
        - items
        - nextCursor
        - projectedBlock
        - updatedAt
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/Market'
        nextCursor:
          type: integer
          minimum: 0
          nullable: true
        projectedBlock:
          type: integer
          minimum: 0
        updatedAt:
          $ref: '#/components/schemas/DateTime'
    Market:
      type: object
      required:
        - marketId
        - subjectKey
        - creator
        - coin
        - name
        - symbol
        - mediaUri
        - poolId
        - poolKey
        - launchedAt
        - activePrincipal
        - rewardShares
        - targetSupportCredit
        - appliedSupportCredit
        - unboostedFdvNative
        - displayedFdvNative
        - queued
        - saturated
        - stopped
        - protocolFees
        - creatorTips
        - stakerTips
        - schedule
        - projectedBlock
        - updatedAt
      properties:
        marketId:
          type: integer
          minimum: 0
        subjectKey:
          $ref: '#/components/schemas/Hash'
        creator:
          $ref: '#/components/schemas/Address'
        coin:
          $ref: '#/components/schemas/Address'
        name:
          type: string
        symbol:
          type: string
        mediaUri:
          type: string
        poolId:
          $ref: '#/components/schemas/Hash'
        poolKey:
          $ref: '#/components/schemas/PoolKey'
        launchedAt:
          $ref: '#/components/schemas/DateTime'
        stakeReady:
          type: boolean
        activePrincipal:
          $ref: '#/components/schemas/IntegerString'
        rewardShares:
          $ref: '#/components/schemas/IntegerString'
        targetSupportCredit:
          $ref: '#/components/schemas/IntegerString'
        appliedSupportCredit:
          $ref: '#/components/schemas/IntegerString'
        unboostedFdvNative:
          $ref: '#/components/schemas/IntegerString'
        displayedFdvNative:
          $ref: '#/components/schemas/IntegerString'
        queued:
          type: boolean
        saturated:
          type: boolean
        stopped:
          type: boolean
        protocolFees:
          $ref: '#/components/schemas/NativeAndCoinAmounts'
        creatorTips:
          type: object
          required:
            - earned
            - paid
          properties:
            earned:
              $ref: '#/components/schemas/IntegerString'
            paid:
              $ref: '#/components/schemas/IntegerString'
        stakerTips:
          type: object
          required:
            - assigned
            - realized
            - paid
          properties:
            assigned:
              $ref: '#/components/schemas/IntegerString'
            realized:
              $ref: '#/components/schemas/IntegerString'
            paid:
              $ref: '#/components/schemas/IntegerString'
        schedule:
          $ref: '#/components/schemas/Schedule'
        projectedBlock:
          type: integer
          minimum: 0
        updatedAt:
          $ref: '#/components/schemas/DateTime'
    DateTime:
      type: string
      format: date-time
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: string
    ApiKeyError:
      allOf:
        - $ref: '#/components/schemas/Error'
        - type: object
          required:
            - docs
          properties:
            error:
              type: string
              enum:
                - API_KEY_REQUIRED_OR_RATE_LIMITED
            docs:
              type: string
              format: uri
    Hash:
      type: string
      pattern: ^0x[0-9a-fA-F]{64}$
    Address:
      type: string
      pattern: ^0x[0-9a-fA-F]{40}$
      example: '0x41B13C429675015d32377305D03222CbddB20cA0'
    PoolKey:
      type: object
      required:
        - currency0
        - currency1
        - fee
        - tickSpacing
        - hooks
      properties:
        currency0:
          $ref: '#/components/schemas/Address'
        currency1:
          $ref: '#/components/schemas/Address'
        fee:
          type: integer
          example: 20000
        tickSpacing:
          type: integer
          example: 200
        hooks:
          $ref: '#/components/schemas/Address'
    IntegerString:
      type: string
      pattern: ^[0-9]+$
      description: Unsigned integer encoded as a decimal string
    NativeAndCoinAmounts:
      type: object
      required:
        - native
        - coin
      properties:
        native:
          $ref: '#/components/schemas/IntegerString'
        coin:
          $ref: '#/components/schemas/IntegerString'
    Schedule:
      type: object
      required:
        - nonce
        - startTime
        - active
        - paused
        - grossDailyTip
        - fundedGross
        - remainingRunway
        - vestedGross
        - creatorVested
        - stakerVested
        - segmentVested
      properties:
        nonce:
          $ref: '#/components/schemas/IntegerString'
        startTime:
          allOf:
            - $ref: '#/components/schemas/IntegerString'
          description: Unix timestamp in seconds
        active:
          type: boolean
        paused:
          type: boolean
        grossDailyTip:
          $ref: '#/components/schemas/IntegerString'
        fundedGross:
          $ref: '#/components/schemas/IntegerString'
        remainingRunway:
          $ref: '#/components/schemas/IntegerString'
        vestedGross:
          $ref: '#/components/schemas/IntegerString'
        creatorVested:
          $ref: '#/components/schemas/IntegerString'
        stakerVested:
          $ref: '#/components/schemas/IntegerString'
        segmentVested:
          $ref: '#/components/schemas/IntegerString'
  responses:
    InvalidInput:
      description: Invalid wallet, market, cursor, limit, side, or amount
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    ApiKeyOrRateLimit:
      description: API key missing/invalid or the caller allowance is exhausted
      headers:
        Retry-After:
          schema:
            type: integer
          description: Seconds until the current rate window resets
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiKeyError'
    Unavailable:
      description: Configuration, reader, or proof registry is unavailable
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: API-KEY
      description: Caller-specific VibeChain API key created through `/apikey/create`.

````