Docs

Service availabilities

Last updated: 26 Oct 2026

Service availability provides time slots for a given service variant in a date range.

All endpoints are scoped to the organization that owns the API key:

/store/v0

Get availability

Retrieve available time slots for a service variant within a date range. Slots fall inside the service's opening hours; a service without opening hours has slots all day.

GET /store/v0/services/availabilities

Query parameters

ParameterTypeRequiredDescription
service_idstringYesService public ID
variant_idstringYesService variant public ID
start_datestringYesYYYY-MM-DD
end_datestringYesYYYY-MM-DD
resource_idstringNoFilter by a specific selectable resource (e.g. staff)
seatsintegerNoSeats the guest needs. A slot, and its date, is available only with that many free seats. For a package service, send the option's seats from the package search.

Validation rules

  • end_date must be on or after start_date
  • The date range length is constrained (commonly max 90 days)
  • The service and variant must be publicly visible
  • If resource_id is provided, it must be a valid selectable resource for the service
  • Slots closer to their start than the service's booking_cutoff_minutes, or more than one year ahead, are left out

If validation fails, the API returns a 400 or 404 depending on the failure mode. See Errors.

Response

{
  "dates": [
    {
      "date": "2026-01-25",
      "available": true,
      "slots": [
        {
          "starts_at": "2026-01-25T09:00:00+01:00",
          "ends_at": "2026-01-25T10:00:00+01:00",
          "available": true,
          "available_capacity": 1,
          "total_capacity": 1,
          "available_resources": [
            {
              "id": "7f6e5d4c-3b2a-4c1d-9e0f-1a2b3c4d5e6f",
              "name": "Alice",
              "type": "staff"
            }
          ]
        }
      ]
    }
  ],
  "meta": {
    "start_date": "2026-01-25",
    "end_date": "2026-01-25",
    "service_id": "9c1a2b3c-4d5e-4f60-8123-9a0b1c2d3e4f",
    "variant_id": "4a7b8c9d-0e1f-4a2b-9c3d-4e5f6a7b8c9d",
    "timezone": "Europe/Oslo"
  }
}

Field reference

Date object

FieldTypeDescription
datestringYYYY-MM-DD
availablebooleanWhether any slots are bookable
slotsarraySlot objects

Slot object

FieldTypeDescription
starts_atstringISO 8601 timestamp
ends_atstringISO 8601 timestamp
availablebooleanWhether slot is bookable
available_capacityintegerRemaining guest capacity for the slot
total_capacityintegerMaximum guest capacity for the slot
available_resourcesarraySelectable resources available for the slot

Capacity and booking modes

The meaning of available_capacity and total_capacity depends on the service's booking_mode (see Services):

  • Exclusive services (booking_mode: "exclusive"): Each booking takes the slot's resources. total_capacity is typically 1, and a slot no further booking can get resources for shows available: false and available_capacity: 0.
  • Shared services (booking_mode: "shared"): Multiple guests can occupy the same slot. For example, a sauna with total_capacity: 8 and 3 existing guests shows available_capacity: 5. Use this value to determine the maximum guest_count when adding a booking to a cart.

Class services

For a class service (kind: "class", see Services), each slot is one scheduled session: starts_at and ends_at are the session's, total_capacity is the session's seats, and available_capacity is the seats it has left. A session that can't take bookings, because it is inside the booking cut-off or has no staff right now, is still listed, with available: false and available_capacity: 0. available_resources is always empty. Add a session to a cart with its starts_at, like any other slot.

Available resource object

FieldTypeDescription
idstringResource public ID
namestringDisplay name
typestringResource type (example: "staff")

Meta object

FieldTypeDescription
start_datestringRequested start date
end_datestringRequested end date
service_idstringService public ID
variant_idstringVariant public ID
timezonestringIANA timezone for location/service

Using availability to create a booking cart item

When creating a booking cart item:

  1. Choose a slot where available is true.
  2. Send the starts_at exactly as returned by this endpoint (including timezone offset).
  3. For shared services, check available_capacity and set guest_count on the cart item to a value that does not exceed it.

See Cart items for the full request format.