Getting started
Conventions
Eight rules that hold on every endpoint.
JSON, over HTTPS, server to server
Every request and response body is JSON, except the PDF download and the token form. There are no CORS headers. Credentials belong on your server, never in a browser.
Money is integer euro-cents
€2,400.00 is 240000. There are no floats in this API, so don’t introduce one on your
side. A null amount means the operator has not set one. It is not zero.
Dates are days, not instants
A tenancy date is a YYYY-MM-DD string, a calendar day local to the property. Parsed
into a UTC datetime, it can shift by a day. Instants (createdAt, sentAt,
…) are ISO 8601 in UTC and carry the Z.
Check-out is exclusive
A tenancy from the 1st to the 30th occupies the 1st through the 29th, and the 30th is available.
The calendar agrees: a day is booked up to, not including, check-out. nights on a reservation is endDate minus startDate.
Ids are opaque strings
Store them as they come. Nothing is encoded in them, and their shape may change. A listing id is
the same id a reservation’s propertyId carries, so the two join.
The listings response is the complete set
It is neither a delta nor paginated. A row that vanishes was unpublished; delete it from your
mirror. Reservations do page and filter. Use updatedSince for an incremental sync.
Nothing is cacheable
Every response carries Cache-Control: no-store. Cache in your own database, and let webhooks tell you when to refresh.
Versioned in the path
This is /api/v1. Fields are added without notice, so ignore fields you don’t know.
Nothing documented here is removed or renamed without a new prefix.