The bookings API lets you embed scheduling into any external surface — a website, a mobile app, or an AI agent. You list available resources, query open slots for a date range, and confirm a booking by passing a slot ID back to the create endpoint. Slot IDs are opaque and encode both the resource and the start time, so you never need to reconstruct them.Documentation Index
Fetch the complete documentation index at: https://developers.novala.ai/llms.txt
Use this file to discover all available pages before exploring further.
Required scopes
| Operation | Required scope |
|---|---|
| List resources, check availability, list bookings | bookings.read |
| Create and cancel bookings | bookings.manage |
| Create and update resources | bookings.resources.manage |
Resource types
A bookable resource can represent any schedulable entity:location · service · room · equipment · person
Booking statuses
| Status | Meaning |
|---|---|
confirmed | Booking is active. |
cancelled | Booking was cancelled. |
no_show | Guest did not appear. |
completed | Booking has been completed. |
List resources
GET /api/bookings/resources
Returns all active bookable resources for the tenant.
Query parameters
Filter by resource type:
location, service, room, equipment, or person.Search by resource name.
When
true, includes resources where isActive is false.Maximum number of results.
Results to skip for pagination.
Response
Get available slots
GET /api/bookings/resources/{id}/availability
Returns available time slots for a resource within a date range. Use this before creating a booking to present real-time availability to a user.
Path parameters
UUID of the bookable resource.
Query parameters
Start of the date range (ISO 8601, for example
2024-08-01 or 2024-08-01T00:00:00Z). Defaults to now.End of the date range (ISO 8601). Defaults to 7 days from
from.Response
remaining reflects the number of additional bookings that can be made for the slot, based on maxConcurrent.
List bookings
GET /api/bookings
Returns a list of bookings for the tenant, with optional filters.
Query parameters
Filter by resource UUID.
Filter by booking status:
confirmed, cancelled, no_show, completed.Filter by the lead UUID associated with the booking.
Return bookings starting on or after this date (ISO 8601).
Return bookings starting on or before this date (ISO 8601).
Maximum number of results.
Offset for pagination.
Create a booking
POST /api/bookings
Confirms a booking for a slot. The slot is validated against the resource’s operating hours and closures at write time. If the slot is no longer available, the request returns 409 Conflict.
Request body
Opaque slot ID obtained from the availability endpoint.
Guest’s first name.
Guest’s last name.
Guest’s email address. Used for confirmation emails.
Guest’s phone number.
Additional notes from the guest.
What the guest is interested in (for example, a specific program or service).
Attribution for the booking source.
Response
Returns201 Created with the confirmed booking object. Returns 409 Conflict if the slot has been taken.
Get a booking
GET /api/bookings/{id}
Retrieves a single booking by ID.
Path parameters
UUID of the booking.
Response
Returns200 OK with { "booking": { booking object } }.
Cancel a booking
DELETE /api/bookings/{id}
Cancels a booking. The booking record is retained; its status changes to cancelled. Returns 404 if the booking is already cancelled.
Path parameters
UUID of the booking to cancel.
Response
Returns200 OK with { "success": true }.