---
title: "Reschedule an appointment"
method: POST
path: "/v4/appointment/{id}/reschedule"
tags: ["Appointment V4"]
---

# Reschedule an appointment

`POST /v4/appointment/{id}/reschedule`

## Request

- Base URL: `https://developer.meetergo.com` (the document declares no server; this is the origin it was published from)
- URL: `https://developer.meetergo.com/v4/appointment/{id}/reschedule`
- Auth: one of:
  - API key in header `x-meetergo-api-user-id`
  - HTTP bearer
  - HTTP bearer

Moves an appointment to a new time slot. The duration remains unchanged. Validates availability by default — set `ignoreAvailability: true` to schedule outside available hours or on top of existing appointments.

**Side effects:** Sends reschedule notifications to all participants, updates calendar events, regenerates ICS, reschedules reminders, updates CRM integrations, and fires `booking_rescheduled` webhook.

## Path parameters

- `id` string, required

## Request body

- RescheduleAppointmentDto
  - `start` string, required: New start time for the appointment in ISO 8601 format. The duration remains unchanged.
  - `ignoreAvailability` boolean: Skip availability and conflict checks. Allows scheduling outside available hours or on top of existing appointments. Defaults to `false`.

## Response `200`

The rescheduled appointment with previous start time

- RescheduleResponseDto
  - `appointment` AppointmentResponseDto, required
    - `id` string, required: Appointment ID
    - `secret` string, required: Secret key for appointment authentication
    - `ics` string, required: ICS calendar data
    - `meetingInfo` MeetingInfo, required
      - `name` string, required: Name of the meeting type
      - `description` string, required: Description of the meeting type
      - `nameLocalised` LocalisedContent
        - `en` string, required
        - `de` string
        - `fr` string
        - `es` string
        - `no` string
        - `it` string
        - `nl` string
        - `da` string
        - `pl` string
        - `se` string
        - `tr` string
      - `descriptionLocalised` LocalisedContent
        - `en` string, required
        - `de` string
        - `fr` string
        - `es` string
        - `no` string
        - `it` string
        - `nl` string
        - `da` string
        - `pl` string
        - `se` string
        - `tr` string
      - `enableRedirect` boolean, required: Enable redirect after booking completion
      - `redirect` string, required: Redirect URL to navigate after booking
      - `passEventDetailsToRedirect` boolean, required: Pass event details (invitee name, email, form answers) as query params to redirect URL
      - `duration` number, required: Primary duration in minutes
      - `channel` 'local' | 'local-attendee' | 'google' | 'zoom' | 'phone' | 'phone-incoming' | 'whatsapp' | 'connect' | 'webex' | 'skypeForConsumer' | 'skypeForBusiness' | 'teamsForBusiness' | 'teamsForBusiness2' | 'teamsForExchange' | 'teams2ForExchange' | 'custom' | 'resource' | 'whereby' | 'kmeet' | 'zava' | 'jitsi' | 'nextcloudTalk' | 'openTalk' | 'alfaview', required: Meeting channel/location type
      - `customChannelName` string, required: Custom name for the meeting channel
      - `customChannelLink` string, required: Custom link for the meeting channel
      - `connectChannelName` string, required: Custom display name for the connect channel
      - `groupBooking` boolean, required: Enable group booking (multiple attendees per slot)
      - `showAvailableSlots` boolean, required: Show available spots count on the booking page
      - `enrichInvitee` boolean, required: Enable invitee data enrichment
      - `autoCreateSpace` boolean, required: Auto-create a Space when someone books
      - `spacePresetId` object, nullable: Space preset id used for the auto-created Space
      - `spaceAutoInvite` boolean, required: Publish the auto-created Space and invite the booker
      - `confirmationButton` ConfirmationButton, required
        - `useConfirmationButton` boolean, required
        - `text` string, required
        - `color` string, required
        - `link` string, required
      - `bufferBefore` number, required: Buffer time before meeting in minutes
      - `bufferAfter` number, required: Buffer time after meeting in minutes
      - `bufferMustStayWithinWorkingHours` boolean, required: Only offer slots where buffer fits within working hours (no spillover into breaks or after-hours)
      - `rollingSlots` boolean, required: Restart the slot grid after each appointment instead of keeping a fixed grid per working block
      - `color` object, nullable: Color for the meeting type in RGB format, e.g. "rgb(0, 153, 255)"
    - `hostingInfo` HostingInfoResponseDto, required
      - `mainHost` string, nullable: Main host user ID
      - `meetingLink` string, nullable: Meeting link for the appointment
      - `googleEventId` string, nullable: Google Calendar event ID
      - `googleConnectionSub` string, nullable: Google connection subject
      - `calendarConnectionId` string: Calendar connection ID for external calendars
      - `zoomMeetingId` number, nullable: Zoom meeting ID
      - `connectChannelId` string: Connect channel ID for external integrations
      - `wherebyMeetingId` string, nullable: Whereby meeting ID
      - `alfaviewMeetingId` string, nullable: alfaview meeting ID
      - `alfaviewModeratorLink` string, nullable: alfaview join URL with moderator permissions, for the host only
      - `calendarSyncProviders` AppointmentCalendarSync
        - `id` string, required: Calendar connection id
        - `type` string, required: Calendar connection type. Google, Outlook, etc.
        - `hostId` string, required: User id of the host
        - `eventId` string, required: Id of the external event that is created on the calendar.
        - `calendarId` string, required: Id of the external calendar on which the event is created.
    - `cancel` BookingActionInfoResponseDto, required
      - `actionAt` string: Timestamp when the action occurred
      - `actionBy` string, nullable: User ID who performed the action
      - `actionSource` 'attendee' | 'company' | 'host', required
      - `reason` string: Reason for the action (e.g., cancellation reason)
    - `crmOptions` MeetingCRMOptions, required
      - `hubspotContactSync` boolean, required
      - `hubspotContactStage` string, required
      - `hubspotCompanySync` boolean, required
      - `hubspotCompanyStage` string, required
      - `hubspotCompanyMatchingField` string, required
      - `hubspotDealSync` boolean, required
      - `hubspotDealStage` string, required
      - `hubspotPipelineId` string, required
      - `pipedriveDealSync` boolean, required
      - `pipedriveContactSync` boolean, required
      - `pipedrivePipelineId` number, nullable, required
      - `pipedriveStageId` number, nullable, required
      - `pipedriveUseExistingDeal` boolean, required
      - `closeDealSync` boolean, required
      - `closeContactSync` boolean, required
      - `closePipelineId` object, nullable, required
      - `closeStatusId` object, nullable, required
      - `closeUseExistingDeal` boolean, required
      - `centralStationContactSync` boolean, required
      - `centralStationDealSync` boolean, required
      - `centralStationPipelineId` number, nullable, required
      - `centralStationStageId` number, nullable, required
      - `linkandoSyncEnabled` boolean, required
      - `linkandoPlaybookId` number, nullable, required
      - `linkandoTemplateId` number, nullable, required
      - `evalancheEnabled` boolean, required
      - `klicktippEnabled` boolean, required
      - `getResponseEnabled` boolean, required
      - `getResponseCampaignId` string, nullable, required
      - `brevoEnabled` boolean, required
      - `sevdeskEnabled` boolean, required
      - `sevdeskCategoryId` number, nullable, required
      - `lexwareEnabled` boolean, required
      - `professionalWorksEnabled` boolean, required
      - `abAgentaEnabled` boolean, required
      - `smartWeContactSync` boolean, required
      - `smartWeCompanySync` boolean, required
      - `smartWeDealSync` boolean, required
      - `smartWeDealStage` string, required
      - `salesforceSyncEnabled` boolean, required
      - `salesforceCaseSync` boolean, required
      - `salesforceLeadSync` boolean, required
      - `salesforceOpportunitySync` boolean, required
      - `salesforceLeadStatus` string, required
      - `salesforceCaseStatus` string, required
      - `salesforceOpportunityStage` string, required
      - `salesforceDefaultObjectType` string, required
      - `internalCrmPipelineId` object, nullable, required
      - `internalCrmStageId` object, nullable, required
      - `crmOptInFieldName` object, nullable, required
    - `start` string, required: Appointment start time (ISO string)
    - `end` string, required: Appointment end time (ISO string)
    - `isCancelled` boolean, required: Whether the appointment is cancelled
    - `rescheduledAt` string: When the appointment was rescheduled
    - `rescheduledBy` string, nullable: Email address of the attendee, host, or operator who last rescheduled the appointment
    - `location` string: Meeting location
    - `attendees` AttendeeBasicDto[], required: Appointment attendees without relation properties
      - `id` string, required: Attendee ID
      - `secret` string, required: Attendee secret for authentication
      - `email` string: Attendee email address
      - `fullname` string: Attendee full name
      - `firstname` string: Attendee first name
      - `lastname` string: Attendee last name
      - `bringalongEmails` string[], required: Additional attendee emails (bring-along)
      - `notes` object, required: Attendee notes as key-value pairs
      - `receiveReminders` boolean, required: Whether attendee receives reminders
      - `phone` string: Attendee phone number
      - `language` string, required: Attendee preferred language
      - `timezone` string, required: Attendee timezone
      - `noShow` boolean, required: Whether attendee was a no-show
      - `noShowAt` string, date-time, nullable
      - `dataPolicyAccepted` boolean, required: Whether data policy was accepted
      - `doubleOptIn` string: Double opt-in confirmation timestamp
      - `createdAt` string, required: Creation timestamp
      - `updatedAt` string, required: Last update timestamp
      - `deletedAt` string: Soft deletion timestamp
      - `billingDetails` AttendeeBillingDetails
        - `company` string
        - `addressLine1` string
        - `addressLine2` string
        - `postalCode` string
        - `city` string
        - `countryCode` string: ISO 3166-1 alpha-2
        - `vatId` string: USt-IdNr.
    - `attendeeIds` string[], required: Array of attendee IDs
    - `roundRobinEntries` RoundRobinEntryDto[], required: Round robin entries for this appointment
      - `id` number, required
      - `userId` string, nullable
      - `groupId` string, nullable
      - `appointmentId` string, nullable
      - `queueId` string
      - `createdAt` string, required
      - `selectionReason` string
    - `meetingTypeId` string, required: Meeting type ID
    - `hostIds` string[], required: Array of host user IDs
    - `scheduledReminderIds` string[], required: Array of scheduled reminder IDs
    - `companyId` string, required: Company ID this appointment belongs to
    - `createdAt` string, required: Creation timestamp
    - `updatedAt` string, required: Last update timestamp
    - `deletedAt` string: Soft deletion timestamp
    - `resolvableErrors` ResolvableErrorBasicDto[], required: Appointment resolvable errors (error codes only)
      - `errorCode` string, required: Error code identifying the type of error
    - `paymentId` string: Payment ID if this is a paid appointment
    - `note` string: Appointment note
    - `transcription` string, nullable: Full meeting transcription in markdown format
    - `summary` string, nullable: AI-generated summary of the meeting in markdown format
  - `previousStart` string, required: The previous start time before rescheduling (ISO 8601)

## Other responses

- `201`
- `400`: Invalid start time, time slot conflict, or appointment already completed
- `401`: Missing, malformed, or expired credentials.
- `403`: User does not have access or reschedule feature is not available
- `404`: Appointment not found
- `429`: Rate limited. Back off and retry.

---

[API](https://skmtc.dev/meetergo/apis/meetergo-platform-api.md) · [All operations](https://skmtc.dev/meetergo/apis/meetergo-platform-api/llms.txt) · [OpenAPI document](https://skmtc.dev/meetergo/apis/meetergo-platform-api/revisions/b5d66cd8be67?raw)
