Skip to content

Bookings

Calendar bookings are RocketLead’s appointment records. Use these endpoints to programmatically book slots (e.g., from a voice agent or custom booking UI) and link them to lead entries.

MethodPathScope
POST/connect/calendar_bookings/write
DELETE/connect/calendar_bookings/:idadmin
  • Resource-planner orgs require resourceId + appointmentTypeId. Legacy scheduleType* fields are still in the schema but only for orgs not yet on the resource planner. New integrations should always send the modern fields.
  • Capacity is rechecked transactionally. If a slot fills between your availability fetch and your booking POST, you get 400 The selected time slot is no longer available. See Race conditions → Slot-fill races.
  • One create fires three flow events (booked / hasStarted / hasEnded), one delete fires one (deleted) and cancels pending hasStarted/hasEnded. See Automation triggers.
  • Delete is hard. No soft-delete, no undo. Model “cancellation with audit trail” on your side via lead-state transitions.
  • tableEntryId is optional but recommended. Linking the booking to a lead enriches every downstream surface (lead-pool view, automation context, the booking’s leadStateName/leadStateColor).

Request body:

{
calendarId: string;
entryId?: string;
scheduleTypeId?: string;
scheduleTypeSlotId?: string;
resourceId?: string;
appointmentTypeId?: string;
resourceSlotId?: string;
name?: string;
startDateTime: string /* ISO-8601 */;
endDateTime: string /* ISO-8601 */;
}

Response:

{
organizationId: string;
calendarId: string;
tableEntryId?: string;
tableEntryData?: Record<string, Record<string, unknown>>;
tableId?: string;
tableSchemaFields?: Record<string, {
friendlyName: string;
type: string;
specialType?: "date" | "email" | "name" | "firstName" | "middleName" | "lastName" | "childFirstName" | "childMiddleName" | "childLastName" | "phone" | "url" | "currency" | "percentage";
primaryOfSpecialType?: boolean;
hidden?: boolean;
description?: string;
validation?: {
pattern?: string;
required?: boolean;
min?: number;
max?: number;
};
frequency: number;
lastSeen: string;
isDeprecated: boolean;
converted?: boolean;
convertedToCustomFieldId?: string;
}>;
calendarScheduleTypeId?: string;
calendarScheduleTypeSlotId?: string;
resourceId?: string;
appointmentTypeId?: string;
resourceSlotId?: string;
id: string;
name?: string;
createdAt: string /* ISO-8601 */;
deletedAt?: string /* ISO-8601 */;
endDateTime: string /* ISO-8601 */;
startDateTime: string /* ISO-8601 */;
leadStateColor?: string;
leadStateName?: string;
chainBookingGroupId?: string;
}

Returns 204 No Content. Requires admin scope.