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.
| Method | Path | Scope |
|---|---|---|
POST | /connect/calendar_bookings/ | write |
DELETE | /connect/calendar_bookings/:id | admin |
Differentiators
Section titled “Differentiators”- Resource-planner orgs require
resourceId+appointmentTypeId. LegacyscheduleType*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.
tableEntryIdis optional but recommended. Linking the booking to a lead enriches every downstream surface (lead-pool view, automation context, the booking’sleadStateName/leadStateColor).
POST /connect/calendar_bookings/
Section titled “POST /connect/calendar_bookings/”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;}DELETE /connect/calendar_bookings/:id
Section titled “DELETE /connect/calendar_bookings/:id”Returns 204 No Content. Requires admin scope.
Related
Section titled “Related”- Availability — find a bookable slot before posting.
- Lookups — list calendars, resources, appointment types.
- Workflows → Book a slot after lead capture.
- Workflows → Reschedule.
- Automation triggers — three events per create.