通用视频接口 · OpenAI 格式
接入说明
通用视频接口兼容 OpenAI 的 Videos API,平台上的所有视频模型都用这一套接口调用,文生视频、图生视频、首尾帧、多模态参考、视频编辑和延长都通过创建视频接口完成。
接口地址与鉴权
| 配置 | 值 |
|---|---|
| 接口地址(base_url) | https://your-domain/v1 |
| API Key | 在控制台 → API Keys创建,请求时放在 Authorization: Bearer sk-... 请求头里 |
| 模型 ID | 见模型与价格,也可以调用模型列表接口获取 |
接口列表
调用流程
使用 OpenAI SDK
可以直接使用 OpenAI 的官方 Python SDK,创建客户端时把 base_url 指向本平台:
安装
python -m pip install --upgrade openai创建客户端
import os
from openai import OpenAI
client = OpenAI(
base_url="https://your-domain/v1",
api_key=os.environ["API_KEY"],
)- SDK 的
videos.create只有model、prompt、seconds、size、input_reference几个参数,resolution、audio、参考素材等其他参数放在extra_body里,写法见创建视频的示例。 - SDK 的
input_reference只接受文件;首帧传图片链接时,同样放在extra_body里。 - 调用 videos 接口时,SDK 会打印
DeprecationWarning: The Sora API is scheduled to permanently shut down...,这是 OpenAI 关于自家 Sora 服务的提示,不影响调用本平台。以后的 SDK 版本可能移除 videos 接口,长期使用建议固定 SDK 版本(本文示例用 openai 3.28.0 验证),或者直接发 HTTP 请求。
其他语言直接发 HTTP 请求即可,各接口页面都有 cURL 和 Node.js 的示例。
完整示例
提交任务后每 10 秒查询一次,成功后把视频保存到本地。SDK 的 create_and_poll 默认每秒查询一次,请传 poll_interval_ms 放慢查询频率:
openai_quickstart.py
import os
from openai import OpenAI
client = OpenAI(
base_url="https://your-domain/v1",
api_key=os.environ["API_KEY"],
)
# 提交任务,每 10 秒查询一次,直到任务结束
video = client.videos.create_and_poll(
model="doubao-seedance-2-0-260128",
prompt="清晨的海边,一只金毛犬沿着浪花奔跑,镜头缓慢跟随,阳光穿过薄雾",
seconds="5",
size="1280x720",
poll_interval_ms=10000,
)
if video.status == "completed":
client.videos.download_content(video.id).write_to_file("video.mp4")
print("已保存到 video.mp4")
else:
print("生成失败:", video.error.code, video.error.message)与 OpenAI 的差异
请求、返回结果和视频状态的格式与 OpenAI 一致,在此基础上有这些不同:
| 项目 | OpenAI | 本平台 |
|---|---|---|
| 模型 | sora-2、sora-2-pro | 平台上架的所有视频模型 |
seconds | 4、8、12 | 模型支持的任意时长,也可以传 -1 或 auto 由模型决定 |
size | 4 种固定尺寸 | 宽x高,换算成分辨率和画幅;也可以直接传 resolution 和 aspect_ratio |
input_reference | 只能上传文件 | 可以上传文件,也可以传图片链接或 Base64 |
| 请求格式 | multipart/form-data | multipart/form-data 或 JSON |
| 生成方式 | 文生视频、图生视频 | 另外支持首尾帧、多模态参考、视频编辑和延长,以及 audio、negative_prompt、seed 等参数 |
| 返回结果 | 视频对象 | 多了 video_url、price、resolution、aspect_ratio 等字段 |
expires_at | 视频过期时间 | 固定为 null,视频长期保存 |
| 下载视频的 variant | video、thumbnail、spritesheet | 只支持 video |
| 删除视频、混剪(remix) | 支持 | 不支持,返回 404。Seedance 的任务可以用火山方舟格式取消,MiniMax 的任务可以用 MiniMax 格式取消 |
| 错误码 | OpenAI 的错误码 | 错误格式相同,错误码见错误码 |
和其他格式互通
各种格式的任务是同一份:OpenAI 格式的视频列表包含账号下的所有视频,也包括用火山方舟格式、MiniMax 格式创建的任务;用 OpenAI 格式创建的 Seedance 任务,也可以用 GET /ark/api/v3/contents/generations/tasks/{id} 查询,或者用火山方舟格式取消;MiniMax 任务同样可以用 GET /minimax/v2/query/video_generation/{task_id} 查询,或者用 MiniMax 格式取消。
火山方舟格式和 OpenAI 格式的默认值不同:Seedance 的有声视频在火山方舟格式下默认生成声音(
generate_audio 默认 true),在 OpenAI 格式下默认不生成(audio 默认 false)。错误处理
出错时返回 HTTP 4xx 或 5xx 状态码,返回结果是 {"error": {...}},格式与 OpenAI 相同,OpenAI SDK 会把它转成 openai.APIStatusError 异常。错误码列表和捕获异常的写法见错误码。