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

# Release related Lots still quarantined with Lot

> Releases the related lots still quarantined with a lot that was released on its own (without
`release_cascaded`), as the Admin UI **Release Related Lots** button does. Every quarantine
the lot started that still holds related lots releases the holds it placed on them, with
their location holds in every warehouse, and ends, in one transaction. The lot's own holds
are not changed, also when another quarantine that covers the lot holds it again; use
`POST /v1/inventory/holds/lot/{lot_id}/release` with `release_cascaded=true` to release the
lot and its related lots together.

Related lots that are held for another reason as well — their own older hold, or the
`Expired` hold of the nightly expiry check — keep that hold, leave the quarantine and are
listed in `left_related_lot_ids`; this also ends a quarantine whose related lots are all held
as `Expired`. A related lot that another open quarantine still covers moves into that
quarantine's hold and is listed in `requarantined_lot_ids` as well as in `released_lot_ids`.

`GET /v1/inventory/holds/lot/{lot_id}` lists the lots this call releases in
`still_quarantined_lot_ids`. A lot that has none answers 200 with empty lists, so the call can
be repeated safely. While the lot is in a newer quarantine of its own (it was quarantined
again), the call returns 422: release that quarantine first.



## OpenAPI

````yaml POST /v1/inventory/holds/lot/{lot_id}/release-related-lots
openapi: 3.0.3
info:
  title: ShipStream
  version: '1.0'
  license:
    name: Commercial (Copyright 2025 - All Rights Reserved)
    url: https://shipstream.io
  contact:
    name: ShipStream Support
    email: help@shipstream.io
  termsOfService: https://shipstream.io/legal/api-terms/
servers:
  - url: https://{base_url_domain}/api/global
    description: Direct API Url
    variables:
      base_url_domain:
        default: example.shipstream.app
        description: >-
          The fully qualified domain name for your ShipStream WMS instance. This
          is either a custom domain, or a subdomain of shipstream.app,

          and will be the same as the domain name for the page which you use to
          login to ShipStream WMS.
security:
  - ShipStream_bearerAuth: []
tags:
  - name: Warehouses
    x-displayName: Warehouses
  - name: Products
    x-displayName: Products
  - name: ProductProfiles
    x-displayName: ProductProfiles
  - name: HandlingClasses
    x-displayName: HandlingClasses
  - name: Locations
    x-displayName: Locations
  - name: LocationOccupancies
    x-displayName: LocationOccupancies
  - name: LocationTags
    x-displayName: LocationTags
  - name: SlotTypes
    x-displayName: SlotTypes
  - name: Levels
    x-displayName: Levels
  - name: HoldReasons
    x-displayName: HoldReasons
  - name: Holds
    x-displayName: Holds
  - name: Replenishment
    x-displayName: Replenishment
  - name: LocationProfiles
    x-displayName: LocationProfiles
  - name: SlottingRules
    x-displayName: SlottingRules
  - name: PickingBatches
    x-displayName: PickingBatches
  - name: Deliveries
    description: Every thing about a Delivery Receiving
    x-displayName: Deliveries
  - name: Shipments
    x-displayName: Shipments
  - name: Orders
    x-displayName: Orders
  - name: Retailers
    x-displayName: Retailers
  - name: Users
    x-displayName: Users
  - name: User Roles
    x-displayName: User Roles
  - name: Merchants
    x-displayName: Merchants
  - name: Healthcheck
    x-displayName: Healthcheck
paths:
  /v1/inventory/holds/lot/{lot_id}/release-related-lots:
    post:
      tags:
        - Holds
      summary: Release related Lots still quarantined with Lot
      description: >-
        Releases the related lots still quarantined with a lot that was released
        on its own (without

        `release_cascaded`), as the Admin UI **Release Related Lots** button
        does. Every quarantine

        the lot started that still holds related lots releases the holds it
        placed on them, with

        their location holds in every warehouse, and ends, in one transaction.
        The lot's own holds

        are not changed, also when another quarantine that covers the lot holds
        it again; use

        `POST /v1/inventory/holds/lot/{lot_id}/release` with
        `release_cascaded=true` to release the

        lot and its related lots together.


        Related lots that are held for another reason as well — their own older
        hold, or the

        `Expired` hold of the nightly expiry check — keep that hold, leave the
        quarantine and are

        listed in `left_related_lot_ids`; this also ends a quarantine whose
        related lots are all held

        as `Expired`. A related lot that another open quarantine still covers
        moves into that

        quarantine's hold and is listed in `requarantined_lot_ids` as well as in
        `released_lot_ids`.


        `GET /v1/inventory/holds/lot/{lot_id}` lists the lots this call releases
        in

        `still_quarantined_lot_ids`. A lot that has none answers 200 with empty
        lists, so the call can

        be repeated safely. While the lot is in a newer quarantine of its own
        (it was quarantined

        again), the call returns 422: release that quarantine first.
      operationId: releaseRelatedLots
      parameters:
        - name: lot_id
          in: path
          required: true
          schema:
            type: integer
            format: int64
          description: Lot that was released on its own.
      requestBody:
        required: false
        description: Empty object `{}`.
        content:
          application/json:
            schema:
              type: object
              additionalProperties: false
      responses:
        '200':
          description: Release outcome.
          content:
            application/json:
              schema:
                type: object
                properties:
                  lot_id:
                    type: integer
                    format: int64
                    description: Lot whose related lots were targeted by this call.
                  released_hold_ids:
                    type: array
                    description: >-
                      Hold IDs newly released by this call. Empty when nothing
                      was released.
                    items:
                      type: integer
                      format: int64
                  released_lot_ids:
                    type: array
                    description: Related lots whose quarantine holds this call released.
                    items:
                      type: integer
                      format: int64
                  requarantined_lot_ids:
                    type: array
                    description: >
                      Lots of `released_lot_ids` that stay quarantined: another
                      open quarantine still

                      covers them, so they moved into it, held with that
                      quarantine's reason. Empty when

                      no lot moved.
                    items:
                      type: integer
                      format: int64
                  left_related_lot_ids:
                    type: array
                    description: >
                      Related lots that left the quarantine while they keep
                      another hold (their

                      `Expired` hold or their own older hold).
                    items:
                      type: integer
                      format: int64
                required:
                  - lot_id
                  - released_hold_ids
                  - released_lot_ids
                  - requarantined_lot_ids
                  - left_related_lot_ids
        '404':
          $ref: '#/components/responses/Inventory_API_v1_404-not-found'
        '422':
          $ref: '#/components/responses/Inventory_API_v1_422-unprocessable'
          description: >-
            The related lots could not be released and nothing was released —
            see error body for details. The request can be repeated when the lot
            changed while it was running; a lot that was quarantined again needs
            that quarantine released first.
        '500':
          $ref: '#/components/responses/Inventory_API_v1_500-internal-server-error'
components:
  responses:
    Inventory_API_v1_404-not-found:
      description: >-
        The requested resource was not found. It may have been deleted, it may
        have never existed, or you may not have permission to view it.
      content:
        application/json:
          schema:
            type: object
            properties:
              errors:
                type: array
                items:
                  type: object
                  properties:
                    type:
                      type: string
                      description: The error type code.
                      enum:
                        - not_found
                    message:
                      type: string
                      description: An English sentence describing the error type.
                    details:
                      type: array
                      description: >-
                        An array of objects describing which keys are
                        responsible for the error and detailed messages
                        describing why they are not valid.
                      items:
                        type: object
                        properties:
                          key:
                            type: string
                            description: The path to the key which relates to the error.
                          message:
                            type: string
                            description: >-
                              An English sentence describing the details of the
                              error.
                        additionalProperties: false
                  additionalProperties: false
                minItems: 1
            additionalProperties: false
          example:
            errors:
              - type: not_found
                message: The server could not find the requested resource.
    Inventory_API_v1_422-unprocessable:
      description: >-
        There was an error processing the request. See the response body for
        more details.
      content:
        application/json:
          schema:
            type: object
            properties:
              errors:
                type: array
                items:
                  type: object
                  properties:
                    type:
                      type: string
                      description: The error type code.
                      enum:
                        - application
                        - unable_to_process
                    message:
                      type: string
                      description: An English sentence describing the error type.
                    details:
                      type: array
                      description: >-
                        An array of objects describing which keys are
                        responsible for the error and detailed messages
                        describing why they are not valid.
                      items:
                        type: object
                        properties:
                          key:
                            type: string
                            description: The path to the key which relates to the error.
                          message:
                            type: string
                            description: >-
                              An English sentence describing the details of the
                              error.
                        additionalProperties: false
                  additionalProperties: false
                minItems: 1
            additionalProperties: false
          example:
            errors:
              - type: unable_to_process
                message: There was an error processing the request.
    Inventory_API_v1_500-internal-server-error:
      description: >-
        Internal Server Error - Something wrong happened at server side. Contact
        server administrator for more details.
  securitySchemes:
    ShipStream_bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        Generate a JWT access token through a Custom Global Integration and
        provide it with each request in the `Authorization` header prefixed with
        "Bearer" and then a single space.

````

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