Open API v1

Build with ElefyMove

Connect your platform to ElefyMove: list properties, sync availability in real time, and never double-book a date.

What the API does

One integration surface for listings, availability, and real-time sync.

Listings API

Push multilingual property listings onto ElefyMove. Submit content in any subset of our 9 supported locales — every listing is moderated before it goes live.

Availability sync

ElefyMove's master calendar is the single source of truth for anything bookable. Every date range carries a state — available, held, booked, or blocked — and turnover buffers are enforced centrally so no channel can double-book.

Temporary holds

Place a short-lived hold, up to 10 minutes, while a guest completes checkout on your side. Conflicts resolve first-come-first-served, with a machine-readable 409 response for the losing request.

Webhooks

Subscribe to HMAC-SHA256-signed events for listing approvals, availability changes, hold lifecycle, and booking status, delivered near real time. Payloads carry dates and references only — never guest personal data.

iCal sync

Every listing exports a signed iCal feed, and ElefyMove can poll your feed URL in return, so external blocks stay reflected on both sides without writing any integration code.

What partners can — and can't — do

Rule zero: every operation is scoped to your own data. There is no cross-partner access, in either direction.

You can

  • Create, update, and unlist your own property listings, in any of our 9 languages
  • Read your own listings and their moderation status
  • Read availability for your own listings, and write external-channel blocks with a reference
  • Place and release temporary holds, up to 10 minutes, during your checkout
  • Register webhooks and receive signed events — dates and references only
  • Export listing calendars (iCal) and register your own iCal feeds
  • Read the public location hierarchy

You can't

  • Move any payment, refund, or deposit through this API
  • Create ElefyMove bookings or contracts — external bookings enter only as a calendar block
  • Send or receive guest or tenant personal data
  • Access or modify any other partner's listings, holds, blocks, or configuration
  • Message, contact, or solicit ElefyMove users
  • Read or republish listings you don't own
  • Exceed rate limits, share keys, or automate account creation

Getting access

Create a developer account, verify your email, and issue your own API keys right from the dashboard. Publishing live listings additionally requires the ElefyMove team to link your key to a verified landlord account.

Create your API keys

By creating an account, you agree to the API Terms of Use.

Available scopes

listings:readlistings:writeavailability:readavailability:writeholds:writewebhooks:manage

Default rate limit: 120 requests per minute per key.

Quick start

Every request is authenticated with an X-Api-Key header carrying your issued key.

Check availability for a listing

curl "https://elefymove.com/api/public/v1/listings/{listingId}/availability?from=2026-09-01&to=2026-09-30" \
  -H "X-Api-Key: efy_live_xxxxxxxxxxxxxxxxxxxxxxxx"

# Response — 200 OK
[
  { "from": "2026-09-01", "to": "2026-09-14", "state": "AVAILABLE" },
  { "from": "2026-09-15", "to": "2026-09-20", "state": "BLOCKED", "source": "partner-site", "externalRef": "HMXYZ123" },
  { "from": "2026-09-21", "to": "2026-09-30", "state": "AVAILABLE" }
]

Place a temporary hold

curl -X POST "https://elefymove.com/api/public/v1/listings/{listingId}/holds" \
  -H "X-Api-Key: efy_live_xxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"from": "2026-09-15", "to": "2026-09-20", "ttlSeconds": 300}'

# Response — 201 Created
{ "holdId": "hld_9f3a2c1b", "expiresAt": "2026-08-13T10:15:00Z" }

A losing request gets a machine-readable 409

# Same request, the dates were just taken by another channel
# Response — 409 Conflict
{
  "code": "SLOT_TAKEN",
  "conflictingState": "HELD",
  "wonBy": "external"
}
OpenAPI / Swagger

Full API reference

Every request and response schema, error shape, and example lives in the interactive OpenAPI reference — try any endpoint live with your own key.

Open API DocsBrowse the full documentation

Every endpoint at a glance

The complete Open API v1 surface. Every request carries your key in an X-Api-Key header, and every route reaches your own data only.

Base URL https://elefymove.com

Listings

MethodEndpointScopeWhat it does
POST/api/public/v1/listingslistings:writeSubmit a new listing for moderation, with content in any of our 9 supported languages.
GET/api/public/v1/listingslistings:readList every listing your key owns, with its current moderation status.
GET/api/public/v1/listings/{externalId}listings:readRead one of your listings by the external ID you assigned it.
PATCH/api/public/v1/listings/{externalId}listings:writeUpdate one of your listings; any field you omit is left unchanged.
DELETE/api/public/v1/listings/{externalId}listings:writeUnlist one of your listings.

Availability & blocks

MethodEndpointScopeWhat it does
GET/api/public/v1/listings/{id}/availabilityavailability:readRead a listing's unified calendar over a date range — available, held, booked, or blocked.
POST/api/public/v1/listings/{id}/blocksavailability:writeCreate or update an external-channel block, identified by your own reference.
DELETE/api/public/v1/listings/{id}/blocks/{externalRef}availability:writeRemove an external-channel block you previously wrote.

Holds

MethodEndpointScopeWhat it does
POST/api/public/v1/listings/{id}/holdsholds:writeHold a date range while a guest completes checkout on your side. The losing request gets a 409 carrying SLOT_TAKEN.
DELETE/api/public/v1/holds/{id}holds:writeRelease one of your holds before it expires.

Calendar sync (iCal)

MethodEndpointScopeWhat it does
GET/api/public/v1/listings/{id}/calendar.icsSigned URL, no keyDownload a listing's calendar as an iCal feed. The signed token in the URL is the authentication, so calendar apps can subscribe directly.
PUT/api/public/v1/listings/{id}/ical-sourcesavailability:writeRegister or replace the inbound iCal feed ElefyMove polls for one of your listings.
GET/api/public/v1/listings/{id}/ical-sourcesavailability:readRead the registered feed for a listing, with its polling status and last error.
DELETE/api/public/v1/listings/{id}/ical-sourcesavailability:writeStop polling and delete the registered feed for a listing.

Webhooks

Webhooks have no partner-callable endpoint in v1. Send us your destination URL when you request a key and the ElefyMove team registers it, along with the HMAC-SHA256 secret every delivery is signed with. Failed deliveries are retried with backoff, and payloads carry dates and references only.

Events you can receive
listing.approvedlisting.rejectedavailability.changedhold.createdhold.releasedhold.expiredbooking.createdbooking.cancelledping

Meta

MethodEndpointScopeWhat it does
GET/api/public/v1/pingAny valid keyCheck that your key works and read back the client name and scopes attached to it.

Data & fair use

  • No guest personal data crosses the API — external blocks carry dates and a reference only, in line with Thailand's PDPA.
  • Listings sourced through the API link back to their canonical page on elefymove.com.
  • Keys are scoped, and the ElefyMove team can revoke one at any time.

Open API v1 — currently onboarding integration partners.