Sora 2 异步 API
Sora 2 异步 API 提供异步调用模式,适合批量处理、后台任务等场景,无需等待视频生成完成即可返回。
适用场景
- 批量生成:一次提交多个视频生成任务
- 后台处理:不阻塞主流程,后台完成生成
- 长视频:生成时间较长的高质量视频
- 队列管理:需要管理多个任务的场景
工作流程
1. 提交任务 → 获取任务 ID
2. 轮询状态 → 等待完成
3. 获取结果 → 下载视频
API 接口
提交任务
POST https://api.weelinking.com/v1/videos/generations
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| model | string | 是 | sora_video2 或 sora_video2-landscape |
| prompt | string | 是 | 视频描述 |
| duration | integer | 否 | 视频时长(秒),5/10/15/20 |
| async | boolean | 是 | 设为 true 启用异步模式 |
响应
{
"id": "task_xxxxxxxx",
"status": "pending",
"created_at": 1234567890
}
查询状态
GET https://api.weelinking.com/v1/videos/generations/{task_id}
状态值
| 状态 | 说明 |
|---|---|
| pending | 排队中 |
| processing | 生成中 |
| completed | 已完成 |
| failed | 生成失败 |
使用示例
Python
import openai
import time
client = openai.OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.weelinking.com/v1"
)
# 1. 提交异步任务
response = client.post(
"/videos/generations",
body={
"model": "sora_video2",
"prompt": "一只猫在草地上奔跑,阳光明媚,慢动作",
"duration": 10,
"async": True
}
)
task_id = response["id"]
print(f"任务已提交: {task_id}")
# 2. 轮询状态
while True:
status = client.get(f"/videos/generations/{task_id}")
if status["status"] == "completed":
print(f"视频已生成: {status['video_url']}")
break
elif status["status"] == "failed":
print("生成失败")
break
else:
print(f"状态: {status['status']}")
time.sleep(10)
定价
| 时长 | 价格 |
|---|---|
| 5 秒 | $0.08/次 |
| 10 秒 | $0.15/次 |
| 15 秒 | $0.30/次 |
| 20 秒 | $0.50/次 |
最佳实践
轮询间隔
- 短视频(5-10秒):每 5-10 秒轮询
- 长视频(15-20秒):每 15-30 秒轮询
错误处理
try:
status = client.get(f"/videos/generations/{task_id}")
if status["status"] == "failed":
error_msg = status.get("error", "未知错误")
# 处理错误
except Exception as e:
# 处理网络错误
pass
常见问题
任务超时
长时间未完成的任务会自动取消,请检查提示词是否合规。
查询不到任务
任务 ID 有效期为 24 小时,过期后无法查询。