Scheduling
Surface available time slots, create bookings via the cart, and manage existing bookings. As of 0.44.30 slot and availability lookups are **variant-aware**: pass `variant_id` when a service has per-variant duration, buffer, or capacity overrides.
duration_minutes was removed from GET /scheduling/slots in 0.44.30. The slot duration is derived from the service (or its variant). Pass variant_id to opt into variant-specific durations.
GET /api/v1/scheduling/services
List all bookable services for the active business.
curl https://api.cimplify.io/api/v1/scheduling/services \
-H "X-Public-Key: pk_test_your_publishable_key"GET /api/v1/scheduling/services/{service_id}
Get a single service with its variants, duration defaults, capacity, staff, and resource bindings.
curl https://api.cimplify.io/api/v1/scheduling/services/svc_01H… \
-H "X-Public-Key: pk_test_your_publishable_key"GET /api/v1/scheduling/slots
Return all bookable slots on a single calendar day. Pass variant_id to honour per-variant duration / buffer / capacity overrides.
Query parameters
| Param | Type | Description |
|---|---|---|
service_id | string | Required. |
date | string | ISO date YYYY-MM-DD. Required. |
variant_id | string | Variant override. Optional. |
participant_count | integer | Group size. Defaults to 1. |
location_id | string | Required when service has multiple locations. |
Request
curl "https://api.cimplify.io/api/v1/scheduling/slots?service_id=svc_01H…&date=2026-05-09&variant_id=var_60min" \
-H "X-Public-Key: pk_test_your_publishable_key"Response
{
"success": true,
"data": {
"service_id": "svc_01H…",
"date": "2026-05-09",
"duration_minutes": 60,
"slots": [
{
"start": "2026-05-09T09:00:00Z",
"end": "2026-05-09T10:00:00Z",
"is_available": true,
"remaining_capacity": 2
},
{
"start": "2026-05-09T10:00:00Z",
"end": "2026-05-09T11:00:00Z",
"is_available": false,
"remaining_capacity": 0
}
]
}
}GET /api/v1/scheduling/slots/check
Verify a single slot before adding the booking to cart. Useful after the user clicks “Reserve” to catch races against other customers.
Query parameters
| Param | Description |
|---|---|
service_id | Required. |
slot_time | ISO 8601 datetime. Required. |
duration_minutes | Optional ad-hoc override (still accepted on this endpoint). |
participant_count | Optional, defaults to 1. |
curl "https://api.cimplify.io/api/v1/scheduling/slots/check?service_id=svc_01H…&slot_time=2026-05-09T09:00:00Z" \
-H "X-Public-Key: pk_test_your_publishable_key"GET /api/v1/scheduling/availability
Day-level availability map across a date range. Use it to render a month calendar with bookable / blocked days. Like /slots, accepts variant_id.
Query parameters
| Param | Description |
|---|---|
service_id | Required. |
start_date | ISO date. Required. |
end_date | ISO date. Required. |
variant_id | Variant override. Optional. |
location_id | Optional. |
participant_count | Optional, defaults to 1. |
curl "https://api.cimplify.io/api/v1/scheduling/availability?service_id=svc_01H…&start_date=2026-05-01&end_date=2026-05-31&variant_id=var_60min" \
-H "X-Public-Key: pk_test_your_publishable_key"GET /api/v1/scheduling/bookings
List the authenticated customer’s bookings (past and upcoming).
curl https://api.cimplify.io/api/v1/scheduling/bookings \
-H "X-Public-Key: pk_test_your_publishable_key"GET /api/v1/scheduling/bookings/{booking_id}
Fetch one booking by ID.
curl https://api.cimplify.io/api/v1/scheduling/bookings/bk_01H… \
-H "X-Public-Key: pk_test_your_publishable_key"POST /api/v1/scheduling/bookings/{booking_id}/cancel
Cancel a booking. Idempotent via Idempotency-Key. Optional reason body.
curl -X POST https://api.cimplify.io/api/v1/scheduling/bookings/bk_01H…/cancel \
-H "X-Public-Key: pk_test_your_publishable_key" \
-H "Idempotency-Key: 5b1f9d80-2c70-4f2c-bf61-a0e6fa6b02a1" \
-H "Content-Type: application/json" \
-d '{"reason": "schedule conflict"}'POST /api/v1/scheduling/bookings/reschedule
Move a booking to a new time. The booking is identified by the order it lives on (order_id + line_item_id).
Body
| Field | Description |
|---|---|
order_id | Required. |
line_item_id | Required. |
new_start_time | ISO 8601 datetime. Required. |
new_end_time | ISO 8601 datetime. Required. |
new_staff_id | Optional. |
reason | Optional free text. |
reschedule_type | Optional customer, business, or system. |
curl -X POST https://api.cimplify.io/api/v1/scheduling/bookings/reschedule \
-H "X-Public-Key: pk_test_your_publishable_key" \
-H "Content-Type: application/json" \
-d '{
"order_id": "ord_01H…",
"line_item_id": "li_01H…",
"new_start_time": "2026-05-10T14:00:00Z",
"new_end_time": "2026-05-10T15:00:00Z",
"reason": "customer requested later slot"
}'Orders
Read and manage orders created by checkout. Authenticated customers get their own orders; guests can access individual orders by passing the order’s `bill_token` as a query parameter.
Subscriptions
Read and manage the authenticated customer’s subscriptions. All endpoints require an active customer session (cookie set by `/auth/verify-otp`).