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

# Cancel an appointment

> Cancels an appointment as the host or admin. For group bookings, specify `attendeeId` to remove a single attendee, or set `cancelAll: true` to cancel the entire appointment — omitting both returns a 400 error to prevent accidental full cancellation.

**Side effects:** Sends cancellation emails to all participants, syncs calendar events, updates CRM integrations, and fires `booking_cancelled` webhook.

**Series cancellation:** Set `cancelEntireSeries: true` to cancel all future occurrences of a recurring appointment.



## OpenAPI

````yaml /openapi.json post /v4/appointment/{id}/cancel
openapi: 3.0.0
info:
  title: meetergo Platform API
  description: >-
    Comprehensive scheduling API for creating users, managing availability,
    handling bookings, and connecting calendar providers. Enables seamless
    integration with external platforms and applications.
  version: 0.0.0
  contact: {}
  termsOfService: https://www.meetergo.com/tos/
servers: []
security: []
tags:
  - name: User V4
    description: Create and manage users in your workspace
  - name: Meeting Type V4
    description: Configure meeting templates with durations, buffers, and conferencing
  - name: availability
    description: Manage weekly schedules and availability settings
  - name: Booking V4
    description: Create new bookings
  - name: Booking Availability V4
    description: Query available time slots for booking
  - name: Appointment V4
    description: Manage existing appointments
  - name: Attendee V4
    description: Manage attendee details and notes
  - name: Calendar Connections V4
    description: Connect and sync external calendars
  - name: One Time Booking Link V4
    description: Create single-use booking links
  - name: availability-exception
    description: Override availability for specific dates
  - name: Booking Link V4
    description: Configure various booking page types
  - name: Personal Page V4
    description: Manage user profile pages
  - name: Handoff V4
    description: Reassign meetings to other hosts
  - name: Calendar Auth V4
    description: OAuth callbacks for calendar providers
  - name: Queue V4
    description: Round-robin and queue-based routing (Beta)
  - name: Queue User Group V4
    description: Manage queue user groups (Beta)
  - name: Meeting Type Template V4
    description: Reusable meeting type configurations (Beta)
  - name: Attendee Pending V4
    description: Manage pending attendee approvals (Beta)
  - name: Provisional Booking V4
    description: Manage provisional/unconfirmed bookings (Beta)
paths:
  /v4/appointment/{id}/cancel:
    post:
      tags:
        - Appointment V4
      summary: Cancel an appointment
      description: >-
        Cancels an appointment as the host or admin. For group bookings, specify
        `attendeeId` to remove a single attendee, or set `cancelAll: true` to
        cancel the entire appointment — omitting both returns a 400 error to
        prevent accidental full cancellation.


        **Side effects:** Sends cancellation emails to all participants, syncs
        calendar events, updates CRM integrations, and fires `booking_cancelled`
        webhook.


        **Series cancellation:** Set `cancelEntireSeries: true` to cancel all
        future occurrences of a recurring appointment.
      operationId: cancelAppointment
      parameters:
        - name: id
          required: true
          in: path
          description: Appointment ID (UUID)
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CancelAppointmentDto'
      responses:
        '200':
          description: The cancelled appointment
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppointmentResponseDto'
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppointmentResponseDto'
        '400':
          description: >-
            Group booking requires explicit intent: provide `attendeeId` or set
            `cancelAll: true`
        '403':
          description: User does not have access to this appointment
        '404':
          description: Appointment not found
      security:
        - ApiUserHeader: []
        - JWT: []
        - ApiKey: []
components:
  schemas:
    CancelAppointmentDto:
      type: object
      properties:
        reason:
          type: string
          maxLength: 500
          description: >-
            Reason for cancellation. Included in notification emails sent to
            participants.
          example: Schedule conflict
        attendeeId:
          type: string
          format: uuid
          description: >-
            For group bookings: the ID of the attendee to remove. The
            appointment continues for remaining attendees. If omitted on a group
            booking, `cancelAll` must be set to `true`.
        cancelAll:
          type: boolean
          description: >-
            Required for group bookings when `attendeeId` is not provided.
            Confirms intent to cancel the entire group appointment for all
            attendees. Ignored for non-group bookings.
          default: false
        cancelEntireSeries:
          type: boolean
          description: >-
            If `true` and the appointment is part of a recurring series, cancels
            all future occurrences in addition to this one. Defaults to `false`.
          default: false
    AppointmentResponseDto:
      type: object
      properties:
        id:
          type: string
          description: Appointment ID
        secret:
          type: string
          description: Secret key for appointment authentication
        ics:
          type: string
          description: ICS calendar data
        meetingInfo:
          description: Meeting information including title, duration, etc.
          allOf:
            - $ref: '#/components/schemas/MeetingInfo'
        hostingInfo:
          description: Hosting information including links and integration IDs
          allOf:
            - $ref: '#/components/schemas/HostingInfoResponseDto'
        cancel:
          description: Cancellation information
          allOf:
            - $ref: '#/components/schemas/BookingActionInfoResponseDto'
        crmOptions:
          description: CRM integration options
          allOf:
            - $ref: '#/components/schemas/MeetingCRMOptions'
        start:
          type: string
          description: Appointment start time (ISO string)
        end:
          type: string
          description: Appointment end time (ISO string)
        isCancelled:
          type: boolean
          description: Whether the appointment is cancelled
        rescheduledAt:
          type: string
          description: When the appointment was rescheduled
        location:
          type: string
          description: Meeting location
        attendees:
          description: Appointment attendees without relation properties
          type: array
          items:
            $ref: '#/components/schemas/AttendeeBasicDto'
        attendeeIds:
          description: Array of attendee IDs
          type: array
          items:
            type: string
        roundRobinEntries:
          description: Round robin entries for this appointment
          type: array
          items:
            $ref: '#/components/schemas/RoundRobinEntryDto'
        meetingTypeId:
          type: string
          description: Meeting type ID
        hostIds:
          description: Array of host user IDs
          type: array
          items:
            type: string
        scheduledReminderIds:
          description: Array of scheduled reminder IDs
          type: array
          items:
            type: string
        companyId:
          type: string
          description: Company ID this appointment belongs to
        createdAt:
          type: string
          description: Creation timestamp
        updatedAt:
          type: string
          description: Last update timestamp
        deletedAt:
          type: string
          description: Soft deletion timestamp
        resolvableErrors:
          description: Appointment resolvable errors (error codes only)
          type: array
          items:
            $ref: '#/components/schemas/ResolvableErrorBasicDto'
        paymentId:
          type: string
          description: Payment ID if this is a paid appointment
        note:
          type: string
          description: Appointment note
        transcription:
          type: string
          nullable: true
          description: Full meeting transcription in markdown format
        summary:
          type: string
          nullable: true
          description: AI-generated summary of the meeting in markdown format
      required:
        - id
        - secret
        - ics
        - meetingInfo
        - hostingInfo
        - cancel
        - crmOptions
        - start
        - end
        - isCancelled
        - attendees
        - attendeeIds
        - roundRobinEntries
        - meetingTypeId
        - hostIds
        - scheduledReminderIds
        - companyId
        - createdAt
        - updatedAt
        - resolvableErrors
    MeetingInfo:
      type: object
      properties:
        name:
          type: string
          description: Name of the meeting type
        description:
          type: string
          description: Description of the meeting type
        enableRedirect:
          type: boolean
          description: Enable redirect after booking completion
        redirect:
          type: string
          description: Redirect URL to navigate after booking
        passEventDetailsToRedirect:
          type: boolean
          description: >-
            Pass event details (invitee name, email, form answers) as query
            params to redirect URL
        duration:
          type: number
          description: Primary duration in minutes
        channel:
          description: Meeting channel/location type
          allOf:
            - $ref: '#/components/schemas/MeetingTypeChannel'
        customChannelName:
          type: string
          description: Custom name for the meeting channel
        customChannelLink:
          type: string
          description: Custom link for the meeting channel
        groupBooking:
          type: boolean
          description: Enable group booking (multiple attendees per slot)
        showAvailableSlots:
          type: boolean
          description: Show available spots count on the booking page
        enrichInvitee:
          type: boolean
          description: Enable invitee data enrichment
        confirmationButton:
          description: Confirmation button settings
          allOf:
            - $ref: '#/components/schemas/ConfirmationButton'
        bufferBefore:
          type: number
          description: Buffer time before meeting in minutes
        bufferAfter:
          type: number
          description: Buffer time after meeting in minutes
        color:
          type: object
          description: Color for the meeting type in RGB format, e.g. "rgb(0, 153, 255)"
          nullable: true
      required:
        - name
        - description
        - enableRedirect
        - redirect
        - passEventDetailsToRedirect
        - duration
        - channel
        - customChannelName
        - customChannelLink
        - groupBooking
        - showAvailableSlots
        - enrichInvitee
        - confirmationButton
        - bufferBefore
        - bufferAfter
    HostingInfoResponseDto:
      type: object
      properties:
        mainHost:
          type: string
          nullable: true
          description: Main host user ID
        meetingLink:
          type: string
          nullable: true
          description: Meeting link for the appointment
        googleEventId:
          type: string
          nullable: true
          description: Google Calendar event ID
        googleConnectionSub:
          type: string
          nullable: true
          description: Google connection subject
        calendarConnectionId:
          type: string
          description: Calendar connection ID for external calendars
        zoomMeetingId:
          type: number
          nullable: true
          description: Zoom meeting ID
        connectChannelId:
          type: string
          description: Connect channel ID for external integrations
        wherebyMeetingId:
          type: string
          nullable: true
          description: Whereby meeting ID
        calendarSyncProviders:
          nullable: true
          description: Calendar sync provider configurations
          allOf:
            - $ref: '#/components/schemas/AppointmentCalendarSync'
    BookingActionInfoResponseDto:
      type: object
      properties:
        actionAt:
          type: string
          description: Timestamp when the action occurred
        actionBy:
          type: string
          nullable: true
          description: User ID who performed the action
        actionSource:
          nullable: true
          description: Source of the booking action (Host, Attendee, Company)
          allOf:
            - $ref: '#/components/schemas/BookingActionSource'
        reason:
          type: string
          description: Reason for the action (e.g., cancellation reason)
      required:
        - actionSource
    MeetingCRMOptions:
      type: object
      properties:
        hubspotContactSync:
          type: boolean
        hubspotContactStage:
          type: string
        hubspotCompanySync:
          type: boolean
        hubspotCompanyStage:
          type: string
        hubspotCompanyMatchingField:
          type: string
        hubspotDealSync:
          type: boolean
        hubspotDealStage:
          type: string
        hubspotPipelineId:
          type: string
        pipedriveDealSync:
          type: boolean
        pipedriveContactSync:
          type: boolean
        pipedrivePipelineId:
          type: number
          nullable: true
        pipedriveStageId:
          type: number
          nullable: true
        pipedriveUseExistingDeal:
          type: boolean
        centralStationContactSync:
          type: boolean
        centralStationDealSync:
          type: boolean
        centralStationPipelineId:
          type: number
          nullable: true
        centralStationStageId:
          type: number
          nullable: true
        linkandoSyncEnabled:
          type: boolean
        linkandoPlaybookId:
          type: number
          nullable: true
        linkandoTemplateId:
          type: number
          nullable: true
        evalancheEnabled:
          type: boolean
        klicktippEnabled:
          type: boolean
        getResponseEnabled:
          type: boolean
        getResponseCampaignId:
          type: string
          nullable: true
        brevoEnabled:
          type: boolean
        sevdeskEnabled:
          type: boolean
        sevdeskCategoryId:
          type: number
          nullable: true
        smartWeContactSync:
          type: boolean
        smartWeCompanySync:
          type: boolean
        smartWeDealSync:
          type: boolean
        smartWeDealStage:
          type: string
        salesforceSyncEnabled:
          type: boolean
        salesforceCaseSync:
          type: boolean
        salesforceLeadSync:
          type: boolean
        salesforceOpportunitySync:
          type: boolean
        salesforceLeadStatus:
          type: string
        salesforceCaseStatus:
          type: string
        salesforceOpportunityStage:
          type: string
        salesforceDefaultObjectType:
          type: string
        internalCrmPipelineId:
          type: object
          nullable: true
        internalCrmStageId:
          type: object
          nullable: true
        crmOptInFieldName:
          type: object
          nullable: true
      required:
        - hubspotContactSync
        - hubspotContactStage
        - hubspotCompanySync
        - hubspotCompanyStage
        - hubspotCompanyMatchingField
        - hubspotDealSync
        - hubspotDealStage
        - hubspotPipelineId
        - pipedriveDealSync
        - pipedriveContactSync
        - pipedrivePipelineId
        - pipedriveStageId
        - pipedriveUseExistingDeal
        - centralStationContactSync
        - centralStationDealSync
        - centralStationPipelineId
        - centralStationStageId
        - linkandoSyncEnabled
        - linkandoPlaybookId
        - linkandoTemplateId
        - evalancheEnabled
        - klicktippEnabled
        - getResponseEnabled
        - getResponseCampaignId
        - brevoEnabled
        - sevdeskEnabled
        - sevdeskCategoryId
        - smartWeContactSync
        - smartWeCompanySync
        - smartWeDealSync
        - smartWeDealStage
        - salesforceSyncEnabled
        - salesforceCaseSync
        - salesforceLeadSync
        - salesforceOpportunitySync
        - salesforceLeadStatus
        - salesforceCaseStatus
        - salesforceOpportunityStage
        - salesforceDefaultObjectType
        - internalCrmPipelineId
        - internalCrmStageId
        - crmOptInFieldName
    AttendeeBasicDto:
      type: object
      properties:
        id:
          type: string
          description: Attendee ID
        secret:
          type: string
          description: Attendee secret for authentication
        email:
          type: string
          description: Attendee email address
        fullname:
          type: string
          description: Attendee full name
        firstname:
          type: string
          description: Attendee first name
        lastname:
          type: string
          description: Attendee last name
        bringalongEmails:
          description: Additional attendee emails (bring-along)
          type: array
          items:
            type: string
        notes:
          type: object
          additionalProperties:
            type: string
          description: Attendee notes as key-value pairs
        receiveReminders:
          type: boolean
          description: Whether attendee receives reminders
        phone:
          type: string
          description: Attendee phone number
        language:
          type: string
          description: Attendee preferred language
        timezone:
          type: string
          description: Attendee timezone
        noShow:
          type: boolean
          description: Whether attendee was a no-show
        dataPolicyAccepted:
          type: boolean
          description: Whether data policy was accepted
        doubleOptIn:
          type: string
          description: Double opt-in confirmation timestamp
        createdAt:
          type: string
          description: Creation timestamp
        updatedAt:
          type: string
          description: Last update timestamp
        deletedAt:
          type: string
          description: Soft deletion timestamp
      required:
        - id
        - secret
        - bringalongEmails
        - notes
        - receiveReminders
        - language
        - timezone
        - noShow
        - dataPolicyAccepted
        - createdAt
        - updatedAt
    RoundRobinEntryDto:
      type: object
      properties:
        id:
          type: number
        userId:
          type: string
          nullable: true
        groupId:
          type: string
          nullable: true
        appointmentId:
          type: string
          nullable: true
        queueId:
          type: string
        createdAt:
          type: string
        selectionReason:
          type: string
      required:
        - id
        - createdAt
    ResolvableErrorBasicDto:
      type: object
      properties:
        errorCode:
          type: string
          description: Error code identifying the type of error
      required:
        - errorCode
    MeetingTypeChannel:
      type: string
      enum:
        - local
        - local-attendee
        - google
        - zoom
        - phone
        - phone-incoming
        - whatsapp
        - connect
        - webex
        - skypeForConsumer
        - skypeForBusiness
        - teamsForBusiness
        - teamsForBusiness2
        - teamsForExchange
        - teams2ForExchange
        - custom
        - resource
        - whereby
        - kmeet
        - zava
        - jitsi
      description: Meeting channel/location type
    ConfirmationButton:
      type: object
      properties:
        useConfirmationButton:
          type: boolean
        text:
          type: string
        color:
          type: string
        link:
          type: string
      required:
        - useConfirmationButton
        - text
        - color
        - link
    AppointmentCalendarSync:
      type: object
      properties:
        id:
          type: string
          description: Calendar connection id
        type:
          type: string
          description: Calendar connection type. Google, Outlook, etc.
        hostId:
          type: string
          description: User id of the host
        eventId:
          type: string
          description: Id of the external event that is created on the calendar.
        calendarId:
          type: string
          description: Id of the external calendar on which the event is created.
      required:
        - id
        - type
        - hostId
        - eventId
        - calendarId
    BookingActionSource:
      type: string
      enum:
        - attendee
        - company
        - host
      description: Source of the booking action (Host, Attendee, Company)
  securitySchemes:
    ApiUserHeader:
      type: apiKey
      in: header
      name: x-meetergo-api-user-id
      description: >-
        User ID to act on behalf of. Platform API Keys only (required with an
        API Key unless the endpoint states otherwise). Requests authenticated
        with a Personal Access Token are rejected if this header names another
        user.
    JWT:
      scheme: bearer
      bearerFormat: JWT
      type: http
      description: JWT Bearer token for standard user authentication
    ApiKey:
      scheme: bearer
      bearerFormat: API Key
      type: http
      description: >-
        Bearer token: a Platform API Key (format: ak_live:<uuid>:<secret>) or a
        Personal Access Token (format: rgo-...). PATs always act as the token
        owner.

````