Duration range services let customers choose how long to book within a minimum and maximum range, instead of selecting from fixed session durations. This is useful for bookable resources such as conference rooms, equipment, or vehicles, where the customer decides the booking length.
You configure a duration range on a service using the Services V2 API. The duration range replaces the standard sessionDurations field and can't be combined with it.
Duration range services support two unit types, configured in schedule.availabilityConstraints.durationRange.unitType:
HOUR): The customer picks a start time and end time, measured in minutes. Configure the range with durationRange.hourOptions.minDurationInMinutes and maxDurationInMinutes.
DAY): The customer picks a start date and end date, measured in full days. Configure the range with durationRange.dayOptions.minDurationInDays and maxDurationInDays.
A single service uses one unit type. To offer both hourly and daily options for the same resource, create separate services.
Duration range services are typically used with bookable resources rather than staff members. Setting primaryResourceType on the service to the ID of the relevant resource type makes the system calculate availability from the resources' schedules instead of staff schedules.
When the service itself doesn't have a fixed location, each resource can operate at its own business location. For example, "Room A" might be on Floor 2, while "Room B" is on Floor 3. Availability can be filtered by location to show only resources at a specific location.
The system uses the configured minimum duration to determine available start times. After the customer picks a start, the available end times are based on actual resource availability, ranging from the minimum up to the maximum duration.
The system returns one slot per available day. A day is considered available when the resource's entire working period is free. Any gap in consecutive working days limits the end date.
The resource's schedule configuration affects both availability and how bookings are created.
When a resource has configured working hours (for example, 9 AM to 6 PM), each day's availability is bounded by those hours. For daily services, the system creates one booking per day, with each booking spanning the full working period. The bookings are linked as consecutive bookings.
When a resource has no configured working hours (operates 24/7), availability is calculated per calendar day from midnight to midnight. Since there's no gap between days, consecutive days form a single continuous block. The system creates a single booking covering the full date range, rather than one booking per day.
It's important to note the following points before starting to code:
type set to APPOINTMENT). Classes and courses don't support duration ranges.durationRange and sessionDurations are mutually exclusive. A service uses one or the other.Last updated: 1 July 2026