Guides and reference for the ElefyMove Open API.
| Method | Endpoint | Scope | What it does |
|---|---|---|---|
/api/public/v1/listings | listings:write | Submit a new listing for moderation, with content in any of our 9 supported languages. | |
| GET | /api/public/v1/listings | listings:read | List every listing your key owns, with its current moderation status. |
| GET | /api/public/v1/listings/{externalId} | listings:read | Read one of your listings by the external ID you assigned it. |
| PATCH | /api/public/v1/listings/{externalId} | listings:write | Update one of your listings; any field you omit is left unchanged. |
| DELETE | /api/public/v1/listings/{externalId} | listings:write | Unlist one of your listings. |
/api/public/v1/listings/{externalId}/photos | listings:write | Add one photo to a listing without a full update. The image is fetched and re-hosted by ElefyMove — your URL is never stored directly. | |
| DELETE | /api/public/v1/listings/{externalId}/photos/{photoId} | listings:write | Remove a photo from a listing. Refused with a 400 if it would drop a currently-published listing below the minimum photo count. |
externalId — ElefyMove never asks you to store its internal ids.listing.approved / listing.rejected webhooks instead of polling for status.PATCH is a partial update — any field you omit is left unchanged. DELETE unlists (it does not erase history).PATCH round-trip. A photo you submit as a URL is fetched and re-hosted by ElefyMove — your URL is never stored or linked directly.MIN_PHOTOS_REQUIRED 400 if it would drop a currently-published listing below the minimum photo count.These routes need no scope — any valid key can read them. They expose the exact enum, locale, and currency values POST /listings validates against, and the canonical location hierarchy, so you never have to hard-code or guess them:
| Method | Endpoint | Scope | What it does |
|---|---|---|---|
| GET | /api/public/v1/locations | Any valid key | Read the canonical province → district → area location tree. |
| GET | /api/public/v1/locations/search | Any valid key | Typeahead search over the canonical location hierarchy. |
| GET | /api/public/v1/reference/property-types | Any valid key | The exact set of property type values a listing accepts. |
| GET | /api/public/v1/reference/amenities | Any valid key | The length and count limits amenities must respect — amenities are free text, not a fixed catalog. |
| GET | /api/public/v1/reference/locales | Any valid key | The exact set of locale codes a listing's translations accept. |
| GET | /api/public/v1/reference/currencies | Any valid key | The currency a listing's price is denominated in. ElefyMove is Thailand-only, so this is always THB. |
amenities has no fixed catalog — it is free text validated only by a count and a per-item length limit. GET /reference/amenities returns those limits with an empty values array and freeText: true; do not treat the empty array as "no amenities allowed".