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

# List markets

> Browse spot markets and trailing 24-hour statistics.

<Info>The example below shows the first WETHUSDC result from a mainnet request with `status=active&amp;limit=1` on 17 October 2026. The continuation cursor is represented schematically because cursors expire; always use the current response's `pagination.nextCursor`.</Info>

<ParamField query="status" type="string" default="active">
  `active`, `paused`, or `all`.
</ParamField>

<ParamField query="limit" type="integer" default="100">
  Page size from `1` through `500`.
</ParamField>

<ParamField query="cursor" type="string">
  Opaque exclusive continuation cursor from `pagination.nextCursor`.
</ParamField>

<ResponseField name="feedEpoch" type="null" required>
  Catalog responses are not Exchange Gateway replay cuts.
</ResponseField>

<ResponseField name="data" type="array" required>
  Markets ordered by creation time and then market address.

  <ResponseField name="marketAddress" type="string" required>
    Lowercase 20-byte market contract address.
  </ResponseField>

  <ResponseField name="symbol" type="string" required>
    Display symbol for the market pair.
  </ResponseField>

  <ResponseField name="baseToken" type="object" required>
    Base-token metadata.

    <ResponseField name="tokenAddress" type="string" required />

    <ResponseField name="name" type="string" required />

    <ResponseField name="symbol" type="string" required />

    <ResponseField name="decimals" type="integer" required />

    <ResponseField name="logoUrl" type="string | null" required />

    <ResponseField name="description" type="string | null" required />

    <ResponseField name="websiteUrl" type="string | null" required />

    <ResponseField name="verified" type="boolean" required />

    <ResponseField name="contractRenounced" type="boolean" required />

    <ResponseField name="isErc20" type="boolean" required />

    <ResponseField name="isMintable" type="boolean" required />

    <ResponseField name="isStrict" type="boolean" required />

    <ResponseField name="firstPoolAddress" type="string | null" required />
  </ResponseField>

  <ResponseField name="quoteToken" type="object" required>
    Quote-token metadata. Its fields have the same meanings as `baseToken`.

    <ResponseField name="tokenAddress" type="string" required />

    <ResponseField name="name" type="string" required />

    <ResponseField name="symbol" type="string" required />

    <ResponseField name="decimals" type="integer" required />

    <ResponseField name="logoUrl" type="string | null" required />

    <ResponseField name="description" type="string | null" required />

    <ResponseField name="websiteUrl" type="string | null" required />

    <ResponseField name="verified" type="boolean" required />

    <ResponseField name="contractRenounced" type="boolean" required />

    <ResponseField name="isErc20" type="boolean" required />

    <ResponseField name="isMintable" type="boolean" required />

    <ResponseField name="isStrict" type="boolean" required />

    <ResponseField name="firstPoolAddress" type="string | null" required />
  </ResponseField>

  <ResponseField name="status" type="string" required>
    Current market status: `active` or `paused`.
  </ResponseField>

  <ResponseField name="pricePrecision" type="string" required>
    Integer precision used to interpret native order price ticks.
  </ResponseField>

  <ResponseField name="sizePrecision" type="string" required>
    Integer precision used to interpret native base sizes.
  </ResponseField>

  <ResponseField name="tickSize" type="string" required>
    Minimum price-tick increment in native price-precision units.
  </ResponseField>

  <ResponseField name="minQuoteNotionalX18" type="string" required>
    Minimum quote notional scaled by `1e18`.
  </ResponseField>

  <ResponseField name="takerFeePps" type="integer" required>
    Configured market taker fee rate in PPS, where `10,000,000` represents
    100%. This is a rate, not a charged fee amount. Zero means no configured fee.
  </ResponseField>

  <ResponseField name="makerFeePps" type="integer" required>
    Configured market maker fee rate in PPS, where `10,000,000` represents
    100%. This is a rate, not a charged fee amount. Zero means no configured fee.
  </ResponseField>

  <ResponseField name="createdAt" type="integer" required>
    Market creation time in Unix seconds.
  </ResponseField>

  <ResponseField name="lastPrice" type="string | null" required>
    Price from the 24-hour summary when available; otherwise the market's latest raw trade price, with no timestamp cutoff. Returned in market price precision (pp), or `null` when neither source has a price. The 24-hour statistics retain their existing window.
  </ResponseField>

  <ResponseField name="priceChange24hPct" type="string | null" required>
    Rolling 24-hour decimal price-change ratio. For example, `"0.01"` means one percent.
  </ResponseField>

  <ResponseField name="volume24h" type="string" required>
    Rolling 24-hour quote volume scaled by `1e18`.
  </ResponseField>

  <ResponseField name="tradeCount24h" type="integer" required>
    Number of fills included in the rolling 24-hour window.
  </ResponseField>
</ResponseField>

<ResponseField name="pagination" type="object" required>
  Pagination metadata for this page.

  <ResponseField name="nextCursor" type="string | null" required>
    Opaque continuation cursor, or `null` when no continuation is available.
  </ResponseField>
</ResponseField>

The catalog is authoritative for current markets, configuration, and activity; this is a dated response example.

<ResponseExample>
  ```json 200 theme={null}
  {
    "feedEpoch": null,
    "data": [
      {
        "marketAddress": "0x8121ee960066e4344a213f9ac7502395502aee7a",
        "symbol": "WETHUSDC",
        "baseToken": {
          "tokenAddress": "0xee8c0e9f1bffb4eb878d8f15f368a02a35481242",
          "name": "",
          "symbol": "WETH",
          "decimals": 18,
          "logoUrl": "https://d1zzuytetv7tb9.cloudfront.net/WETH.png",
          "description": null,
          "websiteUrl": null,
          "verified": false,
          "contractRenounced": false,
          "isErc20": true,
          "isMintable": true,
          "isStrict": false,
          "firstPoolAddress": "0x8121ee960066e4344a213f9ac7502395502aee7a"
        },
        "quoteToken": {
          "tokenAddress": "0x754704bc059f8c67012fed69bc8a327a5aafb603",
          "name": "",
          "symbol": "USDC",
          "decimals": 6,
          "logoUrl": "https://d1zzuytetv7tb9.cloudfront.net/USDC.png",
          "description": null,
          "websiteUrl": null,
          "verified": false,
          "contractRenounced": false,
          "isErc20": true,
          "isMintable": true,
          "isStrict": false,
          "firstPoolAddress": null
        },
        "status": "active",
        "pricePrecision": "10000",
        "sizePrecision": "10000000000",
        "tickSize": "100",
        "minQuoteNotionalX18": "10000000000000000000",
        "takerFeePps": 100000,
        "makerFeePps": 100000,
        "createdAt": 1792022400,
        "lastPrice": null,
        "priceChange24hPct": null,
        "volume24h": "0",
        "tradeCount24h": 0
      }
    ],
    "pagination": {
      "nextCursor": "<opaque continuation cursor>"
    }
  }
  ```
</ResponseExample>


## OpenAPI

````yaml api/data-source/openapi.yaml GET /api/v1/markets
openapi: 3.1.0
info:
  title: Kuru Data Source API
  version: 1.0.0
servers:
  - url: https://api.mainnet.kuru.io
    description: Monad mainnet (default)
  - url: https://api.testnet.kuru.io
    description: Monad testnet
security: []
paths:
  /api/v1/markets:
    get:
      summary: List markets
      operationId: listMarkets
      parameters:
        - name: status
          in: query
          schema:
            type: string
            enum:
              - active
              - paused
              - all
        - name: limit
          in: query
          schema:
            type: integer
        - name: cursor
          in: query
          schema:
            type: string
      responses:
        '200':
          description: Market catalog

````

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