> ## 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.

# Join waitlist

> Adds an entry to a waitlist for a sold-out session.



## OpenAPI

````yaml post /v1/brands/{brandId}/waitlists/{waitlistId}/entries
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/brands/{brandId}/waitlists/{waitlistId}/entries:
    post:
      tags:
        - Waitlists
      summary: Join waitlist
      description: Adds an entry to a waitlist for a sold-out session.
      operationId: WaitlistPublicController_create
      parameters:
        - $ref: '#/components/parameters/brandIdPath_67'
        - $ref: '#/components/parameters/waitlistIdPath_68'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JoinWaitListRequest'
      responses:
        '201':
          description: Join waitlist.
      security:
        - Brand-API-Key: []
        - Organization-API-Key: []
components:
  parameters:
    brandIdPath_67:
      name: brandId
      in: path
      schema:
        type: string
      required: true
      description: >-
        The brand's ID - must match the brand your API key identifies (or the
        Way-Brand-Id header when one is sent).
    waitlistIdPath_68:
      name: waitlistId
      in: path
      schema:
        type: string
      required: true
      description: The waitlist's ID, from the listing or experience data.
  schemas:
    JoinWaitListRequest:
      type: object
      properties:
        sessionStartDate:
          type: string
          pattern: ^\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$
          description: >-
            Date of the sold-out session to join the waitlist for, in YYYY-MM-DD
            format.
          example: '2026-07-18'
        sessionStartTime:
          type: string
          pattern: ^([0-1]\d|2[0-3])(?::([0-5]\d)){1,2}$
          description: >-
            Start time of the session, in the property's local time (HH:mm or
            HH:mm:ss).
          example: '10:00'
        sessionDuration:
          type: number
          description: Length of the session in minutes.
          example: 60
        purchaser:
          type: object
          properties:
            firstName:
              type: string
              description: Purchaser's first name.
              example: Alice
            lastName:
              type: string
              description: Purchaser's last name.
              example: Rivera
            emailAddress:
              type: string
              pattern: >-
                ^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|.(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$
              nullable: true
              description: >-
                Purchaser's email address. The booking invitation is sent here
                when capacity opens.
              example: alice@example.com
            phoneNumber:
              type: string
              nullable: true
              description: Purchaser's phone number. Optional.
              example: '+15550100'
            customQuestionResponses:
              type: array
              items:
                type: object
                properties:
                  questionId:
                    type: string
                    description: Identifier of the custom question being answered.
                    example: b2a1c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d
                  answer:
                    type: array
                    items:
                      type: object
                      properties:
                        value:
                          oneOf:
                            - type: string
                            - type: boolean
                          description: >-
                            The answer content: free text for input and textarea
                            questions, the chosen option's label for select
                            questions, or a boolean for terms-and-conditions
                            acceptance.
                        key:
                          type: string
                          nullable: true
                          description: >-
                            For select-type questions, the UUID of the chosen
                            option. Omit for other field types.
                          example: f0e1d2c3-b4a5-4968-8776-655443322110
                      required:
                        - value
                    description: >-
                      Answer values for the question. Select-type questions can
                      include multiple entries; text and terms questions take
                      one.
                required:
                  - questionId
                  - answer
              description: Answers to the experience's purchaser-scoped custom questions.
          required:
            - firstName
            - lastName
          description: >-
            The guest joining the waitlist. They receive the booking invitation
            when capacity opens up.
        participants:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                description: >-
                  Identifier of an existing participant record. Omit for new
                  participants.
                example: 019f5ca1-5432-751e-8663-7c22693a6e7e
              firstName:
                type: string
                description: Participant's first name.
                example: Alice
              lastName:
                type: string
                description: Participant's last name.
                example: Rivera
              emailAddress:
                type: string
                pattern: >-
                  ^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|.(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$
                nullable: true
                description: Participant's email address. Optional.
                example: alice@example.com
              phoneNumber:
                type: string
                nullable: true
                description: Participant's phone number. Optional.
                example: '+15550100'
              priceTierName:
                type: string
                description: >-
                  Name of the price tier to book the participant under when the
                  invitation is accepted.
                example: Adult
              customQuestionResponses:
                type: array
                items:
                  type: object
                  properties:
                    questionId:
                      type: string
                      description: Identifier of the custom question being answered.
                      example: b2a1c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d
                    answer:
                      type: array
                      items:
                        type: object
                        properties:
                          value:
                            oneOf:
                              - type: string
                              - type: boolean
                            description: >-
                              The answer content: free text for input and
                              textarea questions, the chosen option's label for
                              select questions, or a boolean for
                              terms-and-conditions acceptance.
                          key:
                            type: string
                            nullable: true
                            description: >-
                              For select-type questions, the UUID of the chosen
                              option. Omit for other field types.
                            example: f0e1d2c3-b4a5-4968-8776-655443322110
                        required:
                          - value
                      description: >-
                        Answer values for the question. Select-type questions
                        can include multiple entries; text and terms questions
                        take one.
                  required:
                    - questionId
                    - answer
                description: >-
                  Answers to the experience's participant-scoped custom
                  questions.
            required:
              - firstName
              - lastName
              - priceTierName
          minItems: 1
          description: >-
            Guests to include in the waitlist entry. At least one participant is
            required.
      required:
        - sessionStartDate
        - sessionStartTime
        - sessionDuration
        - purchaser
        - participants
  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).

````