Inventory Management
Inventory Management Guide
This guide explains how to create, update, and delete SKUs using the inventory management endpoint.
Endpoint
POST /inventory
Full URL: https://api.spreetaileu.com/api/api/v1/inventory
Authentication
Use Bearer token authentication:
Authorization: Bearer your-access-token
Get your token from POST /auth/login.
How SKU scoping works
- You send your SKU as plain text, for example
SKU123 - The API stores and manages it in Linnworks as
BRAND_SKU123 BRANDis taken from your authenticated client name- You only see and submit your own SKU, never the brand prefix
This guarantees you can only manage SKUs in your own brand scope.
Operations
Set operation to one of:
createupdatedelete
Each request supports multiple SKUs in one items array.
sku is always required for each item.
Request format
Use the same items array shape for all operations.
If required fields are missing for the selected operation, the response will tell you exactly which fields are required.
{
"operation": "create",
"items": [
{
"sku": "SKU123",
"itemTitle": "Test Product",
"barcodeNumber": "1231231231231",
"height": 34,
"width": 21,
"length": 123,
"weight_kg": 12
}
]
}Operation examples
Create (all fields required)
{
"operation": "create",
"items": [
{
"sku": "SKU123",
"itemTitle": "Test Product",
"barcodeNumber": "1231231231231",
"height": 34,
"width": 21,
"length": 123,
"weight_kg": 12
}
]
}Update (sku + itemTitle required)
sku + itemTitle required){
"operation": "update",
"items": [
{
"sku": "SKU123",
"itemTitle": "Updated Title",
"length": 42,
"weight_kg": 11.5
}
]
}Delete
{
"operation": "delete",
"items": [
{ "sku": "SKU123" },
{ "sku": "SKU124" }
]
}Field notes
lengthmaps to LinnworksDepthweight_kgis in kilograms
Validation and business rules
For every SKU, the API checks Linnworks first.
- If a SKU already exists during create:
SKU already exists, Please use Update operation to change details
- If a SKU exists and has inventory during create:
SKU already exists and with Inventory, please reach out to AM for any changes
- If update/delete is requested for a SKU with inventory:
Can't Update/Delete SKU as we already have inventory, please reach out to AM for any changes.
Delete logging
Delete responses include:
delete_log.deleted- SKUs archived successfullydelete_log.unable_to_delete- SKUs that failed with reason
Typical workflow
- Create SKU(s)
- Use update for metadata changes
- Delete/archive only when no inventory is present
Example response
{
"success": true,
"operation": "delete",
"client": "EMKE",
"processed": 2,
"success_count": 1,
"failed_count": 1,
"results": [
{
"sku": "SKU123",
"status": "success",
"message": "Deleted successfully",
"operation": "delete"
},
{
"sku": "SKU124",
"status": "failed",
"message": "Can't Update/Delete SKU as we already have inventory, please reach out to AM for any changes.",
"operation": "delete"
}
],
"delete_log": {
"deleted": ["SKU123"],
"unable_to_delete": [
{
"sku": "SKU124",
"reason": "Can't Update/Delete SKU as we already have inventory, please reach out to AM for any changes."
}
]
}
}Related docs
Updated about 12 hours ago
