Skip to content

Appointments

GET /api/v1/appointments

Scope: appointments:read

ParameterTypeDefaultDescription
pageinteger1Page number
limitinteger50Results per page (1-100)
statusstringFilter: scheduled, confirmed, completed, cancelled, no_show
lead_idUUIDFilter by lead
start_afterISO 8601Appointments starting after this time
start_beforeISO 8601Appointments starting before this time
sort_bystringstart_timeSort: start_time or created_at
sort_dirstringdescDirection: asc or desc
Terminal window
curl "https://api.brightlyai.app/api/v1/appointments?status=scheduled&limit=10" \
-H "Authorization: Bearer brk_your_key"
{
"data": [
{
"id": "b2c3d4e5-...",
"organization_id": "org-uuid-...",
"lead_id": "a1b2c3d4-...",
"start_time": "2026-05-15T10:00:00Z",
"end_time": "2026-05-15T11:00:00Z",
"status": "scheduled",
"type": "Estimate",
"location": "123 Main St, Austin TX",
"notes": "Roof inspection for hail damage",
"booked_by": "api",
"outcome": null,
"outcome_notes": null,
"created_at": "2026-05-10T14:30:00Z",
"updated_at": "2026-05-10T14:30:00Z"
}
],
"meta": {
"page": 1,
"limit": 10,
"total": 23,
"total_pages": 3
}
}

GET /api/v1/appointments/:id

Scope: appointments:read

Terminal window
curl "https://api.brightlyai.app/api/v1/appointments/b2c3d4e5-..." \
-H "Authorization: Bearer brk_your_key"

POST /api/v1/appointments

Scope: appointments:write

FieldTypeRequiredDescription
lead_idUUIDYesThe lead this appointment is for. Must exist in your org.
start_timeISO 8601YesAppointment start time
end_timeISO 8601YesAppointment end time
typestringNoAppointment type (max 100 chars). e.g. “Estimate”, “Installation”
locationstringNoLocation (max 500 chars)
notesstringNoNotes (max 5000 chars)
statusstringNoDefault: scheduled. Options: scheduled, confirmed, completed, cancelled, no_show
Terminal window
curl -X POST "https://api.brightlyai.app/api/v1/appointments" \
-H "Authorization: Bearer brk_your_key" \
-H "Content-Type: application/json" \
-d '{
"lead_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"start_time": "2026-05-15T10:00:00Z",
"end_time": "2026-05-15T11:00:00Z",
"type": "Estimate",
"location": "123 Main St, Austin TX"
}'

PUT /api/v1/appointments/:id

Scope: appointments:write

All create fields except lead_id are accepted, all optional. Only provided fields are updated.

Terminal window
curl -X PUT "https://api.brightlyai.app/api/v1/appointments/b2c3d4e5-..." \
-H "Authorization: Bearer brk_your_key" \
-H "Content-Type: application/json" \
-d '{"status": "confirmed"}'

DELETE /api/v1/appointments/:id

Scope: appointments:write

{
"data": {
"id": "b2c3d4e5-...",
"cancelled": true
}
}