Skip to content

视频生成

视频生成为异步任务模式:提交任务后获得任务 ID,通过轮询查询状态,完成后再拉取视频内容。接口与 OpenAI 视频协议兼容。

完整流程

提交任务 → 获得 id → 轮询状态 → status 变为 completed → 拉取视频内容

第一步:提交任务

POST /v1/videos

常用请求参数

参数类型必填说明
modelstring视频生成模型 ID,取值以控制台「模型列表」为准
promptstring视频内容描述提示词
secondsstring视频时长(秒)
sizestring视频分辨率,如 "1280x720""1920x1080"
imagestring参考图片(URL 或 base64),用于图生视频

TIP

不同视频模型支持的参数与取值范围各不相同,请以控制台「模型列表」及所选模型的说明为准。

示例

bash
curl https://api.idreame.ai/v1/videos \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-xxxxxxxx" \
  -d '{
    "model": "sora-2",
    "prompt": "一只柯基犬在夕阳下的海滩上冲浪,慢动作,电影质感",
    "seconds": "8"
  }'

响应示例

json
{
  "id": "video_abc123",
  "object": "video",
  "model": "sora-2",
  "status": "queued",
  "progress": 0,
  "created_at": 1752600000,
  "seconds": "8",
  "size": "1280x720"
}

第二步:轮询状态

GET /v1/videos/{video_id}

bash
curl https://api.idreame.ai/v1/videos/video_abc123 \
  -H "Authorization: Bearer sk-xxxxxxxx"

任务状态说明

status含义
queued排队等待中
in_progress生成中(可查看 progress 进度)
completed已完成,可拉取内容
failed生成失败,查看 error 字段

完成时的响应

json
{
  "id": "video_abc123",
  "object": "video",
  "model": "sora-2",
  "status": "completed",
  "progress": 100,
  "created_at": 1752600000,
  "completed_at": 1752600120,
  "expires_at": 1752686520,
  "seconds": "8",
  "size": "1280x720"
}

第三步:拉取视频内容

GET /v1/videos/{video_id}/content

任务完成后,通过该接口获取视频二进制内容:

bash
curl https://api.idreame.ai/v1/videos/video_abc123/content \
  -H "Authorization: Bearer sk-xxxxxxxx" \
  --output my_video.mp4

Python 完整示例

python
import time
import httpx

API_KEY = "sk-xxxxxxxx"
BASE_URL = "https://api.idreame.ai/v1"

headers = {"Authorization": f"Bearer {API_KEY}"}

# 1. 提交任务
resp = httpx.post(
    f"{BASE_URL}/videos",
    headers={**headers, "Content-Type": "application/json"},
    json={
        "model": "sora-2",
        "prompt": "一只柯基犬在夕阳下的海滩上冲浪,慢动作,电影质感",
        "seconds": "8",
    },
)
video_id = resp.json()["id"]
print(f"任务已提交,ID: {video_id}")

# 2. 轮询状态
while True:
    data = httpx.get(f"{BASE_URL}/videos/{video_id}", headers=headers).json()
    status = data["status"]
    print(f"状态: {status}  进度: {data.get('progress')}")

    if status == "completed":
        break
    elif status == "failed":
        print(f"生成失败: {data.get('error')}")
        raise SystemExit(1)

    time.sleep(5)  # 每 5 秒轮询一次

# 3. 拉取视频内容
content = httpx.get(f"{BASE_URL}/videos/{video_id}/content", headers=headers)
with open("my_video.mp4", "wb") as f:
    f.write(content.content)
print("已保存 my_video.mp4")

可用视频模型

平台聚合多家视频生成模型,具体可用的模型 ID、支持的时长与分辨率请以控制台「模型列表」为准。可用 GET /v1/models 获取当前令牌可访问的模型。

TIP

视频生成通常耗时较长,具体取决于模型和视频时长。建议轮询间隔设为 5–10 秒,并为整体任务设置合理的超时时间。

基于 OpenAI 兼容协议 · 多模态算力网关