Book direct with the hotel
04 / 05 · book_direct Places a 15-minute HOLD on the room and emails the guest a 6-digit code. Nothing is booked and nothing reaches the hotel until the guest confirms. After calling, tell the guest: check your email (the result shows the masked address), then either read the code back to you (call confirm_booking) or click Confirm in the email. Send an idempotency_key and reuse it if you retry. Confirm name, email, dates and price with the guest before calling. Demo hotels (demo: true) confirm at once and send no email.
| Input | Type | Notes |
| stay_idRequired string | string | up to 100 characters |
| room_idRequired string | string | up to 100 characters |
| check_inRequired date | date | YYYY-MM-DD |
| check_outRequired date | date | YYYY-MM-DD |
| guestsRequired integer | integer | 1–10 |
| guest_nameRequired string | string | up to 120 characters |
| guest_emailRequired email | email | up to 254 characters |
| guest_phone string | string | up to 40 characters |
| notes string | string | Requests for the hotel, e.g. late arrival. up to 1000 characters |
| agent string | string | Name of the AI agent/app placing the request. up to 120 characters |
| idempotency_key string | string | One per booking attempt (8-128 of A-Z a-z 0-9 _ -). Reuse it on retries to get the same hold back.. up to 128 characters |
book_directExample
book_direct({
stay_id: "<stay_id from search_stays>",
room_id: "<room_id from get_stay>",
check_in: "2026-12-12",
check_out: "2026-12-15",
guests: 2,
guest_name: "Example Guest",
guest_email: "guest@example.com"
})