> ## 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.

# Create recall by return inventory IDs

Creates a recall request for one or more return inventory items already received at a warehouse. A recall ships the items back out from the warehouse to a our Hong Kong warehouse.

## Prerequisites

* The target inventory items must already exist in your account. The `returnInventoryId` values come from the `newInventoryCreated` webhook event — your integration should cache them on your side as parcels are logged at the warehouse.
* Each inventory's current `handlingStatusCode` must be reachable from the recall transition (`Handling.rtn`) per the handling state machine — typically items in `pending` or `ohd` status are eligible.
* None of the items can already have an active (non-cancelled) recall.
* None of the items' line items can have pending VAS requests — resolve those first.

## Required fields

* **`returnInventoryIdList`** — non-empty `List<long>`.

## Side effects

* Each inventory's `handlingCode` is set to `rtn`.
* The RMA mapping for each inventory is locked to prevent swap operations.
* Recall fulfilment is asynchronous; status updates flow via webhook (`recallShipmentDispatched`, `recallDelivered`, etc.).

## Related

* [Create recall order](/api-reference/recall/create-recall-order) — the legacy non-batch version that takes the recall payload directly. New integrations should prefer this batch endpoint.
* [Cancel recall by return inventory ID](/api-reference/recall/cancel-recall-by-return-inventory-id) — undo a recall before the warehouse fulfils it.
* [Get all recall inventory statuses](/api-reference/recallstatus/get-all-recall-inventory-statuses) — code-to-label mappings.
* [Webhooks](/webhooks) — `recallUpdateStatus` and the recall lifecycle events deliver progress to your endpoint.


## OpenAPI

````yaml post /api/Recall/createRecallByReturnInventoryId
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/Recall/createRecallByReturnInventoryId:
    post:
      tags:
        - Recall
      summary: Create recall by return inventory IDs
      operationId: ReturnUserApi_CreateRecallByReturnInventoryId
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateRecallByReturnInventoryIdListRequest'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/CreateRecallByReturnInventoryIdListResponse
        '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:
    CreateRecallByReturnInventoryIdListRequest:
      type: object
      properties:
        returnInventoryIdList:
          type: array
          items:
            type: integer
            format: int64
          description: List of return inventory IDs
      required:
        - returnInventoryIdList
    CreateRecallByReturnInventoryIdListResponse:
      type: object
      properties:
        recallList:
          type: array
          items:
            $ref: '#/components/schemas/CreateRecallPayload'
          description: List of created recalls
    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'
    CreateRecallPayload:
      type: object
      properties:
        apiId:
          type: integer
          format: int32
        recallId:
          type: integer
          format: int64
        warehouseId:
          type: integer
          format: int32
        recallNumber:
          type:
            - string
            - 'null'
        recallStatusCode:
          type: string
          description: Recall status code
        warehouseRemarks:
          type:
            - string
            - 'null'
        recallInventoryList:
          type: array
          items:
            type: object
            description: '(see source: RecallInventoryPayload)'
    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

````