API Reference
Products
Manage retail products and inventory for a business: the items sold at the till, attached to invoices, or listed online. Inventory adjustments are tracked so you can keep stock in sync from your own systems.
Scope and plan
Reads require
products:read, mutations require products:write. API keys are available on the PRO and ENTERPRISE plans.List products
GET
/businesses/{businessId}/productsproducts:readPRO plan
Query parameters
curl "https://api.salonify.eu/api/v1/businesses/b_8f3a/products?limit=20" \
-H "X-API-Key: sk_live_..."Response
{
"data": [
{
"id": "pr_551",
"name": "Hair Wax Matte Finish",
"sku": "HW-MATTE-100",
"ean": "5901234123457",
"sellingPrice": 18.99,
"purchasePrice": 8.5,
"vatPercent": 17,
"trackInventory": true,
"stockQuantity": 50,
"lowStockAlert": 5,
"isForSale": true,
"status": "ACTIVE"
}
],
"meta": { "total": 64, "page": 1, "limit": 20, "totalPages": 4 }
}List low-stock products
GET
/businesses/{businessId}/products/low-stockproducts:readPRO plan
Returns inventory-tracked products at or below their lowStockAlert threshold.
curl "https://api.salonify.eu/api/v1/businesses/b_8f3a/products/low-stock" \
-H "X-API-Key: sk_live_..."Response
[
{ "id": "pr_551", "name": "Hair Wax Matte Finish", "stockQuantity": 3, "lowStockAlert": 5 }
]Retrieve a product
GET
/businesses/{businessId}/products/{productId}products:readPRO plan
Path parameters
curl "https://api.salonify.eu/api/v1/businesses/b_8f3a/products/pr_551" \
-H "X-API-Key: sk_live_..."Response
{
"id": "pr_551",
"name": "Hair Wax Matte Finish",
"description": "Professional hair wax, 100ml",
"sku": "HW-MATTE-100",
"sellingPrice": 18.99,
"stockQuantity": 50,
"status": "ACTIVE"
}Create a product
POST
/businesses/{businessId}/productsproducts:writePRO plan
Idempotency
Pass an
Idempotency-Key header to safely retry a create without risk of a duplicate product.Body parameters
Request
curl -X POST "https://api.salonify.eu/api/v1/businesses/b_8f3a/products" \
-H "X-API-Key: sk_live_..." \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 8b21..." \
-d '{
"name": "Hair Wax Matte Finish",
"sellingPrice": 18.99,
"sku": "HW-MATTE-100",
"trackInventory": true,
"stockQuantity": 50
}'Response
{
"id": "pr_902",
"name": "Hair Wax Matte Finish",
"sellingPrice": 18.99,
"sku": "HW-MATTE-100",
"stockQuantity": 50,
"status": "ACTIVE"
}Update a product
PATCH
/businesses/{businessId}/products/{productId}products:writePRO plan
All create fields are accepted and optional.
curl -X PATCH "https://api.salonify.eu/api/v1/businesses/b_8f3a/products/pr_902" \
-H "X-API-Key: sk_live_..." \
-H "Content-Type: application/json" \
-d '{ "sellingPrice": 19.99 }'Response
{ "id": "pr_902", "name": "Hair Wax Matte Finish", "sellingPrice": 19.99 }Adjust inventory
POST
/businesses/{businessId}/products/{productId}/inventoryproducts:writePRO plan
Body parameters
curl -X POST "https://api.salonify.eu/api/v1/businesses/b_8f3a/products/pr_902/inventory" \
-H "X-API-Key: sk_live_..." \
-H "Content-Type: application/json" \
-d '{ "changeQty": 10, "reason": "Restocked from supplier" }'Response
{ "id": "pr_902", "stockQuantity": 60, "changeQty": 10 }Delete a product
DELETE
/businesses/{businessId}/products/{productId}products:writePRO plan
Soft-deletes the product. Returns 204 No Content.
curl -X DELETE "https://api.salonify.eu/api/v1/businesses/b_8f3a/products/pr_902" \
-H "X-API-Key: sk_live_..."