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

> Read a user's finalized open-order snapshot and replay cursor.

**userId** `string` *required*

Unsigned decimal Kuru user ID.

**cloid** `string`

Optional 32-byte `0x`-prefixed hexadecimal client order ID. With this filter,
returns matching orders, including filled and cancelled orders, across all
markets for the user. IDs may be shared within a batch or reused later;
the response is a list, not a unique-order lookup. Empty or malformed values
return 400. Hexadecimal letter case is normalized.

For order-ID lookup, use `GET /api/v1/markets/{marketAddress}/orders?oid=123`.
The user endpoint does not accept `oid`. Repeated `cloid` values return 400.

**feedEpoch** `integer | null` *required*

Feed epoch containing `globalUserSeq`.

**data** `array` *required*

Up to 2,000 orders, ordered by market address and then order ID. Without
`cloid`, only open orders are returned. No matches returns an empty array.

**globalUserSeq** `string | null` *required*

Finalized user sequence covered by the snapshot.

**data\[].isCancelled** `boolean` *required*

Whether the order was cancelled. A fully filled order is not necessarily
cancelled; use `remainingSize` alongside this field.

**data\[].clientOrderId** `string | null` *required*

Creation event's 32-byte hexadecimal client order ID. Null when unavailable.
Later cancellations do not overwrite this ID.

**truncated** `boolean` *required*

`true` when additional matching orders were omitted. This bounded snapshot
does not offer pagination.

`price` is an integer in market price precision (pp). `remainingSize` uses the
market's native size precision. `minSizeAfterBlock` is the block height after
which reduce-after-block behavior applies.

For an unfiltered request, when both cursor fields are non-null, install this snapshot and subscribe to
`userOrders@f` with the same `feedEpoch` and `globalUserSeq`.
Do not install a `cloid` lookup as a complete open-order snapshot.
This endpoint always returns finalized data.
`remainingSize` is not a cancellation-status field: a cancelled order may
retain a positive remaining size.

```bash theme={null}
curl 'https://api.testnet.kuru.io/api/v1/users/2/orders?cloid=0x0000000000000000000000000000000000000000000000000000000000000001'
```

```json 200 theme={null}
{
  "feedEpoch": 18,
  "data": [
    {
      "orderId": "123",
      "marketAddress": "0x1111111111111111111111111111111111111111",
      "symbol": "MONUSDC",
      "isBuy": true,
      "price": "20900",
      "remainingSize": "100000000",
      "minSizeAfterBlock": null,
      "isCancelled": false,
      "clientOrderId": "0x0000000000000000000000000000000000000000000000000000000000000001"
    }
  ],
  "globalUserSeq": null,
  "truncated": false
}
```


## OpenAPI

````yaml api/data-source/openapi.yaml GET /api/v1/users/{userId}/orders
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/users/{userId}/orders:
    get:
      summary: Get user orders
      operationId: getUserOrders
      parameters:
        - name: userId
          in: path
          required: true
          schema:
            type: integer
        - name: cloid
          in: query
          description: >-
            Optional creation client order ID. Returns matching orders including
            filled and cancelled orders; IDs may be reused. The oid parameter is
            not supported.
          schema:
            type: string
            pattern: ^0[xX][0-9a-fA-F]{64}$
      responses:
        '200':
          description: User orders

````

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