Developer Docs

Getting Started
  • Quick Start
  • Getting Started
  • Authentication
API Reference
  • Overview
  • Orders
  • Products
  • Inventory
  • Shipments
  • Customers
  • Returns
  • Tracking
Integrations
  • Shopify
  • WooCommerce
  • BigCommerce
  • Custom API
Webhooks
  • Overview
  • Webhook Events
Resources
  • Rate Limits
  • Error Codes
  • API Playground
  • SDK Libraries
  • Changelog
  • API Status
Support
  • Community
  • GitHub
  • Support
HomeDeveloper HubDocsApi ReferenceInventory
API Reference

Inventory API

Manage inventory levels, track stock movements, reserve inventory, and monitor warehouse locations in real-time.

Endpoints

View all inventory endpoints

Code Examples

Integration code samples

Webhooks

Real-time inventory updates

Endpoints

GET/v1/inventory

Get inventory levels across all SKUs

Query Parameters

skustring (optional)

Filter by specific SKU or SKU pattern

locationstring (optional)

Filter by warehouse location ID

low_stockboolean (optional)

Return only items below reorder threshold

pagenumber (optional, default: 1)

Page number for pagination

limitnumber (optional, default: 50, max: 100)

Number of results per page

Response Example

{
  "success": true,
  "data": [
    {
      "sku": "SUPP-001",
      "name": "Premium Collagen Peptides",
      "available": 1250,
      "reserved": 75,
      "total": 1325,
      "locations": [
        {
          "warehouse_id": "WH-01",
          "location": "A-12-3",
          "quantity": 1325,
          "temperature_zone": "ambient"
        }
      ],
      "reorder_point": 500,
      "status": "in_stock",
      "last_updated": "2025-01-15T10:30:00.000Z"
    }
  ],
  "meta": {
    "pagination": {
      "page": 1,
      "limit": 50,
      "total": 1,
      "total_pages": 1
    }
  }
}
GET/v1/inventory/:sku

Get detailed inventory for a specific SKU

Path Parameters

skustring (required)

Product SKU to retrieve inventory for

Response Example

{
  "success": true,
  "data": {
    "sku": "SMALL-MOL-001",
    "name": "Small Molecule Compound A",
    "available": 450,
    "reserved": 25,
    "total": 475,
    "locations": [
      {
        "warehouse_id": "WH-01",
        "location": "C-05-2",
        "quantity": 475,
        "temperature_zone": "refrigerated",
        "temperature_range": "2-8°C"
      }
    ],
    "reorder_point": 200,
    "status": "in_stock",
    "lot_tracking": true,
    "expiration_tracking": true,
    "lots": [
      {
        "lot_number": "LOT-2025-001",
        "quantity": 475,
        "received_date": "2025-01-10T00:00:00.000Z",
        "expiration_date": "2025-07-10T00:00:00.000Z"
      }
    ]
  }
}
PATCH/v1/inventory/:sku

Adjust inventory levels for a SKU

Request Body

{
  "adjustment": 100,
  "reason": "stock_count",
  "location": "WH-01",
  "notes": "Physical inventory count adjustment"
}

Response Example

{
  "success": true,
  "data": {
    "sku": "SUPP-001",
    "previous_quantity": 1250,
    "adjustment": 100,
    "new_quantity": 1350,
    "reason": "stock_count",
    "adjusted_at": "2025-01-15T14:30:00.000Z",
    "adjusted_by": "user_12345"
  }
}
POST/v1/inventory/reserve

Reserve inventory for an order

Request Body

{
  "order_id": "ORDER-12345",
  "items": [
    {
      "sku": "SUPP-001",
      "quantity": 2
    }
  ],
  "expires_at": "2025-01-16T14:30:00.000Z"
}

Response Example

{
  "success": true,
  "data": {
    "reservation_id": "RES-789012",
    "order_id": "ORDER-12345",
    "items": [
      {
        "sku": "SUPP-001",
        "quantity": 2,
        "reserved_from": "WH-01"
      }
    ],
    "expires_at": "2025-01-16T14:30:00.000Z",
    "created_at": "2025-01-15T14:30:00.000Z"
  }
}
POST/v1/inventory/release

Release a previously reserved inventory

Request Body

{
  "reservation_id": "RES-789012"
}

Response Example

{
  "success": true,
  "data": {
    "reservation_id": "RES-789012",
    "status": "released",
    "released_at": "2025-01-15T15:00:00.000Z"
  }
}
GET/v1/inventory/locations

Get all warehouse locations with inventory

Response Example

{
  "success": true,
  "data": [
    {
      "warehouse_id": "WH-01",
      "name": "Primary Fulfillment Center",
      "location_zones": [
        {
          "zone_id": "A-12",
          "temperature_zone": "ambient",
          "capacity": 5000
        },
        {
          "zone_id": "C-05",
          "temperature_zone": "refrigerated",
          "temperature_range": "2-8°C",
          "capacity": 1000
        }
      ]
    }
  ]
}
GET/v1/inventory/movements

Get inventory movement history

Query Parameters

skustring (optional)

Filter by specific SKU

typestring (optional)

Filter by movement type (adjustment, transfer, sale, return)

pagenumber (optional, default: 1)

Page number for pagination

limitnumber (optional, default: 50, max: 100)

Number of results per page

Response Example

{
  "success": true,
  "data": [
    {
      "id": "MOV-123456",
      "sku": "SUPP-001",
      "type": "adjustment",
      "quantity": 100,
      "from_location": null,
      "to_location": "A-12-3",
      "reason": "stock_count",
      "created_at": "2025-01-15T14:30:00.000Z"
    }
  ],
  "meta": {
    "pagination": {
      "page": 1,
      "limit": 50,
      "total": 1,
      "total_pages": 1
    }
  }
}

Code Examples

cURL
curl https://app.3plship.com/api/v1/inventory \
  -H "Authorization: Bearer zl_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json"
Python
import requests

response = requests.get(
  'https://app.3plship.com/api/v1/inventory',
  headers={
    'Authorization': 'Bearer zl_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
  }
)
inventory = response.json()
JavaScript
const response = await fetch(
  'https://app.3plship.com/api/v1/inventory',
  {
    headers: {
      'Authorization': 'Bearer zl_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
    }
  }
);
const inventory = await response.json();
PHP
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 
  'https://app.3plship.com/api/v1/inventory');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
  'Authorization: Bearer zl_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
]);
$response = curl_exec($ch);

Related Webhooks

inventory.updated

Triggered when inventory levels change

inventory.low_stock

Triggered when inventory falls below reorder point

Ready to Get Started?

Integrate inventory management into your application today

Try in PlaygroundView Quickstart