Availability
/connect/availability/ returns the bookable slots within a time window. Use it to render a custom booking UI, find slots for voice-agent integrations, or pre-validate a slot before creating a booking.
| Method | Path | Scope |
|---|---|---|
GET | /connect/availability/ | read |
Differentiators
Section titled “Differentiators”- Slots are returned regardless of
availablestatus — both bookable and full slots come back. Filter toavailable: trueclient-side if you only want bookable ones. resourceSlotIdpins a specific slot — pass it back unchanged in the booking POST to lock the exact slot you displayed to the user.- Filter by
resourceIdto constrain availability to a single resource (useful when the agent should stay with one resource per session). - Slots can fill between
/availability/and/calendar_bookings/. The booking POST does a transactional capacity recheck. See Race conditions. - Replaces the deprecated
/calendar_schedule_types/:id/available. Migrate any integration still using schedule types — the new endpoint is the canonical model on the resource planner.
GET /connect/availability/
Section titled “GET /connect/availability/”Query parameters:
{ calendarId: string; appointmentTypeId: string; resourceId?: string; start: string /* ISO-8601 */; end: string /* ISO-8601 */; includeUnavailable?: boolean; stepLength?: number;}Response:
{ data: { resourceId: string; resourceName: string; resourceColor: string; resourceSlotId: string; appointmentTypeId: string; startDateTime: string /* ISO-8601 */; endDateTime: string /* ISO-8601 */; maxParallelBookings: number; currentBookings: number; available: boolean; }[]; meta: { appointmentTypeName: string; defaultBookingLength: number; bufferAfter: number; dynamicLength: boolean; };}Related
Section titled “Related”- Bookings — POST the slot you found.
- Lookups — list calendars, appointment types, resources to populate query params.
- Workflows → Book a slot after lead capture.
- Race conditions → Slot-fill races — refetch-and-retry pattern.