视频生成
视频生成使用异步任务接口。提交成功后先保存响应中的视频 ID,再轮询任务状态;状态变为 completed 后下载 MP4 文件。
图生视频示例
下面的请求使用本地图片作为首个参考素材:
curl --fail-with-body https://relay.withrpm.org/v1/videos \
-H "Authorization: Bearer $SPEEDYRPM_API_KEY" \
-F "model=veo-3.1-i2v-fast" \
-F "prompt=镜头缓慢向前移动,保持主体外观一致" \
-F "input_reference=@./reference.jpg;type=image/jpeg" \
-F "seconds=8" \
-F "size=1280x720"veo-3.1-i2v 和 veo-3.1-i2v-fast 是图生视频模型,必须提供 input_reference,并使用 seconds=8。示例中的模型是否可用仍应以当前 API Key 调用 /v1/models 的结果为准。
这两个 Veo 模型仅支持固定 8 秒,不支持 6 秒或其他时长。传入非 8 秒值会返回 HTTP 400,并在 error.message 中说明固定时长要求;客户端应修正参数,不应按网关故障重试。
Hailuo 3.0 图生视频同样使用异步接口,例如:
curl --fail-with-body https://relay.withrpm.org/v1/videos \
-H "Authorization: Bearer $SPEEDYRPM_API_KEY" \
-F "model=hailuo-video-3.0-i2v" \
-F "prompt=镜头缓慢向前移动,保持主体外观一致" \
-F "input_reference=@./reference.jpg;type=image/jpeg" \
-F "seconds=4" \
-F "size=1280x768"提交成功会返回异步任务对象。字段可能随任务进度更新,客户端至少应保存 id 并检查 status:
{
"id": "<VIDEO_ID>",
"object": "video",
"model": "veo-3.1-i2v-fast",
"status": "queued",
"progress": 5,
"seconds": "8",
"size": "1280x720"
}文生视频示例
不带参考素材的模型可以使用 multipart 表单提交文生视频任务:
curl --fail-with-body https://relay.withrpm.org/v1/videos \
-H "Authorization: Bearer $SPEEDYRPM_API_KEY" \
-F "model=seedance-2.0-mini" \
-F "prompt=清晨的海边,镜头沿着沙滩平稳前进" \
-F "seconds=4" \
-F "size=854x480"不同模型允许的时长、尺寸和参考素材不同。不要把一个模型的参数直接用于另一个模型。
模型档位
下表列出当前视频模型的固定约束。模型是否对某个 API Key 开放,仍以该 API Key 调用 /v1/models 的结果为准。
| 模型 | 输出时长 | 分辨率档位 | 参考素材 |
|---|---|---|---|
hailuo-video-3.0-t2v | 4–15 秒,按整秒设置 | 768p、1440p | 文生视频,无需参考素材 |
hailuo-video-3.0-i2v | 4–15 秒,按整秒设置 | 768p、1440p | 需要参考素材 |
hailuo-video-3.0-extend | 4–15 秒,按整秒设置 | 仅 1440p | 需要参考视频;参考视频时长参与计费 |
seedance-2.0 | 4–15 秒,按整秒设置 | 480p、720p、1080p、4K | 最多 12 个参考素材,其中参考视频最多 3 个;参考视频时长参与计费 |
seedance-2.0-fast | 4–15 秒,按整秒设置 | 480p、720p | 最多 12 个参考素材,其中参考视频最多 3 个;参考视频时长参与计费 |
seedance-2.0-mini | 4–15 秒,按整秒设置 | 480p、720p | 最多 12 个参考素材,其中参考视频最多 3 个;参考视频时长参与计费 |
veo-3.1-i2v | 固定 8 秒,不可调整 | 720p、1080p、4K | 需要参考图 |
veo-3.1-i2v-fast | 固定 8 秒,不可调整 | 720p、1080p、4K | 需要参考图 |
请求字段
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
model | string | 是 | /v1/models 返回的视频模型 ID |
prompt | string | 是 | 视频内容描述 |
input_reference | file | 图生视频必填 | 单张参考图片;示例使用 JPEG |
seconds | integer | 是 | 输出时长,取值由模型决定 |
size | string | 是 | 宽x高,例如 1280x720 |
参考素材总大小不能超过 50 MB。生产客户端还应为提交、轮询和下载分别设置超时。
查询任务
curl --fail-with-body \
-H "Authorization: Bearer $SPEEDYRPM_API_KEY" \
"https://relay.withrpm.org/v1/videos/<VIDEO_ID>"常见状态如下:
| 状态 | 含义 | 客户端处理 |
|---|---|---|
pending | 等待进入队列 | 继续轮询 |
queued | 已进入队列 | 继续轮询 |
in_progress | 正在生成或整理结果 | 继续轮询 |
completed | 已完成 | 下载视频 |
failed | 任务失败 | 读取 error,不要无限重试同一请求 |
建议从 3 至 5 秒轮询间隔开始,并逐步放慢;不要高频查询。任务 ID 只允许创建它的 API Key 所属账户查询。
下载视频
任务状态变为 completed 后下载内容:
curl --fail-with-body -L \
-H "Authorization: Bearer $SPEEDYRPM_API_KEY" \
"https://relay.withrpm.org/v1/videos/<VIDEO_ID>/content" \
-o output.mp4下载接口返回 video/mp4。视频结果有保存期限,应用应在任务完成后及时下载到自己的存储中;在任务尚未完成时调用下载接口会返回错误。
失败与重试
参数错误使用统一的 OpenAI 风格响应。以下示例表示请求的 1 秒不在 Hailuo 3.0 支持的 4–15 秒范围内:
{
"error": {
"message": "hailuo-video-3.0-i2v 的 seconds 必须为 4–15 的整数,当前值为 1。",
"type": "invalid_request_error",
"param": "seconds",
"code": "invalid_video_duration"
}
}- 提交接口返回 4xx 时,先检查模型 ID、必填字段、时长、尺寸和参考图片格式。
- 提交接口没有返回视频 ID 时,不要开始轮询。
- 网络中断后可先根据已经保存的视频 ID 查询状态,避免重复提交和重复计费。
- 任务返回
failed时,以响应中的error.message为准;如需重新生成,应创建新任务。