An Availability is a period an experience can be booked for, together with the constraints that decide whether it can be booked right now.
An availability covers either a concrete Event or a timeslot that has no event yet. Experiences that sell timeslots offer several durations from the same start time, and the event is created only when someone books. Both kinds carry an id that addresses the availability, so a caller can re-read one it already holds without searching the window around it again.
Timeslots are not bookable yet through the public API.
Events are unaffected: read availability here, then book with the event_id carried on the EVENT subject using Create Booking.
Every constraint that applies to an availability is returned whether it passes or fails, so callers can show why an availability is unavailable, or how much of it is left while it still is.
Get the availabilities of an experience within a time window.
Use this to render a calendar or a time picker. For an availability you already hold an id for, prefer Get Availability. The response is paginated; pass the returned next cursor on subsequent calls to continue.
Events and timeslots the host has closed to new bookings are left out, unless the host exempted the event.
This is a read: it creates nothing and has no side effects. The body is optional — omit it to get the first page of availabilities from the current time onwards.
Return availabilities starting on or after this local date-time (inclusive). ISO 8601 date-time without a timezone offset (e.g. 2026-07-14T08:00:00), interpreted in the timezone of the location its subject runs at. Defaults to the current time — pass it explicitly to look into the past.
Return availabilities starting before this local date-time (exclusive). ISO 8601 date-time without a timezone offset (e.g. 2026-07-15T00:00:00), interpreted in the timezone of the location its subject runs at. Omit it to leave the window open-ended.
Pagination cursor for fetching the next page of results. Omit or pass an empty string to start from the beginning of the list.
- https://api.understory.iohttps://api.understory.io/v1/experiences/{experienceId}/availabilities
curl -i -X POST \
'https://api.understory.io/v1/experiences/{experienceId}/availabilities' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-d '{
"from": "2026-07-14T08:00:00",
"to": "2026-07-15T00:00:00",
"filter": {
"event_ids": [
"string"
],
"location_ids": [
"string"
],
"durations": [
"PT1H30M"
]
},
"cursor": "string",
"limit": 50
}'{ "items": [ { … } ], "next": "string" }