> ## 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-Hant/api-reference/resend/create-resend-by-sku) 會在請求當下對 MySQL 進行具權威性且加鎖的配置。
</Note>

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

* [計算 SKU 庫存筆數](/zh-Hant/api-reference/skuinventory/search-sku-inventory-total-count) — 相同篩選條件下符合的「倉庫-SKU」列總數。
* [以 SKU 建立 Resend](/zh-Hant/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

````