> ## 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 projected user open orders

> Read a current proposed, voted, or finalized open-order snapshot.

<Info>Response JSON below is an illustrative testnet snapshot, not a live mainnet result. Use the selected server and its network-specific addresses for actual requests.</Info>

<ParamField path="userId" type="string" required>
  Unsigned decimal Kuru user ID.
</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 `globalSeq` and `globalUserSeq`.
</ResponseField>

<ResponseField name="data" type="array" required>
  Up to 2,000 open orders in immutable snapshot order.

  <ResponseField name="orderId" type="string" required>
    Protocol order ID.
  </ResponseField>

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

  <ResponseField name="slotIdx" type="integer" required>
    Protocol slot index inside the maker page, from `0` through `255`.
  </ResponseField>

  <ResponseField name="symbol" type="string | null" required>
    Configured market symbol, or `null` when it is absent from the catalog.
  </ResponseField>

  <ResponseField name="isBuy" type="boolean" required>
    `true` for a buy order and `false` for a sell order.
  </ResponseField>

  <ResponseField name="orderType" type="string" required>
    Always `limit` in this version.
  </ResponseField>

  <ResponseField name="price" type="string" required>
    Signed integer price in market price precision (pp).
  </ResponseField>

  <ResponseField name="remainingSize" type="string" required>
    Remaining native market size units.
  </ResponseField>

  <ResponseField name="minSizeAfterBlock" type="integer | null" required>
    Block threshold associated with reduce-after-block behavior, when present.
  </ResponseField>

  <ResponseField name="createdAt" type="integer" required>
    Creation-block Unix timestamp in seconds. Retained through partial fills and
    checkpoint restore; matches the userOrders WebSocket snapshot creation time.
  </ResponseField>

  <ResponseField name="clientOrderId" type="string | null" required>
    Optional client-supplied order correlation ID.
  </ResponseField>
</ResponseField>

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

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

<ResponseField name="globalSeq" type="integer | null" required>
  Global sequence represented by the projection snapshot.
</ResponseField>

<ResponseField name="globalUserSeq" type="integer | null" required>
  User sequence represented by the projection snapshot.
</ResponseField>

<ResponseField name="truncated" type="boolean" required>
  `true` when additional open orders were omitted.
</ResponseField>

<ResponseExample>
  ```json 200 theme={null}
  {
    "feedEpoch": 7,
    "data": [{
      "orderId": "77738308",
      "marketAddress": "0x0a082280e4ea3d822e23ec1186685477241a039d",
      "slotIdx": 3,
      "symbol": "WETHUSDC",
      "isBuy": true,
      "orderType": "limit",
      "price": "230000000",
      "remainingSize": "750000000000000000000",
      "minSizeAfterBlock": null,
      "clientOrderId": null,
      "createdAt": 1700000000
    }],
    "state": "finalized",
    "servedView": "finalized",
    "globalSeq": 124367,
    "globalUserSeq": 2951,
    "truncated": false
  }
  ```
</ResponseExample>

For a finalized REST-to-WebSocket bootstrap with an epoch-qualified cursor,
use the [Data Source user-orders route](/api/data-source/reference/user-orders).


## OpenAPI

````yaml api/exchange/openapi.yaml GET /api/v1/users/{userId}/orders
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/v1/users/{userId}/orders:
    get:
      summary: Get user orders
      operationId: getUserOrders
      parameters:
        - name: userId
          in: path
          required: true
          schema:
            type: integer
        - name: state
          in: query
          schema:
            type: string
            default: finalized
      responses:
        '200':
          description: Projected orders

````

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