Add complete booking capabilities to any AI agent. Query availability, hold a slot, confirm. Floyd handles the infrastructure and complexity.
How it works
Your app
AI agent or chatbot
Booking UI or form
Voice assistant
Scheduling widget
No-code automation
Floyd
Conflict detection
No double-bookings
Hold & expiry
Auto-expire on TTL
Floyd
Transactional booking engine
Check availability, place holds, confirm reservations and persist the state.
Scheduling
Respects business rules
Safe retries
Retry without side effects
Your systems
Email confirmation
Calendar invite
Push notification
Analytics event
Slack or SMS alert
Your app
AI agent or chatbot
Booking UI or form
Voice assistant
Scheduling widget
No-code automation
calls
Conflict detection
No double-bookings
Hold & expiry
Auto-expire on TTL
Floyd
Transactional booking engine
Check availability, place holds, confirm reservations and persist the state.
Scheduling
Respects business rules
Safe retries
Retry without side effects
webhooks
Your systems
Email confirmation
Calendar invite
Push notification
Analytics event
Slack or SMS alert
Live Demos
AI agent books tables with party size, dining preferences, and real-time availability.
Classic appointment scheduling with a dental practice. Hold, confirm, and TTL expiry in action.
Appointments with hold countdown and real-time conflict detection.
Multi-hour equipment rental with resource metadata and long-duration availability windows.
Meeting room booking with capacity requirements and resource selection between multiple rooms.
Vehicle service appointments with service type, vehicle metadata, and bay assignment.
Developer API
POST /v1/services/svc_01jkabc123def/availability/slots
{
"startTime": "2026-03-16T00:00:00Z",
"endTime": "2026-03-17T00:00:00Z",
"durationMs": 3600000
}
// Response
[{
"resourceId": "rsc_01jkabc123def",
"slots": [
{ "startTime": "2026-03-16T10:00:00Z", "endTime": "2026-03-16T11:00:00Z" },
{ "startTime": "2026-03-16T14:00:00Z", "endTime": "2026-03-16T15:00:00Z" }
]
}]POST /v1/bookings
{
"serviceId": "svc_01jkabc123def",
"resourceId": "rsc_01jkabc123def",
"startTime": "2026-03-16T10:00:00Z",
"endTime": "2026-03-16T11:00:00Z",
"metadata": { "customerName": "Alice" }
}
// Response
{
"id": "bkg_01jkabc123def",
"status": "hold",
"expiresAt": "2026-03-16T10:15:00Z"
}POST /v1/bookings/bkg_01jkabc123def/confirm
// No request body
// Response
{
"id": "bkg_01jkabc123def",
"status": "confirmed",
"expiresAt": null
}POST /v1/bookings/bkg_01jkabc123def/reschedule
{
"startTime": "2026-03-16T14:00:00Z",
"endTime": "2026-03-16T15:00:00Z"
}
// Response
{
"id": "bkg_01jkabc123def",
"status": "confirmed",
"startTime": "2026-03-16T14:00:00Z",
"endTime": "2026-03-16T15:00:00Z"
}POST /v1/bookings/bkg_01jkabc123def/cancel
// No request body
// Response
{
"id": "bkg_01jkabc123def",
"status": "canceled"
}POST /v1/services/svc_01jkabc123def/availability/slots
{
"startTime": "2026-03-16T00:00:00Z",
"endTime": "2026-03-17T00:00:00Z",
"durationMs": 3600000
}
// Response
[{
"resourceId": "rsc_01jkabc123def",
"slots": [
{ "startTime": "2026-03-16T10:00:00Z", "endTime": "2026-03-16T11:00:00Z" },
{ "startTime": "2026-03-16T14:00:00Z", "endTime": "2026-03-16T15:00:00Z" }
]
}]Built-in
Define bookable services with scheduling policies for business hours, slot durations, and booking windows.
Create temporary holds during conversations that expire after a TTL to prevent abandoned reservations.
Connect AI agents through the Model Context Protocol. Agents discover and use booking tools automatically.
Query available slots with policy-aware filtering that returns only time slots satisfying all constraints.
Database constraints and row-level locking prevent double-booking with deterministic conflict responses.
All mutations support idempotency keys for safe retries that return identical responses without side effects.