OpenAI / 302.ai compatible

Sora2 创建视频任务(异步请求)

本接口用于创建视频生成任务。调用成功后立即返回任务 ID,客户端需要再调用“查询任务结果”接口轮询状态,直到 status 变为 completed,视频地址在 outputs[0]

正式环境 POST https://你的域名 /sora/v2/video
开发公司最小对接原则:只负责把客户信息、1-9 张产品图、提示词、可选录音和可选本人照片传给本接口。筛图、淘汰原因、成本记录、ComfyUI 工作流和生成策略全部由 Deep-V 中转站内部处理,不需要小程序端实现。

请求参数

Header 参数

Authorization string

接口鉴权,格式固定为 Bearer YOUR_API_KEY

示例:Bearer DeepV-Test-2026-18080
必需
X-DeepV-Client string

调用来源或渠道标识。建议固定传小程序渠道名,具体客户/订单信息放到 Body 的 customer_info

示例:wechat-miniapp
推荐

Body 参数

application/json
model enum<string>

视频模型。当前建议固定传 sora-2

sora-2
可选
orientation enum<string>

视频方向。竖屏适合小程序/短视频,横屏适合展示页。

portrait 竖屏landscape 横屏
可选
duration integer

视频长度。测试阶段建议先用 10 秒,成本和等待时间更可控。

101525
可选
prompt string

生成视频的提示词。建议写清产品、镜头、风格、画面要求和禁忌。

必需
size enum<string>

输出视频分辨率。竖屏默认 720x1280

720x12801280x7201024x17921792x1024
可选
product_images array[string]

产品参考图 URL,1-9 张都可以。客户随手拍即可,Deep-V 中转站会在后台自动筛选和记录淘汰原因。

可选
customer_info object

客户信息预留字段。小程序能提供什么就传什么,例如用户 ID、订单号、昵称、手机号尾号、会员等级。字段名后续可以双方约定,Deep-V 中转站会原样保存并支持后台搜索。

user_idorder_idnicknamephone_tail
推荐
voice_audio_url string

客户录音 URL,选填。后续用于声音参考或声音克隆。

可选
person_image_url string

客户本人照片 URL,选填。后续用于人物/口播参考。

可选
callback string

回调地址,选填。第一版可不传,先用轮询查询结果。

可选
示例
{
  "model": "sora-2",
  "orientation": "portrait",
  "duration": 10,
  "size": "720x1280",
  "prompt": "多镜头展示这盆鲜花,保持花束颜色、形状和包装一致,画面干净高级。",
  "product_images": [
    "https://your-domain.com/uploads/20260429/flower-1.png",
    "https://your-domain.com/uploads/20260429/flower-2.png"
  ],
  "customer_info": {
    "user_id": "wx_user_10001",
    "order_id": "order_20260430_001",
    "nickname": "花店客户A",
    "phone_tail": "1234"
  },
  "voice_audio_url": "https://your-domain.com/uploads/20260429/customer-voice.mp3",
  "person_image_url": "https://your-domain.com/uploads/20260429/person.png"
}

请求示例代码

curl --request POST "https://你的域名/sora/v2/video" \
  --header "Authorization: Bearer YOUR_API_KEY" \
  --header "X-DeepV-Client: wechat-miniapp" \
  --header "Content-Type: application/json" \
  --data-raw '{
    "model": "sora-2",
    "orientation": "portrait",
    "duration": 10,
    "size": "720x1280",
    "prompt": "多镜头展示这盆鲜花,保持花束颜色、形状和包装一致,画面干净高级。",
    "product_images": ["https://your-domain.com/uploads/flower-1.png"],
    "customer_info": {"user_id": "wx_user_10001", "order_id": "order_20260430_001"}
  }'
const response = await fetch("https://你的域名/sora/v2/video", {
  method: "POST",
  headers: {
    "Authorization": "Bearer YOUR_API_KEY",
    "X-DeepV-Client": "wechat-miniapp",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    model: "sora-2",
    orientation: "portrait",
    duration: 10,
    size: "720x1280",
    prompt: "多镜头展示这盆鲜花,保持花束颜色、形状和包装一致,画面干净高级。",
    product_images: ["https://your-domain.com/uploads/flower-1.png"],
    customer_info: {user_id: "wx_user_10001", order_id: "order_20260430_001"}
  })
});
const result = await response.json();
import requests

response = requests.post(
    "https://你的域名/sora/v2/video",
    headers={
        "Authorization": "Bearer YOUR_API_KEY",
        "X-DeepV-Client": "wechat-miniapp",
        "Content-Type": "application/json",
    },
    json={
        "model": "sora-2",
        "orientation": "portrait",
        "duration": 10,
        "size": "720x1280",
        "prompt": "多镜头展示这盆鲜花,保持花束颜色、形状和包装一致,画面干净高级。",
        "product_images": ["https://your-domain.com/uploads/flower-1.png"],
        "customer_info": {"user_id": "wx_user_10001", "order_id": "order_20260430_001"},
    },
)
print(response.json())
$payload = [
  "model" => "sora-2",
  "orientation" => "portrait",
  "duration" => 10,
  "size" => "720x1280",
  "prompt" => "多镜头展示这盆鲜花,保持花束颜色、形状和包装一致,画面干净高级。",
  "product_images" => ["https://your-domain.com/uploads/flower-1.png"],
  "customer_info" => ["user_id" => "wx_user_10001", "order_id" => "order_20260430_001"],
];

$ch = curl_init("https://你的域名/sora/v2/video");
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_POST => true,
  CURLOPT_HTTPHEADER => [
    "Authorization: Bearer YOUR_API_KEY",
    "X-DeepV-Client: wechat-miniapp",
    "Content-Type: application/json",
  ],
  CURLOPT_POSTFIELDS => json_encode($payload, JSON_UNESCAPED_UNICODE),
]);
echo curl_exec($ch);

返回示例

200 OK
code integer

业务状态码,成功为 200。

必需
data.id string

视频任务 ID,查询结果时使用。

必需
data.status string

任务状态:processing / completed / failed。

必需
data.outputs array[string]

完成后视频地址在 outputs[0]

必需
示例
{
  "code": 200,
  "data": {
    "id": "video_20260429_eab114b120",
    "model": "sora-2",
    "status": "processing",
    "progress": 3,
    "outputs": [],
    "error": null
  },
  "message": "success"
}

Sora2 查询任务结果

正式环境 GET https://你的域名 /sora/v2/video/{task_id}

完成后返回

{
  "code": 200,
  "data": {
    "id": "video_20260429_eab114b120",
    "status": "completed",
    "progress": 100,
    "outputs": [
      "https://your-comfyui-domain/view?filename=DeepV_API_video.mp4&type=output"
    ],
    "error": null
  },
  "message": "success"
}

上传素材

正式环境 POST https://你的域名 /uploads?kind=product_image

小程序如果上传的是本地图片、录音或本人照片,先调用这个接口,把文件传到中转站,接口会返回一个 URL。再把这个 URL 放入创建任务接口。

FormData 参数

file file

要上传的图片或音频文件。

必需
kind string

素材类型,建议值:product_image / voice_audio / person_image。

可选

开发公司对接清单

1. 小程序端收集:客户信息、1-9 张产品图、提示词、可选录音、可选本人照片。
2. 本地文件先调用 POST /uploads 得到 URL。
3. 再调用 POST /sora/v2/video 创建任务。
4. 保存返回的 data.id
5. 每 3-10 秒调用 GET /sora/v2/video/{task_id} 查询,直到 completed
6. 取 outputs[0] 作为最终视频地址。
7. 不需要对接筛图、淘汰原因、视觉模型、ComfyUI 节点和成本统计;这些全部由 Deep-V 中转站内部处理。后续小程序如果新增客户字段,只要把字段名和含义告诉 Deep-V,中转站再接收保存即可。