List package availability
Returns availability slots for a package. Slots are filtered by comparison operators on the slot start, supplied as field[operator]=value.
Only packages that are currently selling and sold online are addressable here; any other package id (unknown, draft, off-sale, not sold online, or belonging to another company) returns 404.
Supported operators: eq, gteq, gt, lteq, lt (= / >= / > / <= / <). Filters on different fields combine as an intersection.
A bounded start window is required: supply both a lower bound (gteq, gt or eq) and an upper bound (lteq, lt or eq) on start_at. A single eq satisfies both. The window may not exceed 90 days. start_at date-times and start_time_of_day are the package's local wall-clock times: no timezone conversion is applied, and timezone offsets (e.g. a trailing Z or +02:00) are not accepted. A range whose bounds can never overlap (e.g. a lower bound beyond the upper bound) is rejected.
Example queries:
- Date range:
?start_at[gteq]=2026-05-15&start_at[lteq]=2026-05-17 - Single day:
?start_at[eq]=2026-05-16 - Moment range:
?start_at[gteq]=2026-05-15T18:00&start_at[lteq]=2026-05-17T12:00 - Mornings over a date range:
?start_at[gteq]=2026-05-15&start_at[lteq]=2026-05-17&start_time_of_day[gteq]=09:00&start_time_of_day[lteq]=12:00 - Exclusive bounds:
?start_at[gt]=2026-05-15&start_at[lt]=2026-05-18 - With party size:
?start_at[eq]=2026-05-16&adult_count=2
Each availability item has an opaque id and the object availability_package. The endpoint is not paginated.
Slots are read from a precomputed cache, refreshed asynchronously when stock or bookings change. A slot that just became unavailable may still appear here until that refresh lands. Treat this list as a planning signal: POST /bookings is the source of truth, and a 422 there means you should re-fetch availability.
Path Parameters
Package ID (e.g. pkg_9fKbV3aQx7).
Query Parameters
Range filter on the slot start. Each bound is an ISO 8601 date (e.g. start_at[gteq]=2026-05-15, bounding the start date) or date-time (e.g. start_at[gteq]=2026-05-15T18:00, bounding the exact wall-clock moment). A lower and an upper bound are required; a single eq provides both. Must be today or in the future.
Range filter on the slot start time of day (HH:MM, 24-hour), applied to every date in the window, e.g. start_time_of_day[gteq]=18:00.
Number of adult guests to check availability for. If omitted, defaults to the smallest party size the package offers (its minimum party size, the same default the storefront shows).
1 <= valueResponse Body
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/packages/string/availability" \ -H "Easol-API-Version: 2026-11-01"{
"object": "string",
"url": "string",
"has_more": true,
"next_cursor": "string",
"data": [
{
"object": "availability_package",
"id": "string",
"product_name": "string",
"start_date": "2019-08-24",
"start_time": "string",
"adult_count": 0,
"available": true,
"remaining_stock": 0,
"from_price": {
"amount": 0,
"currency": "string"
}
}
]
}{
"error": {
"code": "string",
"message": "string"
}
}{
"error": {
"code": "string",
"message": "string"
}
}{
"error": {
"code": "string",
"message": "string"
}
}{
"error": {
"code": "string",
"message": "string"
}
}Availability
Check whether a product can be booked for a given date, time, party size, and quantity before you create a booking. Availability is served from a precomputed cache, not computed live on each request — recent bookings and stock changes can lag. A 422 at booking time is the source of truth.
Bookings
A booking is a customer's reserved purchase of one or more products. Bookings move through `pending` → `pending_payment` → `completed` (or `cancelled`). The usual flow is: create a booking, add line items, attach customer and billing details, then collect payment. Guests are counted per line item. A guest is a place on one line item, not a person: someone booked onto two line items counts as two guests, and appears in `guests` once for each. Adding up `guest_count` across a booking's line items therefore counts places, not people.