一个统一的接入层,覆盖房源发布、空档同步与实时联动。
将多语言房源信息推送到 ElefyMove。你可以提交我们支持的 9 种语言中的任意一种或多种内容,每条房源在正式发布前都会经过审核。
ElefyMove 的主日历是平台上所有可预订资源的唯一真实数据源。每个日期区间都带有状态标记——空闲、临时锁定、已预订或已封锁——清洁/交接缓冲时间由系统统一执行,确保任何渠道都不会造成重复预订。
在客人于你的平台完成结账期间,可设置最长 10 分钟的临时锁定。冲突按服务器接收顺序先到先得处理,落败的请求会返回可供程序解析的 409 响应。
订阅经 HMAC-SHA256 签名的事件——房源审核结果、空档变化、锁定生命周期以及订单状态——近乎实时送达。负载内容仅包含日期与引用编号,绝不包含客人的个人信息。
每个房源都可导出经签名的 iCal 订阅链接,ElefyMove 也可以反向轮询你的订阅链接,让外部封锁在双方系统中保持一致,无需额外编写对接代码。
第一原则:每一项操作都仅限于你自己的数据。任何方向上都不存在跨合作伙伴的访问。
listings:readlistings:writeavailability:readavailability:writeholds:writewebhooks:managecommunity:readcommunity:writemarketplace:readmarketplace:write默认速率限制:每个密钥每分钟 120 次请求。
每个请求都需要通过 X-Api-Key 请求头携带你获得的密钥进行身份验证。
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" }
]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" }# Same request, the dates were just taken by another channel
# Response — 409 Conflict
{
"code": "SLOT_TAKEN",
"conflictingState": "HELD",
"wonBy": "external"
}Open API v1 的完整接口。每个请求都需在 X-Api-Key 请求头中携带你的密钥,且所有路由只能访问你自己的数据。
基础 URL https://elefymove.com
| 方法 | 端点 | 权限范围 | 用途 |
|---|---|---|---|
/api/public/v1/listings | listings:write | 提交新房源进入审核,内容可使用我们支持的 9 种语言中的任意几种。 | |
| GET | /api/public/v1/listings | listings:read | 列出该密钥拥有的全部房源及其当前审核状态。 |
| GET | /api/public/v1/listings/{externalId} | listings:read | 按你指定的外部 ID 读取你的某个房源。 |
| PATCH | /api/public/v1/listings/{externalId} | listings:write | 更新你的房源,未提交的字段保持不变。 |
| DELETE | /api/public/v1/listings/{externalId} | listings:write | 将你的房源下架。 |
/api/public/v1/listings/{externalId}/photos | listings:write | 为房源添加一张照片,无需完整更新。图片会由 ElefyMove 抓取并重新托管——你的 URL 不会被直接存储。 | |
| DELETE | /api/public/v1/listings/{externalId}/photos/{photoId} | listings:write | 从房源中移除一张照片。如果会使已发布房源的照片数低于最低要求,将返回 400 拒绝。 |
| 方法 | 端点 | 权限范围 | 用途 |
|---|---|---|---|
| GET | /api/public/v1/locations | 任意有效密钥 | 读取省 → 区/县 → 片区的规范地理位置树。 |
| GET | /api/public/v1/locations/search | 任意有效密钥 | 在规范地理位置层级中进行输入联想搜索。 |
| GET | /api/public/v1/reference/property-types | 任意有效密钥 | 房源可接受的全部房产类型取值。 |
| GET | /api/public/v1/reference/amenities | 任意有效密钥 | 设施字段必须遵守的长度与数量限制——设施是自由文本,并非固定目录。 |
| GET | /api/public/v1/reference/locales | 任意有效密钥 | 房源翻译内容可接受的全部语言代码。 |
| GET | /api/public/v1/reference/currencies | 任意有效密钥 | 房源价格使用的货币。ElefyMove 仅服务泰国,因此始终为泰铢(THB)。 |
| 方法 | 端点 | 权限范围 | 用途 |
|---|---|---|---|
| GET | /api/public/v1/listings/{id}/availability | availability:read | 按日期区间读取房源的统一日历——可订、占位、已订或已封锁。 |
| GET | /api/public/v1/availability | availability:read | 一次调用读取最多 50 个房源的可订情况。你不拥有或不存在的 ID 会列入 notFound,而不会使整个请求失败。 |
| GET | /api/public/v1/listings/{id}/blocks | availability:read | 读取你自己在某房源上仍生效的外部渠道封锁,可选按日期区间缩小范围。 |
/api/public/v1/listings/{id}/blocks | availability:write | 创建或更新一条外部渠道封锁,用你自己的引用编号标识。 | |
/api/public/v1/listings/{id}/blocks/batch | availability:write | 一次调用为同一房源创建或更新最多 100 条外部渠道封锁,每条都有各自的成功/失败结果。 | |
| DELETE | /api/public/v1/listings/{id}/blocks/batch | availability:write | 一次调用为同一房源删除最多 100 条外部渠道封锁,每条都有各自的成功/失败结果。 |
| DELETE | /api/public/v1/listings/{id}/blocks/{externalRef} | availability:write | 删除你此前写入的外部渠道封锁。 |
| 方法 | 端点 | 权限范围 | 用途 |
|---|---|---|---|
| GET | /api/public/v1/holds | holds:write | 按最新排列列出你自己的占位。默认只显示 active 状态,可用 ?status=all 扩大范围。 |
| GET | /api/public/v1/holds/{id} | holds:write | 按 ID 读取你的某个占位。 |
/api/public/v1/listings/{id}/holds | holds:write | 在客人于你这边完成结账期间占住日期区间。竞争失败的请求会收到带 SLOT_TAKEN 的 409。 | |
/api/public/v1/holds/{id}/extend | holds:write | 从当前时间起延长占位的到期时间。占位的总时长自创建起最多 30 分钟——超出该上限的延长请求会被 409 拒绝。 | |
| DELETE | /api/public/v1/holds/{id} | holds:write | 在到期前释放你的某个占位。 |
| 方法 | 端点 | 权限范围 | 用途 |
|---|---|---|---|
| GET | /api/public/v1/listings/{id}/calendar.ics | 签名 URL,无需密钥 | 以 iCal 订阅源下载房源日历。URL 中的签名令牌即为身份凭证,日历应用可直接订阅。 |
| PUT | /api/public/v1/listings/{id}/ical-sources | availability:write | 注册或替换 ElefyMove 为你的房源轮询的入站 iCal 源。 |
| GET | /api/public/v1/listings/{id}/ical-sources | availability:read | 读取房源已注册的源,及其轮询状态和最近一次错误。 |
| DELETE | /api/public/v1/listings/{id}/ical-sources | availability:write | 停止轮询并删除房源已注册的源。 |
| 方法 | 端点 | 权限范围 | 用途 |
|---|---|---|---|
| PUT | /api/public/v1/webhooks | webhooks:manage | 设置你的 webhook 端点 URL,并可选择替换事件订阅列表。 |
| GET | /api/public/v1/webhooks | webhooks:manage | 读取你当前的 webhook 配置。永远不会返回签名密钥。 |
| DELETE | /api/public/v1/webhooks | webhooks:manage | 清除你的 webhook URL 并停止投递。 |
/api/public/v1/webhooks/test | webhooks:manage | 无论当前订阅了哪些事件,都向已配置的端点发送一次已签名的测试事件。 | |
| GET | /api/public/v1/webhook-deliveries | webhooks:manage | 列出你自己的 webhook 投递尝试记录,包括状态、时间戳和重试历史。 |
/api/public/v1/webhook-deliveries/{id}/redeliver | webhooks:manage | 手动重试一次失败或已进入死信状态的投递。 |
| 方法 | 端点 | 权限范围 | 用途 |
|---|---|---|---|
/api/public/v1/community/posts | community:write | 提交一篇社区帖子。合作伙伴创建的帖子都会先进入审核,不会立即发布。 | |
| GET | /api/public/v1/community/posts | community:read | 列出你自己的社区帖子及其审核状态。 |
| GET | /api/public/v1/community/posts/{externalId} | community:read | 按你指定的外部 ID 读取你的某篇社区帖子。 |
| PATCH | /api/public/v1/community/posts/{externalId} | community:write | 更新你的社区帖子;未提交的字段保持不变。 |
| DELETE | /api/public/v1/community/posts/{externalId} | community:write | 下架你的社区帖子。 |
| 方法 | 端点 | 权限范围 | 用途 |
|---|---|---|---|
| GET | /api/public/v1/marketplace/bookings | marketplace:read | 分页并按条件列出你自己的市场预订。返回内容仅包含日期和引用编号。 |
| GET | /api/public/v1/marketplace/bookings/{id} | marketplace:read | 按 ID 读取你的某个市场预订。 |
/api/public/v1/marketplace/bookings/{id}/decline | marketplace:write | 拒绝一个仍在等待付款的预订。没有确认接口——预订只在付款成功后才会确认,而不是经服务方批准。 |
| 方法 | 端点 | 权限范围 | 用途 |
|---|---|---|---|
| GET | /api/public/v1/ping | 任意有效密钥 | 检查密钥是否可用,并读回绑定的客户端名称与权限范围。 |
| GET | /api/public/v1/me | 任意有效密钥 | 读取你 API 客户端自身的身份信息——名称、环境,以及密钥绑定的权限范围。 |
Open API v1 —— 目前正在陆续接入合作伙伴。