Create a booking

Create a booking for a specific time slot. The API validates that: 1. The human exists and is active 2. The duration matches one of the human's allowed `meeting_durations` 3. The time slot falls within working hours (or is covered by an open override) 4. No schedule block overrides conflict with the slot 5. No existing confirmed booking occupies the slot If another booking was created for the same slot between your agent's slot query and this request, you'll receive a `409 SLOT_UNAVAILABLE` error. Your agent should retry with the next available slot. **Metadata** — pass arbitrary JSON (lead IDs, conversation IDs, ticket numbers) that your agent needs to maintain workflow context. This metadata is included in webhook payloads. **Plan limits** — bookings count toward your monthly limit. On paid plans with auto-purchase enabled, overage packs ($19 per 500 bookings) are charged automatically when the limit is reached.

Authentication

AuthorizationBearer
API key authentication. Pass your key as a Bearer token: ``` Authorization: Bearer sk_live_xxxxxxxxxxxxxxxxxxxx ``` Get your API key from the [Slotflow Dashboard](https://app.slotflow.dev).

Request

This endpoint expects an object.
human_idstringRequiredformat: "uuid"
ID of the human to book
starts_atdatetimeRequired
Booking start time in ISO 8601 UTC format
durationintegerRequired

Meeting duration in minutes. Must match one of the human’s meeting_durations.

attendee_namestringRequired
Name of the person being booked
attendee_emailstringOptional

Email of the attendee (optional)

metadatamap from strings to anyOptional

Arbitrary JSON for your agent’s workflow state (lead IDs, conversation IDs, etc.)

Response

Booking confirmed
idstring or nullformat: "uuid"
human_idstring or nullformat: "uuid"
starts_atdatetime or null
Booking start time in UTC
ends_atdatetime or null
Booking end time in UTC
duration_minutesinteger or null
Duration in minutes
attendee_namestring or null
Name of the person being booked
attendee_emailstring or null

Email of the attendee (optional)

statusenum or null
Allowed values:
metadatamap from strings to any or null
Arbitrary JSON metadata passed by your agent for workflow tracking
created_atdatetime or null

Errors