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

# Update a booking

> Update a booking. Use this endpoint to reschedule a booking by providing new slot details, change the booking status (cancel, approve, reject), or assign a meeting outcome to the booking.

<Info>
  In **API v2**, this endpoint handles **approve**, **reject**, **cancel**, and **reschedule** flows. Older v1-only routes for those actions are not available in v2—use `status` for approve/reject/cancel, and `slot_date`, `slot_start_time`, and `time_zone` to reschedule. See the operation description below for details.
</Info>

<Info>Replace `{your-subdomain}` with your workspace’s subdomain. <br /> Learn how to find your subdomain in [Workspace subdomain](/getting-started/workspace-subdomain).</Info>


## OpenAPI

````yaml bundled/bookings.yaml PATCH /bookings/{booking_id}
openapi: 3.0.3
info:
  title: NeetoCal Bookings APIs
  version: 2.0.0
servers:
  - description: NeetoCal APIs
    url: https://{your-subdomain}.neetocal.com/api/external/v2
    variables:
      your-subdomain:
        default: spinkart
        description: >-
          Replace **spinkart** with your [workspace's
          subdomain](/getting-started/workspace-subdomain).
security: []
tags:
  - name: Bookings
    description: >-
      APIs to create, list, and update bookings (reschedule, approve, reject, or
      cancel via the update endpoint).
paths:
  /bookings/{booking_id}:
    patch:
      tags:
        - Bookings
      summary: Update a booking
      description: >-
        Update a booking. Use this endpoint to reschedule a booking by providing
        new slot details, change the booking status (cancel, approve, reject),
        or assign a meeting outcome to the booking.
      parameters:
        - $ref: '#/components/parameters/api_key_header'
        - in: path
          name: booking_id
          description: ID or SID of the booking that you want to update.
          required: true
          schema:
            type: string
            example: hda6gxy
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: Name of person making the booking.
                  example: Eve Smith
                email:
                  type: string
                  description: Email of person making the booking.
                  example: eve@example.com
                slot_date:
                  type: string
                  description: >-
                    Date on which the booking is to be rescheduled. This should
                    be in "YYYY-MM-DD" format.
                  example: '2025-07-25'
                slot_start_time:
                  type: string
                  description: >-
                    Start time for the booking. This should be in "HH:MM AM/PM"
                    format.
                  example: 10:30 AM
                time_zone:
                  type: string
                  description: Time zone of person rescheduling the booking.
                  example: Asia/Kolkata
                form_responses:
                  type: object
                  description: >-
                    Responses for the questions of booking form (optional). The
                    key of the field should be the field code of the question.
                    The field code can be found in scheduling link's Settings ->
                    Questions -> 3 dot menu of the question -> Edit -> Advanced
                    properties. You can specify guest emails using the
                    `guest_email_s` field code.
                  properties:
                    guest_email_s:
                      type: array
                      description: >-
                        Array of guest emails for the booking. The default field
                        code is "guest_email_s". You can change this by editing
                        the Guest email(s) question, and changing the field code
                        in advanced properties.
                      items:
                        type: string
                  example:
                    guest_email_s:
                      - sam@example.com
                      - charlie@example.com
                    language: English
                reschedule_reason:
                  type: string
                  description: Reason for rescheduling the booking (optional).
                  example: I want to change the booking time
                status:
                  type: string
                  description: >
                    Sets booking lifecycle status in one call (replaces v1
                    approve / reject / cancel endpoints). Use `approved` to
                    approve, `rejected` to reject (optional `rejection_reason`),
                    or `cancelled` to cancel (optional `cancel_reason`). Do not
                    send this field when you are only rescheduling or updating
                    other attributes.
                  enum:
                    - cancelled
                    - approved
                    - rejected
                cancel_reason:
                  type: string
                  description: >-
                    Reason for cancelling the booking. Used when status is
                    `cancelled`.
                  example: I am not available
                rejection_reason:
                  type: string
                  description: >-
                    Reason for rejecting the booking. Used when status is
                    `rejected`.
                  example: Time slot no longer available
                meeting_outcome_id:
                  type: string
                  nullable: true
                  description: >
                    Assign a meeting outcome to the booking by providing the
                    outcome's ID. Pass `null` to remove the currently assigned
                    outcome. This parameter cannot be combined with `status` or
                    reschedule parameters (`slot_date`, `slot_start_time`) in
                    the same request. Meeting outcomes can only be set on
                    confirmed or parallel-error bookings. You can get the
                    outcome ID from the [List meeting
                    outcomes](/api-reference/meeting-outcomes/list) endpoint.
                  example: 59413def-60eb-47c6-b390-098fcf583b66
      responses:
        '200':
          description: OK - Booking updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/booking'
components:
  parameters:
    api_key_header:
      in: header
      name: X-Api-Key
      description: >-
        Use the X-Api-Key header to provide your workspace API key. Refer to
        [Authentication](/getting-started/authentication) for more information.
      required: true
      schema:
        type: string
  schemas:
    booking:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the booking.
        sid:
          type: string
          description: Short identifier (SID) for the booking, used in URLs and API calls.
        parent_booking_id:
          type: string
          nullable: true
          description: Reference to the parent booking if this is a group booking.
        email:
          type: string
          description: Email address of the person who made the booking.
        name:
          type: string
          description: Name of the person who made the booking.
        host_name:
          type: string
          description: Name of the primary host for the meeting.
        host_email:
          type: string
          description: Email address of the primary host for the meeting.
        is_multihost:
          type: boolean
          description: Whether the meeting has multiple hosts.
        multihosts:
          type: array
          items:
            type: object
            properties:
              name:
                type: string
                description: Name of the host.
              email:
                type: string
                description: Email address of the host.
          description: List of all hosts for the meeting when is_multihost is true.
        starts_at:
          type: string
          format: date-time
          description: Start time of the booking in UTC.
        ends_at:
          type: string
          format: date-time
          description: End time of the booking in UTC.
        time_zone:
          type: string
          description: Time zone of the booking location.
        starts_at_for_client:
          type: string
          description: Start time of the booking in the client's local time zone.
        ends_at_for_client:
          type: string
          description: End time of the booking in the client's local time zone.
        status:
          type: string
          description: >-
            Current status of the booking (e.g., confirmed, cancelled,
            awaiting_approval, rejected).
        cancel_reason:
          type: string
          nullable: true
          description: Reason provided when the booking was cancelled.
        cancelled_by:
          type: string
          nullable: true
          description: Name of the person who cancelled the booking.
        reschedule_requested:
          type: boolean
          description: Whether a reschedule has been requested for this booking.
        preferred_meeting_spot:
          type: string
          description: Preferred meeting platform or location type selected by the client.
        room_type:
          type: string
          nullable: true
          description: |
            Type of meeting room or platform being used.
          enum:
            - daily
            - zoom
            - jitsi
            - google_meet
            - teams
            - whereby
            - in_person
            - custom
            - phone_call
        room_url:
          type: string
          nullable: true
          description: URL for the meeting room or platform.
        room_id:
          type: string
          nullable: true
          description: Unique identifier for the meeting room or platform.
        spot_details:
          type: string
          nullable: true
          description: Additional details about the meeting place.
        created_at:
          type: string
          format: date-time
          description: Timestamp when the booking was created.
        updated_at:
          type: string
          format: date-time
          description: Timestamp when the booking was last updated.
        meeting_id:
          type: string
          description: Unique identifier of the scheduling link this booking belongs to.
        meeting:
          type: object
          properties:
            name:
              type: string
              description: Name of the scheduling link.
          description: Basic information about the associated meeting.
        no_show:
          type: boolean
          description: Whether the booking is marked as no-show by the host.
        meeting_outcome:
          nullable: true
          description: Meeting outcome assigned to the booking.
          allOf:
            - $ref: '#/components/schemas/meeting_outcome'
        notes_url:
          type: string
          nullable: true
          description: URL to access notes or additional information about the booking.
        internal_notes:
          type: string
          nullable: true
          description: Internal notes about the booking visible only to hosts and admins.
        metadata:
          type: object
          nullable: true
          description: Additional custom data associated with the booking.
        admin_booking_url:
          type: string
          description: URL for hosts and admins to view and manage the booking.
        client_booking_url:
          type: string
          description: URL for clients to view their booking details.
        form_responses:
          type: array
          items:
            type: object
            properties:
              field:
                type: string
                description: Display name of the form field.
              value:
                type: string
                description: Value submitted for the form field.
              type:
                type: string
                description: Type of the form field (e.g., name, email, additional_guests).
              field_code:
                type: string
                description: Internal code identifier for the form field.
          description: Responses submitted through the booking form.
        form_responses_as_hash:
          type: object
          description: Form responses organized as key-value pairs for easier access.
          additionalProperties:
            type: string
        payment:
          nullable: true
          description: >-
            Payment details for the booking. Included only when a payment exists
            for the booking.
          allOf:
            - $ref: '#/components/schemas/booking_payment'
    meeting_outcome:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the meeting outcome.
          example: 59413def-60eb-47c6-b390-098fcf583b66
        name:
          type: string
          description: Name of the meeting outcome.
          example: Pricing Discussion
        color:
          type: string
          description: Color assigned to the meeting outcome.
          enum:
            - blue
            - orange
            - gray
            - red
            - yellow
            - violet
            - pink
            - teal
            - cyan
            - green
          example: yellow
        kind:
          type: string
          description: Kind of the meeting outcome.
          example: custom
        color_hex:
          type: string
          description: Hex color code for the meeting outcome.
          example: '#EAB308'
        is_system:
          type: boolean
          description: >-
            Whether this is a system-defined meeting outcome. System outcomes
            cannot be modified or deleted.
          example: false
        is_organization_owned:
          type: boolean
          description: Whether this outcome belongs to the organization.
          example: true
    booking_payment:
      type: object
      description: >
        Payment details associated with the booking. Present only when a payment
        exists for the booking.
      properties:
        id:
          type: string
          format: uuid
          description: Unique identifier of the payment record.
          example: f46c9ddf-221d-4238-afb2-280c1c6b3185
        external_id:
          type: string
          nullable: true
          description: Payment reference ID from the payment provider.
          example: pi_3ThCkv2c3CtEndqE1BwejQno
        provider:
          type: string
          description: Payment provider that processed the payment.
          example: stripe
        amount:
          type: string
          description: Payment amount.
          example: '100.0'
        currency:
          type: string
          description: Currency code. Follows the ISO 4217 standard.
          example: USD
        status:
          type: string
          description: Current status of the payment.
          example: successful
        successful:
          type: boolean
          description: Whether the payment was completed successfully.
          example: true
        payment_at:
          type: string
          format: date-time
          nullable: true
          description: Timestamp when the payment was made.
          example: '2026-06-11T17:51:09.321Z'

````