Pull for data, push for notifications
You read everything withGET requests. A webhook only says that something changed and names it: read the resource it names to see what changed. You can also read the same notifications as an ordered log, GET /events, which is how you catch up after any gap.
GET /channel describes the channel your key belongs to: its environment, the scopes the key holds, your rate limit and how many properties are distributed to you. Any key can call it.
Environments
Only HTTPS is accepted, with TLS 1.2 or later. A plain-HTTP request is refused, never redirected, because its key has already crossed the network in clear: treat such a key as compromised and roll it.
Conventions
- Ids are opaque strings with a prefix (
loc_,own_,prp_,rpl_,pho_,whk_,dlv_,evt_), specific to your channel and never reused. Do not parse them. - Instants are RFC 3339 in UTC, to the second, ending in
Z:2026-10-16T09:30:00Z. - Nights are dates in the property’s own time zone (
timezone). - Money is
{"amount": 45000, "currency": "RON"}: an integer in ISO 4217 minor units, so 45000 RON is 450.00 lei. - Text is a map from a BCP 47 language to plain text, and always contains the property’s source language:
rofor a property in Romania. It holds no HTML, links, e-mail addresses or phone numbers. - Every enum is open: accept values you do not know.
Versions
Version 1 only grows: new fields, new values in an enum, new event types and new legal identifier schemes arrive without a new version. A breaking change is a new version,/v2, announced at least 30 days ahead with Deprecation and Sunset headers.
Read on
Authentication
Keys, scopes and rotation.
Synchronisation
Lists,
updated_since, versions and tombstones.Legal data
What each country’s law asks a listing to show.
Webhooks
Verifying a signature, retries and suspension.
Errors and rate limits
Problem details and the
RateLimit headers.Testing
A mock of the contract today, the sandbox next.