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

# Submit cancellation request for booking

Submit a cancellation request for a booking owned by your partner account.
This validates input and ownership, creates a request log with status `SUBMITTED`, and enqueues an
asynchronous job for downstream processing. The immediate response acknowledges submission and does
not represent the final booking outcome. See [Cancellation & reschedule lifecycle](/docs/guide/key-concepts#cancellation-%26-reschedule-lifecycle) for the full flow and how to observe the outcome.

### Refund handling

Cancellation eligibility (`cancellationPolicy.cancellable`, `cancellableUpToInMinutes`) only determines whether Headout accepts the cancellation. Refunds are handled separately:

* When an eligible booking is cancelled, your Headout wallet is topped up automatically with the **full booking amount**.
* You are responsible for refunding the end customer through your own payment system. Headout does not contact or refund the end customer.

See [Cancellation & reschedule policies](/docs/guide/key-concepts#cancellation-%26-reschedule-policies) for details.

<RequestExample>
  ```bash cURL theme={"theme":{"light":"github-light","dark":"github-dark"}}
  curl -X POST \
    "https://www.headout.com/api/public/v2/bookings/12345/cancel/" \
    --header 'Headout-Auth: <YOUR_API_KEY>' \
    -H "Content-Type: application/json" \
    -d '{
      "reason": "CHANGE_OF_TRAVEL_PLANS",
      "comment": "Customer cannot attend"
    }'
  ```
</RequestExample>


## OpenAPI

````yaml POST /api/public/v2/bookings/{bookingId}/cancel/
openapi: 3.1.0
info:
  title: Headout API Docs - API Partner v2
  version: 0.0.1
servers:
  - url: https://www.headout.com
    description: Production server
  - url: https://www.sandbox-headout.com
    description: Sandbox server
security: []
paths:
  /api/public/v2/bookings/{bookingId}/cancel/:
    post:
      tags:
        - Bookings
      summary: Submit cancellation request for booking
      operationId: v2CancelBooking
      parameters:
        - name: bookingId
          in: path
          required: true
          schema:
            type: string
          description: Booking identifier owned by the calling partner.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PartnerCancellationRequest'
      responses:
        '200':
          description: Acknowledgement of cancellation submission or business-rule failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PartnerCancellationAck'
        '401':
          description: Missing or invalid `Headout-Auth`
        '403':
          description: Partner not active, not an API Partner, or booking not owned by key
      security:
        - apiKeyAuth: []
components:
  schemas:
    PartnerCancellationRequest:
      type: object
      required:
        - reason
      properties:
        reason:
          type: string
          description: Cancellation reason.
          enum:
            - TICKETS_NOT_RECEIVED
            - CHANGE_OF_TRAVEL_PLANS
            - MODIFY_EXISTING_RESERVATION
            - FOUND_CHEAPER_OPTION_ELSEWHERE
            - OTHER
        comment:
          type:
            - string
            - 'null'
          description: Optional free-text comment
    PartnerCancellationAck:
      type: object
      properties:
        success:
          type: boolean
          description: Indicates whether the request was accepted
        message:
          type: string
          description: Human-readable message describing the outcome
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: Headout-Auth

````