Docs

幂等性

最后更新: 2026-10-03阅读约 4 分钟

网络有时会中断请求,您无法确定它是否已送达。要重试 POST 而不重复执行(和支付)工作,请发送 Idempotency-Key 请求头:每个逻辑操作一个唯一值。UUID 是不错的选择。

curl -X POST https://developers.grem.capital/api/v1/valuation/express \
  -H "Authorization: Bearer gsk_live_xxx" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 3f1c8a90-1e2b-4c77-9a10-2b6d0f9e4a11" \
  -d '{"propertyCategory":"apartment","addressText":"Torstraße 12, Berlin","totalArea":64}'

工作原理

  • 使用某个键的第一个请求正常执行;其成功响应会被保存。
  • 使用同一个键的重试返回已保存的响应:工具不会再次运行,也不会再次扣费。
  • 第一个请求仍在执行时,使用同一个键的第二个请求会收到带 title: idempotency_conflict 的 409。请等待并用同一个键重试。
  • 如果第一个请求以错误结束,该键会被释放:重试会重新执行。根本没有到达服务的请求(连接被拒绝)也会释放该键。
  • 工具、创建房源或创建线索超时(502 provider_error)后,该键会保留 15 分钟,避免重试再次执行工作。重试前请先查看结果:工具看 GET /works,创建看 GET /objects 和 GET /leads。照片优化、网站和草稿的结果不会保存在 GET /works 中,请在后台或您的房源中查看。15 分钟后重试会再次执行工作(并再次扣费)。
  • 快速估价例外:超时后该键会被释放,请立即用同一个键重试,已完成的估价会直接返回,完全免费:估价和 API 调用都不会再次扣费。
  • 键保存 24 小时,归属于您的 API 密钥和操作,即方法和实际路径:不同 API 密钥下的相同值、同一个键用于其他工具,以及 POST /objects/property 与 POST /objects/rental,都是不同的请求。

重试的请求体不会与第一个请求比较。如果用已经用过的键发送不同的请求,您会收到第一个请求的响应。每个新操作请使用新键。

适用范围

请求
POST /valuation/express 及所有工具(POST /valuation/report、POST /content/generate、POST /flyer/create 等)是
POST /objects/{kind}:创建房源是
POST /leads:创建线索是
POST /match/leads/{id}/events:Swipe Match 事件是;键必须符合 ^[A-Za-z0-9_.:-]{8,128}$,否则会被忽略
POST /uploads、POST /chat/messages、POST /valuation/review/jobs/{id}/confirm否(对话中由 clientMessageId 承担此作用)

在 SDK 中,键是方法的最后一个参数。

相关文章

这篇文章对您有帮助吗?