---
title: "Get public appointment details"
method: GET
path: "/v4/appointment/public/{appointmentId}"
tags: ["Appointment V4"]
---

# Get public appointment details

`GET /v4/appointment/public/{appointmentId}`

## 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/public/{appointmentId}`
- Auth: none declared

Retrieves public appointment information that can be accessed with or without authentication

## Path parameters

- `appointmentId` string, required

## Query parameters

- `secret` string

## Response `200`

Public appointment details retrieved successfully

- PublicAppointment
  - `id` string, required: Appointment unique identifier
  - `meetingTypeId` string: Meeting type ID associated with this appointment
  - `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)"
  - `online` boolean, required: Whether the appointment is conducted online
  - `start` string, required: Appointment start time (ISO string)
  - `end` string, required: Appointment end time (ISO string)
  - `isCancelled` boolean, required: Whether the appointment has been cancelled
  - `location` string: Physical location address
  - `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
  - `hosts` PublicAppointmentHost, required
    - `id` string, required: Host user unique identifier
    - `firstname` string, required: Host first name
    - `lastname` string, required: Host last name
    - `picture` string: Host profile picture URL
    - `emailVerified` boolean, required: Whether the host has verified their email
  - `company` PublicCompanyInfo, required
    - `id` string, required
    - `name` string, required
    - `slug` string, required: Company slug. Public pages address the company by it, e.g. the statutory withdrawal page at /widerruf/<slug>.
    - `description` string, required
    - `logo` string
    - `tier` 'basic' | 'essentials' | 'growth' | 'teams' | 'light' | 'suite' | 'premium' | 'enterprise', required
    - `primaryColor` string, required
    - `useBrandStyling` boolean, required
    - `hideMeetergoBranding` boolean, required
    - `businessCardTheme` BusinessCardTheme
      - `preset` string: Theme preset key, e.g. classic, nocturne
      - `accent` string: Hex accent color override
      - `background` BusinessCardBackground
        - `type` 'solid' | 'gradient' | 'image'
        - `value` string
      - `font` 'sans' | 'serif' | 'grotesk' | 'mono' | 'condensed' | 'rounded'
      - `buttonShape` 'sharp' | 'rounded' | 'pill'
    - `enforceBusinessCardTheme` boolean, required
    - `showDataPolicyLink` boolean, required
    - `hideDataPolicyCheckbox` boolean, required
    - `enableWithdrawalFunction` boolean, required: Whether the statutory withdrawal function (§ 356a BGB) is published for this company. Drives the "Vertrag widerrufen" link in the booking pages' legal footer.
    - `dataPolicyLink` string, nullable, required
    - `imprintLink` string, nullable, required
    - `deleted` boolean, required
    - `useFormalBookingLanguage` boolean, required
    - `enableCustomLegalText` boolean, required
    - `enableCookieBanner` boolean, required
    - `customLegalText` string, required
    - `customBookingCSS` string, required
    - `featureAccess` FeatureAccess, required
      - `polls` boolean, required
      - `advancedMeetingTypeSettings` boolean, required
      - `workflows` boolean, required
      - `maxWorkflows` number, required: -1 means unlimited
      - `meetingTypeCommunications` boolean, required
      - `multiHostBooking` boolean, required
      - `groupBooking` boolean, required
      - `enrichInvitee` boolean, required
      - `autoCreateSpace` boolean, required
      - `zapier` boolean, required
      - `personalizedBranding` boolean, required
      - `visualBranding` boolean, required
      - `crmIntegration` boolean, required
      - `cmpIntegration` boolean, required
      - `routingForms` boolean, required
      - `basicForms` boolean, required
      - `selectionPages` boolean, required
      - `dataFields` boolean, required
      - `roundRobin` boolean, required
      - `accountOwnerMatching` boolean, required
      - `handoff` boolean, required
      - `reschedule` boolean, required
      - `notifications` boolean, required
      - `workspaces` boolean, required
      - `api` boolean, required
      - `showcaseHubs` boolean, required
      - `meetergoConnect` boolean, required
      - `connectMaxParticipants` number, required
      - `connectMaxCallMinutes` number, required
      - `connectRecording` boolean, required
      - `connectBreakouts` boolean, required
      - `connectWebinars` boolean, required
      - `webhooks` boolean, required
      - `wallets` boolean, required
      - `dealSpace` boolean, required
      - `funnel` boolean, required
      - `unlimitedMeetingTypes` boolean, required
      - `salesforceIntegration` boolean, required
      - `salesforceStudioMapping` boolean, required
      - `salesforceRouting` boolean, required
      - `maximumCalendars` number, required
      - `disableIntercom` boolean, required
      - `supportChat` boolean, required
      - `evalancheIntegration` boolean, required
      - `analytics` boolean, required
      - `bookingFunnel` boolean, required
      - `funnelProgressAndInfobox` boolean, required
      - `contactsBeta` boolean, required
      - `paypalIntegration` boolean, required
      - `stripeIntegration` boolean, required
      - `mollieIntegration` boolean, required
      - `meetingTypeTemplates` boolean, required
      - `nextBeta` boolean, required
      - `video` boolean, required
      - `emailLayout` boolean, required
      - `reviews` boolean, required
      - `brevoIntegration` boolean, required
      - `getResponseIntegration` boolean, required
      - `customDomain` boolean, required
      - `maxCustomDomains` number, required
      - `maxViewers` number, required: -1 means unlimited
      - `apiPlatform` boolean, required
      - `slackIntegration` boolean, required
      - `calgent` boolean, required
      - `miraPipelineAutopilot` boolean, required
      - `fileUploads` boolean, required
      - `knowledgePageLimit` number, required
      - `storageQuotaMB` number, required
      - `recordingRetentionDays` number, required
      - `multiBooking` boolean, required
      - `bundles` boolean, required
      - `maxCrmDeals` number, required
      - `maxShowcaseHubs` number, required
      - `maxDealSpaces` number, required
      - `waitlist` boolean, required
      - `notetaker` boolean, required
      - `notetakerRecording` boolean, required
      - `maxNotetakerRecapsPerMonth` number, required
      - `maxLinkedInLookupsPerMonth` number, required
      - `quickMail` boolean, required
      - `enrichDealSpaceCompany` boolean, required
      - `whatsappAddon` boolean, required
      - `conversionWidgetNativeScheduling` boolean, required
      - `instagramDms` boolean, required
      - `bookingCoupons` boolean, required
      - `crmEmailSync` boolean, required
      - `websiteChat` boolean, required
      - `emailChannel` boolean, required
      - `teamChat` boolean, required
      - `aiPhoneAssistant` boolean, required
      - `aiPhoneAssistantAdvanced` boolean, required
      - `bookingLocations` boolean, required
      - `bookingBlocks` boolean, required
      - `invoicing` boolean, required
      - `purchaseDocuments` boolean, required
      - `hostedEvents` boolean, required
      - `hostedEventTicketing` boolean, required
      - `paymentLinks` boolean, required
      - `feedbackLoop` boolean, required
      - `newsletter` boolean, required
      - `maxFormSubmissionsPerMonth` number, required
      - `maxSignatureRequestsPerMonth` number, required
      - `advancedSignatures` boolean, required
      - `maxAdvancedSignatureRequestsPerMonth` number, required
      - `maxInvoicesPerMonth` number, required
      - `whatsappAiAgent` boolean, required
      - `customSmtp` boolean, required
      - `csvExport` boolean, required
    - `language` string, required
    - `allowedLanguages` string[]
    - `googleAnalyticsMeasurementId` string, nullable, required
    - `metaPixelId` string, nullable, required
    - `tiktokPixelId` string, nullable, required
    - `gtmContainerId` string, nullable, required
    - `gtmServerContainerUrl` string, nullable, required
    - `matomoUrl` string, nullable, required
    - `matomoSiteId` string, nullable, required
    - `usercentricsSettingsId` string
    - `usercentricsConfig` object
  - `disableActionButtons` boolean, required: Whether action buttons (reschedule, cancel) are disabled for this appointment
  - `cancellationPolicy` CancellationPolicySetting
    - `enable` boolean, required
    - `mode` 'disabled' | 'hours' | 'days'
    - `duration` object
  - `reschedulingPolicy` ReschedulingPolicySetting
    - `enable` boolean, required
    - `mode` 'disabled' | 'hours' | 'days'
    - `duration` object
  - `timezonePreset` TimezonePresetSetting
    - `enable` boolean, required
    - `timezonePreset` string
  - `timeFormat` '12' | '24', required
  - `language` string, required: Attendee's resolved language for this booking
  - `meetingLink` string: Meeting link - only provided with proper authentication
  - `ics` string: ICS calendar file content - only provided with proper authentication
  - `customCss` string: Custom CSS styling for the appointment page
  - `showConfetti` boolean, required: Whether to show confetti animation on the confirmation page
  - `enableWithdrawalButton` boolean, required: Whether to show the withdrawal button ("Widerrufsbutton") on the confirmation page. Off by default; required from 19 June 2026 (§ 356a BGB) for B2C distance contracts with a right of withdrawal.
  - `createdAt` string, required: When the appointment was booked (contract conclusion). The 14-day statutory withdrawal window runs from this timestamp.
  - `queueId` string: Queue ID - required for rescheduling on round robin meetings
  - `recurringSeriesId` string: Recurring series ID if this appointment is part of a recurring series
  - `occurrenceNumber` number: 1-based index of this appointment within the recurring series
  - `recurringSeries` PublicRecurringSeries
    - `id` string, required: Series ID
    - `mode` 'recurring' | 'multi_slot', required: Mode of the series (recurring or multi_slot)
    - `frequency` 'weekly' | 'biweekly' | 'monthly', nullable: Frequency of the series (only for recurring mode)
    - `totalOccurrences` number, required: Total number of occurrences in this series
    - `appointments` RecurringSeriesAppointment[], required: All appointments in this series
      - `id` string, required: Appointment ID
      - `start` string, required: Appointment start time (ISO string)
      - `end` string, required: Appointment end time (ISO string)
      - `isCancelled` boolean, required: Whether the appointment has been cancelled
      - `occurrenceNumber` number, required: 1-based index in the recurring series
      - `secret` string: Secret for this appointment - only included when caller is authenticated
  - `isBundleBooking` boolean: Whether this appointment was booked as part of a bundle
  - `bundleId` string: Bundle ID if this is a bundle booking
  - `bundleItems` PublicBundleItem[]: Bundle items if this is a bundle booking
    - `meetingTypeId` string, required: Meeting type ID
    - `meetingTypeName` string, required: Meeting type name
    - `duration` number, required: Duration in minutes
    - `price` number: Price
    - `startTime` string, required: Start time of this segment (ISO string)
    - `endTime` string, required: End time of this segment (ISO string)
    - `sortOrder` number, required: Order in the bundle
    - `hosts` PublicAppointmentHost[], required: Hosts for this segment
      - `id` string, required: Host user unique identifier
      - `firstname` string, required: Host first name
      - `lastname` string, required: Host last name
      - `picture` string: Host profile picture URL
      - `emailVerified` boolean, required: Whether the host has verified their email

## Other responses

- `400`: The request did not validate. `message` lists the constraints that failed.
- `401`: Missing, malformed, or expired credentials.
- `403`: Authenticated, but not allowed: the plan does not include this feature, or the token is scoped away from it.
- `404`: No such resource in your account. Resources belonging to another account are reported the same way.
- `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)
