Skip to main content
POST
/
calendars
Create Calendar
curl --request POST \
  --url https://services.leadconnectorhq.com/calendars \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --header 'Version: <version>' \
  --data '
{
  "locationId": "ocQHyuzHvysMo5N5VsXc",
  "name": "test calendar",
  "isActive": true,
  "notifications": [
    {
      "shouldSendToContact": true,
      "shouldSendToGuest": true,
      "shouldSendToUser": true,
      "shouldSendToSelectedUsers": true,
      "selectedUsers": "user1@testemail.com,user2@testemail.com",
      "type": "email"
    }
  ],
  "groupId": "BqTwX8QFwXzpegMve9EQ",
  "teamMembers": [
    {
      "userId": "ocQHyuzHvysMo5N5VsXc",
      "priority": 0.5,
      "isPrimary": true,
      "locationConfigurations": [
        {
          "kind": "custom",
          "location": "+14455550132"
        }
      ]
    }
  ],
  "eventType": "RoundRobin_OptimizeForAvailability",
  "description": "this is used for testing",
  "slug": "test1",
  "widgetSlug": "test1",
  "calendarType": "round_robin",
  "widgetType": "classic",
  "eventTitle": "{{contact.name}}",
  "eventColor": "#039be5",
  "locationConfigurations": [
    {
      "kind": "custom",
      "location": "+14455550132"
    }
  ],
  "slotDuration": 30,
  "slotDurationUnit": "mins",
  "slotInterval": 30,
  "slotIntervalUnit": "mins",
  "slotBuffer": 123,
  "slotBufferUnit": "mins",
  "preBuffer": 123,
  "preBufferUnit": "mins",
  "appoinmentPerSlot": 1,
  "appoinmentPerDay": 123,
  "allowBookingAfter": 123,
  "allowBookingAfterUnit": "days",
  "allowBookingFor": 123,
  "allowBookingForUnit": "days",
  "openHours": [
    {
      "daysOfTheWeek": [
        3
      ],
      "hours": [
        {
          "openHour": 11.5,
          "openMinute": 30,
          "closeHour": 11.5,
          "closeMinute": 30
        }
      ]
    }
  ],
  "enableRecurring": false,
  "recurring": {
    "freq": "DAILY",
    "count": 23,
    "bookingOption": "skip",
    "bookingOverlapDefaultStatus": "confirmed"
  },
  "formId": "<string>",
  "stickyContact": true,
  "isLivePaymentMode": true,
  "autoConfirm": true,
  "shouldSendAlertEmailsToAssignedMember": true,
  "alertEmail": "<string>",
  "googleInvitationEmails": false,
  "allowReschedule": true,
  "allowCancellation": true,
  "shouldAssignContactToTeamMember": true,
  "shouldSkipAssigningContactForExisting": true,
  "notes": "<string>",
  "pixelId": "<string>",
  "formSubmitType": "ThankYouMessage",
  "formSubmitRedirectURL": "<string>",
  "formSubmitThanksMessage": "<string>",
  "availabilityType": 0,
  "availabilities": [
    {
      "date": "2023-09-24T00:00:00.000Z",
      "hours": [
        {
          "openHour": 11.5,
          "openMinute": 30,
          "closeHour": 11.5,
          "closeMinute": 30
        }
      ],
      "deleted": false
    }
  ],
  "guestType": "count_only",
  "consentLabel": "<string>",
  "calendarCoverImage": "https://path-to-image.com",
  "lookBusyConfig": {
    "enabled": true,
    "LookBusyPercentage": 123
  }
}
'
{
  "calendar": {
    "locationId": "ocQHyuzHvysMo5N5VsXc",
    "name": "test calendar",
    "id": "0TkCdp9PfvLeWKYRRvIz",
    "isActive": true,
    "notifications": [
      {
        "shouldSendToContact": true,
        "shouldSendToGuest": true,
        "shouldSendToUser": true,
        "shouldSendToSelectedUsers": true,
        "selectedUsers": "user1@testemail.com,user2@testemail.com",
        "type": "email"
      }
    ],
    "groupId": "BqTwX8QFwXzpegMve9EQ",
    "teamMembers": [
      {
        "userId": "ocQHyuzHvysMo5N5VsXc",
        "priority": 0.5,
        "meetingLocationType": "custom",
        "meetingLocation": "<string>",
        "isPrimary": true,
        "locationConfigurations": [
          {
            "kind": "custom",
            "location": "+14455550132",
            "meetingId": "my_conference_id"
          }
        ]
      }
    ],
    "eventType": "RoundRobin_OptimizeForAvailability",
    "description": "this is used for testing",
    "slug": "test1",
    "widgetSlug": "test1",
    "calendarType": "round_robin",
    "widgetType": "classic",
    "eventTitle": "{{contact.name}}",
    "eventColor": "#039be5",
    "meetingLocation": "<string>",
    "locationConfigurations": [
      {
        "kind": "custom",
        "location": "+14455550132",
        "meetingId": "my_conference_id"
      }
    ],
    "slotDuration": 30,
    "slotDurationUnit": "mins",
    "slotInterval": 30,
    "slotIntervalUnit": "mins",
    "slotBuffer": 123,
    "slotBufferUnit": "mins",
    "preBuffer": 123,
    "preBufferUnit": "mins",
    "appoinmentPerSlot": 1,
    "appoinmentPerDay": 123,
    "allowBookingAfter": 123,
    "allowBookingAfterUnit": "days",
    "allowBookingFor": 123,
    "allowBookingForUnit": "days",
    "openHours": [
      {
        "daysOfTheWeek": [
          3
        ],
        "hours": [
          {
            "openHour": 11.5,
            "openMinute": 30,
            "closeHour": 11.5,
            "closeMinute": 30
          }
        ]
      }
    ],
    "enableRecurring": false,
    "recurring": {
      "freq": "DAILY",
      "count": 23,
      "bookingOption": "skip",
      "bookingOverlapDefaultStatus": "confirmed"
    },
    "formId": "<string>",
    "stickyContact": true,
    "isLivePaymentMode": true,
    "autoConfirm": true,
    "shouldSendAlertEmailsToAssignedMember": true,
    "alertEmail": "<string>",
    "googleInvitationEmails": false,
    "allowReschedule": true,
    "allowCancellation": true,
    "shouldAssignContactToTeamMember": true,
    "shouldSkipAssigningContactForExisting": true,
    "notes": "<string>",
    "pixelId": "<string>",
    "formSubmitType": "ThankYouMessage",
    "formSubmitRedirectURL": "<string>",
    "formSubmitThanksMessage": "<string>",
    "availabilityType": 0,
    "availabilities": [
      {
        "date": "2023-09-24T00:00:00.000Z",
        "hours": [
          {
            "openHour": 11.5,
            "openMinute": 30,
            "closeHour": 11.5,
            "closeMinute": 30
          }
        ],
        "deleted": false
      }
    ],
    "guestType": "count_only",
    "consentLabel": "<string>",
    "calendarCoverImage": "https://path-to-image.com",
    "lookBusyConfig": {
      "enabled": true,
      "LookBusyPercentage": 123
    }
  }
}

Authorizations

Authorization
string
header
required

Use the Access Token generated with user type as Sub-Account (OR) Private Integration Token of Sub-Account.

Headers

Version
enum<string>
required

API Version

Available options:
2021-04-15

Body

application/json
locationId
string
required
Example:

"ocQHyuzHvysMo5N5VsXc"

name
string
required
Example:

"test calendar"

isActive
boolean
default:true

Should the created calendar be active or draft

notifications
object[]
deprecated

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

groupId
string

Group Id

Example:

"BqTwX8QFwXzpegMve9EQ"

teamMembers
object[]

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

eventType
enum<string>
default:RoundRobin_OptimizeForAvailability
Available options:
RoundRobin_OptimizeForAvailability,
RoundRobin_OptimizeForEqualDistribution
description
string
Example:

"this is used for testing"

slug
string
Example:

"test1"

widgetSlug
string
Example:

"test1"

calendarType
enum<string>
Available options:
round_robin,
event,
class_booking,
collective,
service_booking,
personal
widgetType
enum<string>
default:classic

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

Available options:
default,
classic
Example:

"classic"

eventTitle
string
default:{{contact.name}}
eventColor
string
default:#039be5
locationConfigurations
object[]

Meeting location configuration for event calendar

slotDuration
number
default:30

This controls the duration of the meeting

slotDurationUnit
enum<string>

Unit for slot duration.

Available options:
mins,
hours
slotInterval
number
default:30

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

slotIntervalUnit
enum<string>

Unit for slot interval.

Available options:
mins,
hours
slotBuffer
number

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

slotBufferUnit
enum<string>

Unit for slot buffer.

Available options:
mins,
hours
preBuffer
number

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

preBufferUnit
enum<string>

Unit for pre-buffer.

Available options:
mins,
hours
appoinmentPerSlot
number
default:1

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

appoinmentPerDay
number

Number of appointments that can be booked for a given day

allowBookingAfter
number

Minimum scheduling notice for events

allowBookingAfterUnit
enum<string>

Unit for minimum scheduling notice

Available options:
hours,
days,
weeks,
months
Example:

"days"

allowBookingFor
number

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

allowBookingForUnit
enum<string>

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

Available options:
days,
weeks,
months
Example:

"days"

openHours
object[]

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

enableRecurring
boolean
default:false

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

recurring
object
formId
string
stickyContact
boolean
isLivePaymentMode
boolean
autoConfirm
boolean
default:true
shouldSendAlertEmailsToAssignedMember
boolean
alertEmail
string
googleInvitationEmails
boolean
default:false
allowReschedule
boolean
default:true
allowCancellation
boolean
default:true
shouldAssignContactToTeamMember
boolean
shouldSkipAssigningContactForExisting
boolean
notes
string
pixelId
string
formSubmitType
enum<string>
default:ThankYouMessage
Available options:
RedirectURL,
ThankYouMessage
formSubmitRedirectURL
string
formSubmitThanksMessage
string
availabilityType
enum<number>

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.
Available options:
0,
1
availabilities
object[]

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

guestType
enum<string>
Available options:
count_only,
collect_detail
calendarCoverImage
string
Example:

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

lookBusyConfig
object

Response

Successful response

calendar
object
required
Last modified on March 4, 2026