> Portal Navigation:
> 
> - Append `.md` to any URL under `https://dev.wix.com/docs/` to get its markdown version.
> - Pages are either content pages (article or reference text) or menu pages (a list of links to child pages).
> - To get a menu page, truncate any URL to a parent path and append `.md` (e.g. `https://dev.wix.com/docs/sdk.md`, `https://dev.wix.com/docs/sdk/core-modules.md`).
> - Top-level index of all portals: https://dev.wix.com/docs/llms.txt
> - Full concatenated docs: https://dev.wix.com/docs/llms-full.txt

# listEventTimeSlots

# Package: @wix/bookings

# Namespace: eventTimeSlots

# Method link: https://dev.wix.com/docs/api-reference/business-solutions/bookings/time-slots/time-slots-v2/list-event-time-slots.md

## Permission Scopes:
Read Bookings Calendar Availability: SCOPE.DC-BOOKINGS.READ-CALENDAR

## Introduction

Retrieves a list of class session time slots that match the provided filters.

---

## JavaScript SDK

### Schema

```
 Method: wixClientAdmin.bookings.eventTimeSlots.listEventTimeSlots(options)
 Description: Retrieves a list of class session time slots that match the provided filters.  ### Defaults  List Event Time Slots uses the following defaults:  - `providerId` set to the Bookings app GUID. - `timeZone` set to the business time zone. - `cursorPaging.limit` set to `50`. - Returns both bookable and non-bookable time slots.  Time slots are always sorted by their `localStartDate` in ascending order.  ### Service type limitations  To retrieve appointment availability, call [List Availability Time Slots](https://dev.wix.com/docs/api-reference/business-solutions/bookings/time-slots/time-slots-v2/list-availability-time-slots.md).  To retrieve course availability, follow the [End-to-End Booking Flow for courses](https://dev.wix.com/docs/api-reference/business-solutions/bookings/end-to-end-booking-flows.md#book-a-course).  ### Booking policy filtering  Use `bookingPolicyViolations` to filter slots based on booking restrictions defined in your [booking policies](https://dev.wix.com/docs/api-reference/business-solutions/bookings/policies/booking-policies/introduction.md).  *Default behavior**: When you don't specify any `bookingPolicyViolations` filters, all slots are returned regardless of their booking policy status.  - Set `tooEarlyToBook` to `true` to retrieve slots that can't be booked yet due to minimum advance booking time restrictions. Currently, you can't specify `earliestBookingDate` to further filter by when the slot becomes bookable. - Set `tooLateToBook` to `true` to retrieve slots that can no longer be booked due to maximum advance booking time restrictions. - Set `bookOnlineDisabled` to `true` or `false` to filter by online booking availability settings.
 Method parameters:
   param name: options | type: ListEventTimeSlotsOptions  none  
        - name: fromLocalDate | type: string | description: Lower boundary for `localStartDate` to include in the response. Each returned time slot has a `localStartDate` between `fromLocalDate` and `toLocalDate`. Required unless you specify `cursorPaging.cursor`.  Local start date in `YYYY-MM-DDThh:mm:ss` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`.  | validation: format LOCAL_DATE_TIME
        - name: toLocalDate | type: string | description: Upper boundary for `localStartDate` to include in the response. Each returned time slot has a `localStartDate` between `fromLocalDate` and `toLocalDate`. Required unless you specify `cursorPaging.cursor`.  Local end date in `YYYY-MM-DDThh:mm:ss` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`.  | validation: format LOCAL_DATE_TIME
        - name: timeZone | type: string | description: Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database) for adjusting `fromLocalDate` and `toLocalDate` values. For example, `America/New_York` or `UTC`.  Default: `timeZone` specified in the business [site properties](https://dev.wix.com/docs/api-reference/business-management/site-properties/properties/get-site-properties.md).  | validation: maxLength 100
        - name: serviceIds | type: array<string> | description: Optional service GUIDs to filter the response. If not provided, time slots for all services are returned.  | validation: maxItems 100, format GUID
        - name: includeNonBookable | type: boolean | description: Whether to include time slots that aren't bookable according to the service's booking policy or that are fully booked. - `true`: Both bookable and non-bookable time slots are returned. - `false`: Only bookable time slots are returned.  Default: `true`  
        - name: minBookableCapacity | type: integer | description: Minimum bookable capacity. Use to filter out sessions that can't accommodate the desired party size.  | validation: minimum 1, format int32
        - name: eventFilter | type: object | description: Optional filter to apply to the events, for example resource or location. See [Query Events](https://dev.wix.com/docs/rest/business-management/calendar/events-v3/query-events.md) for a list of supported filters.  
        - name: maxSlotsPerDay | type: integer | description: Maximum number of slots to return for each day in the specified time range. If both bookable and non-bookable slots exist on the same day, bookable slots are returned first.  When you specify `maxSlotsPerDay`, you must also specify `toLocalDate`, and it must be no more than 1 month after `fromLocalDate`.  | validation: minimum 1, maximum 1000, format int32
        - name: cursorPaging | type: CursorPaging | description: Cursor-based paging configuration. Enables fetching results in smaller chunks by setting a limit on the number of returned items.  
           - name: limit | type: integer | description: Number of results to load.  Default: `1000`. Max: `1000`.  | validation: minimum 0, maximum 1000, format int32
           - name: cursor | type: string | description: Pointer to the next or previous page in the list of results.  You can get the relevant cursor token from the `pagingMetadata` object in the previous call's response. Not relevant for the first request.  
        - name: bookingPolicyViolations | type: BookingPolicyViolations | description: Indicators for service's booking policy violations. Allows filtering for time slots with specific violation types based on [booking policies](https://dev.wix.com/docs/api-reference/business-solutions/bookings/policies/booking-policies/introduction.md). When you don't specify `bookingPolicyViolations` filters, all slots are returned regardless of their booking policy status.  
           - name: tooEarlyToBook | type: boolean | description: Whether it's too early for customers to book the slot.  By default, all slots are returned. Specifying `{"tooEarlyToBook": false}` returns only those that customers can already book, while specifying `{"tooEarlyToBook": true}` returns only those that can't be booked yet.  
           - name: earliestBookingDate | type: Date | description: Earliest time for booking the slot in `YYYY-MM-DDThh:mm:ss.sssZ` format.  *In responses**: Contains a value when `tooEarlyToBook` is `true`, indicating the earliest time customers can book the slot.  *In requests**: Don't specify a value for this field. Use `tooEarlyToBook` to filter slots that can't be booked yet due to minimum advance booking time restrictions.  
           - name: tooLateToBook | type: boolean | description: Whether it's too late for customers to book the slot.  By default, all slots are returned. Specifying `{"tooLateToBook": false}` returns only those that customers can still book, while specifying `{"tooLateToBook": true}` returns only those that can no longer be booked.  
           - name: bookOnlineDisabled | type: boolean | description: Whether customers can book the service online.  By default, both services with online booking enabled and disabled are returned. Providing the boolean set to `true` or `false` returns only matching slots.  
 Return type: PROMISE<ListEventTimeSlotsResponse>
  - name: timeSlots | type: array<TimeSlot> | description: Retrieved time slots matching the specified filters.  
     - name: serviceId | type: string | description: [Service GUID] (https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction.md).  Available only for single-service bookings. For multi-service bookings, this field is empty and individual service GUIDs are provided in `nestedTimeSlots`.  | validation: format GUID
     - name: localStartDate | type: string | description: Local start date of the time slot in `YYYY-MM-DDThh:mm:ss` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`.  For multi-service bookings, this represents the start time of the first service in the sequence.  In `ListAvailabilityTimeSlotEndOptions`, this is identical on every entry and equals the request's `localStartDate`.  | validation: format LOCAL_DATE_TIME
     - name: localEndDate | type: string | description: Local end date of the time slot in `YYYY-MM-DDThh:mm:ss` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T14:00:00`.  For multi-service bookings, this represents the end time of the last service in the sequence.  | validation: format LOCAL_DATE_TIME
     - name: bookable | type: boolean | description: Whether customers can book the slot according to the service's [booking policies](https://dev.wix.com/docs/api-reference/business-solutions/bookings/policies/booking-policies/introduction.md).  For multi-service bookings, this is `true` only when all services in the sequence comply with their respective booking policies.  
     - name: location | type: Location | description: Information about where the business provides the service to the customer.  In `ListAvailabilityTimeSlotEndOptions`, this is the requested location, identical on every entry.  
        - name: _id | type: string | description: [Location GUID](https://dev.wix.com/docs/api-reference/business-management/locations/introduction.md). Available only for business locations.  | validation: format GUID
        - name: name | type: string | description: Location name.  
        - name: formattedAddress | type: string | description: Formatted location address.  
        - name: locationType | type: LocationType | description: Location type.  
             - enum:
             -     BUSINESS: A business location, either the default business address, or locations defined for the business by the Business Info.
             -     CUSTOM: The location is unique to this service and isn't defined as 1 of the business locations.
             -     CUSTOMER: The location can be determined by the customer and isn't set up beforehand.
     - name: eventInfo | type: EventInfo | description: Information about the [event](https://dev.wix.com/docs/api-reference/business-management/calendar/events-v3/introduction.md) related to the slot. Available only for classes. Not available for appointment-based services and courses.  
        - name: eventId | type: string | description: Event GUID.  | validation: minLength 36, maxLength 250
        - name: waitingList | type: WaitingList | description: Information about the event's waitlist. Available only if the service has a waitlist.  
           - name: totalCapacity | type: integer | description: Total number of spots in the waitlist.  | validation: minimum 1, format int32
           - name: remainingCapacity | type: integer | description: Number of remaining spots in the waitlist. For example, an event with a waitlist for 10 people and 3 registrants, results in a remaining capacity of `7`.  | validation: minimum 0, format int32
        - name: eventTitle | type: string | description: Event title.  | validation: minLength 1, maxLength 200
     - name: totalCapacity | type: integer | description: Total number of spots for the slot.  For multi-service bookings, this is always `1` because customers book the entire service sequence as a single unit.  In `ListAvailabilityTimeSlotEndOptions`, capacity reflects whether at least one resource can cover `[localStartDate, localEndDate]`; the specific resource is selected later via `GetAvailabilityTimeSlot`.  | validation: minimum 1, maximum 1000, format int32
     - name: remainingCapacity | type: integer | description: Remaining number of spots for the slot. - For appointment bookings: Either `1` (available) or `0` (unavailable). - For classes: Total capacity minus booked spots. Doesn't account for waitlist reservations. For classes with waitlists, use `bookableCapacity` to get the actual number of spots customers can book. - For courses: Total capacity minus booked spots. Courses don't currently support waitlists.  In `ListAvailabilityTimeSlotEndOptions`, capacity reflects whether at least one resource can cover `[localStartDate, localEndDate]`; the specific resource is selected later via `GetAvailabilityTimeSlot`.  | validation: minimum 0, maximum 1000, format int32
     - name: bookableCapacity | type: integer | description: Number of spots that customers can book for the slot. Calculated as the remaining capacity minus the spots reserved for the waitlist. If the service has no waitlist, identical to `remainingCapacity`.  For multi-service bookings, this is either `1` (sequence can be booked) or `0` (sequence can't be booked).  In `ListAvailabilityTimeSlotEndOptions`, capacity reflects whether at least one resource can cover `[localStartDate, localEndDate]`; the specific resource is selected later via `GetAvailabilityTimeSlot`.  | validation: format int32
     - name: bookingPolicyViolations | type: BookingPolicyViolations | description: Information about booking policy violations for the slot.  For multi-service bookings, this aggregates violations from all services in the sequence.  
        - name: tooEarlyToBook | type: boolean | description: Whether it's too early for customers to book the slot.  By default, all slots are returned. Specifying `{"tooEarlyToBook": false}` returns only those that customers can already book, while specifying `{"tooEarlyToBook": true}` returns only those that can't be booked yet.  
        - name: earliestBookingDate | type: Date | description: Earliest time for booking the slot in `YYYY-MM-DDThh:mm:ss.sssZ` format.  *In responses**: Contains a value when `tooEarlyToBook` is `true`, indicating the earliest time customers can book the slot.  *In requests**: Don't specify a value for this field. Use `tooEarlyToBook` to filter slots that can't be booked yet due to minimum advance booking time restrictions.  
        - name: tooLateToBook | type: boolean | description: Whether it's too late for customers to book the slot.  By default, all slots are returned. Specifying `{"tooLateToBook": false}` returns only those that customers can still book, while specifying `{"tooLateToBook": true}` returns only those that can no longer be booked.  
        - name: bookOnlineDisabled | type: boolean | description: Whether customers can book the service online.  By default, both services with online booking enabled and disabled are returned. Providing the boolean set to `true` or `false` returns only matching slots.  
     - name: availableResources | type: array<AvailableResources> | description: List of [resources](https://dev.wix.com/docs/api-reference/business-solutions/bookings/resources/resources-v2/introduction.md) available during the time slot.  Available only for single-service bookings. For multi-service bookings, resource information is provided in `nestedTimeSlots`.  __Note__: Behavior varies by method: - For [List Availability Time Slots](https://dev.wix.com/docs/api-reference/business-solutions/bookings/time-slots/time-slots-v2/list-availability-time-slots.md), this list is empty by default. To include resource details, specify `includeResourceTypeIds` or `resourceIds` in the request. - For [Get Availability Time Slot](https://dev.wix.com/docs/api-reference/business-solutions/bookings/time-slots/time-slots-v2/get-availability-time-slot.md), all resources are returned by default. - **End options** (`ListAvailabilityTimeSlotEndOptions`): Always empty. The response does not surface resource lists for end options. If the customer hasn't already picked a resource earlier in the flow, call `GetAvailabilityTimeSlot` with the picked `localEndDate` to retrieve candidate resources before booking; if a resource is already chosen, pass it through to booking directly.  | validation: minItems 0
        - name: resourceTypeId | type: string | description: [Resource type GUID](https://dev.wix.com/docs/api-reference/business-solutions/bookings/resources/resource-types-v2/introduction.md).  | validation: format GUID
        - name: resources | type: array<Resource> | description: Details about resources available during the time slot.  Behavior varies by method:  List methods (List Availability Time Slots and List Multi Service Availability Time Slots): - Empty by default. - Up to 10 resources when specifying `includeResourceTypeIds` or `resourceIds` in the request.  Get methods (Get Availability Time Slots and Get Multi Service Availability Time Slots): - All resources by default. - Filtered resources when specifying `includeResourceTypeIds` or `resourceIds` in the request.  
           - name: _id | type: string | description: Resource GUID.  | validation: format GUID
           - name: name | type: string | description: Resource name.  | validation: minLength 1
        - name: hasMoreAvailableResources | type: boolean | description: Whether there are more available resources for the slot than those listed in `resources`.  | read-only: true 
     - name: nestedTimeSlots | type: array<NestedTimeSlot> | description: Nested time slots for multi-service bookings. Each nested slot represents 1 service in the sequence, ordered according to the service sequence specified in the request.  Available only for multi-service bookings. Empty for single-service bookings.  | validation: maxItems 40
        - name: serviceId | type: string | description: Service GUID of the nested time slot.  | validation: format GUID
        - name: localStartDate | type: string | description: Local start date of the nested time slot in `YYYY-MM-DDThh:mm:ss` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`.  | validation: format LOCAL_DATE_TIME
        - name: localEndDate | type: string | description: Local end date of the nested time slot in `YYYY-MM-DDThh:mm:ss` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`.  | validation: format LOCAL_DATE_TIME
        - name: availableResources | type: array<AvailableResources> | description: List of [resources](https://dev.wix.com/docs/api-reference/business-solutions/bookings/resources/resources-v2/introduction.md) available during the nested time slot.  | validation: maxItems 10
        - name: scheduleId | type: string | description: The schedule GUID associated with this nested time slot. Same as the service's schedule GUID.  | validation: format GUID
     - name: nonBookableReasons | type: NonBookableReasons | description: Information about why customers can't book the time slot.  
        - name: noRemainingCapacity | type: boolean | description: Whether the slot is fully booked with no remaining capacity.  
        - name: violatesBookingPolicy | type: boolean | description: Whether booking the slot violates any of the service's booking policies.  
        - name: reservedForWaitingList | type: boolean | description: Whether the slot is reserved for the waitlist. A new customer can't book the reserved slot.  
        - name: eventCancelled | type: boolean | description: Whether the related event is cancelled.  
     - name: scheduleId | type: string | description: Schedule GUID associated with this time slot. Same as the service's schedule GUID.  | validation: format GUID
     - name: allDay | type: boolean | description: Whether this time slot spans one or more full days. When `true`, `localStartDate` is `00:00:00` of the first day and `localEndDate` is `00:00:00` of the day after the last day (exclusive). Midnight boundaries are interpreted in the event's `timeZone`. The time component should be ignored for display purposes.  Default: `false`  
  - name: timeZone | type: string | description: Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database) for adjusting `fromLocalDate` and `toLocalDate` values. For example, `America/New_York` or `UTC`.  Default: `timeZone` specified in the business [site properties](https://dev.wix.com/docs/api-reference/business-management/site-properties/properties/get-site-properties.md).  | validation: minLength 1, maxLength 150
  - name: pagingMetadata | type: CursorPagingMetadata | description: Paging metadata for the next page of results. Contains a cursor if more data is available.  
     - name: cursors | type: Cursors | description: Offset that was requested.  
        - name: next | type: string | description: Cursor pointing to next page in the list of results.  
        - name: prev | type: string | description: Cursor pointing to previous page in the list of results.  
     - name: hasNext | type: boolean | description: Indicates if there are more results after the current page. If `true`, another page of results can be retrieved. If `false`, this is the last page.  


```

### Examples

### listEventTimeSlots
```javascript
import { eventTimeSlots } from '@wix/bookings';

async function listEventTimeSlots(options) {
  const response = await eventTimeSlots.listEventTimeSlots(options);
};
```

### listEventTimeSlots (with elevated permissions)
```javascript
import { eventTimeSlots } from '@wix/bookings';
import { auth } from '@wix/essentials';

async function myListEventTimeSlotsMethod(options) {
  const elevatedListEventTimeSlots = auth.elevate(eventTimeSlots.listEventTimeSlots);
  const response = await elevatedListEventTimeSlots(options);
}
```

### listEventTimeSlots (self-hosted)
Self-hosted SDK calls require you to [create a client](https://dev.wix.com/docs/sdk/articles/work-with-the-sdk/about-the-wix-client.md).

```javascript
import { createClient } from '@wix/sdk';
import { eventTimeSlots } from '@wix/bookings';
// Import the auth strategy for the relevant access type
// Import the relevant host module if needed

const myWixClient = createClient ({
  modules: { eventTimeSlots },
  // Include the auth strategy and host as relevant
});


async function listEventTimeSlots(options) {
  const response = await myWixClient.eventTimeSlots.listEventTimeSlots(options);
};
```

---