Introduction
VillaSlot books villas by the slot. A villa has opening hours and a rate grid; a customer books an hour, a morning or a day; the booking gets confirmed, paid, completed — or cancelled.
That is the whole product, and everything it does is reachable over HTTP.
The five things VillaSlot knows about
Organization
Your team and your villas. Everything below belongs to exactly one organization, and nothing crosses between two. Your plan limits how many villas, bookings and customers it holds.
Villa
A place you rent by the slot. It carries its opening hours — a weekly grid, per day — and its rate grid, which prices a duration. Outside its hours, nothing can be booked.
Customer
Whoever books. A name, a way to reach them, and their history. A customer can be given an access link: it connects them to their own space, where they see their bookings and their balance, and nothing else.
Booking
A villa, a customer, a slot. It moves through states — pending, confirmed, completed, cancelled — and it can carry a payment.
Payment
A booking can be paid in full, partly, or not at all. A payment link goes to the customer; Stripe answers back and the booking follows.
Two ways in
The interface — the calendar, the villa pages, the customer list. Made for the person with the customer on the phone.
The API — the same data, the same rules, no browser. Made for a script, a site, or an agent. An API key belongs to one organization and carries the rights of whoever created it: nothing is possible through the API that the same person could not do by hand.
The API is the interesting half of this documentation. Head to API — it is the map of every endpoint, with a page per call.
Rules worth knowing before anything else
- A slot outside a villa's opening hours is refused, and so is a duration absent from its rate grid. Both are the villa's own, not the organization's. Multi-day stays are the one exception to the hours: a villa rented by the night is not judged like an hourly shoot.
- Two confirmed bookings cannot overlap on the same villa. The refusal comes from the database, not from a check that could be raced.
- Amounts are integers in the minor unit of your currency.
1500000inIDRis 15 000 rupiah. Never divide by 100 without knowing the currency. - Your plan has limits on villas, bookings and customers. Reaching one answers
409, in the interface and in the API alike.
Where to go next
- Getting started — the first booking, end to end
- Public booking — let customers book online, and embed it on your site
- Integrations — send your customers to an email list or a webhook
- API — authentication, the response envelope, and every endpoint