Skip to main content

Documentation 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.

CitaBox gives every clinic a public booking page where patients can reserve appointments on their own — no phone calls required. Once you enable the feature in clinic settings, patients get a dedicated URL they can visit from any device to pick a service, choose a doctor, select a date and time, and submit their details in a few taps.
Online booking is disabled by default. You must turn it on in your clinic settings before patients can access the booking wizard. Look for the Booking enabled toggle under Settings → General.

Booking URL

Your clinic’s public booking page is available at:
https://citabox.app/book/{clinicSlug}
Replace {clinicSlug} with your clinic’s unique identifier (the same slug that appears in your CitaBox dashboard URL). For example, a clinic with the slug clinica-sol would use https://citabox.app/book/clinica-sol.
Share this URL with your patients via WhatsApp or print it as a QR code to post in your waiting room. Patients can scan or tap it directly to start booking without needing an account.

Welcome landing page

When a patient visits the booking URL, they land on a welcome page that shows your clinic’s name, contact information, address, and a list of available services. Two call-to-action buttons — Reservar ahora and Empezar reserva — take the patient into the booking wizard. The landing page pulls its content from the public clinic record, which includes name, logo_path, public_phone, public_email, and address. No login is required to view it.

Booking wizard flow

The wizard walks patients through four steps before confirming their appointment.
1

Select a service

The wizard loads all active services for your clinic. Each card shows the service name, description, price (in colones), and estimated duration. The patient taps a service to continue.Optionally, patients can also choose a preferred doctor on this screen. Selecting Cualquiera (any available) lets the backend pick the best slot across all doctors for the chosen service.
2

Pick a date and time

A calendar lets the patient choose any date from today forward. After selecting a date, the wizard fetches available time slots and shows them in a grid.When the patient selected Cualquiera in step 1, the backend merges availability across all doctors for the service and attaches the assigned doctor_id to each slot — the patient sees open times without needing to know which doctor covers each one.
3

Enter patient information

The patient fills in their personal details. All fields except WhatsApp are required to proceed.
FieldRequiredDescription
first_nameYesPatient’s first name
last_nameYesPatient’s last name
identificationYesCédula or DIMEX number
whatsapp_phoneNo8-digit Costa Rican number (+506 prefix added automatically)
4

Review and confirm

The patient sees a summary — service, date, time, assigned doctor, and their personal details. Tapping Reservar submits the booking.On success, the wizard displays a confirmation screen with the appointment id, start_time, end_time, and the doctor’s full name. If the patient provided a WhatsApp number, the confirmation note indicates that details will be sent there.

Booking form field reference

The booking form maps to the CreateBookingPayload type. The request is submitted to POST /booking/appointments without authentication (skipAuth: true).
FieldTypeRequiredNotes
service_idstring (UUID)YesID of the selected service
doctor_idstring (UUID)YesReal doctor UUID; resolved from the chosen time slot when “any” is selected
datestringYesYYYY-MM-DD format
timestringYesHH:mm format (24-hour)
first_namestringYesPatient’s first name
last_namestringYesPatient’s last name
identificationstringYesCédula or DIMEX number
whatsapp_phonestringNo8-digit local number, no country code
The response is a BookingConfirmation object containing id, status, start_time, end_time, service.name, and doctor.first_name / doctor.last_name.

Public API endpoints

All booking endpoints are publicly accessible — they do not require a staff authentication token. This is intentional so patients can book without creating a CitaBox account.
EndpointDescription
GET /public/clinics/{slug}Load clinic info for the landing page
GET /booking/services?clinic_id=List active services
GET /booking/doctors?clinic_id=List doctors, optionally filtered by service
GET /booking/available-slots?clinic_id=&date=Fetch time slots for a date
POST /booking/appointmentsCreate the appointment

Build docs developers (and LLMs) love