Skip to main content

Schedule Appointment

Endpoint

POST /api/v1/calendar/appointments

Description

Creates a calendar appointment for a given Calendly event type and invitee. This endpoint uses an existing Calendly event type and the requested start time to book the appointment.

Authentication

This endpoint requires API key authentication via the cv-api-key header.

Headers

Header NameTypeRequiredDescription
cv-api-keystringYesAPI key for authentication

Request Body

Body Fields

FieldTypeRequiredDescription
eventTypeIdstringYesThe unique identifier of the calendly event type.
startTimestringYesDesired start time of the appointment in ISO 8601 format (e.g., "2025-11-28T04:30:00Z"). This should be a valid ISO 8601 date-time string. and correct slot time.
emailstringYesInvitee email address.
firstNamestringNoInvitee first name.
lastNamestringNoInvitee last name.
timezonestringYesIANA timezone identifier for the invitee (e.g., "Asia/Kolkata").
locationstringYesLocation type for the meeting (e.g., "google_conference").
trackingobjectNoObject containing UTM and other tracking metadata.

tracking Object Fields

FieldTypeRequiredDescription
utmCampaignstring | nullNoUTM campaign identifier.
utmSourcestring | nullNoUTM source identifier.
utmMediumstring | nullNoUTM medium identifier.
utmContentstring | nullNoUTM content identifier.
utmTermstring | nullNoUTM term identifier.
salesforceUuidstring | nullNoTracking identifier that can be used to correlate appointments with Salesforce or other external systems.

Location types

The location field can be one of the following values:

  • google_conference
  • zoom_conference
  • gotomeeting_conference
  • microsoft_teams_conference
  • webex_conference

Request Example

curl --location "https://api.example.com/api/v1/calendar/appointments" \
--header "cv-api-key: your-org-cv-api-key" \
--data-raw '{
"eventTypeId": "85f13305-0647-4473-9e63-0a56af405f6f",
"startTime": "2025-11-28T04:30:00Z",
"email": "invitee@example.com",
"firstName": "John",
"lastName": "Doe",
"timezone": "Asia/Kolkata",
"location": "google_conference",
"tracking": {
"utmCampaign": null,
"utmSource": null,
"utmMedium": null,
"utmContent": null,
"utmTerm": null,
"salesforceUuid": null
}
}'

Rate Limiting

This endpoint is protected by rate limiting middleware. Excessive requests may result in rate limit errors.

Success Response

Status Code

200 OK

Response Body

{
"status": 200,
"success": true,
"message": "Meeting schedule successfully"
}

Response Fields

FieldTypeDescription
statusnumberHTTP status code (200).
successbooleanIndicates successful request (true).
messagestringSuccess message.

Error Responses

400 Bad Request

Returned when:

  • Invalid request body is provided
  • Required fields are missing
  • Fields fail validation (e.g., invalid startTime format)

Response Body

{
"status": 400,
"success": false,
"message": "Invalid request",
"error": "Error message describing the validation failure"
}

401 Unauthorized

Returned when API key is missing or invalid.

429 Too Many Requests

Returned when rate limit is exceeded.