Build a booking system that fits your business

Online booking system API

Clients book appointments inside your app - not on a third-party page. Calendesk handles the backend: scheduling, payments, notifications. REST API, webhooks, docs - everything you need to integrate.

Fetch open time slots in real time

One GET request - you get open slots for any service, employee, and time zone. Public availability requires no authentication. Build your own booking widget in under a day.

curl
Get available slots
GET /api/available-slots
    ?service_id=5
    &start_date=2026-04-01
    &number_of_days=7
    &customer_time_zone=Europe/Warsaw
Response 200
{
  "5": {
    "2026-04-01": [
      "09:00", "09:30", "10:00",
      "10:30", "14:00", "15:00"
    ],
    "2026-04-02": [
      "09:00", "09:30"
    ]
  }
}
curl
Create a booking
POST /api/bookings
X-Api-Key: your-api-key
X-Tenant: your-tenant-id

{
  "employee_id": 10,
  "user_id": 200,
  "service_id": 5,
  "start_date": "2026-04-15",
  "start_time": "10:00",
  "status": "approved"
}
Response 201
{
  "id": 5001,
  "employee_id": 10,
  "start_date": "2026-04-15",
  "start_time": "10:00",
  "status": "approved",
  "service": {
    "name": "Consultation",
    "duration": 60,
    "price": 10000
  }
}

Create appointment bookings from any app

Send a POST with employee, service, date, and time. The booking shows up in the calendar right away. Confirmations and reminders? Calendesk sends them for you. One request - one booking.

Get instant alerts with webhooks

A client books an appointment - your app knows instantly. Payments, cancellations, reschedules - every event delivered straight to your URL. No polling.

curl
Register a webhook
POST /api/admin/webhooks
X-Api-Key: your-api-key
X-Tenant: your-tenant-id

{
  "url": "https://your-app.com/hooks",
  "events": [
    "booking_created",
    "booking_updated",
    "booking_paid"
  ]
}
Response 201
{
  "id": 1,
  "url": "https://your-app.com/hooks",
  "events": [
    "booking_created",
    "booking_updated",
    "booking_paid"
  ]
}
curl
Search customers
GET /api/admin/users
    ?query=[email protected]
    &limit=10
X-Api-Key: your-api-key
X-Tenant: your-tenant-id
Response 200
{
  "current_page": 1,
  "data": [{
    "id": 200,
    "name": "Jane",
    "surname": "Smith",
    "email": "[email protected]",
    "status": "active"
  }],
  "total": 1
}

Search customer records and booking history

Look up any client by email, phone, or name. Full appointment history comes back in one call - with filters, sorting, and pagination built in.

What's inside the booking API?

Simple 2-header auth

Add your API key and tenant ID to the request headers. That is it. No OAuth dance, no token refresh, nothing to expire.

Pagination on every list

Every endpoint that returns a list supports pages, sorting, and filters. Bookings, customers, services - all work the same way.

Automatic notifications

Every booking triggers email and SMS confirmations automatically. Reminders go out before the appointment. You don't write notification logic - Calendesk handles it.

Webhooks for every event

Bookings, payments, subscriptions, newsletters, schedules - Calendesk pushes data to your URL on every change. Retries on failure.

API key per employee

Each employee can have their own API key with a separate permission scope. You decide who sees what.

Docs with code examples

Swagger UI, cURL examples, and ready-made snippets. Every endpoint documented with parameters, error codes, and sample responses. Copy, paste, ship.

Join hundreds of companies with over 1,000,000+ successful meetings booked.
Automate your business processes with Calendesk's integrations.

Your business is ready
to change 🔥

Try Calendesk with a 14-day trial plan with no functionality limits. See how simple and enjoyable your company's processes can be!