Download OpenAPI specification:
The Daylet API lets you integrate your property's availability, pricing, and booking creation into your own website or backend system.
Every request requires a Bearer API key in the Authorization header:
Authorization: Bearer dlk_live_<48 hex chars>
Keys are generated per-property in the Daylet dashboard → Property → Developer API page. A key is scoped to exactly one property — the property ID is never passed in the request; it is derived from the key itself.
| Window | Limit |
|---|---|
| Per IP (before auth) | 60 req / 60 s |
| Read endpoints | 120 req / 60 s |
| Write endpoints | 20 req / 60 s |
Rate-limit state is returned in X-RateLimit-* response headers.
All responses use a consistent JSON envelope:
Success: { "data": { ... } }
Error: { "error": { "code": "<error_code>", "message": "..." } }
This API is server-to-server only. CORS is intentionally not enabled — your API key must never be embedded in browser-shipped code.
Returns unavailable date ranges and booking restrictions for the property within a given window. Use this to pre-validate dates before quoting or creating a booking.
| from required | string^\d{4}-\d{2}-\d{2}$ Example: from=2025-08-01 Start of the window (inclusive), ISO 8601 date |
| to required | string^\d{4}-\d{2}-\d{2}$ Example: to=2025-08-31 End of the window (inclusive), ISO 8601 date |
| room_id | string <uuid> Scope to a specific room (rooms-mode properties only) |
curl -G https://app.dayletus.com/api/v1/availability \ -H "Authorization: Bearer dlk_live_your_key_here" \ -d from=2025-08-01 \ -d to=2025-08-31
{- "data": {
- "unavailable_dates": [
- {
- "start": "2025-08-10",
- "end": "2025-08-17",
- "source": "booking"
}, - {
- "start": "2025-08-24",
- "end": "2025-08-31",
- "source": "import"
}
], - "restrictions": {
- "min_nights": 7,
- "week_start_day": 6,
- "week_increment_only": true
}
}
}Returns a server-computed price quote for a prospective stay. Uses the same pricing engine as the guest booking flow, so quotes and real charges never diverge. Returns 422 if pricing is not enabled for the property.
| check_in required | string^\d{4}-\d{2}-\d{2}$ Desired check-in date |
| check_out required | string^\d{4}-\d{2}-\d{2}$ Desired check-out date |
required | object Guest counts for the stay |
| room_id | string <uuid> ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA... Room to quote (rooms-mode only) |
Array of objects Extras to include in the quote |
{- "check_in": "2025-08-16",
- "check_out": "2025-08-23",
- "guests": {
- "adults": 2,
- "children": 1,
- "infants": 0,
- "pets": 0
}
}{- "data": {
- "nights": 7,
- "currency": "GBP",
- "base_total": 28000,
- "adjustments_total": 0,
- "extras_total": 0,
- "final_total": 28000,
- "breakdown": [ ]
}
}Creates a booking for the property the API key is scoped to.
When require_payment is true, a Stripe Checkout Session is created in the same request and checkout_url is returned — no second round trip needed. Pass success_url and cancel_url to redirect the guest back to your own site after payment.
Pass an Idempotency-Key header (any unique string, e.g. a UUID) to make retries safe. The first request for a key is processed and the response stored; later requests with the same key replay the stored response. A 409 is returned if the same key is reused with a different request body.
| Idempotency-Key | string Example: 550e8400-e29b-41d4-a716-446655440000 Unique string (e.g. UUID) to make the request idempotent |
| check_in required | string^\d{4}-\d{2}-\d{2}$ Check-in date |
| check_out required | string^\d{4}-\d{2}-\d{2}$ Check-out date |
required | object Guest counts for the stay |
| room_ids | Array of strings <uuid> non-empty [ items <uuid >^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA... ] Room IDs to book (rooms-mode properties only) |
| guest_name required | string non-empty Guest's full name |
| guest_email | string <email> ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z... Guest's email address |
| guest_phone | string non-empty Guest's phone number |
object Guest's billing address | |
Array of objects | |
| require_payment required | boolean Default: false When true, a Stripe Checkout Session is created and checkout_url is returned |
| success_url | string <uri> URL to redirect the guest to after successful payment |
| cancel_url | string <uri> URL to redirect the guest to if they cancel payment |
| locale | string Enum: "en" "fr" "es" Locale for confirmation emails |
{- "check_in": "2025-08-16",
- "check_out": "2025-08-23",
- "guests": {
- "adults": 2,
- "children": 0,
- "infants": 0,
- "pets": 0
}, - "guest_name": "Alice Smith",
- "guest_email": "alice@example.com",
- "require_payment": false
}{- "data": {
- "id": "b1a2c3d4-e5f6-7890-abcd-ef1234567890",
- "status": "confirmed",
- "payment_status": "not_required",
- "total_nights": 7,
- "total_price_snapshot": null,
- "currency_snapshot": null
}
}Returns the details of a single booking. The booking must belong to the property the API key is scoped to — mismatched booking IDs return 404 (not 403) to avoid confirming the existence of another owner's bookings.
| id required | string <uuid> Booking UUID |
curl https://app.dayletus.com/api/v1/bookings/b1a2c3d4-e5f6-7890-abcd-ef1234567890 \ -H "Authorization: Bearer dlk_live_your_key_here"
{- "data": {
- "id": "b1a2c3d4-e5f6-7890-abcd-ef1234567890",
- "status": "confirmed",
- "payment_status": "not_required",
- "check_in": "2025-08-16",
- "check_out": "2025-08-23",
- "total_nights": 7,
- "guests": {
- "adults": 2,
- "children": 0,
- "infants": 0,
- "pets": 0
}, - "guest_name": "Alice Smith",
- "total_price_snapshot": null,
- "currency_snapshot": null,
- "rooms": [ ],
- "extras": [ ]
}
}