Booking V4

Create appointment booking

Books an appointment with a specified host for a given meeting type and time slot. Returns appointment confirmation details.

Availability, working hours and conflicts are validated by default. Authenticate as a member of the meeting type's company (API key plus x-meetergo-api-user-id) and set ignoreAvailability: true to book outside available hours; anonymous callers cannot use the flag.

post/v4/booking

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/booking
  • Auth: one of:
    • API key in header x-meetergo-api-user-id
    • HTTP bearer
    • HTTP bearer

Request body

meetingTypeIdstring required

ID of the meeting type to book.

hostIdsstring[]

Host IDs for the booking. Required for one-on-one bookings (specific host selection). Optional for round-robin/queue bookings where queueId is provided instead. When sent TOGETHER with queueId, these IDs scope the round-robin to a subset of the queue: the backend rotates only among these hosts (used by ?hosts= subset links). Empty/omitted with queueId = the whole queue.

startstring required
appointmentIdstring
locationstring
locationSelectionContextIdstring

Opaque Finder context exchanged immediately before entering booking.

queueIdstring

required when meeting type has a queue (round-robin / co-host) must be undefined for non-queue meetings (one-to-one / group) if host selection is true, queue id is required if fastest host selection is chosen if hosts selection is true, queue id must be undefined if a specific host is chosen to round-robin within a SUBSET of the queue, send queueId together with the subset hostIds (the backend rotates only among those hosts)

bookingTargetTokenstring

Opaque booking-block audience context from booking info.

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'

Meeting channel/location type

durationnumber

Duration in minutes for the booking. Optional. If not provided, uses the meeting type's default duration. If provided, must match either the default duration or one of the allowed durations configured for the meeting type. Primarily needed when meeting type has multiple duration options (allowedDurations).

routingFormIdstring
referrerUrlstring
sourceChannel'booking_page' | 'embed' | 'web_widget' | 'whatsapp_agent' | 'phone_agent' | 'form' | 'gbp' | 'manual' | 'business_card'
ignoreAvailabilityboolean

Skips availability, working-hours, conflict and group-capacity checks (instant booker, Platform API). Only honored when the caller is authenticated as a member of the meeting type's company, by JWT or by API key plus x-meetergo-api-user-id; anonymous bookings have it normalized to false server-side.

isTestboolean

Marks the booking as a rehearsal the host made for themselves, so it is excluded from the activation milestone (firstBookingAt must only ever come from a real third party). The appointment itself is real: the calendar entry and the confirmation mail are produced exactly as they would be for an invitee, which is the point of the onboarding self-test.

Same trust model as ignoreAvailability: only honored for authenticated callers from the meeting type's own company, so a public attendee cannot suppress a host's activation by sending the flag.

attendeePendingIdnumber

ID of pending attendee that will be deleted after successful booking. This is only needed when "collect during form entry" feature is used. If not provided, a successful booking may show up in pending contacts.

paymentIdstring
paymentProvider'paypal' | 'stripe' | 'mollie' | 'none'

Selected payment provider for this booking. Required when the meeting type has multiple payment providers enabled. If not provided, falls back to the first enabled provider.

couponCodestring

Coupon code for a discount on paid bookings. Validated during payment order creation and re-validated at booking time.

resourceChannelIdsstring[]

Ids of the resource channel entity

oneTimeLinkIdstring

Id of the one time booking link. Required in order to invalidate the booking link, once booking is done

bookingProposalIdstring uuid

The booking proposal the invitee arrived through. Lets the booking pass the proposal's own hold on the chosen slot and consumes the proposal once the booking is made.

skipNotificationsboolean

Skip sending email notifications to the attendee for this booking

phoneOnlyBookingboolean

When true, attendee email is not required and phone becomes the identifier. Requires the meeting type to have allowPhoneOnlyBooking enabled in its options. Designed for voice agent / phone scheduling use cases where collecting email from the caller is not viable.

icsTitlestring

Custom ICS calendar invite title. If provided, overrides the configured meeting type ICS title for this specific booking. Useful for AI-generated titles based on conversation context (e.g., from calgent).

icsDescriptionstring

Custom ICS calendar invite description. If provided, overrides the configured meeting type ICS description for this specific booking. Useful for AI-generated descriptions based on conversation context (e.g., from calgent).

rwgTokenstring

Google Actions Center token for conversion tracking. This token is passed via the rwg_token URL parameter when users click through from Google Maps/Search.

rwgMerchantIdstring

Merchant ID associated with the rwg_token for Google Actions Center. Used to determine if merchant changed during booking flow.

bookingPasswordstring

Password for accessing a password-protected booking page. Required when the meeting type has password protection enabled.

referralCodestring

Advocate referral code (from the /r/<code> referred-person landing). In auto_booking qualification mode the booking creates a pending referral recommendation for that advocate; otherwise it is ignored.

formRecipientTokenstring

Token of the personal form link that routed here (the ?fr= URL param a routing form appends when it sends a recipient to a booking page).

Links the appointment to the recipient, so a returning recipient is shown the booking they hold instead of an empty calendar, and a second booking through the same link is refused. Identifies only: an unknown token is ignored rather than failing the booking.

waitlistTokenstring

Waitlist unsubscribe token. When provided (from the ?wl= URL param on the booking link), the corresponding waitlist entry is removed after successful booking and the attendee is tagged as originating from the waitlist.

Response

appointmentIdstring

ID of appointment. Undefined if DOI flow and not confirmed yet.

secretstring
attendeeEmailstring
bookingType'doubleOptIn' | 'requireHostConfirmation'

Only defined if DOI flow is enabled. If undefined, its a normal booking

provisionalBookingIdstring

ID of provsionalBooking. Undefined if its a normal booking.

redirectUrlstring

Redirect URL to navigate to after booking (with any variables replaced). Only set if meeting type has redirect enabled and a URL is configured. This is the single source of truth for redirects.

recurringSeriesIdstring

ID of the recurring series if this is a recurring booking. Undefined for non-recurring bookings.

recurringOccurrencesnumber

Total number of occurrences booked if this is a recurring booking. Undefined for non-recurring bookings.

appointmentIdsstring[]

IDs of all appointments created in this recurring booking. Undefined for non-recurring bookings.

bundleIdstring

ID of the bundle if this is a bundle booking. Undefined for non-bundle bookings.

isBundleBookingboolean

Whether this is a bundle booking.

Changes

No recorded changes to this operation across all 1 revision of this API.