Open-source booking engine

Build rental booking with multi-day availability and zero overlap.

Rental inventory doesn't fit into fixed slots. Floyd's windows-mode returns continuous free ranges up to 31 days, with atomic holds during payment and auto-expiration on failure.

POST /v1/services/svc_kayaks/availability/windows
{
  "startTime": "2026-03-07T00:00:00Z",
  "endTime": "2026-03-14T00:00:00Z"
}
→ 200
{
  "windows": [
    { "start": "Mar 7 08:00", "end": "Mar 12 18:00"}
  ]
}
// continuous ranges - not fixed slots

Multi-Day Availability Windows

Continuous free ranges up to 31 days. Native variable-length support.

Blackout Date Enforcement

Block holidays and seasonal closures. Enforced at query time.

Payment Hold with TTL

Lock inventory during checkout. Payment fails? Hold auto-expires.

Key Capabilities

Everything you need to handle real-world booking complexity out of the box.

01

Windows-Mode Availability

POST /availability/windows returns continuous free ranges up to 31 days. Built for multi-day rentals - not a workaround on top of slot-based scheduling.

02

Min/Max Duration Constraints

Policy rules enforce minimum and maximum rental periods per service type. Define 2-hour minimum for short rentals, 7-day maximum for long ones. Floyd enforces constraints at query time.

03

Maintenance Buffers

Configure after-buffer per service for turnaround time between allocations. Define it once in the policy - Floyd subtracts it from available windows automatically.

04

Lead Time Rules

Require 24-hour advance booking for one service type, allow same-day for another. Different lead time rules per service, all declarative in the policy.

05

Conflict Detection

Database-level row locking ensures one hold per time range per resource. Two concurrent requests on the same item and dates? One succeeds, the other gets 409.

06

Atomic Holds for Payment

Hold inventory during payment processing with a configurable TTL. No reservation queue in your app - the hold expires on payment failure and confirms on success.

Rental Booking Flow

3 API calls. Hold, confirm, done.

1
Check Equipment Availability
POST /v1/services/svc_kayaks/availability/windows

{
  "startTime": "2026-03-07T00:00:00Z",
  "endTime": "2026-03-14T00:00:00Z"
}
{ "windows": [{ "start": "Mar 7 08:00", "end": "Mar 12 18:00" }] }

Continuous availability windows for multi-day rentals.

2
Hold the Kayak
POST /v1/bookings

{
  "serviceId": "svc_kayaks",
  "resourceId": "rsc_kayak_3",
  "startTime": "2026-03-07T08:00:00Z",
  "endTime": "2026-03-09T18:00:00Z"
}
{ "id": "bkg_rnt_1", "status": "hold" }

Kayak held during payment processing.

3
Confirm Rental
POST /v1/bookings/bkg_rnt_1/confirm
{ "id": "bkg_rnt_1", "status": "confirmed" }

Holds expire automatically after a TTL. Conflicts are handled at the database level.

Ready to integrate?Ship bookings today

Sign up for Floyd and integrate our REST API to handle bookings in your agent framework.