API Endpoints
Base URL
Section titled “Base URL”All endpoints are relative to: https://api.busybook.co/rest/v1/
See Authentication for required headers.
Appointments
Section titled “Appointments”List Appointments
Section titled “List Appointments”GET /appointments?therapist_id=eq.{id}&order=date.ascQuery Parameters:
| Parameter | Type | Description |
|---|---|---|
date | eq.YYYY-MM-DD | Filter by date |
status | in.(scheduled,confirmed,completed) | Filter by status |
client_id | eq.{uuid} | Filter by client |
select | id,date,start_time,... | Select specific columns |
order | date.asc | Sort order |
limit | number | Max results |
Response:
[ { "id": "uuid", "date": "2026-04-03", "start_time": "14:00", "end_time": "15:00", "status": "scheduled", "client_id": "uuid", "client_name": "Rebecca Martinez", "service_id": "uuid", "therapist_id": "uuid", "notes": "Prefers firm pressure" }]Create Appointment
Section titled “Create Appointment”POST /appointmentsRequest Body:
{ "date": "2026-04-03", "start_time": "14:00", "end_time": "15:00", "status": "scheduled", "client_id": "uuid", "client_name": "Rebecca Martinez", "service_id": "uuid", "therapist_id": "uuid"}Update Appointment
Section titled “Update Appointment”PATCH /appointments?id=eq.{id}Delete Appointment
Section titled “Delete Appointment”DELETE /appointments?id=eq.{id}Clients
Section titled “Clients”List Clients
Section titled “List Clients”GET /clients?therapist_id=eq.{id}&order=name.ascResponse:
[ { "id": "uuid", "name": "Rebecca Martinez", "email": "rebecca@email.com", "phone": "214-555-0123", "status": "active", "total_visits": 12, "therapist_id": "uuid", "created_at": "2025-10-15T10:00:00Z" }]Create Client
Section titled “Create Client”POST /clientsUpdate Client
Section titled “Update Client”PATCH /clients?id=eq.{id}Search Client by Name
Section titled “Search Client by Name”GET /clients?name=ilike.*Rebecca*&therapist_id=eq.{id}Sessions (SOAP Notes)
Section titled “Sessions (SOAP Notes)”List Sessions
Section titled “List Sessions”GET /sessions?client_id=eq.{id}&order=created_at.descCreate Session
Section titled “Create Session”POST /sessionsRequest Body:
{ "client_id": "uuid", "therapist_id": "uuid", "appointment_id": "uuid", "subjective": "Reports lower back tension", "objective": "Significant muscle guarding in lumbar region", "assessment": "Chronic tension pattern, improving", "plan": "Continue biweekly treatment, focus on lumbar"}Services
Section titled “Services”List Services
Section titled “List Services”GET /service_menu?therapist_id=eq.{id}Response:
[ { "id": "uuid", "name": "Swedish Massage", "duration": 60, "price": 120.00, "therapist_id": "uuid" }]Business Hours
Section titled “Business Hours”List Business Hours
Section titled “List Business Hours”GET /business_hours?therapist_id=eq.{id}Response:
[ { "id": "uuid", "day_of_week": "monday", "open_time": "09:00", "close_time": "17:00", "therapist_id": "uuid" }]Expenses
Section titled “Expenses”List Expenses
Section titled “List Expenses”GET /expenses?therapist_id=eq.{id}&order=date.descCreate Expense
Section titled “Create Expense”POST /expensesRequest Body:
{ "date": "2026-03-29", "amount": 85.00, "category": "supplies", "description": "Massage oil and sheets", "vendor": "Massage Warehouse", "therapist_id": "uuid"}Conversation Log
Section titled “Conversation Log”List Messages
Section titled “List Messages”GET /conversation_log?client_id=eq.{id}&order=created_at.desc&limit=50Supabase Query Syntax
Section titled “Supabase Query Syntax”BusyBook uses the PostgREST query syntax. Common operators:
| Operator | Example | Meaning |
|---|---|---|
eq | ?status=eq.active | Equals |
neq | ?status=neq.cancelled | Not equals |
gt / gte | ?date=gte.2026-04-01 | Greater than (or equal) |
lt / lte | ?date=lte.2026-04-30 | Less than (or equal) |
in | ?status=in.(scheduled,confirmed) | In list |
ilike | ?name=ilike.*sarah* | Case-insensitive pattern match |
order | ?order=date.desc | Sort results |
limit | ?limit=10 | Limit results |
select | ?select=id,name,email | Select specific columns |