Reference
API reference
Base URL: https://api.kestrel.example/v1. All bodies are JSON.
List availability
GET /availability
| Parameter | Type | Description |
|---|---|---|
calendar | string | Calendar ID. Required. |
from | date | First day, ISO 8601. |
days | integer | Number of days, max 31. |
{
"data": [
{ "start": "2026-12-01T09:00:00Z", "end": "2026-12-01T09:30:00Z" },
{ "start": "2026-12-01T10:00:00Z", "end": "2026-12-01T10:30:00Z" }
],
"has_more": false
}Create a booking
POST /bookings
curl -X POST https://api.kestrel.example/v1/bookings \
-H "Authorization: Bearer $KESTREL_KEY" \
-H "Content-Type: application/json" \
-d '{"calendar":"cal_123","start":"2026-12-01T09:00:00Z","email":"ada@example.com"}'Cancel a booking
DELETE /bookings/{id}
Returns 204 No Content. Cancelling twice is safe and also returns 204.
Errors
Errors use standard HTTP status codes and a JSON body with a machine-readable code.
{ "error": { "code": "slot_taken", "message": "That slot is no longer available." } }