cimplify
API reference

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
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
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

ParamTypeDescription
service_idstringRequired.
datestringISO date YYYY-MM-DD. Required.
variant_idstringVariant override. Optional.
participant_countintegerGroup size. Defaults to 1.
location_idstringRequired when service has multiple locations.

Request

cURL
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

ParamDescription
service_idRequired.
slot_timeISO 8601 datetime. Required.
duration_minutesOptional ad-hoc override (still accepted on this endpoint).
participant_countOptional, defaults to 1.
cURL
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

ParamDescription
service_idRequired.
start_dateISO date. Required.
end_dateISO date. Required.
variant_idVariant override. Optional.
location_idOptional.
participant_countOptional, defaults to 1.
cURL
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
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
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
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

FieldDescription
order_idRequired.
line_item_idRequired.
new_start_timeISO 8601 datetime. Required.
new_end_timeISO 8601 datetime. Required.
new_staff_idOptional.
reasonOptional free text.
reschedule_typeOptional customer, business, or system.
cURL
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"
  }'
  • Cart Add a service line item with scheduled_start / scheduled_end.

  • Orders Bookings live as line items on the order they were created from.

On this page