Reservations API

Manage reservations for your organization: list, create, update status and details, and align behavior with the Reservations page and AI assistant reservation tools.

Overview

The Reservations API uses the /reservations service. Reservations link a contact to a reservation service at a specific start time, with optional deal, company, preferred resource, and reservation custom fields.

Base endpoint: /reservations

Typical flows

  1. List servicesGET /reservation-services (filter by organization_id, often is_active: true).
  2. Check availabilityGET /reservation-available-slots with service_id, date (YYYY-MM-DD), organization_id, optional resource_id.
  3. Create reservationPOST /reservations with start_datetime from a slot, contact_id, service_id, party_size, etc.
  4. Update reservationPATCH /reservations/:id (reschedule, notes, status, cancellation metadata).

To configure bookable services, resources, schedules, and public booking pages, use the Reservation services, Reservation resources, Reservation booking links, and related endpoints documented in this section.

Reservation object (fields used by the app)

json

Status values

ValueDescription
pendingAwaiting confirmation (if the service requires confirmation).
confirmedConfirmed booking.
cancelledCancelled; set cancelled_at (ISO datetime) and cancelled_by when cancelling from the org (e.g. "organization").
completedVisit completed.
no_showCustomer did not show.

AI assistants and internal tools

Assistants can use internal tools that map to the same data model. Enable them via

PATCH
/ai-assistants/:id under internal_tools.tools:

Tool keyMaps to
find_reservationsList/search reservations (GET /reservations).
create_reservationCreate reservation (POST /reservations).
update_reservationUpdate reservation (PATCH /reservations/:id).
get_reservation_servicesList services (GET /reservation-services).
get_available_slotsAvailable slots (GET /reservation-available-slots).

Reservation custom fields

Reservation-specific custom fields are managed with entity_type: "reservation" on the Custom Fields API (same pattern as contacts). When creating or updating a reservation, send values in custom_fields_by_key keyed by each field’s key. List definitions with:

GET
/custom-fields and query organization_id, entity_type: "reservation", $limit (max 50 per request; paginate with $skip if needed).

Related endpoints

ServicePurpose
/reservation-servicesServices (duration, capacity, pricing, booking rules).
/reservation-resourcesBookable resources (people, rooms, equipment).
/reservation-service-resourcesLink resources to services (required/optional, quantity).
/reservation-resource-availabilityWeekly recurring hours per resource.
/reservation-resource-exceptionsBlocked dates or special hours.
/reservation-available-slotsComputed slots for a service and date.
/reservation-booking-linksPublic booking page configuration.

Service images and booking link logo/cover uploads use

POST
/s3-url-signing with types such as reservation-service-image, booking-link-logo, and booking-link-cover; then
PUT
the
file to the signed URL and store the returned public URL on the service or booking link page_config.

Report an issue with this documentation

Please log in to report issues with our documentation.