For clean Markdown of any page, append .md to the page URL. For a complete documentation index, see https://developer.shipbob.com/api/inventory/llms.txt. For full documentation content, see https://developer.shipbob.com/api/inventory/llms-full.txt.

# Get All Inventory Levels Grouped By Lot

GET https://api.shipbob.com/2026-01/inventory-level/lots

Retrieves inventory levels for all inventory items grouped by lot number. Enables tracking of inventory across multiple lots, including expiration dates and manufacturing batch information.

Reference: https://developer.shipbob.com/api/inventory/get-all-inventory-levels-grouped-by-lot

## OpenAPI Specification

```yaml
openapi: 3.1.0
info:
  title: api-2026-01
  version: 1.0.0
paths:
  /2026-01/inventory-level/lots:
    get:
      operationId: get-all-inventory-levels-grouped-by-lot
      summary: Get All Inventory Levels Grouped By Lot
      description: >-
        Retrieves inventory levels for all inventory items grouped by lot
        number. Enables tracking of inventory across multiple lots, including
        expiration dates and manufacturing batch information.
      tags:
        - subpackage_inventory
      parameters:
        - name: LocationId
          in: query
          description: >-
            Filter by specific fulfillment center location ID. Use this to
            retrieve lot-based inventory levels for a particular warehouse or
            distribution center.
          required: false
          schema:
            type: string
            format: int32
        - name: SearchBy
          in: query
          description: >-
            Search is available for 3 fields: Inventory ID, Name, and SKU.
            Expected behavior for search by Inventory ID is exact match.
            Expected behavior for search by Inventory Name or SKU is partial
            match (consecutive characters, case insensitive).
          required: false
          schema:
            type: string
        - name: InventoryIds
          in: query
          description: >-
            Comma-separated list of inventory IDs to filter results. Use this to
            retrieve lot-grouped inventory levels for specific inventory items
            only.
          required: false
          schema:
            type: string
        - name: IsActive
          in: query
          description: >-
            Filter inventory levels by active status. Set to true to return only
            active inventory items, false for inactive items. Omit to return all
            items regardless of status.
          required: false
          schema:
            type: boolean
        - name: IsDigital
          in: query
          description: >-
            Filter inventory levels by digital product status. Set to true to
            return only digital products, false for physical products. Digital
            products are items that don't require physical fulfillment.
          required: false
          schema:
            type: boolean
        - name: PageSize
          in: query
          description: >-
            Number of lot-grouped inventory level items to return per page.
            Controls pagination size for the response.
          required: false
          schema:
            type: string
            format: int32
        - name: SortBy
          in: query
          description: >-
            Sort results by field name. Default is ascending order. Prefix with
            '-' for descending order (e.g., '-lot_date' sorts by lot date
            descending). Multiple fields can be comma-separated.
          required: false
          schema:
            type: string
        - name: Authorization
          in: header
          description: Authentication using Personal Access Token (PAT) token or OAuth2
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/Inventory.InventoryQuantityLotResponsePagedResponse
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Inventory.ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Inventory.ProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Inventory.ProblemDetails'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                description: Any type
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                description: Any type
servers:
  - url: https://api.shipbob.com
  - url: https://sandbox-api.shipbob.com
components:
  schemas:
    Inventory.FulfillableQuantityByFulfillmentCenter:
      type: object
      properties:
        awaiting_quantity:
          type: integer
          description: Quantity expected to arrive at this location
        committed_quantity:
          type: integer
          description: Quantity reserved for existing orders at this location
        fulfillable_quantity:
          type: integer
          description: Quantity available to fulfill new orders at this location
        internal_transfer_quantity:
          type: integer
          description: Quantity in transit to or from this location
        location_id:
          type: integer
          description: Unique identifier for the fulfillment center location
        name:
          type:
            - string
            - 'null'
          description: Name of the fulfillment center
        on_hand_quantity:
          type: integer
          description: Total quantity physically present at this location
      title: Inventory.FulfillableQuantityByFulfillmentCenter
    Inventory.Lots:
      type: object
      properties:
        awaiting_quantity:
          type: integer
          description: Quantity expected to arrive for this lot
        committed_quantity:
          type: integer
          description: Quantity reserved for existing orders from this lot
        fulfillable_quantity:
          type: integer
          description: Quantity available to fulfill new orders for this lot
        internal_transfer_quantity:
          type: integer
          description: Quantity in transit between locations for this lot
        locations:
          type:
            - array
            - 'null'
          items:
            $ref: >-
              #/components/schemas/Inventory.FulfillableQuantityByFulfillmentCenter
          description: Breakdown of lot quantities by fulfillment center location
        lot_date:
          type:
            - string
            - 'null'
          format: date-time
          description: Expiration or manufacturing date associated with this lot
        lot_number:
          type:
            - string
            - 'null'
          description: Unique lot or batch number for this inventory grouping
        on_hand_quantity:
          type: integer
          description: Total quantity physically present for this lot
      title: Inventory.Lots
    Inventory.InventoryQuantityLotResponse:
      type: object
      properties:
        inventory_id:
          type: integer
          description: Unique identifier for the inventory item
        lots:
          type:
            - array
            - 'null'
          items:
            $ref: '#/components/schemas/Inventory.Lots'
          description: List of lot numbers and their respective inventory quantities
        name:
          type:
            - string
            - 'null'
          description: Name of the inventory item
        sku:
          type:
            - string
            - 'null'
          description: Stock keeping unit identifier
      title: Inventory.InventoryQuantityLotResponse
    Inventory.InventoryQuantityLotResponsePagedResponse:
      type: object
      properties:
        first:
          type:
            - string
            - 'null'
          description: >-
            URL to retrieve the first page of results. Null if already on the
            first page.
        items:
          type:
            - array
            - 'null'
          items:
            $ref: '#/components/schemas/Inventory.InventoryQuantityLotResponse'
          description: >-
            Array of lot-grouped inventory quantity items in the current page of
            results.
        last:
          type:
            - string
            - 'null'
          description: >-
            URL to retrieve the last page of results. Null if already on the
            last page.
        next:
          type:
            - string
            - 'null'
          description: URL to retrieve the next page of results. Null if on the last page.
        prev:
          type:
            - string
            - 'null'
          description: >-
            URL to retrieve the previous page of results. Null if on the first
            page.
      title: Inventory.InventoryQuantityLotResponsePagedResponse
    Inventory.ProblemDetails:
      type: object
      properties:
        detail:
          type:
            - string
            - 'null'
          description: >-
            A human-readable explanation specific to this occurrence of the
            problem.
        instance:
          type:
            - string
            - 'null'
          description: >-
            A URI reference that identifies the specific occurrence of the
            problem. It may or may not yield further information if
            dereferenced.
        status:
          type:
            - integer
            - 'null'
          description: The HTTP status code for this occurrence of the problem.
        title:
          type:
            - string
            - 'null'
          description: A short, human-readable summary of the problem type.
        type:
          type:
            - string
            - 'null'
          description: >-
            A URI reference that identifies the problem type. This URI should
            provide human-readable documentation for the problem.
      title: Inventory.ProblemDetails
  securitySchemes:
    PAT:
      type: http
      scheme: bearer
      description: Authentication using Personal Access Token (PAT) token or OAuth2

```

## SDK Code Examples

```python Inventory_getAllInventoryLevelsGroupedByLot_example
import requests

url = "https://api.shipbob.com/2026-01/inventory-level/lots"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript Inventory_getAllInventoryLevelsGroupedByLot_example
const url = 'https://api.shipbob.com/2026-01/inventory-level/lots';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go Inventory_getAllInventoryLevelsGroupedByLot_example
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api.shipbob.com/2026-01/inventory-level/lots"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "Bearer <token>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby Inventory_getAllInventoryLevelsGroupedByLot_example
require 'uri'
require 'net/http'

url = URI("https://api.shipbob.com/2026-01/inventory-level/lots")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
```

```java Inventory_getAllInventoryLevelsGroupedByLot_example
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://api.shipbob.com/2026-01/inventory-level/lots")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php Inventory_getAllInventoryLevelsGroupedByLot_example
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.shipbob.com/2026-01/inventory-level/lots', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

echo $response->getBody();
```

```csharp Inventory_getAllInventoryLevelsGroupedByLot_example
using RestSharp;

var client = new RestClient("https://api.shipbob.com/2026-01/inventory-level/lots");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift Inventory_getAllInventoryLevelsGroupedByLot_example
import Foundation

let headers = ["Authorization": "Bearer <token>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://api.shipbob.com/2026-01/inventory-level/lots")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```