# Availability

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](/apis/event/getevents) 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](/apis/booking/createbooking).
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 /v1/experiences/{experienceId}/availabilities](https://developer.understory.io/apis/availability/getavailabilitiesforexperience.md): 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](/apis/availabi
 - [GET /v1/experiences/{experienceId}/availabilities/{availabilityId}](https://developer.understory.io/apis/availability/getavailabilitybyid.md): 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, o
