The booking API provides the endpoints that power the patient-facing online booking widget. All endpoints in this group are public — they do not requireDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/FerchoSG/healthcare-web/llms.txt
Use this file to discover all available pages before exploring further.
Authorization or x-clinic-id headers. Patients can discover a clinic by its slug, browse available services and doctors, check available time slots, and submit a booking, all without having a CitaBox account.
All endpoints documented on this page are public. Do not include
Authorization or x-clinic-id headers when calling them. Including those headers is harmless but unnecessary.Booking flow
The endpoints must be called in the following sequence to complete a booking:Fetch clinic information
Call
GET /public/clinics/:slug to load the clinic’s public profile, confirm booking is enabled, and obtain the clinic_id needed for subsequent requests.Fetch available services
Call
GET /booking/services?clinic_id= to list the services the clinic offers. Optionally filter by doctor_id if the patient has a preferred doctor.Fetch available doctors
Call
GET /booking/doctors?clinic_id=&service_id= to list doctors who provide the selected service. The patient may choose a specific doctor or leave selection open.Fetch available time slots
Call
GET /booking/available-slots?clinic_id=&date=&service_id= to retrieve available slots for the chosen date. Pass doctor_id to filter by a specific doctor. When doctor_id is omitted or set to any, the backend merges slots across all eligible doctors and attaches a doctor_id to each available slot.GET /public/clinics/:slug
Retrieve public-facing information about a clinic by its URL slug. Path parametersThe clinic’s URL-safe slug (e.g.,
clinica-san-rafael).PublicClinic
UUID of the clinic. Use this as
clinic_id in subsequent booking requests.Clinic display name.
URL-safe slug.
Clinic type (e.g.,
general, dental, obstetrics).Active specialty modules for this clinic.
Administrative phone number.
Administrative email.
Public-facing phone number shown to patients.
Public-facing email shown to patients.
Physical address.
IANA timezone identifier (e.g.,
America/Costa_Rica).URL or path to the clinic’s logo image.
Hex color used to brand the booking widget.
Whether online booking is currently enabled. If
false, do not show the booking flow.GET /booking/services
List active services offered by a clinic. Query parametersUUID of the clinic (obtained from
GET /public/clinics/:slug).Filter services to those offered by a specific doctor UUID.
ServiceSummary[]
UUID of the service.
Service name (e.g., “Consulta General”).
Optional service description.
Duration of the service in minutes.
Price in cents (CRC colones).
GET /booking/doctors
List doctors at a clinic who provide a specific service. Query parametersUUID of the clinic.
Filter doctors to those who offer a specific service UUID.
DoctorSummary[]
UUID of the doctor.
Doctor’s first name.
Doctor’s last name.
Doctor’s medical specialty, or
null.GET /booking/available-slots
Retrieve available appointment slots for a clinic, date, and service. Query parametersUUID of the clinic.
Date to check in
YYYY-MM-DD format.UUID of a specific doctor. When omitted (or
any), the backend merges available slots across all doctors for the service and attaches a real doctor_id to each slot.UUID of the service being booked. Used to filter eligible doctors and calculate slot duration.
AvailableSlotsResponse
The queried date (
YYYY-MM-DD).The doctor UUID used for the query. May differ from the input when
any was passed.List of time slots for the day.
POST /booking/appointments
Submit a booking. Creates a new appointment and returns a confirmation. Patient identity is matched byidentification; if no patient record exists with that ID, a new patient record is created automatically.
Request body
UUID of the service being booked.
UUID of the doctor. Use the
doctor_id from the chosen slot in the available-slots response.Appointment date in
YYYY-MM-DD format.Appointment start time in
HH:mm format (24-hour).Patient’s first name.
Patient’s last name.
Patient’s national ID number (cédula).
UUID of the clinic. Either
clinic_id or clinic_slug must be provided.URL-safe clinic slug. Either
clinic_id or clinic_slug must be provided.Patient’s WhatsApp number for appointment reminders.
BookingConfirmation
UUID of the newly created appointment.
Initial appointment status (typically
PENDING).ISO 8601 UTC start time of the appointment.
ISO 8601 UTC end time of the appointment.
Booking reason, or
null.