For developers
Everything the site publishes is available to a program: the homes as data, and the four forms that reach Han or Trang. There are no API keys and no accounts to create, because nothing here is private.
Read the homes
Three endpoints, no authentication, JSON only. They serve exactly the facts the pages publish, built from the same file.
- GET
/api/v1/listings - GET
/api/v1/listings/{slug} - GET
/api/v1/cities
Ask about a home
Four form posts, sent as application/x-www-form-urlencoded. Each one is read and answered by a person. None of them books, confirms or charges anything, and none of them takes payment.
- POST
/api/inquiry - POST
/api/waitlist - POST
/api/employer - POST
/api/viewing
Start here
The read API needs no key, so the first call is the whole setup.
# Every home, as one document curl -s https://wuandkin.com/api/v1/listings # One home curl -s https://wuandkin.com/api/v1/listings/le-hong-phong-dalat-house # Ask about a home and get JSON back instead of a redirect curl -s -X POST https://wuandkin.com/api/inquiry \ -H 'Accept: application/json' \ -d 'fullName=Ana Reyes&email=ana@example.com&phone=+84 90 123 4567' \ -d 'moveInDate=2027-01-15&stayLength=12&tenants=2'
Errors
Every failure is application/problem+json per RFC 9457: a stable code to branch on, a human sentence, and what to change before retrying. Branch on code, never on the prose.
-
not_found -
invalid -
toolarge -
busy -
method_not_allowed -
unavailable
Rate limits
Read endpoints allow 120 requests per 10 minutes per address; each form endpoint allows 10. Every response carries RateLimit-Limit, RateLimit-Remaining and RateLimit-Reset, and a 429 adds Retry-After, so a client can throttle itself without guessing.
Versioning and deprecation
The major version is in the path, so /api/v1 is the contract. A version is announced at least 90 days before it is retired and stays available for at least 12 months after its successor ships; every response carries X-Wuandkin-API-Version. When a version is retired its responses carry Deprecation: true and Sunset with an HTTP date for at least 90 days first. Adding a field is not a breaking change; removing or retyping one ships as a new major version. Nothing is deprecated today.
Deprecation policy