Docs

版本与 API 变更

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

版本

主版本号在路径中:/api/v1。在 v1 内我们不会破坏现有集成。合约的当前版本是 /openapi.json 中的 info.version,每次变更都会递增。

可能不经通知的变更

以下变更是兼容的,您的客户端应能处理:

  • 新的操作和工具;
  • 新的可选请求字段;
  • 新的响应字段;
  • 响应枚举中的新值(状态、代码)、title 中的新错误码、新的 webhook 事件类型;
  • detail 文本的修改;
  • 更高的限制。

如何编写客户端

  • 忽略未知的响应字段。
  • 把未知的枚举值、错误码或事件类型视为「其他」,而不是故障。
  • 根据 status、title 和 code 分支处理,而不是 detail 文本。
  • 不要依赖字段顺序或 ID 长度。
  • 以任务的 state 为准,而不是工具的原始 status。

什么算破坏性变更

删除或重命名操作、字段、权限范围或事件;新增必填请求字段;改变字段的类型或含义;对同一情况改变状态码;缩小允许的取值范围。我们不会在 v1 中不经通知做这些变更:操作会先在 /openapi.json 和本日志中标记为 deprecated,并至少继续工作 6 个月。修复安全漏洞除外。

使响应与本文档一致的修复不属于破坏性变更。

变更日志

2026-10-03:版本 1.16

变更:

  • 429 带有 code:minute_limit 或 daily_limit(密钥的每日上限,00:00 UTC 重置)。
  • 使用机构密钥写入的房源归属机构;机构房源和线索的 object.*、lead.* webhook 也会发送到机构的地址。
  • 房源照片:各类型最多 50 张,与后台一致。
  • SDK 1.7.2:流中的空分块不再切断聊天事件。

修复:

  • PUT /objects/{kind}/{id} 会保留房源的审核状态、isSold 和发布状态;之前会重置它们(普通编辑会让已发布房源下架)。
  • GET /objects 不再列出被停用房主的房源;对访客隐藏的卡片按 ID 也不会返回。
  • PATCH /leads/{id}:无合同线索的发送方可以像在后台一样修改其状态;状态变更和归档会写入线索历史。

2026-10-03:版本 1.15

变更:

  • PATCH /leads/{id}(状态)和 DELETE /leads/{id} 遵循后台规则:结案、佣金收取、生效的合同或协议:返回 422,原因见 code。?expand=history 不再包含内部元数据(令牌、其他用户的 ID)。
  • 免费聊天的每日上限返回 code: free_daily_limit,以及到 00:00 UTC 为止的 Retry-After。
  • GET /works:previewUrl、link 和 object.photoUrl 是供 GET /artifacts/{path} 使用的 /files/... 路径;最后一页的 nextCursor 为 null。
  • 创建线索:未知字段会被丢弃(而不是被拒绝);规范中写明了服务校验的长度;pool: true 会把线索交给平台池。
  • SDK 1.7.1:jobs.wait 会等待 429 结束;chat.stream 能处理被分块切开的 CRLF;artifact() 接受 signal。

修复:

  • 音乐预览:超出文件末尾的 Range 返回 416(之前返回 404);文件服务故障返回 502 而不是 404。
  • POST /uploads 中超过 15 MB 的文件返回 413。被拒绝的 strictPhotos 房源会列出未能获取的照片(code: photo_fetch_failed)。
  • 内容包的拒绝会指出 form.media.photos。沙盒:报告审核会取任意名称的第一个文件;租金中的字符串和照片的内部键不会被拒绝。

2026-10-03:版本 1.14

变更:

  • 使用同一个 Idempotency-Key 重复快速估价现在完全免费:API 调用也不扣费。
  • GET /works:不是 nextCursor 的 cursor 返回 400(之前列表会静默地从头开始)。
  • POST /webhooks/{id}/test:不在列表中的 eventType 返回 400(之前会发送通用测试)。
  • Swipe Match:reasonCode 只接受列出的原因,与服务一直以来的要求一致;线索的 kind 可以是 pool。
  • SDK 1.7.0:jobs.wait 可承受单次轮询失败;artifact() 接受 range;chat.stream 能读取 CRLF 流,并且每个事件调用一次。

修复:

  • 音乐预览:bytes=-N 返回最后 N 个字节,超出文件末尾的 Range 返回 416。
  • 在请求发出前连接超时会释放 Idempotency-Key。
  • 沙盒:服务能读取的任意字段名下的视频照片、以字符串传入的租金数字、符合声明尺寸的海报 PNG。

2026-10-03:版本 1.13

新增:

  • GET /works 返回后台为每个结果显示的内容:street、streetNumber、previewUrl、link、repeatIndex、error 以及房源(object)。
  • GET /chat/sessions 记录了其参数:limit、cursor、q、projectId、archivedOnly、sort。
  • 规范中的 Problem.title 包含 range_not_satisfiable;webhook 列表带有 requestId。
  • SDK 1.6.1:chat.listSessions 接受列表参数。

变更:

  • 规范写明了生产环境早已执行的限制:头像 scriptText 最多 1200 字符,海报 formats 最多 3 个、layouts 最多 5 个,海报 contacts 字段长度,照片 seed 最大 2147483647,照片 data 中不得有未知键。
  • 快速估价:网关只拒绝完全没有面积且没有房产类型的请求;landPlotArea 是否计作面积由服务决定(在 propertyType 或 apartmentType 中写明为土地的同样计入)。

修复:

  • 沙盒与生产环境一样拒绝照片(JPEG、PNG 或 WebP,最大 25 MB:JOB_CREATE_FAILED;在 cleanup 之外使用蒙版:MASK_NOT_SUPPORTED),并接受生产环境会截断或替换的内容(视频标题、音量、片尾和结束语选项、落地页语言、超过 20 张的内容照片、租金中以文字给出的 furnished)。估价报告任务在 running 之后不再显示 pending。
  • 被拒绝的下载重定向会如实说明,而不是报超时;比文件更长的 Range 后缀返回整个文件。
  • SDK 1.6.1:verifyWebhookSignature 可在 Node 18 中运行。

2026-10-03:版本 1.12

新增:

  • 416 range_not_satisfiable 作为 RFC 9457 问题返回(之前是空响应体)。
  • 照片优化启动时返回 priceMinor:本次调用的扣费金额,与后台显示一致。
  • SDK 1.6.0:works 接受 from/to,chat.history 接受 limit/cursor,chat.sendMessage 接受 style。

变更:

  • GET /match/leads:limit 超过 50 或 page 超过 1000 返回 400(它们从未被截断)。POST /match/leads/{id}/events:格式不符的 Idempotency-Key 返回 400,不再被静默丢弃。
  • 海报拒绝的字段返回带字段名的 400 validation(之前为 422)。
  • 同一个 Idempotency-Key 下付款仍在预留中的调用返回 409 idempotency_conflict(之前为 422)。
  • 快速估价:与服务一致,landPlotArea 仅对 land 计作面积。
  • 超时、连接被重置或在响应中途关闭的套接字会让 Idempotency-Key 保持占用;只有从未到达服务的请求才会释放它。
  • SDK 1.6.0:上传在 503 后从不重试;每次等待后都会移除取消监听器。

修复:

  • PDF 和落地页的拒绝会带上原因:402 加 INSUFFICIENT_FUNDS 或 QUOTA_EXCEEDED(之前为不带 code 的 422)。
  • 沙盒与生产环境拒绝的内容完全一致:上传文件的类型和大小;文本会被截断而不是被拒绝;未知的视频 length、aspect 和 language 回退为默认值;海报代码不区分大小写;草稿可以不带 type。余额不足模拟返回生产环境实际发送的 INSUFFICIENT_FUNDS。
  • limit 和 page 由网关自己截断到范围内(GET /chat/history?limit=500 之前返回 400;limit=0 之前返回 20 而不是 1)。

2026-10-03:版本 1.11

新增:

  • 任务结果包含后台显示的字段:内容包、文案和视频带有 progress、masterProfile(文案和配音所依据的故事大纲)以及失败任务的 error;照片带有 metadata.error;户型图带有 rooms[].stable、rooms[].placement、sourceFileId。
  • 浏览器(CORS)可以读取 RateLimit-*、Retry-After、Grem-Sandbox、X-Request-Id 和 Content-Range 响应头。

变更:

  • Webhooks:测试密钥只能创建和管理沙盒地址;这些地址只接收沙盒任务的事件,正式地址永远不会收到它们。
  • 超出范围的 limit 和 page 会被限制到范围内,不再返回 400;GET /objects 中的 kind 不区分大小写;rooms 可以是小数。
  • Idempotency-Key 归属于 API 密钥、方法和实际路径(POST /objects/property 与 POST /objects/rental 是不同的操作)。超时后,创建房源和线索会像工具一样保留该键 15 分钟;没有到达服务的请求会释放该键。
  • text/generate:customDirection 截断为 500 个字符。
  • SDK 1.5.1:写入的 503 仅在带 Idempotency-Key 时重试;超过 30 秒的 Retry-After 不会等待;maxRetries 最大为 10;您的 AbortSignal 会取消等待;消息 ID 在 Node 18 中可用。

修复:

  • 沙盒与生产环境一致:校验 multipart 字段、按类别校验报告字段、独栋房屋的供暖取值、商业类 apartmentType 和住宅综合体;文件仅限已完成的任务、该工具自己的路径和已知的产物 ID;检查密钥之前给出的响应也带 Grem-Sandbox;Grem-Simulate 不区分大小写。
  • 没有密钥时,无效的查询参数先返回 401。
  • 绑定到经纪人的机构密钥不再能读取用机构通用密钥启动的任务。
  • 此前以其他端口保存的 webhook 地址会继续接收投递。
  • 无法满足的 Range 返回 416 而不是 404;报告审核接受最大 40 MB 的文档。

2026-10-03:版本 1.10

新增:

  • 错误代码 conflict(409):资源当前的状态不允许该操作(错误)。
  • POST /video/create 中的视频结束语字段:ctaMode、ctaIntent、ctaText、ctaMarket;GET /video/endings 的选项带有 intent 和 text。
  • GET /works:from 和 to 筛选条件。
  • SDK 1.5.0:maxRetries 选项,429 和 503 在 Retry-After 之后重试。

变更:

  • 查询参数会被校验:已知参数的值无效时返回 400 validation 并指出字段名。
  • Webhook:只允许 443 端口上的 https,URL 中不能有凭据;第 11 个地址返回 422;机构的 Webhook 只能由整个机构的密钥管理。
  • Idempotency-Key 归属于 API 密钥和操作;工具超时后该键保留 15 分钟。
  • 与资金相关的拒绝(额度、欠款、合理使用、余额)均为带 code 的 402 insufficient_funds。
  • 机构中绑定经纪人的密钥只能看到自己的任务和文件。
  • 文件下载计入频率限制。

修复:

  • 所有错误(包括过大或格式错误的请求体)都以 RFC 9457 application/problem+json 返回;超过上限的请求体返回 413 payload_too_large。
  • 视频字段 ending 从未被读取;请使用 ctaIntent 或 ctaText。
  • SDK:使用正式密钥时 simulate 抛出错误,而不是执行调用。

2026-10-03:版本 1.8-1.9

新增:

  • 可比房源:快速估价中的 estimate.analogs、完整报告中的 analogs、租金估算中的 comps - 与控制台和 PDF 中一致。
  • 已完成任务的字段已完整描述:报告数据使用真实字段名(potPrice、priceRangeLow、priceRangeHigh…)、报告审查、户型图、照片、传单、草稿。
  • SDK 1.4.0:Analog 类型。

变更:

  • 工具响应只包含已描述的字段;以前漏出的内部字段不再返回。
  • GET /tools/status 显示不可用的工具在扣费前返回 503 service_unavailable(以前仅限内容包、文本和视频)。
  • 报告审查确认响应只包含任务字段(jobId、state、status);不再返回已弃用的 _id。

修复:

  • 头像视频:artifacts 包含下载链接所需的 id。
  • 租赁的 checkIn/checkOut 描述为一天中的小时。

2026-10-02:版本 1.7

新增:

  • 沙盒:测试密钥(gsk_test)模拟工具且不收费;Grem-Simulate 请求头选择结果。
  • 快速估价中的 estimate.confidenceScore。

变更:

  • 启动工具的调用最多等待 5 分钟,而不是 60 秒。
  • 使用同一个 Idempotency-Key 重试快速估价时,返回已完成的结果且不会再次扣费,超时后也一样。

修复:

  • 快速估价的 estimate.confidence 之前始终为 null。
  • 户型图响应不再包含内部字段。
  • 不带 kind 的 GET /objects 以及房源和线索的拒绝现在会在 detail 中说明原因。

2026-10-02:版本 1.6

变更:

  • 每个任务响应都包含同一个 jobId 字段。原先各工具的名称 id、_id、contentGenJobId 仍会返回,但已弃用。
  • SDK 1.2.0:Job.jobId 始终存在。

2026-10-02:版本 1.2 至 1.5

新增:

  • GET /voices、GET /avatar/avatars、GET /video/music、GET /video/endings:工具所需的 ID(参考数据)。
  • GET /tools/status:工具可用性;GET /works:作品历史。
  • POST /flyer/create:个人传单,权限范围 tools:flyer。
  • POST /valuation/review/jobs/{id}/confirm:确认报告审核数据。
  • 每个任务响应中的 state 字段。
  • 错误中的 code 和 errors 字段,以及 forbidden、payload_too_large、service_unavailable 错误码。
  • API 描述中:每个工具的完整请求和响应架构、按类型划分的完整房源写入合约、每个操作的计费类别(x-grem-billing)、权限范围和事件列表。
  • 记录了 scope(房源)和 pool(线索)参数。

变更:

  • 因缺少数据而拒绝(例如没有描述或城市的文案)现在返回带原因和代码的 422 business_rule。此前为 502 provider_error。
  • 因资源权限而拒绝现在返回带原因的 403 forbidden。此前为 500。
  • 工具的 webhook 测试投递与真实投递格式相同:{ jobId, status, state }。

修复:

  • 机构密钥可用于所有工具、对话和文件下载。
  • 报告审核和户型图:可以用响应中的 ID 获取任务状态,webhooks 能正常到达。
  • 内容包、文案和视频文件的下载仅对任务所有者开放。

相关文章

这篇文章对您有帮助吗?