12API logo12API
API 手册

Sora 视频生成

OpenAI Sora 兼容视频任务接口

Sora 视频接口兼容 OpenAI 视频任务风格,适合通过 API 创建、查询、下载和删除视频任务。

接口概览

能力方法路径说明
创建任务POST/v1/videos文生视频或图生视频
查询任务GET/v1/videos/{video_id}查询状态和结果
下载文件GET/v1/videos/{video_id}/content下载 mp4 文件
删除任务DELETE/v1/videos/{video_id}删除任务

所有接口都使用:

Authorization: Bearer $API_KEY

可用模型

模型说明
sora-2OpenAI Sora 兼容视频模型

创建任务

请求参数

参数类型必填说明
modelstring固定使用 sora-2
promptstring视频提示词
sizestring1280x720720x1280
secondsstring视频时长,例如 "4""8""12"
input_referencefile图生视频参考素材,支持多次传入

文生视频使用 application/json,图生视频使用 multipart/form-data

curl https://cdn.12ai.org/v1/videos \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "sora-2",
    "prompt": "镜头缓慢推进,一只未来感狐狸站在雨夜霓虹街头",
    "size": "1280x720",
    "seconds": "8"
  }'
curl https://cdn.12ai.org/v1/videos \
  -H "Authorization: Bearer $API_KEY" \
  -F "model=sora-2" \
  -F "prompt=主体保持不变,镜头缓慢拉远,背景变成霓虹夜景" \
  -F "size=1280x720" \
  -F "seconds=8" \
  -F "input_reference=@reference.png;type=image/png"

创建响应

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

查询任务

curl https://cdn.12ai.org/v1/videos/task_xxx \
  -H "Authorization: Bearer $API_KEY"

状态说明

status说明
queued已排队
in_progress生成中
completed已完成,响应中包含视频结果
failed生成失败,查看 error.message

完成响应

{
  "id": "task_xxx",
  "object": "video",
  "model": "sora-2",
  "status": "completed",
  "progress": 100,
  "output": "https://img.12ai.org/videos/task_xxx.mp4",
  "created_at": 1760000000,
  "completed_at": 1760000090
}

下载文件

优先使用查询响应中的 output 字段直接下载。需要兼容 OpenAI SDK 下载风格时,可以使用下载接口:

curl https://cdn.12ai.org/v1/videos/task_xxx/content \
  -H "Authorization: Bearer $API_KEY" \
  --output output.mp4

删除任务

curl -X DELETE https://cdn.12ai.org/v1/videos/task_xxx \
  -H "Authorization: Bearer $API_KEY"

Python 轮询示例

import time
import requests

API_BASE = "https://cdn.12ai.org"
API_KEY = "sk-xxx"

task = requests.post(
    f"{API_BASE}/v1/videos",
    headers={
        "Authorization": f"Bearer {API_KEY}",
        "Content-Type": "application/json",
    },
    json={
        "model": "sora-2",
        "prompt": "镜头缓慢推进,一只未来感狐狸站在雨夜霓虹街头",
        "size": "1280x720",
        "seconds": "8",
    },
    timeout=60,
).json()

task_id = task["id"]

while True:
    result = requests.get(
        f"{API_BASE}/v1/videos/{task_id}",
        headers={"Authorization": f"Bearer {API_KEY}"},
        timeout=60,
    ).json()

    if result["status"] == "completed":
        print(result["output"])
        break

    if result["status"] == "failed":
        raise RuntimeError(result.get("error", {}).get("message", "生成失败"))

    time.sleep(3)

常见问题

问题处理方式
查询不到任务检查 video_id 是否为创建响应里的 id
一直生成中视频任务耗时较长,建议每 2 到 3 秒轮询一次
下载失败优先使用 output 直链,或稍后重试下载接口

On this page