Appointments
Take bookings from a widget, a shareable link or the API.
Appointments is a scheduling engine you define yourself. An appointment type is the thing people can book, a resource is the staff member, room or vehicle that fulfils it, and an appointment is a booking against both. Availability is computed from the resources attached to a type, so you never post open slots yourself.
Embed the booking widget
The fastest integration. No server code, and the widget handles availability and confirmation for you.
<script src="https://app.softsolz.uk/softsolz.js" data-public-key="pk_live_your_key" data-service-id="appointments" data-mode="inline"></script>List what can be booked
Start here when integrating server-side. Each type carries the duration and questions the booking expects.
curl https://app.softsolz.uk/api/v1/services/appointments/types \ -H "Authorization: Bearer sk_live_your_key"Find open slots
Ask for a date range and a type. Pass resource_id to restrict the search to one staff member.
curl -G https://app.softsolz.uk/api/v1/services/appointments/availability \ -H "Authorization: Bearer sk_live_your_key" \ -d type_id=1042 \ -d from=2026-09-01 \ -d to=2026-09-07Book an appointment
Send an Idempotency-Key so a retried request never double-books the same slot.
curl -X POST https://app.softsolz.uk/api/v1/services/appointments/appointments \ -H "Authorization: Bearer sk_live_your_key" \ -H "Content-Type: application/json" \ -H "Idempotency-Key: booking-9f2c1a" \ -d '{"type_id":1042,"starts_at":"2026-09-02T14:00:00Z","customer":{"name":"Alex Rivera","email":"alex@example.com"}}'Move it through its lifecycle
Reschedule, cancel and transition are separate endpoints rather than a single status field, so each one can run its own side effects: reminders, waitlist offers and webhooks.
curl -X POST https://app.softsolz.uk/api/v1/services/appointments/appointments/8317/reschedule \ -H "Authorization: Bearer sk_live_your_key" \ -H "Content-Type: application/json" \ -d '{"starts_at":"2026-09-03T10:00:00Z"}'React to changes
Register a webhook endpoint to hear about bookings made outside your integration, from the widget, a booking link or the dashboard. Appointments emits appointments.booking_created, appointments.booking_rescheduled, appointments.booking_cancelled, appointments.booking_completed and appointments.checked_in, among others.
Next
Browse all 43 endpoints in the API Reference, see Webhooks for signature verification, or read the product walkthrough on docs.softsolz.uk.