Daylet API (1.0.0)

Download OpenAPI specification:

The Daylet API lets you integrate your property's availability, pricing, and booking creation into your own website or backend system.

Authentication

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.

Rate limits

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.

Response envelope

All responses use a consistent JSON envelope:

Success: { "data": { ... } }

Error: { "error": { "code": "<error_code>", "message": "..." } }

CORS

This API is server-to-server only. CORS is intentionally not enabled — your API key must never be embedded in browser-shipped code.

Availability

Query property availability

Get availability

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.

Authorizations:
bearerAuth
query Parameters
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)

Responses

Request samples

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

Response samples

Content type
application/json
{
  • "data": {
    }
}

Pricing

Get server-computed price quotes

Get a price quote

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.

Authorizations:
bearerAuth
Request Body schema: application/json
required
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

Responses

Request samples

Content type
application/json
{
  • "check_in": "2025-08-16",
  • "check_out": "2025-08-23",
  • "guests": {
    }
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Bookings

Create and retrieve bookings

Create a booking

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.

Idempotency

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.

Authorizations:
bearerAuth
header Parameters
Idempotency-Key
string
Example: 550e8400-e29b-41d4-a716-446655440000

Unique string (e.g. UUID) to make the request idempotent

Request Body schema: application/json
required
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

Responses

Request samples

Content type
application/json
{
  • "check_in": "2025-08-16",
  • "check_out": "2025-08-23",
  • "guests": {
    },
  • "guest_name": "Alice Smith",
  • "guest_email": "alice@example.com",
  • "require_payment": false
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Get a booking

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.

Authorizations:
bearerAuth
path Parameters
id
required
string <uuid>

Booking UUID

Responses

Request samples

curl https://app.dayletus.com/api/v1/bookings/b1a2c3d4-e5f6-7890-abcd-ef1234567890 \
  -H "Authorization: Bearer dlk_live_your_key_here"

Response samples

Content type
application/json
{
  • "data": {
    }
}