视频生成
视频生成为异步任务模式:提交任务后获得任务 ID,通过轮询查询状态,完成后再拉取视频内容。接口与 OpenAI 视频协议兼容。
完整流程
提交任务 → 获得 id → 轮询状态 → status 变为 completed → 拉取视频内容第一步:提交任务
POST /v1/videos
常用请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
model | string | ✅ | 视频生成模型 ID,取值以控制台「模型列表」为准 |
prompt | string | ✅ | 视频内容描述提示词 |
seconds | string | — | 视频时长(秒) |
size | string | — | 视频分辨率,如 "1280x720"、"1920x1080" |
image | string | — | 参考图片(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.mp4Python 完整示例
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 秒,并为整体任务设置合理的超时时间。