---
title: "List inventory positions"
method: GET
path: "/api/v1/inventory"
tags: ["inventory"]
---

# List inventory positions

`GET /api/v1/inventory`

Returns a paginated list of inventory positions scoped to the caller account. Filter by one or more exact "sku" (repeatable), free-text "q" matching the SKU (case-insensitive substring, mutually exclusive with "sku") and one or more "strategyCode" (repeatable).

## Query parameters

- `sku` string[]
- `q` string
- `strategyCode` string[]
- `page` number
- `limit` number
- `sortBy` string
- `sortOrder` string

## Response `200`

Paginated list of inventory positions.

- InventoryListResponse
  - `data` InventoryListItemResponse[], required
    - `last_snapshot_at` string, nullable, required — Last snapshot ingestion timestamp, or null.
    - `product_name` string, nullable, required — Current product name resolved from the catalog by SKU; null for unregistered SKUs.
    - `strategy_name` string, nullable, required — Current strategy name resolved by code; null when the strategy is not registered.
    - `id` string, required
    - `sku` string, required
    - `strategy_code` string, required
    - `on_hand` number, required
    - `reserved` number, required
    - `blocked` number, required
    - `safety_stock` number, required
    - `available` number, required
    - `created_at` string, required
    - `updated_at` string, required
  - `meta` PaginationMetaResponse, required
    - `total` number, required — Total number of records that match the filter.
    - `pages` number, required — Number of pages available.
    - `current_page` number, required — Page number returned in this response.
    - `next_page` number, nullable, required — Next page number, or null when on the last page.
    - `previous_page` number, nullable, required — Previous page number, or null when on the first page.
    - `limit` number, required — Page size used to compute pagination.

## Other responses

- `400` — Invalid query parameters (pagination, sorting, filters) or "q" combined with "sku".
- `401` — Authentication is missing, malformed, expired, or refers to a session that is no longer active.
- `403` — The caller is authenticated but lacks the required permission for this action.
- `500` — Unexpected server error. The response body never leaks internal details.

## Changes

- **2026-07-07** `a3b4750a505f` — 17 info
  - added the new optional `query` request parameter `limit`
  - added the new optional `query` request parameter `page`
  - added the new optional `query` request parameter `q`
  - added the new optional `query` request parameter `sku`
  - …13 more
- **2026-07-07** `84194c31ab85` — 10 breaking, 7 warning
  - removed the required property `data/items/available` from the response with the `200` status
  - removed the required property `data/items/blocked` from the response with the `200` status
  - removed the required property `data/items/created_at` from the response with the `200` status
  - removed the required property `data/items/id` from the response with the `200` status
  - …13 more

[Change history](https://skmtc.dev/kruzer-corp/apis/oms-api/changes/api/v1/inventory/get.md)

---

[API](https://skmtc.dev/kruzer-corp/apis/oms-api.md) · [All operations](https://skmtc.dev/kruzer-corp/apis/oms-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/kruzer-corp/oms-api/revisions/38ef6e16a7a8/schema)
