Creating bookings

POST /api/v1/bookings books a guest through one of your booking links, under the same rules as its public page: availability, capacity, buffers, minimum notice, booking horizon, intake questions and approval. It never books outside those rules.

curl https://app.clearslot.eu/api/v1/bookings \
  -H "Authorization: Bearer cs_live_YOUR_KEY" \
  -H "Idempotency-Key: crm-order-4812" \
  -H "Content-Type: application/json" \
  -d '{
    "bookingLinkId": "7d1f3c1e-1111-4222-8333-444455556666",
    "startTime": "2026-11-03T10:00:00+02:00",
    "guest": { "name": "Ada Lovelace", "email": "[email protected]" }
  }'

Find bookable times first with GET /api/v1/booking-links/{bookingLinkId}/slots.

What to send

Link typeNeeds
MeetingstartTime; guestCount for group meetings
ServicestartTime, serviceIds, optional variantIds and providerMemberId
ClassclassSessionId
ResourcestartTime, assetListingKey, durationMinutes

Answer the link's intake questions in intakeAnswers, by question ID.

Guest emails

The guest gets the same emails as a booking made in the dashboard. Set "notifyGuest": false to send none. The business vouches for the guest's address, so no verification email is sent.

If the link shows cancellation fees, or asks the guest to let a service start within the withdrawal period, your integration must confirm the guest agreed:

"guestConsents": { "cancellationFees": true, "earlyPerformance": true }

Without it, the booking is refused with 409 conflict, reason guest_consent_required.

Refusals

StatusCodeMeaning
409slot_unavailableThe time is taken, outside availability, or full
409online_payment_unsupportedThe link takes online payment
409conflictThe link is off or restricted, or a consent is missing
429rate_limited, daily_quota_exceededOver 30 bookings a minute or 500 a day

Bookings made through the API are marked "source": "api".