API Reference

Services

Manage the catalog a business offers: categories, services, and their variants. Services are the building blocks customers book. All routes are scoped to the business that owns the key.

Scope and plan

Reads require services:read, mutations require services:write. API keys are available on the PRO and ENTERPRISE plans. Deletes are soft deletes.

List services

GET/businesses/{businessId}/services
services:readPRO plan

Path parameters

NameTypeRequiredDescription
businessIduuidRequiredYour business id.

Query parameters

NameTypeRequiredDescription
categoryIduuidOptionalFilter to a single category.
curl "https://api.salonify.eu/api/v1/businesses/b_8f3a/services" \
  -H "X-API-Key: sk_live_..."
[
  {
    "id": "sv_77",
    "name": "Women's Cut",
    "description": "Wash, cut and blow-dry",
    "categoryId": "sc_12",
    "price": 45,
    "duration": 60,
    "isActive": true,
    "order": 0,
    "variants": [
      { "id": "vr_1", "name": "Short hair", "price": 45, "duration": 60 },
      { "id": "vr_2", "name": "Long hair", "price": 55, "duration": 75 }
    ]
  }
]

Retrieve a service

GET/businesses/{businessId}/services/{serviceId}
services:readPRO plan

Path parameters

NameTypeRequiredDescription
businessIduuidRequiredYour business id.
serviceIduuidRequiredThe service id.
curl "https://api.salonify.eu/api/v1/businesses/b_8f3a/services/sv_77" \
  -H "X-API-Key: sk_live_..."
{
  "id": "sv_77",
  "name": "Women's Cut",
  "price": 45,
  "duration": 60,
  "categoryId": "sc_12",
  "isActive": true,
  "variants": [],
  "addons": []
}

Create a service

POST/businesses/{businessId}/services
services:writePRO plan

Body parameters

NameTypeRequiredDescription
namestringRequiredService name.
pricenumberRequiredBase price in main currency units.
durationintegerRequiredDuration in minutes.
categoryIduuidOptionalService category to place this service under.
descriptionstringOptionalService description.
isActivebooleanOptionalWhether the service is bookable. Defaults to true.
curl -X POST "https://api.salonify.eu/api/v1/businesses/b_8f3a/services" \
  -H "X-API-Key: sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Men's Cut",
    "price": 30,
    "duration": 30,
    "categoryId": "sc_12"
  }'
{
  "id": "sv_91",
  "name": "Men's Cut",
  "price": 30,
  "duration": 30,
  "categoryId": "sc_12",
  "isActive": true,
  "order": 4
}

Update a service

PATCH/businesses/{businessId}/services/{serviceId}
services:writePRO plan

Body parameters

NameTypeRequiredDescription
namestringOptionalNew name.
pricenumberOptionalNew base price.
durationintegerOptionalNew duration in minutes.
isActivebooleanOptionalActivate or hide the service.
curl -X PATCH "https://api.salonify.eu/api/v1/businesses/b_8f3a/services/sv_91" \
  -H "X-API-Key: sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{ "price": 32 }'
{ "id": "sv_91", "name": "Men's Cut", "price": 32, "duration": 30 }

Delete a service

DELETE/businesses/{businessId}/services/{serviceId}
services:writePRO plan

Soft-deletes the service. It stops appearing in the catalog but historical bookings keep their service snapshot. Returns 204 No Content.

curl -X DELETE "https://api.salonify.eu/api/v1/businesses/b_8f3a/services/sv_91" \
  -H "X-API-Key: sk_live_..."

Categories, variants, and add-ons

Service categories (/services/categories), variants (/services/{serviceId}/variants) and add-ons (/services/{serviceId}/addons) follow the same GET / POST / PATCH / DELETE shape and the same services:read / services:write scopes.