> ## 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 L2 order book

> Read a bounded order-book snapshot 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>

Returns bids from highest to lowest price and asks from lowest to highest price.

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

<ParamField query="levels" type="integer" default="20">
  Number of levels per side, from `1` through `200`.
</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>
  Bounded L2 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 snapshot.
  </ResponseField>

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

  <ResponseField name="bids" type="array" required>
    Bid levels ordered by descending price. Each level contains native pp
    `price` and native size-precision `total_base` integer strings.
  </ResponseField>

  <ResponseField name="asks" type="array" required>
    Ask levels ordered by ascending price. Each level 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,
      "bids": [],
      "asks": []
    }
  }
  ```
</ResponseExample>


## OpenAPI

````yaml api/exchange/openapi.yaml GET /api/depth
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/depth:
    get:
      summary: Get L2 book
      operationId: getDepth
      parameters:
        - name: symbol
          in: query
          required: true
          schema:
            type: string
            example: WETHUSDC
        - name: levels
          in: query
          schema:
            type: integer
            default: 20
        - name: state
          in: query
          schema:
            type: string
            default: finalized
      responses:
        '200':
          description: L2 book

````

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