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

# Get best bid and offer

> Read the top of book from a retained projection view.

<Info>The response below was observed for WETHUSDC on mainnet on 17 October 2026. Book levels and sequence numbers change; query the selected network for current state.</Info>

<ParamField query="symbol" type="string" required>
  Configured market symbol. Matching is case-insensitive.
</ParamField>

<ParamField query="state" type="string" default="finalized">
  `proposed`, `voted`, or `finalized`. Short forms `p`, `v`, and `f` are also
  accepted.
</ParamField>

<ResponseField name="feedEpoch" type="integer" required>
  Epoch namespace for `market_seq` and `global_seq`.
</ResponseField>

<ResponseField name="data" type="object" required>
  Top-of-book snapshot.

  <ResponseField name="symbol" type="string" required>
    Requested market symbol.
  </ResponseField>

  <ResponseField name="market_id" type="string" required>
    Lowercase market contract address resolved from `symbol`.
  </ResponseField>

  <ResponseField name="state" type="string" required>
    Requested state.
  </ResponseField>

  <ResponseField name="served_view" type="string" required>
    Projection view that served the request.
  </ResponseField>

  <ResponseField name="market_seq" type="integer" required>
    Market sequence represented by the response.
  </ResponseField>

  <ResponseField name="global_seq" type="integer" required>
    Global sequence represented by the response.
  </ResponseField>

  <ResponseField name="bid" type="object | null" required>
    Best bid, or `null` when the bid side is empty. A populated side contains
    native pp `price` and native size-precision `total_base` integer strings.
  </ResponseField>

  <ResponseField name="ask" type="object | null" required>
    Best ask, or `null` when the ask side is empty. A populated side contains
    native pp `price` and native size-precision `total_base` integer strings.
  </ResponseField>
</ResponseField>

<ResponseExample>
  ```json 200 theme={null}
  {
    "feedEpoch": 0,
    "data": {
      "symbol": "WETHUSDC",
      "market_id": "0x8121ee960066e4344a213f9ac7502395502aee7a",
      "state": "finalized",
      "served_view": "finalized",
      "market_seq": 0,
      "global_seq": 20001,
      "bid": null,
      "ask": null
    }
  }
  ```
</ResponseExample>


## OpenAPI

````yaml api/exchange/openapi.yaml GET /api/bbo
openapi: 3.1.0
info:
  title: Kuru Exchange Gateway API
  version: 1.0.0
servers:
  - url: https://gateway.mainnet.kuru.io
    description: Monad mainnet (default)
  - url: https://gateway.testnet.kuru.io
    description: Monad testnet
security: []
paths:
  /api/bbo:
    get:
      summary: Get best bid and offer
      operationId: getBbo
      parameters:
        - name: symbol
          in: query
          required: true
          schema:
            type: string
            example: WETHUSDC
        - name: state
          in: query
          schema:
            type: string
            default: finalized
      responses:
        '200':
          description: Best bid and offer

````

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