GoHighLevel Calendars API

Create Calendar

POST/calendars/

POST /calendars/ Create calendar in a location It takes 59 body fields, requires the calendars.write scope and authenticates with a sub-account (location) token.

Request and authentication

Method
POST
Full URL
https://services.leadconnectorhq.com/calendars/
Scopes
calendars.write
Token type
Sub-account (location) token
Accepted auth
OAuth Access Token, Private Integration Token
API version header
Version: 2021-07-28
Schema verified
22 June 2026

Notes from the field

  • For a personal calendar (`calendarType: 'personal'`), `teamMembers` must contain EXACTLY ONE member.
  • `slug` must be unique for the location; check availability if the user cares about the booking URL.

Request body

JSON body fields. Nested objects are shown indented under their parent.

NameTypeDescription
isActiveboolean

Should the created calendar be active or draft

notificationsarray

🚨 Deprecated! Please use 'Calendar Notifications APIs' instead.

locationIdrequiredstring

Example: ocQHyuzHvysMo5N5VsXc

groupIdstring

Group Id

Example: BqTwX8QFwXzpegMve9EQ

teamMembersarray

Team members are required for calendars of type: Round Robin, Collective, Class, Service. Personal calendar must have exactly one team member.

eventTypestring

One of: RoundRobin_OptimizeForAvailability, RoundRobin_OptimizeForEqualDistribution

namerequiredstring

Example: test calendar

descriptionstring

Example: this is used for testing

slugstring

Example: test1

widgetSlugstring

Example: test1

calendarTypestring

One of: round_robin, event, class_booking, collective, service_booking, personal

widgetTypestring

Calendar widget type. Choose "default" for "neo" and "classic" for "classic" layout.

One of: default, classic

Example: classic

eventTitlestring
eventColorstring
meetingLocationstring

🚨 Deprecated! Use locationConfigurations.location or teamMembers[].locationConfigurations.location instead.

locationConfigurationsarray

Meeting location configuration for event calendar

slotDurationnumber

This controls the duration of the meeting

slotDurationUnitstring

Unit for slot duration.

One of: mins, hours

slotIntervalnumber

Slot interval reflects the amount of time the between booking slots that will be shown in the calendar.

slotIntervalUnitstring

Unit for slot interval.

One of: mins, hours

slotBuffernumber

Slot-Buffer is additional time that can be added after an appointment, allowing for extra time to wrap up

slotBufferUnitstring

Unit for slot buffer.

One of: mins, hours

preBuffernumber

Pre-Buffer is additional time that can be added before an appointment, allowing for extra time to get ready

preBufferUnitstring

Unit for pre-buffer.

One of: mins, hours

appoinmentPerSlotnumber

Maximum bookings per slot (per user). Maximum seats per slot in case of Class Booking Calendar.

appoinmentPerDaynumber

Number of appointments that can be booked for a given day

allowBookingAfternumber

Minimum scheduling notice for events

allowBookingAfterUnitstring

Unit for minimum scheduling notice

One of: hours, days, weeks, months

Example: days

allowBookingFornumber

Minimum number of days/weeks/months for which to allow booking events

allowBookingForUnitstring

Unit for controlling the duration for which booking would be allowed for

One of: days, weeks, months

Example: days

openHoursarray

This is only to set the standard availability. For custom availability, use the availabilities property

enableRecurringboolean

Enable recurring appointments for the calendars. Please note that only one member should be added in the calendar to enable this

recurringobject
freqstring

One of: DAILY, WEEKLY, MONTHLY

countnumber

Number of recurrences

bookingOptionstring

This setting contols what to do incase a recurring slot is unavailable

One of: skip, continue, book_next

bookingOverlapDefaultStatusstring

This setting contols what to do incase a recurring slot is unavailable

One of: confirmed, new

formIdstring
stickyContactboolean
isLivePaymentModeboolean
autoConfirmboolean
shouldSendAlertEmailsToAssignedMemberboolean
alertEmailstring
googleInvitationEmailsboolean
allowRescheduleboolean
allowCancellationboolean
shouldAssignContactToTeamMemberboolean
shouldSkipAssigningContactForExistingboolean
notesstring
pixelIdstring
formSubmitTypestring

One of: RedirectURL, ThankYouMessage

formSubmitRedirectURLstring
formSubmitThanksMessagestring
availabilityTypenumber

Determines which availability type to consider: - 1: Only custom availabilities will be used. - 0: Only open hours will be used. - null: Both custom availabilities and open hours will be considered.

One of: 0, 1

availabilitiesarray

This is only to set the custom availability. For standard availability, use the openHours property

guestTypestring

One of: count_only, collect_detail

consentLabelstring
calendarCoverImagestring

Example: https://path-to-image.com

lookBusyConfigunknown

Look Busy Configuration

Response fields

Top-level fields returned on a successful call.

NameTypeDescription
calendarrequiredobject
isActiveboolean

Should the created calendar be active or draft

notificationsarray

🚨 Deprecated! Please use 'Calendar Notifications APIs' instead.

locationIdrequiredstring

Example: ocQHyuzHvysMo5N5VsXc

groupIdstring

Group Id

Example: BqTwX8QFwXzpegMve9EQ

teamMembersarray

Team members are for calendars of type: Round Robin, Collective, Class, Service. Personal calendar must have exactly one team member.

eventTypestring

One of: RoundRobin_OptimizeForAvailability, RoundRobin_OptimizeForEqualDistribution

namerequiredstring

Example: test calendar

descriptionstring

Example: this is used for testing

slugstring

Example: test1

widgetSlugstring

Example: test1

calendarTypestring

One of: round_robin, event, class_booking, collective, service_booking, personal

widgetTypestring

Calendar widget type. Choose "default" for "neo" and "classic" for "classic" layout.

One of: default, classic

Example: classic

eventTitlestring
eventColorstring
meetingLocationstring

🚨 Deprecated! Use locationConfigurations.location or teamMembers[].locationConfigurations.location instead.

locationConfigurationsarray

Meeting location configuration for event calendar

slotDurationnumber

This controls the duration of the meeting

slotDurationUnitstring

Unit for slot duration.

One of: mins, hours

slotIntervalnumber

Slot interval reflects the amount of time the between booking slots that will be shown in the calendar.

slotIntervalUnitstring

Unit for slot interval.

One of: mins, hours

slotBuffernumber

Slot-Buffer is additional time that can be added after an appointment, allowing for extra time to wrap up

slotBufferUnitstring

Unit for slot buffer.

One of: mins, hours

preBuffernumber

Pre-Buffer is additional time that can be added before an appointment, allowing for extra time to get ready

preBufferUnitstring

Unit for pre-buffer.

One of: mins, hours

appoinmentPerSlotnumber

Maximum bookings per slot (per user). Maximum seats per slot in case of Class Booking Calendar.

Example request

Copy-paste ready. Swap YOUR_TOKEN for your access token or Private Integration Token.

curl -X POST 'https://services.leadconnectorhq.com/calendars/' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Version: 2021-07-28' \
  -H 'Content-Type: application/json' \
  -d '{
    "locationId": "ocQHyuzHvysMo5N5VsXc",
    "name": "test calendar"
  }'

Skip the schema lookup

Hylo gives your AI agent this schema — and the other 52 documented here — without you looking anything up. Ask in plain English; it picks the endpoint, fills the body, and can run the call against your own sub-account.

More calendars endpoints