> ## Documentation Index
> Fetch the complete documentation index at: https://docs.way.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Get listing sessions

> Returns available sessions for a listing within a date range, including capacity and pricing. Pass `resourceGroupId` to scope results to a specific resource group.



## OpenAPI

````yaml get /v1/listings/{listingId}/sessions
openapi: 3.0.0
info:
  title: Way Partner API
  description: >-
    REST API for Way partners: list experiences, check availability, run
    checkout, and manage bookings.
  version: '1.0'
servers:
  - url: https://api.letsway.com
    description: Production.
  - url: https://api.staging.letsway.com
    description: Staging.
security: []
tags:
  - name: Listings
    description: 'Retrieve the listings a brand offers: experiences, events, and resources.'
  - name: Availability
    description: Dates, sessions, and price tiers for scheduling a booking.
  - name: Carts & Checkout
    description: >-
      Payment intents and booking creation. The cart ID is a client-generated
      UUID; there is no create-cart endpoint.
  - name: Bookings
    description: Retrieve, cancel, and reschedule bookings.
  - name: Experiences
    description: Experience details, settings, custom questions, reviews, and hosts.
  - name: Brand Configuration
    description: Brand settings, taxonomy, terms, and promotion code validation.
  - name: Waitlists
    description: Waitlists for sold-out sessions and invitation handling.
  - name: Integrations
    description: Configured integrations, analytics, and room-charge validation.
  - name: Organizations
    description: Organization-level access across brands.
paths:
  /v1/listings/{listingId}/sessions:
    get:
      tags:
        - Listings
      summary: Get listing sessions
      description: >-
        Returns available sessions for a listing within a date range, including
        capacity and pricing. Pass `resourceGroupId` to scope results to a
        specific resource group.
      operationId: ListingPublicController_getListingSessions
      parameters:
        - $ref: '#/components/parameters/listingIdPath_7'
        - $ref: '#/components/parameters/experienceIdQuery'
        - $ref: '#/components/parameters/fromQuery'
        - $ref: '#/components/parameters/includeEventsAfterBookingDeadlineQuery'
        - $ref: '#/components/parameters/resourceGroupIdQuery'
        - $ref: '#/components/parameters/toQuery'
        - $ref: '#/components/parameters/versionQuery_8'
        - $ref: '#/components/parameters/waitlistEntryIdQuery'
      responses:
        '200':
          description: Listing sessions.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListingSessionsPublicResponse'
              example:
                data:
                  sessions:
                    - sessionId: null
                      scheduleId: e5433b69-271f-45a8-bf4c-7b306edd03db
                      isRepeating: true
                      isPrivateEvent: false
                      priceTiers:
                        - id: 6c59db13-2c63-43b9-b91b-6267544f5fdb
                          name: Participant
                          price: 100
                          maxQuantity: 10
                          participantsCount: 0
                      startDateTime: '2026-07-14T10:00:00'
                      duration: 60
                      participantCount: 0
                      capacity: 10
                      experienceId: c99f70ee-1c0e-4534-a31a-96d5d966cc4b
                      status: OPEN
                      hostedBy: null
                    - sessionId: null
                      scheduleId: e5433b69-271f-45a8-bf4c-7b306edd03db
                      isRepeating: true
                      isPrivateEvent: false
                      priceTiers:
                        - id: 6c59db13-2c63-43b9-b91b-6267544f5fdb
                          name: Participant
                          price: 100
                          maxQuantity: 10
                          participantsCount: 0
                      startDateTime: '2026-07-15T10:00:00'
                      duration: 60
                      participantCount: 0
                      capacity: 10
                      experienceId: c99f70ee-1c0e-4534-a31a-96d5d966cc4b
                      status: OPEN
                      hostedBy: null
      security:
        - Brand-API-Key: []
        - Organization-API-Key: []
components:
  parameters:
    listingIdPath_7:
      name: listingId
      in: path
      schema:
        type: string
      required: true
      description: The listing's ID.
      example: 1f4877f4-a082-4a05-9cbf-fa129b28f01c
    experienceIdQuery:
      name: experienceId
      in: query
      schema:
        type: string
        format: uuid
      description: Only results for this experience.
      example: c99f70ee-1c0e-4534-a31a-96d5d966cc4b
      required: false
    fromQuery:
      name: from
      in: query
      schema:
        type: string
        pattern: ^\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$
      example: '2026-07-14'
      description: Start of the date range (YYYY-MM-DD), inclusive.
      required: false
    includeEventsAfterBookingDeadlineQuery:
      name: includeEventsAfterBookingDeadline
      in: query
      schema:
        type: string
        enum:
          - 'true'
      description: When `true`, includes sessions whose booking deadline has passed.
      required: false
    resourceGroupIdQuery:
      name: resourceGroupId
      in: query
      schema:
        type: string
        format: uuid
      description: Scope results to one resource group of a resource-collection listing.
      required: false
    toQuery:
      name: to
      in: query
      schema:
        type: string
        pattern: ^\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$
      example: '2026-07-21'
      description: End of the date range (YYYY-MM-DD), inclusive.
      required: false
    versionQuery_8:
      name: version
      in: query
      schema:
        type: string
        enum:
          - published
          - latest
      description: >-
        Which content version to return: the published version (default) or the
        latest draft.
      required: false
    waitlistEntryIdQuery:
      name: waitlistEntryId
      in: query
      schema:
        type: string
        format: uuid
      description: >-
        A waitlist entry ID - sessions tied to this invitation are marked
        accordingly in the response.
      required: false
  schemas:
    ListingSessionsPublicResponse:
      type: object
      properties:
        sessions:
          type: array
          items:
            type: object
            properties:
              sessionId:
                type: string
                format: uuid
                nullable: true
                description: >-
                  Unique ID of the session's underlying event. Null for slots
                  generated from a repeating schedule that have not yet been
                  booked - identify those by scheduleId plus startDateTime.
              scheduleId:
                type: string
                format: uuid
                nullable: true
                description: >-
                  ID of the recurring schedule that generated this slot, or null
                  for one-off sessions. Use it with startDateTime to identify a
                  repeating slot whose sessionId is null.
                example: e5433b69-271f-45a8-bf4c-7b306edd03db
              isRepeating:
                type: boolean
                description: >-
                  True when the slot is generated by a repeating schedule rather
                  than a one-off session.
                example: true
              isPrivateEvent:
                type: boolean
                description: >-
                  True when the session is a private event booked exclusively by
                  one party, so other guests cannot join it.
                example: false
              priceTiers:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: Unique identifier of the price tier.
                      example: 6c59db13-2c63-43b9-b91b-6267544f5fdb
                    name:
                      type: string
                      description: >-
                        Display name of the price tier. This is the value to
                        send as participants[].priceTierName when booking.
                      example: Participant
                    price:
                      type: number
                      description: >-
                        Price per participant for this tier, in the brand's
                        currency.
                      example: 100
                    maxQuantity:
                      type: number
                      minimum: 0
                      description: >-
                        Maximum number of participants that can book this tier
                        for the session.
                      example: 10
                    participantsCount:
                      type: number
                      minimum: 0
                      description: >-
                        Number of participants already booked on this tier for
                        the session.
                      example: 0
                  required:
                    - id
                    - name
                    - price
                    - maxQuantity
                    - participantsCount
                description: >-
                  Price tiers offered for this session. Assign each guest a tier
                  by sending its name as participants[].priceTierName in the
                  booking payload.
              startDateTime:
                type: string
                description: >-
                  Session start as a local date-time in the experience's
                  timezone, with no UTC offset. Send this value back as
                  sessionTime when booking.
                example: '2026-07-14T10:00:00'
              duration:
                type: integer
                minimum: 0
                exclusiveMinimum: true
                description: >-
                  Session length in minutes. Send this value back as
                  sessionDuration when booking.
                example: 60
              participantCount:
                type: integer
                minimum: 0
                description: >-
                  Number of participants already booked on the session across
                  all price tiers.
                example: 0
              capacity:
                type: number
                nullable: true
                description: >-
                  Maximum total participants the session can hold. Null for open
                  experiences without a capacity limit.
                example: 10
              experienceId:
                type: string
                format: uuid
                description: >-
                  ID of the experience to book this session under - send it as
                  experienceId in the payment intent and booking payloads. For
                  resource collections this session-level value is the one to
                  use, since the listing-level experienceId is null.
                example: c99f70ee-1c0e-4534-a31a-96d5d966cc4b
              status:
                type: string
                enum:
                  - OPEN
                  - OVERLAPPED
                  - CONFIRMED
                  - WAITLISTED
                  - OVERLAPPED_BY_WAITLIST
                description: >-
                  Availability status of the slot. OPEN sessions are bookable;
                  CONFIRMED sessions already have a confirmed booking (still
                  joinable in shared mode unless the event is private);
                  OVERLAPPED sessions are blocked by an overlapping booking or
                  the host's calendar. WAITLISTED marks the slot held for the
                  waitlist entry passed in the query, and OVERLAPPED_BY_WAITLIST
                  marks slots that conflict with it.
                example: OPEN
              hostedBy:
                type: object
                properties:
                  id:
                    type: string
                    description: Unique identifier of the host.
                    example: 3f2b1a0c-9d8e-4c7b-a6f5-4e3d2c1b0a99
                  fullName:
                    type: string
                    description: Host's full display name.
                    example: Maria Gonzalez
                  profilePicture:
                    type: object
                    properties:
                      id:
                        type: string
                        description: Media ID of the profile picture.
                        example: a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d
                      uri:
                        type: object
                        properties:
                          original:
                            type: string
                            description: URL of the original, full-size image.
                            example: >-
                              https://media.letsway.com/hosts/maria-gonzalez/original.jpg
                        required:
                          - original
                        additionalProperties:
                          type: string
                        description: URLs for the picture, keyed by size variant.
                    required:
                      - id
                      - uri
                    nullable: true
                    description: Host's profile picture, or null when none is set.
                  firstName:
                    type: string
                    description: Host's first name.
                    example: Maria
                  lastName:
                    type: string
                    description: Host's last name.
                    example: Gonzalez
                  allowOverlappingBookings:
                    type: boolean
                    description: >-
                      Whether this host can be booked for overlapping sessions.
                      False when the host or the brand prevents overlapping
                      bookings - conflicting slots then return status
                      OVERLAPPED.
                required:
                  - id
                  - fullName
                  - profilePicture
                  - firstName
                  - lastName
                  - allowOverlappingBookings
                nullable: true
                description: >-
                  The host assigned to the session, or null when the experience
                  has no named host.
            required:
              - sessionId
              - scheduleId
              - isRepeating
              - isPrivateEvent
              - priceTiers
              - startDateTime
              - duration
              - participantCount
              - capacity
              - experienceId
              - status
              - hostedBy
          description: >-
            Bookable sessions for the listing in the requested date range, one
            entry per time slot.
      required:
        - sessions
  securitySchemes:
    Brand-API-Key:
      type: http
      scheme: bearer
      description: >-
        Your brand's secret API key, e.g. `Bearer
        way_sk_live_bhEqcn0i1fRoUEHBPjJkQA`. Older `Way-Brand-Id` +
        `Way-Secret-Key` credentials still work: see [Legacy
        authentication](/legacy-authentication).
    Organization-API-Key:
      type: http
      scheme: bearer
      description: >-
        Your organization's secret API key, e.g. `Bearer
        way_sk_live_ohEqcn0i1fRoUEHBPjJkQA`. Older `Way-Organization-Id` +
        `Way-Secret-Key` credentials still work: see [Legacy
        authentication](/legacy-authentication).

````