Skip to main content
PATCH
/
v4
/
meeting-type
/
{id}
Update Meeting Type
curl --request PATCH \
  --url https://api.example.com/v4/meeting-type/{id}
Update an existing meeting type to change its name, duration, or other settings.

Endpoint

PATCH /v4/meeting-type/{meetingTypeId}

Request Headers

HeaderRequiredDescription
AuthorizationYesBearer <your-api-key>
x-meetergo-api-user-idYesUUID of the user who owns the meeting type
Content-TypeYesapplication/json

Path Parameters

ParameterTypeRequiredDescription
meetingTypeIdstringYesUUID of the meeting type to update
Get the meetingTypeId from the response when creating a user or creating a meeting type.

Request Body

All fields are optional. Only include the fields you want to update.
FieldTypeDescription
meetingInfoobjectCore meeting configuration (name, duration, channel, buffers, etc.)
meetingOptionsobjectMeeting options (channels, channel availability, etc.)
enabledbooleanEnable or disable the meeting type
slugstringURL-friendly identifier
timeslotIntervalnumberTimeslot interval in minutes (5-60)
spotsnumberAvailable spots per timeslot (1-100)
bookingMinimumnumberMinimum booking notice in minutes
locationsstring[]Address(es) for in-person meetings. When multiple are provided, attendee can choose.
availabilityIdstringID of an existing availability to associate
icsobjectCalendar invite settings (title, description, location). See ics below.

meetingInfo

FieldTypeDescription
namestringDisplay name for the meeting type
descriptionstringDescription shown on the booking page
durationnumberMeeting duration in minutes (5-480)
channelstringMeeting channel type
customChannelNamestringDisplay label for a custom meeting channel (used when channel is custom)
customChannelLinkstringURL for the custom meeting channel (required when channel is custom)
bufferBeforenumberMinutes blocked before meeting (0-120)
bufferAfternumberMinutes blocked after meeting (0-120)

meetingOptions

FieldTypeDescription
allowedChannelsstring[]Channel options the attendee can choose from. When more than one channel is provided, channel selection is automatically enabled.
channelAvailabilitiesobjectPer-channel availability overrides. Each value is a UUID string or an inline availability object. See Create Meeting Type - channelAvailabilities.
allowedDurationsnumber[]Additional duration options in minutes
allowAddingGuestsbooleanAllow attendees to invite additional guests
allowPhoneOnlyBookingbooleanAllow bookings without attendee email (phone as identifier). See Voice AI Bot

ics

Customize the calendar invite (ICS) that attendees and hosts receive. Each field accepts either a plain string or a multi-language object.
FieldTypeDescription
titlestring | objectCalendar event title template
descriptionstring | objectCalendar event description template
locationstring | objectCalendar event location template
When you pass a plain string, it is stored under the meeting type’s default language. When you pass an object, each key is a language code (e.g. en, de) mapping to the template for that language. Partial updates are supported: sending only description preserves the existing title and location. Sending { "de": "..." } preserves other languages within that field.

Dynamic Tags

Use these placeholders in your templates — they are replaced with actual values when the calendar invite is generated. Guest:
TagDescription
{!M.Guest.Fullname}Full name
{!M.Guest.FirstName}First name
{!M.Guest.LastName}Last name
{!M.Guest.Email}Email address
{!M.Guest.Phone}Phone number
{!M.Guest.QuestionsAndAnswers}All form answers
Host:
TagDescription
{!M.Host.Fullname}Full name
{!M.Host.Email}Email address
Meeting:
TagDescription
{!M.Meeting.Name}Meeting type name
{!M.Meeting.Description}Meeting type description
{!M.Meeting.Location}Meeting location
{!M.Meeting.Link}Join link
{!M.Meeting.Venue}Venue / address
{!M.Meeting.Start}Start date and time
{!M.Meeting.Reschedule}Reschedule link
{!M.Meeting.Cancel}Cancellation link

Examples

Update Name and Duration

curl -X PATCH "https://api.meetergo.com/v4/meeting-type/770e8400-e29b-41d4-a716-446655440002" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "x-meetergo-api-user-id: 550e8400-e29b-41d4-a716-446655440000" \
  -H "Content-Type: application/json" \
  -d '{
    "meetingInfo": {
      "name": "Updated Meeting Name",
      "duration": 60,
      "description": "A longer consultation meeting"
    }
  }'

Update Custom Channel

{
  "meetingInfo": {
    "channel": "custom",
    "customChannelName": "Company Webinar Platform",
    "customChannelLink": "https://webinar.example.com/room/abc123"
  }
}

Update In-Person Location

{
  "locations": ["Berlin Office - Friedrichstr. 123", "Munich Office - Marienplatz 5"]
}
The locations field is used with the local (in-person at host) channel. When multiple locations are provided, the attendee can choose on the booking page.

Update Channel Availabilities

Add or replace per-channel availability overrides:
{
  "meetingOptions": {
    "allowedChannels": ["zoom", "phone", "local"],
    "channelAvailabilities": {
      "phone": {
        "name": "Phone Hours",
        "timezone": "Europe/Berlin",
        "schedule": {
          "monday": { "enabled": true, "hours": [{ "start": "08:00", "end": "12:00" }] },
          "tuesday": { "enabled": true, "hours": [{ "start": "08:00", "end": "12:00" }] },
          "wednesday": { "enabled": false, "hours": [] },
          "thursday": { "enabled": false, "hours": [] },
          "friday": { "enabled": false, "hours": [] },
          "saturday": { "enabled": false, "hours": [] },
          "sunday": { "enabled": false, "hours": [] }
        }
      },
      "local": {
        "name": "In-Person Exceptions",
        "timezone": "Europe/Berlin",
        "exceptions": [
          { "available": false, "start": "2026-05-01T00:00", "end": "2026-05-01T23:59", "title": "Office Closed" }
        ]
      }
    }
  }
}
Inline availability objects are created automatically and stored as UUIDs. On subsequent reads, channelAvailabilities values are always UUID strings.

Update Calendar Invite

Customize what appears in the calendar event description:
{
  "ics": {
    "description": "{!M.Meeting.Name}\n\nEmail: {!M.Guest.Email}\nPhone: {!M.Guest.Phone}\n\nReschedule: {!M.Meeting.Reschedule}\nCancel: {!M.Meeting.Cancel}"
  }
}

Update Calendar Invite (Multi-Language)

Provide different templates per language:
{
  "ics": {
    "title": {
      "en": "{!M.Meeting.Name}: {!M.Guest.Fullname} & {!M.Host.Fullname}",
      "de": "{!M.Meeting.Name}: {!M.Guest.Fullname} & {!M.Host.Fullname}"
    },
    "description": {
      "en": "{!M.Meeting.Name}\n\nEmail: {!M.Guest.Email}\nPhone: {!M.Guest.Phone}\n\nReschedule: {!M.Meeting.Reschedule}\nCancel: {!M.Meeting.Cancel}",
      "de": "{!M.Meeting.Name}\n\nE-Mail: {!M.Guest.Email}\nTelefon: {!M.Guest.Phone}\n\nVerschieben: {!M.Meeting.Reschedule}\nAbsagen: {!M.Meeting.Cancel}"
    },
    "location": "{!M.Meeting.Venue}"
  }
}
You can mix string and object formats within the same request. In the example above, location is a plain string while title and description use multi-language objects.

Response

Success (200 OK)

{
  "id": "770e8400-e29b-41d4-a716-446655440002",
  "meetingInfo": {
    "name": "Updated Meeting Name",
    "duration": 60,
    "description": "A longer consultation meeting"
  },
  "slug": "john-smith-45min",
  "bookingUrl": "https://cal.meetergo.com/john-smith/john-smith-45min",
  "updatedAt": "2024-01-15T11:00:00Z"
}

Error Responses

404 Not Found

{
  "statusCode": 404,
  "message": "Meeting type not found",
  "error": "Not Found"
}

400 Bad Request - Validation Error

{
  "statusCode": 400,
  "message": "Validation failed",
  "errors": [
    {
      "field": "duration",
      "message": "Duration must be a positive number"
    }
  ]
}

Create Meeting Type

Create a new meeting type

List Meeting Types

Get all meeting types