---
title: "Create meeting type"
method: POST
path: "/v4/meeting-type"
tags: ["Meeting Type V4"]
---

# Create meeting type

`POST /v4/meeting-type`

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

Creates a new meeting type with specified duration, availability settings, and booking options.

## Request body

- CreateMeetingTypeV4Dto
  - `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)"
  - `meetingOptions` MeetingOptions
    - `allowedDurations` number[], required: Additional duration options in minutes (shown alongside primary duration)
    - `allowSelectChannel` boolean, required: Allow attendees to select meeting channel/location
    - `allowHostSelection` boolean, required: Allow attendees to select specific host (round-robin only)
    - `forceHostSelection` boolean, required: Force host selection (no "any host" option available)
    - `allowedChannels` MeetingTypeChannel[], required: Available channel options when allowSelectChannel is enabled
    - `channelAvailabilities` object: Per-channel availability overrides. Each value can be a UUID string (existing availability) or an inline availability object with "name", "timezone", and optional "schedule" and "exceptions" for creation.
    - `allowAddingGuests` boolean, required: Allow attendees to invite additional guests
    - `doubleOptIn` string, required: Double opt-in confirmation setting
    - `requireHostConfirmation` string, required: Require host confirmation for bookings
    - `enableClusterMeeting` boolean, required: Show only time slots adjacent to existing meetings
    - `enableBufferCarryOver` boolean, required: Carry over buffer time to next available slot if needed
    - `maxBufferCarryOverDelay` number, required: Maximum hours for buffer carry-over delay (0-168)
    - `allowPhoneOnlyBooking` boolean, required: Allow phone-only bookings without email (API use case, requires phoneOnlyBooking in request)
    - `hideReassignedHostDetails` boolean, required: Hide the previous host's details from attendee reassignment emails
    - `confirmationPageCssSetting` CssSetting, required
      - `mode` number, required
      - `themePreset` 'light' | 'dark' | 'eco' | 'charcoal' | 'bold'
    - `bookingPagePassword` BookingPagePasswordSetting, required
      - `enable` boolean, required: Enable password protection for booking page
      - `password` object, required: Password for booking page access
  - `slug` string: Ignored. The slug is derived from the meeting name and kept unique per host.
  - `spots` number: Number of available spots
  - `isGlobalQueue` boolean: Create the meeting type as a company-wide round robin. Must be a JSON boolean: true or false.
  - `workspaceId` string, uuid: Workspace ID for workspace-based meeting types
  - `userId` string: User ID for user-specific meeting types
  - `locations` string[]: Available locations
  - `resourceChannels` CreateResourceChannelDto[]: Resource channels for the meeting type
    - `resourceId` string, required: Resource user ID
    - `name` string: Display name for the resource channel. Defaults to the resource name
    - `availabilityId` string, uuid: Availability ID for the resource
    - `groupName` string: Group name for resource grouping.
    - `groupMemberIndex` number: Group member index for ordering
  - `cancellationPolicy` CancellationPolicySetting
    - `enable` boolean, required
    - `mode` 'disabled' | 'hours' | 'days'
    - `duration` object
  - `reschedulingPolicy` ReschedulingPolicySetting
    - `enable` boolean, required
    - `mode` 'disabled' | 'hours' | 'days'
    - `duration` object
  - `daysIntoFuture` UpdateDaysIntoFutureDto
    - `mode` 'limit' | 'range' | 'forever': Booking future mode: "limit" (rolling window), "range" (fixed dates), or "forever" (no limit)
    - `bookingLimit` number: Maximum booking window in minutes from now (only for mode: "limit")
    - `rangeMin` string, date-time: Minimum date for bookings (only for mode: "range")
    - `rangeMax` string, date-time: Maximum date for bookings (only for mode: "range")
    - `countMode` 'calendar' | 'weekday': Whether to count calendar days or weekdays only (Mon-Fri). Only relevant for mode: "limit"
  - `availabilityId` string, uuid: ID of an existing availability to use. Mutually exclusive with "availability".
  - `availability` CreateAvailabilityDto
    - `name` string, required
    - `schedule` WeeklySchedule
      - `monday` DaySchedule, required
        - `enabled` boolean, required
        - `hours` HoursSchedule[], required
          - `start` string, required
          - `end` string, required
      - `tuesday` DaySchedule, required
        - `enabled` boolean, required
        - `hours` HoursSchedule[], required
          - `start` string, required
          - `end` string, required
      - `wednesday` DaySchedule, required
        - `enabled` boolean, required
        - `hours` HoursSchedule[], required
          - `start` string, required
          - `end` string, required
      - `thursday` DaySchedule, required
        - `enabled` boolean, required
        - `hours` HoursSchedule[], required
          - `start` string, required
          - `end` string, required
      - `friday` DaySchedule, required
        - `enabled` boolean, required
        - `hours` HoursSchedule[], required
          - `start` string, required
          - `end` string, required
      - `saturday` DaySchedule, required
        - `enabled` boolean, required
        - `hours` HoursSchedule[], required
          - `start` string, required
          - `end` string, required
      - `sunday` DaySchedule, required
        - `enabled` boolean, required
        - `hours` HoursSchedule[], required
          - `start` string, required
          - `end` string, required
    - `timezone` string, required
    - `exceptions` CreateAvailabilityExceptionDto[]: Availability exceptions for specific datetime ranges.
      - `available` boolean, required
      - `availabilityId` string: Optional availability id, if not provided uses default availability.
      - `start` string, required
      - `end` string, required
      - `title` string
      - `note` string
  - `ics` UpdateIcsV4Dto
    - `title` union: Calendar invite title template. Pass a string for single-language or an object like `{ "en": "...", "de": "..." }` for multi-language.
      - string
      - object
    - `description` union: Calendar invite description template. Supports dynamic tags like `{!M.Guest.Email}`, `{!M.Guest.Phone}`, `{!M.Meeting.Name}`. Pass a string for single-language or an object for multi-language.
      - string
      - object
    - `location` union: Calendar invite location template. Pass a string for single-language or an object for multi-language.
      - string
      - object
  - `metadata` object: Key-value metadata for integrations
  - `internalNotes` string, nullable: Internal note for organizers. Never shown to customers.
  - `options` CreateMeetingTypeOptionsDto
    - `createOneTimeLink` boolean: Create and return a one-time booking link

## Response `201`

- MeetingTypeResponseDto
  - `id` string, required
  - `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)"
  - `meetingOptions` MeetingOptions, required
    - `allowedDurations` number[], required: Additional duration options in minutes (shown alongside primary duration)
    - `allowSelectChannel` boolean, required: Allow attendees to select meeting channel/location
    - `allowHostSelection` boolean, required: Allow attendees to select specific host (round-robin only)
    - `forceHostSelection` boolean, required: Force host selection (no "any host" option available)
    - `allowedChannels` MeetingTypeChannel[], required: Available channel options when allowSelectChannel is enabled
    - `channelAvailabilities` object: Per-channel availability overrides. Each value can be a UUID string (existing availability) or an inline availability object with "name", "timezone", and optional "schedule" and "exceptions" for creation.
    - `allowAddingGuests` boolean, required: Allow attendees to invite additional guests
    - `doubleOptIn` string, required: Double opt-in confirmation setting
    - `requireHostConfirmation` string, required: Require host confirmation for bookings
    - `enableClusterMeeting` boolean, required: Show only time slots adjacent to existing meetings
    - `enableBufferCarryOver` boolean, required: Carry over buffer time to next available slot if needed
    - `maxBufferCarryOverDelay` number, required: Maximum hours for buffer carry-over delay (0-168)
    - `allowPhoneOnlyBooking` boolean, required: Allow phone-only bookings without email (API use case, requires phoneOnlyBooking in request)
    - `hideReassignedHostDetails` boolean, required: Hide the previous host's details from attendee reassignment emails
    - `confirmationPageCssSetting` CssSetting, required
      - `mode` number, required
      - `themePreset` 'light' | 'dark' | 'eco' | 'charcoal' | 'bold'
    - `bookingPagePassword` BookingPagePasswordSetting, required
      - `enable` boolean, required: Enable password protection for booking page
      - `password` object, required: Password for booking page access
  - `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
  - `ics` IcsInfo, required
    - `title` LocalisedContent, required
      - `en` string, required
      - `de` string
      - `fr` string
      - `es` string
      - `no` string
      - `it` string
      - `nl` string
      - `da` string
      - `pl` string
      - `se` string
      - `tr` string
    - `description` LocalisedContent, required
      - `en` string, required
      - `de` string
      - `fr` string
      - `es` string
      - `no` string
      - `it` string
      - `nl` string
      - `da` string
      - `pl` string
      - `se` string
      - `tr` string
    - `location` LocalisedContent, required
      - `en` string, required
      - `de` string
      - `fr` string
      - `es` string
      - `no` string
      - `it` string
      - `nl` string
      - `da` string
      - `pl` string
      - `se` string
      - `tr` string
    - `requireGuestConfirmation` boolean
  - `timeslotInterval` number, required
  - `spots` number, required
  - `enabled` boolean, required
  - `slug` string, required
  - `bookingMinimum` number, required
  - `connectGuestJoinMinutesBeforeStart` number, nullable
  - `connectGuestJoinMinutesAfterEnd` number, nullable
  - `daysIntoFuture` DaysIntoFutureSetting, required
    - `mode` string, required
    - `bookingLimit` number
    - `countMode` string
    - `rangeMin` string, date-time
    - `rangeMax` string, date-time
  - `enableCalendarInviteNotification` boolean, required
  - `roundRobin` string[], required
  - `useSchedule` boolean, required
  - `useCompanyLogo` boolean, required
  - `useCustomInvite` boolean, required
  - `disableActionButtons` boolean, required
  - `useCustomForm` boolean, required
  - `inCompanyPage` boolean, required
  - `formFirst` boolean, required
  - `locations` string[], required
  - `isGlobalQueue` boolean, required
  - `compact` boolean, required
  - `disableTeamsEmail` boolean, required
  - `calendarGuestListVisible` boolean, required
  - `languageSetting` LanguageSetting, required
    - `enable` boolean, required
    - `default` string, required
    - `allowed` string[], required
  - `customTextSelectChannel` CustomTextSelectChannelSetting, required
    - `enable` boolean, required
    - `body` string, required
  - `timezonePreset` TimezonePresetSetting, required
    - `enable` boolean, required
    - `timezonePreset` string
  - `timeFormat` '12' | '24', required
  - `cssSetting` CssSetting, required
    - `mode` number, required
    - `themePreset` 'light' | 'dark' | 'eco' | 'charcoal' | 'bold'
  - `metaSetting` MetaSetting, required
    - `nextBetaEnabled` boolean
    - `title` string
    - `body` string
    - `image` string
  - `companyId` string, required
  - `createdById` string, required
  - `createdAt` string
  - `updatedAt` string
  - `deletedAt` string
  - `workspaceId` string
  - `userId` string
  - `formId` string
  - `availabilityId` string
  - `queueId` string
  - `reminderIds` string[]
  - `workspace` WorkspaceBasicDto
    - `id` string, required
    - `name` string, required
    - `slug` string, required
  - `user` UserBasicDto
    - `id` string, required
    - `givenName` string, required
    - `familyName` string, required
    - `picture` string
    - `slug` string, required
    - `userType` string, required
  - `createdBy` UserBasicDto
    - `id` string, required
    - `givenName` string, required
    - `familyName` string, required
    - `picture` string
    - `slug` string, required
    - `userType` string, required
  - `availability` AvailabilityBasicDto
    - `id` string, required
    - `name` string, required
  - `form` FormBasicDto
    - `id` string, required
    - `name` string, required
  - `reminders` ReminderBasicDto[]
    - `id` number, required
    - `name` string, required
  - `metadata` object, nullable: Key-value metadata for integrations
  - `internalNotes` string, nullable: Internal note for organizers. Never shown to customers.
  - `oneTimeLink` OneTimeBookingLinkResponseDto
    - `id` string, required
    - `url` string, required: Full URL for the one-time booking page
    - `meetingTypeId` string, required
    - `createdAt` string, required

## 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.
- `429`: Rate limited. Back off and retry.
- `default`

---

[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)
