Skip to main content

Product Inventory

Manage inventory items for a product. Inventory tracking enables you to track individual units of stock and their availability.

Inventory Tracking Modesโ€‹

Products can have different inventory tracking modes:

ModeDescription
noneNo inventory tracking
groupTrack total quantity as a group
itemTrack individual items with unique identifiers

Endpointsโ€‹

MethodEndpointDescription
GET/v1/products/{id}/inventoryList inventory
GET/v1/products/{id}/inventory/{inventoryId}Get inventory item
POST/v1/products/{id}/inventoryAdd inventory
PATCH/v1/products/{id}/inventory/{inventoryId}Update inventory
DELETE/v1/products/{id}/inventory/{inventoryId}Delete inventory

Authenticationโ€‹

All inventory endpoints require an API key with products:read scope for GET requests, and products:write scope for POST/PATCH/DELETE requests.

Inventory Statusโ€‹

Inventory items can have three statuses based on their availability dates:

StatusDescription
currentAvailable now (no available_from or it's in the past, and no available_until or it's in the future)
expectedNot yet available (available_from is in the future)
expiredNo longer available (available_until is in the past)

Common Patternsโ€‹

Group Inventory (Simple Stock Count)โ€‹

For products where you just need to track total quantity:

curl -X POST ".../products/1/inventory" \
-d '{"total_quantity": 10}'

Item-Level Inventory (Individual Tracking)โ€‹

For products where each unit is tracked separately:

curl -X POST ".../products/1/inventory" \
-d '{"identifier": "Bike #1", "unique_identifier": "SN-001", "total_quantity": 1}'

curl -X POST ".../products/1/inventory" \
-d '{"identifier": "Bike #2", "unique_identifier": "SN-002", "total_quantity": 1}'

Seasonal Inventoryโ€‹

For equipment only available during certain periods:

curl -X POST ".../products/1/inventory" \
-d '{
"identifier": "Summer Kayak",
"total_quantity": 1,
"available_from": "2026-05-01T00:00:00Z",
"available_until": "2026-09-30T23:59:59Z"
}'

Notesโ€‹

  • Inventory tracking must be enabled on the product (inventory_tracking != none)
  • The increment field is auto-generated and represents the sequence number
  • Deleted inventory items are soft-deleted (marked as deleted, not removed)
  • When checking availability, only current status items are considered