Skip to main content

Experience Schedules

Manage schedule slots for an experience. Schedules define when an experience is available for booking.

Endpointsโ€‹

MethodEndpointDescription
GET/v1/experiences/{id}/schedulesList schedules
GET/v1/experiences/{id}/schedules/{scheduleId}Get schedule
POST/v1/experiences/{id}/schedulesAdd schedule
PATCH/v1/experiences/{id}/schedules/{scheduleId}Update schedule
DELETE/v1/experiences/{id}/schedules/{scheduleId}Delete schedule

Authenticationโ€‹

All schedule endpoints require an API key with the experiences:read scope for GET requests, and experiences:write scope for POST/PATCH/DELETE requests.

Schedule Fieldsโ€‹

FieldTypeDescription
idintegerUnique schedule identifier
datestringThe date of the experience slot (YYYY-MM-DD)
start_timestringLocal start time in the supplier's timezone (HH:MM)
capacityintegerMaximum number of participants allowed
groups_capacityinteger|nullGroups-per-slot override for this departure (null = inherit the experience default)
effective_groups_capacityinteger|nullThe cap in force (override, else the experience default). null = unlimited
available_groupsinteger|nullGroups still bookable under that cap
booked_slotsintegerNumber of participants currently booked
held_slotsintegerSpots customers are holding in their booking-page carts right now, in the same unit as booked_slots. Not booked, and not free to sell until the hold ends
available_slotsinteger|nullSpots that can still be sold, the same number the booking page shows: capacity minus booked_slots and held_slots, then lowered by a closure, a guide who is not free, a private booking holding the departure, gear every guest takes that is out on rentals or other departures, and places shared with another experience. For a departure that has started, capacity minus booked and held. null = unlimited
availablebooleanWhether the slot can still accept bookings
guidesarrayAssigned staff members who will lead the experience
timezonestringTimezone the schedule was created in
start_datetime_utcstringUTC datetime for the slot start (ISO 8601)
created_atstringISO 8601 datetime
updated_atstringISO 8601 datetime

Timezone Handlingโ€‹

  • Schedule times are stored in UTC for consistency
  • The start_time in responses is displayed in the supplier's timezone
  • When creating schedules, times are converted from the supplier's timezone to UTC
  • Use the start_datetime_utc field for accurate timestamp comparisons

Bulk Creating Schedulesโ€‹

To create multiple schedules (e.g., for a week), send multiple POST requests. A future enhancement may support bulk creation in a single request.

# Create morning and afternoon slots for a week
for date in 2026-02-{16..22}; do
curl -X POST ".../experiences/1/schedules" \
-d "{\"date\": \"$date\", \"start_time\": \"09:00\", \"capacity\": 10}"
curl -X POST ".../experiences/1/schedules" \
-d "{\"date\": \"$date\", \"start_time\": \"14:00\", \"capacity\": 10}"
done