These calls need the Wix Bookings app on the site (appDefId 13d21c63-b5ec-5912-8397-c3a5ddb27a97); a 428, a 400 naming the app, or an empty result on a site that should have content means it is not there. List Installed Apps shows what the site has; Install Wix Apps adds it by that id.
Below are the recommended steps to successfully configure booking, cancellation, and waitlist policies for Wix Bookings services. This recipe covers policy inheritance, service-specific overrides, and common policy configurations for different business models.
Wix Bookings policy configuration allows businesses to set rules for:
Policies are standalone entities managed by the Booking Policies API (/bookings/v1/booking-policies), not fields nested on the service:
default: true) that every new service references.bookingPolicy field; many services can share a policy.revision (fetched via query/get) inside the bookingPolicy object.Query existing policies (POST https://www.wixapis.com/bookings/v1/booking-policies/query):
For a site-wide change, pick the policy with "default": true. For a specific service, read the service first — its embedded bookingPolicy.id names the policy it uses. Save the policy's id and revision.
PATCH https://www.wixapis.com/bookings/v1/booking-policies/<POLICY_ID> with the current revision inside the bookingPolicy object and only the sub-policies you're changing. Example — cancellations allowed up to 24 hours before the session:
Field map (business rule → policy field):
| Business rule | Sub-policy fields |
|---|---|
| Cancellation deadline | cancellationPolicy.{enabled, limitLatestCancellation, latestCancellationInMinutes} |
| Reschedule deadline | reschedulePolicy.{enabled, limitLatestReschedule, latestRescheduleInMinutes} |
| How far ahead customers can book | limitEarlyBookingPolicy.{enabled, earliestBookingInMinutes} |
| Booking notice / last-minute cutoff | limitLateBookingPolicy.{enabled, latestBookingInMinutes} |
| Booking after session start (courses/classes) | bookAfterStartPolicy.enabled |
| Waitlist | waitlistPolicy.{enabled, capacity, reservationTimeInMinutes} |
| Participants per booking | participantsPolicy.{enabled, maxParticipantsPerBooking} |
To give one service different rules, create a new policy (POST https://www.wixapis.com/bookings/v1/booking-policies) and point the service at it by updating the service's bookingPolicy reference (see Update Service).
Read the service (GET /bookings/v2/services/<SERVICE_ID>) — the response embeds the full resolved bookingPolicy, so you can confirm the effective rules exactly as customers will experience them.
revision inside bookingPolicy; fetch it first, or the PATCH fails.enabled (and often a limit*) boolean — setting only the minutes value without enabling the limit has no effect.Policies not applying:
/bookings/v1/booking-policies/<id>, not fields on the service object (there is no service.policy field)service.bookingPolicy.id)revision was current — a stale revision fails the updateWaitlist not working:
waitlistPolicy.enabled is true and waitlistPolicy.capacity is setdefaultCapacity for CLASS/COURSE)Cancellation policies not enforced:
cancellationPolicy.enabled: true, limitLatestCancellation: true, and latestCancellationInMinutes — the minutes value alone has no effect without the booleansGroup booking limits not working:
participantsPolicy.enabled is true and participantsPolicy.maxParticipantsPerBooking is setPOST https://www.wixapis.com/bookings/v1/booking-policies/queryPATCH https://www.wixapis.com/bookings/v1/booking-policies/{bookingPolicy.id}POST https://www.wixapis.com/bookings/v1/booking-policiesPOST https://www.wixapis.com/bookings/v2/bulk/services/createPATCH https://www.wixapis.com/bookings/v2/services/<SERVICE_ID>POST https://www.wixapis.com/bookings/v2/services/queryLast updated: 13 October 2026