POST /timeslots/hold first to obtain a hold_hash. The hold expires after 30 minutes.pay_option | Description |
|---|---|
credits | Deducts 1 booking credit from your course-specific wallet. Booking is immediately confirmed. |
balance | Deducts the course cost from your booking money balance. Booking is immediately confirmed. |
invoice | Invoice issued to your agency. Booking is immediately confirmed. Requires invoice payments to be enabled on your account. |
candidate_pays | Candidate is emailed a PayPal payment link. Booking is pending until they pay. |
curl --location '/bookings' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data-raw '{
"hold_hash": "Xy7kRtQmNpLsWvBzJcFdEaHgUiOeYtAn",
"first_name": "Jane",
"last_name": "Smith",
"email": "jane.smith@example.com",
"phone": "+441234567890",
"address": "12 Nursing Lane",
"city": "Manchester",
"postcode": "M1 2AB",
"job_role": "Registered Nurse",
"pay_option": "credits",
"agency_contact_name": "John Doe",
"agency_contact_email": "john@acmehealthcare.co.uk"
}'{
"id": 1501,
"candidate": {
"name": "Jane Smith",
"email": "jane.smith@example.com",
"phone": "+441234567890"
},
"course": {
"id": 1,
"name": "BLS — Annual Renewal"
},
"trainer": {
"id": 3,
"name": "Dr. Sarah Connor"
},
"start_date": "2026-06-10T09:00:00+01:00",
"end_date": "2026-06-10T10:00:00+01:00",
"booking_status": "booked",
"pay_status": "completed",
"pay_option": "credits",
"booked_by": "Agency",
"virtual": {
"zoom_id": "123 456 7890",
"zoom_link": "https://zoom.us/j/1234567890",
"zoom_password": "abc123"
},
"certificate_available": false,
"created_at": "2026-06-03T18:00:00+00:00"
}