Create a new meeting type for bookings
| Header | Required | Description |
|---|---|---|
Authorization | Yes | Bearer <your-api-key> |
x-meetergo-api-user-id | Yes | UUID of the user who owns the meeting type |
Content-Type | Yes | application/json |
| Field | Type | Required | Description |
|---|---|---|---|
meetingInfo | object | Yes | Core meeting configuration |
meetingOptions | object | No | Meeting options (channels, channel availability, etc.) |
slug | string | No | URL-friendly identifier (auto-generated if omitted) |
availabilityId | string | No | ID of existing availability to use |
availability | object | No | Create new availability inline (mutually exclusive with availabilityId) |
locations | string[] | No | Address(es) for in-person meetings. When multiple locations are provided, the attendee can choose. |
metadata | object | No | Key-value pairs for external system correlation |
options | object | No | Request options (e.g., createOneTimeLink) |
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Display name for the meeting type |
description | string | Yes | Description shown on booking page |
duration | number | Yes | Duration in minutes |
channel | string | Yes | google_meet, zoom, teams, phone, in_person, whereby, custom |
bufferBefore | number | No | Minutes blocked before meeting (default: 0) |
bufferAfter | number | No | Minutes blocked after meeting (default: 0) |
color | string | No | Color in RGB format, e.g. rgb(0, 153, 255) |
customChannelName | string | No | Display label for a custom meeting channel (used when channel is custom) |
customChannelLink | string | No | URL for the custom meeting channel (required when channel is custom) |
| Field | Type | Required | Description |
|---|---|---|---|
allowedChannels | string[] | No | Channel options the attendee can choose from (e.g., ["zoom", "phone", "local"]). When more than one channel is provided, channel selection is automatically enabled on the booking page. |
channelAvailabilities | object | No | Per-channel availability overrides. Each key is a channel name, each value is a UUID string (existing availability) or an inline availability object. See Channel Availabilities. |
allowedDurations | number[] | No | Additional duration options in minutes (shown alongside the primary duration) |
allowAddingGuests | boolean | No | Allow attendees to invite additional guests |
allowPhoneOnlyBooking | boolean | No | Allow bookings without attendee email (phone as identifier). For voice AI / phone scheduling use cases. See Voice AI Bot |
doubleOptIn | string | No | Double opt-in setting: useCompanySettings, enabled, disabled |
availability) that will be created automaticallychannelAvailabilities use the meeting type’s default availability.
availabilityId. Uses the same structure as the Availability API.
| Constraint | Limit |
|---|---|
| Max keys | 20 |
| Max value length | 500 characters |
| Value type | String only |
| Field | Type | Description |
|---|---|---|
createOneTimeLink | boolean | Create and return a one-time booking link |
schedule is omitted from availability, the weekly schedule defaults to all days disabled. Only the specified exceptions define available booking windows.allowedChannels has more than one entry, channel selection is automatically enabled on the booking page. You don’t need to set allowSelectChannel explicitly.options.createOneTimeLink is true:
| Field | Description |
|---|---|
id | UUID of the created meeting type |
slug | URL-friendly identifier |
meetingInfo | Core meeting configuration |
meetingInfo.name | Display name |
meetingInfo.duration | Duration in minutes |
meetingInfo.channel | Meeting channel type |
bookingUrl | Public booking URL |
metadata | Custom key-value data (if provided) |
availabilityId | ID of created availability (if availability was provided) |
oneTimeLink | One-time link details (if options.createOneTimeLink was true) |
oneTimeLink.url | Full URL for the one-time booking page |
createdAt | Creation timestamp |
| Duration | Use Case |
|---|---|
| 15 min | Quick check-ins, brief consultations |
| 30 min | Standard meetings, initial calls |
| 45 min | Discovery calls, demos |
| 60 min | Deep-dive sessions, workshops |
| 90 min | Training sessions, comprehensive reviews |