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

#     Get All Inventory Levels Grouped By Fulfillment Center


GET https://api.shipbob.com/2026-07/inventory-level/locations

    Retrieves inventory levels for all inventory items grouped by fulfillment center location. Supports filtering by location type, location ID, and various product attributes. Returns inventory quantities broken down by fulfillment center location; it does not return the list of fulfillment centers. For the physical location list use the Locations API, and for receiving-eligible fulfillment centers use the Receiving API's fulfillment centers endpoint.


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

## Authentication

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

## Servers

- `https://api.shipbob.com` (https://api.shipbob.com, default)
- `https://sandbox-api.shipbob.com` (https://sandbox-api.shipbob.com)

## Request

### Query parameters

- `LocationType` (string, optional)
- `LocationId` (integer, optional)
- `SearchBy` (string, optional)
- `InventoryIds` (list of integer, optional)
- `IsActive` (boolean, optional)
- `IsDigital` (boolean, optional)
- `PageSize` (integer, optional)
- `SortBy` (string, optional)

## Response

### 200

OK

- `first` (string, optional, nullable)
- `items` (list of Inventory.InventoryQuantityFcV4Response, optional, nullable)
- `last` (string, optional, nullable)
- `next` (string, optional, nullable)
- `prev` (string, optional, nullable)

## Errors

### 400 Bad Request Error

Bad Request

- `detail` (string, optional, nullable) — A human-readable explanation specific to this occurrence of the problem.
- `instance` (string, optional, nullable) — A URI reference that identifies the specific occurrence of the problem. It may or may not yield further information if dereferenced.
- `status` (integer, optional, nullable) — The HTTP status code for this occurrence of the problem.
- `title` (string, optional, nullable) — A short, human-readable summary of the problem type.
- `type` (string, optional, nullable) — A URI reference that identifies the problem type. This URI should provide human-readable documentation for the problem.

### 401 Unauthorized Error

Unauthorized

- `detail` (string, optional, nullable) — A human-readable explanation specific to this occurrence of the problem.
- `instance` (string, optional, nullable) — A URI reference that identifies the specific occurrence of the problem. It may or may not yield further information if dereferenced.
- `status` (integer, optional, nullable) — The HTTP status code for this occurrence of the problem.
- `title` (string, optional, nullable) — A short, human-readable summary of the problem type.
- `type` (string, optional, nullable) — A URI reference that identifies the problem type. This URI should provide human-readable documentation for the problem.

### 403 Forbidden Error

Forbidden

- `detail` (string, optional, nullable) — A human-readable explanation specific to this occurrence of the problem.
- `instance` (string, optional, nullable) — A URI reference that identifies the specific occurrence of the problem. It may or may not yield further information if dereferenced.
- `status` (integer, optional, nullable) — The HTTP status code for this occurrence of the problem.
- `title` (string, optional, nullable) — A short, human-readable summary of the problem type.
- `type` (string, optional, nullable) — A URI reference that identifies the problem type. This URI should provide human-readable documentation for the problem.

### 500 Internal Server Error

Internal Server Error

- `any`

### 503 Service Unavailable Error

Service Unavailable

- `any`

## Types

### Inventory.InventoryQuantityFcV4Response

- `inventory_id` (integer, optional)
- `locations` (list of Inventory.FulfillmentCenterV4Response, optional, nullable)
- `name` (string, optional, nullable)
- `sku` (string, optional, nullable)

### Inventory.FulfillmentCenterV4Response

- `awaiting_quantity` (integer, optional)
- `committed_quantity` (integer, optional)
- `damaged_quantity` (integer, optional)
- `exception_quantity` (integer, optional)
- `fulfillable_quantity` (integer, optional)
- `in_fulfillment_quantity` (integer, optional)
- `internal_transfer_quantity` (integer, optional)
- `location_id` (integer, optional)
- `name` (string, optional, nullable)
- `on_hand_quantity` (integer, optional)
- `quarantine_quantity` (integer, optional)

## Examples

**Response**

```json
{
  "first": "string",
  "items": [
    {
      "inventory_id": 0,
      "locations": [
        {
          "awaiting_quantity": 0,
          "committed_quantity": 0,
          "damaged_quantity": 0,
          "exception_quantity": 0,
          "fulfillable_quantity": 0,
          "in_fulfillment_quantity": 0,
          "internal_transfer_quantity": 0,
          "location_id": 0,
          "name": "string",
          "on_hand_quantity": 0,
          "quarantine_quantity": 0
        }
      ],
      "name": "string",
      "sku": "string"
    }
  ],
  "last": "string",
  "next": "string",
  "prev": "string"
}
```

**SDK Code**

```python default
import requests

url = "https://api.shipbob.com/2026-07/inventory-level/locations"

querystring = {"LocationType":"string","SearchBy":"string","InventoryIds":"[0]","IsActive":"true","IsDigital":"true","SortBy":"string"}

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

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

print(response.json())
```

```javascript default
const url = 'https://api.shipbob.com/2026-07/inventory-level/locations?LocationType=string&SearchBy=string&InventoryIds=%5B0%5D&IsActive=true&IsDigital=true&SortBy=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://api.shipbob.com/2026-07/inventory-level/locations?LocationType=string&SearchBy=string&InventoryIds=%5B0%5D&IsActive=true&IsDigital=true&SortBy=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://api.shipbob.com/2026-07/inventory-level/locations?LocationType=string&SearchBy=string&InventoryIds=%5B0%5D&IsActive=true&IsDigital=true&SortBy=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://api.shipbob.com/2026-07/inventory-level/locations?LocationType=string&SearchBy=string&InventoryIds=%5B0%5D&IsActive=true&IsDigital=true&SortBy=string")
  .header("Authorization", "Bearer <token>")
  .asString();
```

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

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.shipbob.com/2026-07/inventory-level/locations?LocationType=string&SearchBy=string&InventoryIds=%5B0%5D&IsActive=true&IsDigital=true&SortBy=string', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

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

```csharp default
using RestSharp;

var client = new RestClient("https://api.shipbob.com/2026-07/inventory-level/locations?LocationType=string&SearchBy=string&InventoryIds=%5B0%5D&IsActive=true&IsDigital=true&SortBy=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://api.shipbob.com/2026-07/inventory-level/locations?LocationType=string&SearchBy=string&InventoryIds=%5B0%5D&IsActive=true&IsDigital=true&SortBy=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()
```