通用视频接口 · OpenAI 格式

接入说明

通用视频接口兼容 OpenAI 的 Videos API,平台上的所有视频模型都用这一套接口调用,文生视频、图生视频、首尾帧、多模态参考、视频编辑和延长都通过创建视频接口完成。

接口地址与鉴权

配置值
接口地址(base_url)https://your-domain/v1
API Key在控制台 → API Keys创建,请求时放在 Authorization: Bearer sk-... 请求头里
模型 ID见模型与价格,也可以调用模型列表接口获取

接口列表

下表的路径接在接口地址后面。

接口方法和路径说明
创建视频POST/videos提交生成任务,返回视频对象
查询视频GET/videos/{id}查询状态和进度,完成后返回视频地址
视频列表GET/videos分页列出账号下的视频
下载视频GET/videos/{id}/content下载生成的 mp4 文件
模型列表GET/models可用的模型、参数范围和价格

调用流程

  1. 调用创建视频,返回的视频对象里 id 是视频 ID,status 是 queued。
  2. 每 10 秒左右调用一次查询视频,status 依次经过 queued(排队中)、in_progress(生成中),最后变成 completed(成功)或 failed(失败)。
  3. 成功后 video_url 就是视频地址,也可以调用下载视频取回文件。失败时 error 说明原因,费用全部退回。

使用 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平台上架的所有视频模型
seconds4、8、12模型支持的任意时长,也可以传 -1 或 auto 由模型决定
size4 种固定尺寸宽x高,换算成分辨率和画幅;也可以直接传 resolution 和 aspect_ratio
input_reference只能上传文件可以上传文件,也可以传图片链接或 Base64
请求格式multipart/form-datamultipart/form-data 或 JSON
生成方式文生视频、图生视频另外支持首尾帧、多模态参考、视频编辑和延长,以及 audio、negative_prompt、seed 等参数
返回结果视频对象多了 video_url、price、resolution、aspect_ratio 等字段
expires_at视频过期时间固定为 null,视频长期保存
下载视频的 variantvideo、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 异常。错误码列表和捕获异常的写法见错误码。