Appointments
List appointments
Return appointments in a time window with their customer and status.
Returns appointments between startAt and endAt, earliest first, each with its customer, slot and status. Use it to check what is already booked before offering a time, or to list today's schedule. With no window it returns the next 30 days; a window longer than 92 days is refused. Paginated by window rather than by cursor: narrow startAt and endAt to page through, and check meta.window.truncated to see whether the row limit cut the answer short. Read-only and rate-limited to 20 calls per minute.
query Parameters
limitRows to return, 1-100. Defaults to 25.
Rows to return, 1-100. Defaults to 25.
startAtISO-8601 start of the window. Defaults to now.
ISO-8601 start of the window. Defaults to now.
endAtISO-8601 end of the window. Defaults to 30 days out; 92 days is the maximum.
ISO-8601 end of the window. Defaults to 30 days out; 92 days is the maximum.
statusFilter by status, e.g. SCHEDULED, COMPLETED, CANCELLED or NO_SHOW.
Filter by status, e.g. SCHEDULED, COMPLETED, CANCELLED or NO_SHOW.
customerIdOnly this customer, id from customers.list.
Only this customer, id from customers.list.
branchIdOnly appointments recorded at this branch (id from branches.list), or none for appointments with no branch.
Only appointments recorded at this branch (id from branches.list), or none for appointments with no branch.
List appointments › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successBook an appointment
Create an appointment for a customer in a specific slot.
Books a slot with a title, start and end. Use it once the customer has confirmed the time — check appointments.list first so you do not offer a taken slot. Writes a booking and reports any conflicting appointment in the same slot; it does not message the customer, so tell them yourself with messages.send.
Book an appointment › Request Body
titleWhat the appointment is for, e.g. "Scaling gigi".
customerIdCustomer id from customers.list.
startAtISO-8601 start of the slot.
endAtISO-8601 end of the slot.
Manual create branch id from branches.list; null selects no branch. Omit for the existing resolver. The snapshot cannot be changed later.
notesInternal notes for the booking.
Book an appointment › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successDelete an appointment
Permanently erase an appointment record.
Deletes the appointment outright. This cannot be undone, and it destroys the history — to record that a booking was called off, set its status to CANCELLED with appointments.update instead. Requires the separate appointments:delete scope and is limited to 5 calls per minute.
path Parameters
idAppointment id from appointments.list. Erases the booking — prefer appointments.update with status CANCELLED.
Appointment id from appointments.list. Erases the booking — prefer appointments.update with status CANCELLED.
Delete an appointment › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successReschedule or update an appointment
Change an appointment’s time, title, customer or status.
Updates the fields you send. Use it to reschedule, or to set the status to COMPLETED, CANCELLED or NO_SHOW. Cancelling this way keeps the record, which is what you almost always want — appointments.delete erases it. Writes only; the customer is not notified.
path Parameters
idAppointment id from appointments.list.
Appointment id from appointments.list.
Reschedule or update an appointment › Request Body optional
titleNew title.
startAtISO-8601 new start. Send endAt with it.
endAtISO-8601 new end.
statusSet CANCELLED to cancel while keeping the record.
notesReplace the internal notes.
Reschedule or update an appointment › Responses
The API key is missing, malformed, expired, or its owner is inactive.
success