Get a single availability by its ID.
Use this to re-check one availability a guest has selected, without fetching the window around it again. An availability that no longer exists — a deleted event, or a start time the experience has stopped operating — returns 404, as does one that belongs to a different experience.
A timeslot the host has closed to new bookings returns 404 too. An event the host has closed to new bookings reports available: false, even when every constraint in constraints passes. An event the host exempted from the closure is not affected.
This is a read: it creates nothing and has no side effects. There is nothing to send yet, so send no body at all.
- https://api.understory.iohttps://api.understory.io/v1/experiences/{experienceId}/availabilities/{availabilityId}
curl -i -X POST \
'https://api.understory.io/v1/experiences/{experienceId}/availabilities/{availabilityId}' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>'OK
Opaque identifier of the availability, stable for as long as the availability exists. Hand it back as-is to Get Availability; its encoding is not part of the contract and may change without notice.
The start of the availability as a local date-time, without a timezone offset (e.g. 2026-07-14T15:00:00). Combine it with timezone to derive an absolute instant. On an event with several sessions this is the earliest session's start, whatever order the sessions are listed in.
The end of the availability as a local date-time, without a timezone offset (e.g. 2026-07-14T16:00:00). See start_time for how to combine it with timezone. On an event with several sessions this is the end of that same earliest session — not the end of the last one. An availability describes one sitting, named by subject.session_id, so end_time is not when the event finishes, and a calendar built from start_time and end_time alone will show a multi-session event as its first session only.
The IANA timezone the availability's start_time and end_time are expressed in, resolved from the location the availability runs at. It is the timezone of the session they are taken from, so an event whose sessions run at locations in different timezones reports only the earliest session's.
Whether the availability is currently bookable. false if any constraint in constraints reports available: false, or if the host has closed the event to new bookings.
Every constraint that applies to this availability, in no particular order. Both passing (available: true) and failing constraints are included. Which constraints apply depends on the availability: a timeslot has no event yet, so it carries neither EVENT_STATE nor EXCLUSIVITY.
{ "id": "djF8ZXZ0fDNmMmIxZDY0LTljN2UtNGYwYS04YjIxLTJmMGU1YTZjMWQ3Nw", "subject": { "type": "EVENT", "event_id": "string", "session_id": "string" }, "start_time": "2026-07-14T15:00:00", "end_time": "2026-07-14T16:00:00", "timezone": "Europe/Copenhagen", "available": true, "constraints": [ { … } ] }