> This page is for version v1.0.
> For other versions, use one of these documentation indexes:
> - 2026-07 (default): https://developer-stage.shipbob.dev/2026-07/llms.txt
> - 2026-01: https://developer-stage.shipbob.dev/2026-01/llms.txt
> - 2025-07: https://developer-stage.shipbob.dev/2025-07/llms.txt
> - v2.0: https://developer-stage.shipbob.dev/v2.0/llms.txt
> - v1.0: https://developer-stage.shipbob.dev/v1.0/llms.txt
> - Experimental: https://developer-stage.shipbob.dev/experimental/llms.txt

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://developer-stage.shipbob.dev/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developer-stage.shipbob.dev/_mcp/server.

# List inventory items


GET https://sandbox-api.shipbob.com/1.0/inventory

Reference: https://developer-stage.shipbob.dev/v1.0/api/inventory/list-inventory-items

## Authentication

- `Authorization` header (bearer token, required) — Authentication using Personal Access Token (PAT) token
- `Authorization` header (bearer token, required) — OAuth2 authentication using JWT tokens

## Request

### Query parameters

- `Page` (integer, optional) — Page of inventory items to get
- `Limit` (integer, optional) — Amount of inventory items per page to request
- `IsActive` (boolean, optional) — Whether the inventory should be active or not
- `IsDigital` (boolean, optional) — Whether the inventory is digital or not
- `IDs` (list of integer, optional) — Comma separated inventory ids to filter by
- `Sort` (string, optional) — Sort will default to ascending order for each field. To sort in descending order please pass a "-" in front of the field name. For example, Sort=-onHand,name will sort by onHand descending
- `Search` (string, optional) — Search is available for 2 fields, Inventory ID and Name - 1. Expected behavior for search by Inventory ID is exact match 2. Expected behavior for search by Inventory Name is partial match, i.e. does not have to be start of word, but must be consecutive characters. This is not case sensitive.
- `LocationType` (string, optional) — LocationType is valid for hub, spoke, or lts. LocationType will default to all locations.

## Response

### 200

Success

- `list of Inventory.InventoryViewModel`

## Errors

### 400 Bad Request Error

Bad Request

- `map from string to list of string`

### 401 Unauthorized Error

Unauthorized

- `any`

### 403 Forbidden Error

Forbidden

- `any`

### 404 Not Found Error

Not Found

- `detail` (string, optional, nullable)
- `instance` (string, optional, nullable)
- `status` (integer, optional, nullable)
- `title` (string, optional, nullable)
- `type` (string, optional, nullable)

## Types

### Inventory.InventoryViewModel

Information about an inventory item

- `dimensions` (Inventory.DimensionViewModel, optional) — Information about an inventory item's dimensions
- `fulfillable_quantity_by_fulfillment_center` (list of Inventory.FulfillmentCenterQuantityViewModel, optional, nullable) — Fulfillable quantity of this inventory item broken down by fulfillment center location
- `fulfillable_quantity_by_lot` (list of Inventory.LotQuantityViewModel, optional, nullable) — Fulfillable quantity of this inventory item broken down by lot
- `id` (integer, optional) — Unique id of the inventory item
- `is_active` (boolean, optional) — Whether the inventory is active or not
- `is_case_pick` (boolean, optional) — True if the inventory item is marked as case pick
- `is_digital` (boolean, optional) — True if the inventory item is marked as a digital item
- `is_lot` (boolean, optional) — True if this inventory item is organized into lots
- `name` (string, optional, nullable) — Name of the inventory item
- `packaging_attribute` (enum, optional)
  - Allowed values: `None`, `Fragile`, `Foldable`, `Stackable`, `Book`, `CustomPackaging`, `CustomDunnage`, `MarketingInsert`, `Poster`
- `total_awaiting_quantity` (integer, optional) — Total quantity in unreceived receiving orders for this inventory item
- `total_backordered_quantity` (integer, optional) — The amount of the item you need to send to ShipBob to fulfill all exception orders containing the item. This is the exception_quantity less the fulfillable_quantity of the item.
- `total_committed_quantity` (integer, optional) — Total committed quantity of this inventory item
- `total_exception_quantity` (integer, optional) — The total quantity of all items that are contained within orders that are in exception/out of stock status. Out of stock orders have not been processed and therefore do not have lot or fulfillment centers assigned.
- `total_fulfillable_quantity` (integer, optional) — Total fulfillable quantity of this inventory item
- `total_internal_transfer_quantity` (integer, optional) — The total quantity of all items that are in the process of internal transit between ShipBob fulfillment centers. These items are not pickable or fulfillable until they have been received and moved to the "On Hand" quantity of the destination FC. Internal transit quantities for each FC represent the incoming transfer stock for that specific location.
- `total_onhand_quantity` (integer, optional) — Total onhand quantity of this inventory item
- `total_sellable_quantity` (integer, optional) — Total quantity that can be sold without overselling the inventory item. This is calculated by subtracting the total exception quantity from the fulfillable quantity.

### Inventory.DimensionViewModel

Information about an inventory item's dimensions

- `depth` (double, optional) — Depth in inches of this inventory item
- `length` (double, optional) — Length in inches of this inventory item
- `weight` (double, optional) — Weight in ounces of this inventory item
- `width` (double, optional) — Width in inches of this inventory item

### Inventory.FulfillmentCenterQuantityViewModel

Break down of fulfillable quantity by fulfillment center

- `awaiting_quantity` (integer, optional) — Amount of quantity awaiting arrival of a receiving order at this fulfillment center
- `committed_quantity` (integer, optional) — Amount of committed quantity at this fulfillment center
- `fulfillable_quantity` (integer, optional) — Amount of fulfillable quantity at this fulfillment center
- `id` (integer, optional) — Unique id of the fulfillment center
- `internal_transfer_quantity` (integer, optional) — The quantity of items that are in the process of internal transit between ShipBob fulfillment centers, with a destination of this fulfillment center. These items are not pickable or fulfillable until they have been received and moved to the "On Hand" quantity of the destination FC.
- `name` (string, optional, nullable) — Name of the fulfillment center
- `onhand_quantity` (integer, optional) — Amount of onhand quantity at this fulfillment center

### Inventory.LotQuantityViewModel

Break down of fulfillable quantity by lot

- `awaiting_quantity` (integer, optional) — Quantity of inventory items belonging to this lot awaiting arrival of a receiving order
- `committed_quantity` (integer, optional) — Committed quantity of inventory items belonging to this lot
- `expiration_date` (datetime, optional, nullable) — Expiration date for this lot
- `fulfillable_quantity` (integer, optional) — Fulfillable quantity of inventory items belonging to this lot
- `fulfillable_quantity_by_fulfillment_center` (list of Inventory.FulfillmentCenterQuantityViewModel, optional, nullable) — Fulfillable quantity of inventory items belonging to this lot broken down by fulfillment center location
- `internal_transfer_quantity` (integer, optional) — The quantity of all items belonging to this lot that are in the process of internal transit between ShipBob fulfillment centers. These items are not pickable or fulfillable until they have been received and moved to the "On Hand" quantity of the destination FC. Internal transit quantities for each FC represent the incoming transfer stock for that specific location.
- `lot_number` (string, optional, nullable) — Identification number of this lot
- `onhand_quantity` (integer, optional) — OnHand quantity of inventory items belonging to this lot

## Examples

**Response**

```json
[
  {
    "dimensions": {
      "depth": 0.1,
      "length": 0.1,
      "weight": 0.1,
      "width": 0.1
    },
    "fulfillable_quantity_by_fulfillment_center": [
      {
        "awaiting_quantity": 0,
        "committed_quantity": 0,
        "fulfillable_quantity": 0,
        "id": 0,
        "internal_transfer_quantity": 0,
        "name": "Cicero",
        "onhand_quantity": 0
      }
    ],
    "fulfillable_quantity_by_lot": [
      {
        "awaiting_quantity": 0,
        "committed_quantity": 0,
        "expiration_date": "2019-08-24T14:15:22+00:00",
        "fulfillable_quantity": 0,
        "fulfillable_quantity_by_fulfillment_center": [
          {
            "awaiting_quantity": 0,
            "committed_quantity": 0,
            "fulfillable_quantity": 0,
            "id": 0,
            "internal_transfer_quantity": 0,
            "name": "Cicero",
            "onhand_quantity": 0
          }
        ],
        "internal_transfer_quantity": 0,
        "lot_number": "1234",
        "onhand_quantity": 0
      }
    ],
    "id": 0,
    "is_active": true,
    "is_case_pick": true,
    "is_digital": true,
    "is_lot": true,
    "name": "Medium Blue T-Shirt",
    "packaging_attribute": "None",
    "total_awaiting_quantity": 0,
    "total_backordered_quantity": 0,
    "total_committed_quantity": 0,
    "total_exception_quantity": 0,
    "total_fulfillable_quantity": 0,
    "total_internal_transfer_quantity": 0,
    "total_onhand_quantity": 0,
    "total_sellable_quantity": 0
  }
]
```

**SDK Code**

```python default
import requests

url = "https://sandbox-api.shipbob.com/1.0/inventory"

querystring = {"Page":"2147483647","Limit":"1","IsActive":"true","IsDigital":"true","IDs":"[0]","Sort":"string","Search":"string","LocationType":"string"}

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

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

print(response.json())
```

```javascript default
const url = 'https://sandbox-api.shipbob.com/1.0/inventory?Page=2147483647&Limit=1&IsActive=true&IsDigital=true&IDs=%5B0%5D&Sort=string&Search=string&LocationType=string';
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 default
package main

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

func main() {

	url := "https://sandbox-api.shipbob.com/1.0/inventory?Page=2147483647&Limit=1&IsActive=true&IsDigital=true&IDs=%5B0%5D&Sort=string&Search=string&LocationType=string"

	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 default
require 'uri'
require 'net/http'

url = URI("https://sandbox-api.shipbob.com/1.0/inventory?Page=2147483647&Limit=1&IsActive=true&IsDigital=true&IDs=%5B0%5D&Sort=string&Search=string&LocationType=string")

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 default
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://sandbox-api.shipbob.com/1.0/inventory?Page=2147483647&Limit=1&IsActive=true&IsDigital=true&IDs=%5B0%5D&Sort=string&Search=string&LocationType=string")
  .header("Authorization", "Bearer <token>")
  .asString();
```

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

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://sandbox-api.shipbob.com/1.0/inventory?Page=2147483647&Limit=1&IsActive=true&IsDigital=true&IDs=%5B0%5D&Sort=string&Search=string&LocationType=string', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

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

```csharp default
using RestSharp;

var client = new RestClient("https://sandbox-api.shipbob.com/1.0/inventory?Page=2147483647&Limit=1&IsActive=true&IsDigital=true&IDs=%5B0%5D&Sort=string&Search=string&LocationType=string");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift default
import Foundation

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

let request = NSMutableURLRequest(url: NSURL(string: "https://sandbox-api.shipbob.com/1.0/inventory?Page=2147483647&Limit=1&IsActive=true&IsDigital=true&IDs=%5B0%5D&Sort=string&Search=string&LocationType=string")! 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()
```