Villa Tracker Partner API
API playground
Run the whole partner integration from your browser with your sandbox credentials: pull the villas shared with you, quote a stay, book it with our hosted payment or as an instant booking, cancel it and check your error handling. Every step shows the exact request, the real response and a Copy as curl to take into your own code.
Connect
Enter the sandbox partnerId and bearer token we sent you. Every request goes to https://api.villatracker.com with Authorization: Bearer <token>.
api.villatracker.com and nowhere else.Connecting makes one small call (limit=1) to check the credentials. To run the copied curl commands, first set export TOKEN=<your sandbox token> in your shell.
Pull inventory
POST /eps/listings/{partnerId} returns every property shared with you, with photos, details, rules and a two-year fullCalendar of prices and availability. Pick a villa to continue. (Sandbox photos are placeholders.)
Live quote
POST /eps/quote/{partnerId} prices the exact stay: nightly rate, fees and taxes, in the property's currency. The netTotal is what you echo back when you book.
Pick a villa in step 2 first.
Default dates are picked at random far ahead on purpose: a paid or confirmed sandbox stay blocks its dates (409 unavailable) for everyone sharing the sandbox, so choose your own dates if you hit one.
Book with hosted payment
POST /v1/booking-requests with payment: {"mode": "flywire"}. Villa Tracker is merchant of record: we check availability, re-quote, hold the request and return a payment_url for your guest. Once paid, the stay is booked in the property's system and the request turns confirmed.
Uses the listing, dates, guests and netTotal from your quote in step 3.
Instant book, you take the payment
The same call without payment: instant-book properties confirm in one call and return a confirmationCode. You charge your guest and settle the net rate with us. The playground re-quotes first so price_quoted.total matches.
Dates default to three weeks after your step 3 stay, so they don't clash with the hosted-payment booking. Guest details come from step 4.
Cancel
POST /v1/booking-requests/{id}/cancel. Pending requests are cancelled locally; confirmed ones are cancelled through the property's system and the dates go back on sale.
Make an instant booking in step 5 first.
Error checks
See the failures your integration has to handle before you meet them in production.
401 sends no Authorization header. Wrong token sends an invalid one to /eps/listings: the /eps/* endpoints answer 200 with "success": false (always check success), /v1/* answers 403. 409 quotes your villa six weeks after your step 3 dates, then books it with a price_quoted.total 20% too low, so it is refused and nothing is created (sandbox TEST- listings only).
Next steps
Move the calls into your server, run them against the sandbox in your CI, then work through the go-live checklist. When it is green we issue your production token.
Integration guide
Every step in detail, plus the full External Partner and Reservation API reference.
CheckGo-live checklist
What has to be green before we swap your sandbox token for production.
Manage ↗Partner extranet
Your account and API credentials, the properties shared with you (publish or drop each one), booking requests and reservations. Sign in with a one-time email link.
Askpartners@smilinghouse.ch
Sandbox credentials, questions about the contract, or ready for production.