四个工具都以任务方式运行:返回 202,结果通过轮询或 webhook 获取(任务与结果)。声音、音乐、结束语和数字人从参考列表中选择(参考数据)。
内容包
POST /content/generate:权限范围 tools:contentgen。GREM 根据物业信息和照片,在一个任务中生成描述、社交媒体帖子、带配音的视频、落地页和 PDF。会为内容包创建一个房源草稿。
需要至少 4 张照片,以公开地址放在 form.media.photos 中。自己的文件请先用 POST /uploads 上传,再传入返回的 url(文件)。
| 字段 | 类型 | 说明 |
|---|---|---|
form.language | 字符串 | 结果语言:eng、rus、ukr、deu、spa、aze、arb、fra、zho、tur |
form.media.photos | 数组 | 4 到 20 个照片地址(字符串或 { "url": "..." }):必填 |
form.objectId | 字符串 | 为您已有的房源生成内容包 |
form.objectType | 字符串 | property、rental 或 complex |
form.propertyCategory | 字符串 | 物业类型:apartment、house、penthouse、land、warehouse ... |
form.dealType | 字符串 | sale 或 rent |
form.title | 字符串 | 标题 |
form.description | 字符串 | 您的描述:作为事实依据 |
form.customDirection | 字符串 | 语气和重点要求,最多 500 字符 |
form.totalArea | 数字 | m² |
form.rooms、form.floor、form.buildingFloors | 数字 | 房间、楼层、总楼层 |
form.landPlotArea | 数字 | 土地,m²(住宅) |
form.price | 数字 | 价格 |
form.priceCurrency | 字符串 | 价格货币 |
form.addressCountry、form.addressCity、form.street、form.streetNumber | 字符串 | 地址 |
form.voiceId | 字符串 | 来自 GET /voices 的配音声音 |
form.enableSubtitles | 是/否 | 视频字幕,默认开启 |
form.showPhone | 是/否 | 显示电话;号码填在 form.contactPhone |
form.options.music.trackId | 字符串 | 来自 GET /video/music 的曲目;form.options.music.enabled: false 表示不加音乐 |
form.options.endCard.style | 字符串 | 结尾卡片:photo、solid 或 split |
不需要 user 字段:内容包以密钥所属账户的名义创建。
curl -X POST https://developers.grem.capital/api/v1/content/generate \
-H "Authorization: Bearer gsk_live_xxx" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 0c0e3a5b-7d1e-4b8a-9b2f-1e6d4c3a2b10" \
-d '{
"form": {
"language": "zho",
"propertyCategory": "apartment", "dealType": "sale",
"title": "公园旁明亮的两居室",
"totalArea": 64, "rooms": 2, "price": 320000, "priceCurrency": "EUR",
"addressCountry": "Germany", "addressCity": "Berlin",
"media": { "photos": ["https://example.com/1.jpg", "https://example.com/2.jpg",
"https://example.com/3.jpg", "https://example.com/4.jpg"] }
}
}'
响应 202:jobId(任务 ID)和 propertyId(房源草稿)。完成的任务(GET /content/generate/jobs/{id})包含:
| 字段 | 说明 |
|---|---|
artifacts | 生成文件的 ID |
artifactsSummary | 每个文件一条记录:类型、格式、大小 |
bundle | 内容包的落地页和 PDF(如已生成) |
progress | 任务运行期间的生成进度 |
masterProfile | 文案和配音所依据的故事大纲 |
error | 任务失败时:以通用文本说明的原因 |
文件:GET /artifacts/v1/ai/assistant/announcement/jobs/{jobId}/artifacts/{artifactId}/download。事件:content.completed、content.partial(部分文件失败)、content.failed。少于 4 张照片:400。
房源文案
POST /text/generate:权限范围 tools:text。一段描述、一份演示文案和一条社交媒体帖子。需要 objectId,或 description、city、totalArea 中至少一项;否则返回带 code: not_enough_input 的 422。
| 字段 | 类型 | 说明 |
|---|---|---|
objectId | 字符串 | 您的房源(或您机构的房源) |
title | 字符串 | 最多 120 字符 |
description | 字符串 | 您的描述,最多 2000 字符 |
city | 字符串 | 城市 |
totalArea | 数字 | m² |
rooms | 数字 | 房间 |
price | 数字 | 价格 |
currency | 字符串 | 价格货币 |
propertyCategory | 字符串 | 物业类型 |
language | 字符串 | en(默认)、ru、ua、de、es、az、ar、fr、zh、tr |
customDirection | 字符串 | 语气和重点要求;超过 500 个字符的文本会被截断为 500 个字符 |
curl -X POST https://developers.grem.capital/api/v1/text/generate \
-H "Authorization: Bearer gsk_live_xxx" \
-H "Content-Type: application/json" \
-d '{"city":"Berlin","totalArea":64,"rooms":2,"propertyCategory":"apartment","language":"zh","description":"已翻新,安静的庭院,步行 5 分钟到地铁。"}'
返回 202 和 jobId。文案位于任务文件中,与内容包相同;任务还包含 progress、masterProfile 和 error。事件:text.completed / text.failed。
照片生成视频
POST /video/create:权限范围 tools:video。用您的照片或房源照片生成带配音的短视频。
请求体:multipart/form-data,每个选项都是独立的表单字段(不是放在 data 字段中的 JSON):
| 字段 | 说明 |
|---|---|
photos | 照片文件,1 到 8 张,每个文件一个部分;使用 objectId 时不需要;JPEG、PNG、WebP 或 HEIC,每张最大 20 MB;第 8 张之后的照片不会使用 |
objectId | 从您的房源获取照片和信息 |
prompt | 视频主题,最多 500 字符;无 objectId 时必填;更长的文本会被截断 |
title | 标题,最多 120 字符 |
length | short(默认)或 long;其他值按 short 处理;long 至少需要 4 张照片(code: long_needs_more_photos) |
aspect | 9:16、1:1 或 16:9;其他值按默认处理 |
language | 配音语言:en、ru、ua、de、es、az、ar、fr、zh、tr |
narration | true(默认):带配音 |
voiceId | 来自 GET /voices 的声音 |
enableSubtitles | 字幕 |
musicEnabled | 带音乐 |
musicTrackId | 来自 GET /video/music 的曲目 |
musicVolume | 音乐音量,0 到 100 |
music | 用您自己的音乐文件代替曲目 |
endCardEnabled、endCardStyle | 结尾卡片:photo、solid 或 split |
ctaMode | 结束语:auto(默认)按房源自动选择;manual 使用 ctaIntent 或 ctaText |
ctaIntent | 现成结束语:GET /video/endings 中的某个 intent 值 |
ctaText | 您自己的结束语,最多 60 个字符 |
ctaMarket | 视频面向谁:local、remote 或 international;用于调整 auto 结束语 |
curl -X POST https://developers.grem.capital/api/v1/video/create \
-H "Authorization: Bearer gsk_live_xxx" \
-F "[email protected]" -F "[email protected]" -F "[email protected]" \
-F "prompt=柏林米特区阳光充足的两居室,安静庭院" \
-F "length=short" -F "aspect=9:16" -F "language=zh"
返回 202 和 jobId;视频位于任务文件中。与内容包一样,任务还包含 progress、masterProfile 和 error。价格取决于 length。事件:video.completed / video.failed。
数字人视频
POST /avatar/video:权限范围 tools:avatar。由主持人介绍您的房源。
| 字段 | 类型 | 说明 |
|---|---|---|
avatarId | 字符串 | 必填:GET /avatar/avatars 中状态为 ready 的数字人 |
objectId | 字符串 | 必填:您的房源 |
scriptText | 字符串 | 必填:主持人文稿,至少 100 字符;最多 1200 |
voiceId | 字符串 | 来自 GET /voices 的声音 |
language | 字符串 | 语言 |
background.type | 字符串 | 背景:color、photo 或 slideshow |
background.color | 字符串 | 背景颜色 #RRGGBB |
background.photoUrl | 字符串 | 背景照片 |
dimension.width、dimension.height | 数字 | 画面尺寸,100 到 4096 像素;两者同时提供或都不提供 |
enableSubtitles | 是/否 | 字幕 |
curl -X POST https://developers.grem.capital/api/v1/avatar/video \
-H "Authorization: Bearer gsk_live_xxx" \
-H "Content-Type: application/json" \
-d '{"avatarId":"AVATAR_ID","objectId":"OBJECT_ID","voiceId":"VOICE_ID","scriptText":"..."}'
返回 202 和 jobId。视频:GET /artifacts/v1/ai/assistant/avatar/jobs/{jobId}/artifacts/{artifactId}/download,artifactId 取自已完成任务的 artifacts。事件:avatar.completed / avatar.failed。缺少 avatarId 或 objectId,或文稿过短:400,字段列在 errors 中。