> ## Documentation Index
> Fetch the complete documentation index at: https://apidocs.returnhelper.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 搜索 SKU 库存

> Enterprise-only. Returns warehouse-scoped SKU inventory rows for the authenticated account, using cursor-based pagination. Each row carries the total `quantity` and the `availableQuantity` for one SKU in one warehouse; the same SKU held in different warehouses appears as separate rows. Omitting both `warehouseIdList` and `skuList` returns rows across every warehouse owned by the account.

<Warning>
  此页面由 AI 自动翻译。API 技术规格以英文呈现为标准。如有任何疑问，请参阅[英文版本](/api-reference/skuinventory/search-sku-inventory)。
</Warning>

<Note>
  此为 **Enterprise 专属** 功能，仅对 Return Helper Enterprise 客户启用。如需了解此服务的定价，请联系 [enterprise-solution@returnhelper.com](mailto:enterprise-solution@returnhelper.com)。
</Note>

以仓库为单位返回您账户的 SKU 库存，并采用游标式分页（cursor-based pagination）。每一行同时报告某 SKU 在某仓库的总 `quantity` 与 `availableQuantity`。

<h2 id="rows-are-keyed-by-warehouse-and-sku">
  各行以仓库与 SKU 为键
</h2>

同一个 SKU 若存放于多个仓库，会以**多行**返回——每个仓库各一行。响应中的一行由其 `warehouseId` + `sku` 组合唯一标识；`searchTotalCount` 计算的是「仓库-SKU」行数，而非相异的 SKU 值数量。若只想查看单个仓库，请传入 `warehouseIdList`。

<Warning>
  由此接口**旧版**发出的游标将被**拒绝**。若您缓存了旧的游标值，请以不带 `cursor` 的方式重新开始分页——版本化游标不向后兼容，旧的 API ID 游标值也不会被重新解读为仓库 ID。
</Warning>

<h2 id="pagination">
  分页
</h2>

此接口采用**游标式分页**。每个响应都包含 `nextCursor` 与 `previousCursor`：

* `nextCursor` 是下一页的游标；已到最后一页时为 `null`。
* `previousCursor` 是上一页的游标；在第一页时为 `null`。

若要向前翻页，将 `nextCursor` 的值作为 `cursor` 查询参数传回，并带上 `isForward=true`。在同一个分页序列中，请保持相同的 `pageSize`（以及任何 `warehouseIdList` / `skuList` 筛选条件）。

<Note>
  `availableQuantity` 是供**提前检查**可用量的**汇总**数字——**并非**预留（reservation）。它可能因投影延迟而与实时退件库存短暂不一致，也可能将带有待处理 VAS、实际上不符补寄资格的记录计入。[按 SKU 创建 Resend](/zh-Hans/api-reference/resend/create-resend-by-sku) 会在请求当下对 MySQL 进行具权威性且加锁的分配。
</Note>

<h2 id="related">
  相关
</h2>

* [统计 SKU 库存条数](/zh-Hans/api-reference/skuinventory/search-sku-inventory-total-count) — 相同筛选条件下符合的「仓库-SKU」行总数。
* [按 SKU 创建 Resend](/zh-Hans/api-reference/resend/create-resend-by-sku) — 以 SKU 数量（而非退件库存 ID）创建补寄。


## OpenAPI

````yaml get /api/skuInventory/search
openapi: 3.1.0
info:
  title: Return Helper API
  description: API documentation for Return Helper — covering User and Public endpoints.
  version: 1.0.0
servers:
  - url: https://api.returnshelper.com/uat/user
    description: Sandbox — User API
  - url: https://api.returnshelper.com/uat/public
    description: Sandbox — Public API
  - url: https://api.returnhelpercentre.com/v1/user
    description: Production — User API
  - url: https://api.returnhelpercentre.com/v1/public
    description: Production — Public API
  - url: https://api.returnhelperchina.com/user
    description: Production — User API (China)
security:
  - ApiKey: []
    ApiToken: []
paths:
  /api/skuInventory/search:
    get:
      tags:
        - SkuInventory
      summary: Search SKU inventory
      description: >-
        Enterprise-only. Returns warehouse-scoped SKU inventory rows for the
        authenticated account, using cursor-based pagination. Each row carries
        the total `quantity` and the `availableQuantity` for one SKU in one
        warehouse; the same SKU held in different warehouses appears as separate
        rows. Omitting both `warehouseIdList` and `skuList` returns rows across
        every warehouse owned by the account.
      operationId: ReturnUserApi_SearchSkuInventory
      parameters:
        - name: pageSize
          in: query
          required: true
          schema:
            type: integer
            minimum: 1
            maximum: 1000
          description: >-
            Number of warehouse-SKU rows to return per page. Required. Minimum
            1, maximum 1000.
        - name: cursor
          in: query
          required: false
          schema:
            type: string
          description: >-
            Opaque, versioned cursor token encoding cursor version, warehouse
            ID, and SKU. Pass the `nextCursor` (or `previousCursor`) from a
            previous response to fetch the adjacent page. Omit to fetch the
            first page. Cursors issued by the previous (pre-redesign) version of
            this endpoint are rejected — restart pagination without a cursor.
        - name: isForward
          in: query
          required: false
          schema:
            type: boolean
          description: >-
            Pagination direction. Set `true` to page forward through results
            using the returned `nextCursor`. Defaults to `false` when omitted.
            Optional.
        - name: warehouseIdList
          in: query
          required: false
          schema:
            type: string
          description: >-
            Comma-separated list of warehouse IDs to filter by (e.g.
            `1001,1002`). When provided, each value must be a positive integer,
            the list must contain no duplicates, the number of entries must not
            exceed 100, and every warehouse must be owned by the authenticated
            account. Omit to return rows across all owned warehouses. Optional.
        - name: skuList
          in: query
          required: false
          schema:
            type: string
          description: >-
            Comma-separated list of SKUs to filter by (e.g. `SKU-006,SKU-001`).
            When provided, the number of entries must not exceed 100 and each
            SKU must match the SKU pattern (alphanumerics plus `#`, `-`, `_`;
            maximum 32 characters). SKUs are matched after trim and uppercase
            normalization. Omit to return all SKUs. Optional.
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SkuInventorySearchResponse'
        '401':
          description: >-
            Authentication failed. Returned when the `x-rr-apikey` or
            `x-rr-apitoken` header is missing or invalid. The body uses the
            standard `ApiResponse` envelope with `meta.error.message` describing
            the auth failure.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
      security:
        - ApiKey: []
          ApiToken: []
      servers:
        - url: https://api.returnshelper.com/uat/user
          description: Sandbox — User API
components:
  schemas:
    SkuInventorySearchResponse:
      type: object
      description: >-
        Cursor-paginated list of SKU inventory records. The business payload
        (`nextCursor`, `previousCursor`, `data`) is returned as top-level fields
        alongside the standard `correlationId` and `meta` envelope.
      properties:
        nextCursor:
          type:
            - string
            - 'null'
          description: >-
            Cursor token for the next page, or `null` when there is no next
            page. Pass it back as `cursor` with `isForward=true` to page
            forward.
        previousCursor:
          type:
            - string
            - 'null'
          description: >-
            Cursor token for the previous page, or `null` when there is no
            previous page.
        data:
          type: array
          items:
            $ref: '#/components/schemas/SkuInventoryItem'
          description: SKU inventory records for the current page
    ApiResponse:
      type: object
      description: >-
        Universal response envelope. Successful responses include the business
        payload as additional top-level fields alongside `correlationId` and
        `meta`. Failed responses (auth errors, validation errors) only populate
        `correlationId` and `meta`, with `meta.errorCode` and `meta.error`
        describing the failure.
      properties:
        correlationId:
          type:
            - string
            - 'null'
          description: >-
            Unique correlation ID for tracing the request through Return Helper
            systems.
        meta:
          $ref: '#/components/schemas/ApiResponseMeta'
    SkuInventoryItem:
      type: object
      description: >-
        A single warehouse-scoped SKU inventory row. The same SKU held in more
        than one warehouse is returned as separate rows (one per warehouse).
      properties:
        sku:
          type: string
          description: Stock keeping unit (SKU) identifier.
        warehouseId:
          type: integer
          format: int32
          description: >-
            Identifier of the warehouse that holds this SKU. Rows are keyed by
            warehouse and SKU together.
        quantity:
          type: integer
          description: Total inventory quantity for this SKU in this warehouse.
        availableQuantity:
          type: integer
          description: >-
            Quantity currently available for resend for this SKU in this
            warehouse, derived from each underlying return inventory record's
            `handlingStatusCode`. Always less than or equal to `quantity`. This
            is a summary figure for an early availability check, not a
            reservation — see the Create resend by SKU page for how allocation
            is finalised.
        modifyOn:
          type: string
          format: date-time
          description: >-
            Timestamp of the most recent inventory change for this warehouse-SKU
            row (ISO 8601, UTC).
    ApiResponseMeta:
      type: object
      description: >-
        Application-level metadata for every API response. Inspect `status` and
        `errorCode` to detect soft-error responses (validation failures arrive
        as HTTP 200 with `meta.status: 400`).
      properties:
        status:
          type: integer
          description: >-
            Application-level status code. For successful operations this
            mirrors the HTTP status (e.g. 200). For validation failures it
            reports the logical status (e.g. 400) even though the wire HTTP
            status is 200.
        data:
          type: object
          additionalProperties:
            type: string
          description: Reserved free-form metadata key/value pairs. Usually empty.
        errorCode:
          type:
            - string
            - 'null'
          description: >-
            Machine-readable error code (e.g. `VALIDATION_FAILED`). Non-null
            only when the operation failed.
        error:
          type: object
          additionalProperties: true
          description: >-
            Field-level or message-level error detail keyed by request property
            name. Empty object on success.
  securitySchemes:
    ApiKey:
      type: apiKey
      in: header
      name: x-rr-apikey
      description: Your API key
    ApiToken:
      type: apiKey
      in: header
      name: x-rr-apitoken
      description: Your API token — keep this private

````