有些工具会立即(同步)返回;另一些会启动一个任务并在后台完成。本页介绍第二种情况:如何得知任务已完成以及如何获取结果。
创建响应
异步工具返回 202:
{ "jobId": "...", "status": "...", "state": "pending", "requestId": "req_..." }
state 字段对所有工具都一致,请以它为准:
| 值 | 含义 |
|---|---|
pending | 已接收,尚未开始 |
running | 进行中 |
action_required | 等待您操作(报告审核:确认提取的数据) |
completed | 已完成 |
partial | 部分完成:部分文件失败(内容包可能出现) |
failed | 失败 |
status 是工具的原始状态(DONE、processing、need_confirm 等)。为兼容而保留;新的集成请基于 state。
任务 ID
所有工具的每个任务响应都包含 jobId 字段:创建时、状态中以及确认后。请用它轮询状态。
1.6.0 版本之前,各工具以不同名称返回 ID(id、_id、contentGenJobId)。这些字段仍为现有集成保留,但已弃用:请使用 jobId。
状态轮询
状态位于 GET /<工具路径>/jobs/{id}:
| 工具 | 状态 |
|---|---|
| 完整估价报告 | GET /valuation/report/jobs/{id} |
| 报告审核 | GET /valuation/review/jobs/{id} |
| 内容包 | GET /content/generate/jobs/{id} |
| 文案 | GET /text/generate/jobs/{id} |
| 视频 | GET /video/create/jobs/{id} |
| 数字人 | GET /avatar/video/jobs/{id} |
| 照片 | GET /photo/enhance/jobs/{id} |
| 户型图 | GET /floorplan/create/jobs/{id} |
GET /pdf/create/jobs/{id} |
- 轮询免费,不计为 API 调用,但计入请求频率限制。每 3 到 5 秒一次即可。
- 只有创建任务的密钥所属账户能看到该任务。他人的或未知的 ID 返回相同的
404。 - 机构中绑定经纪人的密钥只能看到自己启动的任务;整个机构的密钥能看到机构的所有任务。
- 任务在创建后 7 天内可以查询。之后
GET .../jobs/{id}返回404,内容包、文案和视频文件也无法再通过 API 下载。 - 状态响应包含同样的
status和state,结果就绪后还包含工具的结果。失败的内容包、文案或视频任务带有error,照片任务带有metadata.error:以通用文本说明原因。
户型图和报告审核会立即处理文件:202 响应已包含最终状态(completed、failed 或 action_required),因此轮询是可选的。
任务等待您操作时
读取文件后,报告审核(估价)停在 action_required,并在 extracted 中返回提取的数据。检查后确认:
curl -X POST https://developers.grem.capital/api/v1/valuation/review/jobs/JOB_ID/confirm \
-H "Authorization: Bearer gsk_live_xxx" \
-H "Content-Type: application/json" \
-d '{}'
空请求体表示「全部正确」。要修正某个值,只需在 extracted 中发送修改过的字段,名称与响应中相同(嵌套对象 subject 合并一层)。随后任务进入 running,结果照常到达。
用 webhooks 代替轮询
每个异步工具都会发送 <工具>.completed 或 <工具>.failed 事件(内容包还会发送 content.partial)。订阅和签名验证:Webhooks。
- 事件通常在任务结束后一分钟内到达。
- 只有在创建任务时已存在对应事件的订阅,任务才会被跟踪。请提前订阅,不要在启动任务之后才订阅。
- 如果任务 30 分钟内未完成,会收到带
reason: "timeout"的.failed。任务本身仍可能完成:轮询会显示其真实状态。
现成文件
文件通过 GET /artifacts/{path} 用同一个密钥下载(权限范围 tools:artifacts)。免费,支持 Range。{path} 为以下之一:
| 内容 | 路径 |
|---|---|
| 内容包、文案或视频文件 | v1/ai/assistant/announcement/jobs/{jobId}/artifacts/{artifactId}/download |
| 数字人视频 | v1/ai/assistant/avatar/jobs/{jobId}/artifacts/{artifactId}/download |
| PDF 演示文稿 | v1/ai/pdf-generator/files/{id}/download |
| 优化后的照片 | v1/ai/photo-enhancement/jobs/{jobId}/download/{variant} |
| 完整估价报告 PDF | v1/ai/appraisal/reports/{id}/pdf |
| 租金估算 PDF | v1/ai/appraisal/rent/{id}/pdf |
| 审核报告 | v1/ai/appraisal/reviews/{id}/report.pdf 或 report.docx |
| 户型图报告 | v1/ai/floor-plan/jobs/{id}/report.pdf |
| 传单文件 | v1/ai/flyer/file/{name} |
| 视频配乐(试听) | v1/ai/video-generator/music/{trackId} |
| 普通文件 | 工具响应中的 /files/... 路径 |
内容包文件的 ID 在任务状态的 artifacts 字段中。内容包、文案和视频文件仅对同一账户通过 API 创建的任务可用,有效期 7 天。
curl -L -o video.mp4 \
"https://developers.grem.capital/api/v1/artifacts/v1/ai/assistant/announcement/jobs/JOB_ID/artifacts/ARTIFACT_ID/download" \
-H "Authorization: Bearer gsk_live_xxx"
PDF 演示文稿还有一个 link 字段:文件的直接地址。
相关文章
- 通过 API 使用工具:哪些工具是同步的,哪些是异步的。
- Webhooks:无需轮询即可获取结果。
- 文件:为房源和工具上传图片。