This page describes how Saoma models availability. Reading it through the
Partner API (
GET /v1/availability) is coming soon — see the API
Reference page tagged Coming soon.The Slot object
Start of the slot.
End of the slot (
start_at + variant.duration).The venue offering the slot.
The treatment available at this slot.
The specific variant (duration × guest count) this slot matches.
Duration of the slot, in minutes.
How slots are computed
A slot is returned byGET /v1/availability only if all of the following
are true:
- The venue is deployed on that date (recurring schedule or one-time opening).
- The slot falls within the venue’s daily
opening_time…closing_time. - The slot respects the treatment’s
lead_timefrom “now”. - A treatment room with sufficient capacity is free for the full duration (with buffer).
- At least one therapist is on shift, has the required skills for the treatment, and is not already booked.
- The slot does not fall inside a blocked time range configured by the venue (lunch break, maintenance, etc.).
- The slot respects the venue’s
room_turnover_buffer_minutesandinter_venue_buffer_minutes.
Because availability depends on live data, a slot returned by
GET /v1/availability may be taken by another customer before you call
POST /v1/bookings. In that case the booking call returns SLOT_TAKEN
(HTTP 409). Always handle this error gracefully.Time zones
All slot times are returned in UTC. Use thetimezone field on the
parent Venue to convert to local time for display.
Granularity
Slots are always aligned on the venue’sslot_interval (typically every
30 minutes, starting at the opening_time).