Skip to content

视频生成

视频生成使用异步任务接口。提交成功后先保存响应中的视频 ID,再轮询任务状态;状态变为 completed 后下载 MP4 文件。

图生视频示例

下面的请求使用本地图片作为首个参考素材:

bash
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-i2vveo-3.1-i2v-fast 是图生视频模型,必须提供 input_reference,并使用 seconds=8。示例中的模型是否可用仍应以当前 API Key 调用 /v1/models 的结果为准。

这两个 Veo 模型仅支持固定 8 秒,不支持 6 秒或其他时长。传入非 8 秒值会返回 HTTP 400,并在 error.message 中说明固定时长要求;客户端应修正参数,不应按网关故障重试。

Hailuo 3.0 图生视频同样使用异步接口,例如:

bash
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

json
{
  "id": "<VIDEO_ID>",
  "object": "video",
  "model": "veo-3.1-i2v-fast",
  "status": "queued",
  "progress": 5,
  "seconds": "8",
  "size": "1280x720"
}

文生视频示例

不带参考素材的模型可以使用 multipart 表单提交文生视频任务:

bash
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-t2v4–15 秒,按整秒设置768p、1440p文生视频,无需参考素材
hailuo-video-3.0-i2v4–15 秒,按整秒设置768p、1440p需要参考素材
hailuo-video-3.0-extend4–15 秒,按整秒设置仅 1440p需要参考视频;参考视频时长参与计费
seedance-2.04–15 秒,按整秒设置480p、720p、1080p、4K最多 12 个参考素材,其中参考视频最多 3 个;参考视频时长参与计费
seedance-2.0-fast4–15 秒,按整秒设置480p、720p最多 12 个参考素材,其中参考视频最多 3 个;参考视频时长参与计费
seedance-2.0-mini4–15 秒,按整秒设置480p、720p最多 12 个参考素材,其中参考视频最多 3 个;参考视频时长参与计费
veo-3.1-i2v固定 8 秒,不可调整720p、1080p、4K需要参考图
veo-3.1-i2v-fast固定 8 秒,不可调整720p、1080p、4K需要参考图

请求字段

字段类型必填说明
modelstring/v1/models 返回的视频模型 ID
promptstring视频内容描述
input_referencefile图生视频必填单张参考图片;示例使用 JPEG
secondsinteger输出时长,取值由模型决定
sizestring宽x高,例如 1280x720

参考素材总大小不能超过 50 MB。生产客户端还应为提交、轮询和下载分别设置超时。

查询任务

bash
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 后下载内容:

bash
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 秒范围内:

json
{
  "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 为准;如需重新生成,应创建新任务。

OpenAI-compatible API gateway