Creates a service in the Location catalog. Link Team Members inline through team_members[] — a service without at least one bookable Team Member link does not appear in availability search. Requires Idempotency-Key.
Service packages (complex services made of multiple simple services) are created through this same operation: send type: package with a package block listing the components.
Client-generated unique key for this logical request (UUID recommended). A retry with the same key and body returns the original result; the same key with a different body fails with 409 idempotency_key_reused. Keys are retained at least 24 hours and are scoped to credential, Location, and operation; after expiry the value may be reused for a new logical request.
- Mock serverhttps://developer.alteg.io/_mock/en/b2b-v3/openapi/locations/{location_id}/services
- Preview resource API contract - endpoint surface is not live yethttps://api.alteg.io/api/v3/locations/{location_id}/services
- OAuth2
- RestrictedKey
- simple
- package
- simple
- package
curl -i -X POST \
'https://developer.alteg.io/_mock/en/b2b-v3/openapi/locations/{location_id}/services' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: string' \
-d '{
"name": "Men'\''s haircut",
"category_id": 205,
"type": "simple",
"duration_seconds": 3600,
"team_members": [
{
"team_member_id": 321
},
{
"team_member_id": 322,
"duration_seconds": 2700,
"price_minor": 300000
}
],
"price_minor": 250000
}'The created service.
Requests left in the most constrained policy window that applies to this request.
On 429, seconds until the most constrained policy frees up; it equals Retry-After there. On a successful response it reports the length of that policy's window rather than the time left in the current one, so treat it as the window size, not as a countdown — the counter to pace against is RateLimit-Remaining.
Most constrained policy applied to the request, as <limit>;w=<window in seconds>.
Version tag of the returned resource. Send it back in If-Match on the next PATCH or DELETE.
Service kind. Immutable after creation (422 field_immutable). A package service bundles several simple services of the same Location; it appears in the same list and is scheduled by the same service_id.
Package settings and components. Present only when type is package.
Derived — true when the service has at least one bookable Team Member link.
Team Members providing this service, with optional per-member overrides.
- A service
- A service package
{ "id": 100, "object": "service", "type": "simple", "name": "Men's haircut", "category_id": 205, "duration_seconds": 3600, "currency": "EUR", "is_bookable": true, "team_members": [ { … }, { … } ], "created_at": "2026-07-01T08:00:00Z", "updated_at": "2026-07-10T09:30:00Z", "price_minor": 250000 }