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

# Reschedule a booking

> Moves a booking to a different session.



## OpenAPI

````yaml post /v1/bookings/{bookingId}/reschedule
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/bookings/{bookingId}/reschedule:
    post:
      tags:
        - Bookings
      summary: Reschedule a booking
      description: Moves a booking to a different session.
      operationId: BookingPublicController_rescheduleBooking
      parameters:
        - $ref: '#/components/parameters/bookingIdPath_40'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BookingRescheduleRequest'
            example:
              sessionTime: '2026-07-17T10:00:00'
              sessionDuration: 60
      responses:
        '204':
          description: ''
      security:
        - Brand-API-Key: []
        - Organization-API-Key: []
components:
  parameters:
    bookingIdPath_40:
      name: bookingId
      in: path
      schema:
        type: string
      required: true
      description: The booking's ID.
      example: 019f5ca1-4dc1-775d-a40d-833f44bfccf4
  schemas:
    BookingRescheduleRequest:
      type: object
      properties:
        sessionTime:
          type: string
          description: >-
            New session start as a local date-time in the event's timezone,
            without a UTC offset.
          example: '2026-07-21T10:00:00'
        sessionDuration:
          type: number
          description: >-
            Duration of the new session in minutes. Defaults to the experience's
            configured session duration when omitted.
          example: 60
        experienceId:
          type: string
          format: uuid
          description: >-
            Identifier of a different experience to move the booking to. When
            omitted, the booking stays on its current experience.
          example: c99f70ee-1c0e-4534-a31a-96d5d966cc4b
        sendConfirmationEmail:
          type: boolean
          description: >-
            Whether to email the guest an updated confirmation for the
            rescheduled booking. Defaults to true.
          example: true
        participants:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                description: >-
                  Identifier of an existing participant to carry over. Omit for
                  participants added as part of the reschedule.
                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. Must
                  match a price tier available on the target session.
                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
          nullable: true
          description: >-
            Replacement participant list for the rescheduled booking. When
            omitted, the existing participants are kept.
        priceTier:
          type: object
          properties:
            id:
              type: string
              format: uuid
              description: Unique identifier of the price tier.
              example: a1b2c3d4-e5f6-4789-9abc-def012345678
            name:
              type: string
              description: >-
                Name of the price tier. Must match a tier configured on the
                target session.
              example: Adult
            price:
              type: number
              description: Per-participant price of the tier, in the brand's currency.
              example: 75
            maxQuantity:
              type: number
              description: >-
                Maximum number of participants that can be booked under this
                tier, when limited.
              example: 8
          required:
            - id
            - name
            - price
          nullable: true
          description: >-
            Price tier to apply when repricing the rescheduled booking. When the
            resulting price differs from what was paid, the difference is
            charged or refunded unless honorCurrentPrice is true.
        honorCurrentPrice:
          type: boolean
          description: >-
            When true, the booking keeps its originally paid price even if the
            new session is priced differently, so no charge or refund is made
            for the price difference.
          example: true
      required:
        - sessionTime
  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).

````