Sora 视频生成
通过 UniGateway 使用 Sora 从文本提示生成视频。请求格式为 multipart/form-data。
前置条件
- 已获取 UniGateway API Key,保存在
UNIGATEWAY_API_KEY中 - 已通过
GET /v1/models确认 Sora 模型可用
接口说明
| 操作 | 方法 | 路径 | Content-Type |
|---|---|---|---|
| 创建视频 | POST | /v1/videos | multipart/form-data |
| 查询状态 | GET | /v1/videos/{id} | — |
| 下载视频 | GET | /v1/videos/{id}/content | — |
Base URL: https://api.unigateway.ai/v1
支持的模型
| 模型 ID | 说明 |
|---|---|
sora-2 | 通用视频生成 |
sora-2-pro | 高质量视频生成 |
创建视频
curl -sS -X POST "https://api.unigateway.ai/v1/videos" \
-H "Authorization: Bearer $UNIGATEWAY_API_KEY" \
-F 'model=sora-2' \
-F 'prompt=A cinematic aerial shot of a coastline at golden hour.' \
-F 'size=1280x720' \
-F 'seconds=5'
响应:
{
"id": "task_4kX5fFNCbHgMJLx",
"object": "video",
"status": "queued",
"model": "sora-2",
"progress": 0,
"size": "1280x720",
"seconds": "5"
}
查询视频状态
curl -sS "https://api.unigateway.ai/v1/videos/{id}" \
-H "Authorization: Bearer $UNIGATEWAY_API_KEY"
响应(处理中):
{
"id": "task_4kX5fFNCbHgMJLx",
"object": "video",
"status": "in_progress",
"model": "sora-2",
"progress": 0,
"size": "1280x720",
"seconds": "5"
}
响应(已完成):
{
"id": "task_4kX5fFNCbHgMJLx",
"object": "video",
"status": "completed",
"model": "sora-2",
"progress": 100,
"size": "1280x720",
"seconds": "5",
"video_url": "https://<your-cdn>/videos/output.mp4"
}
下载视频
curl -sS "https://api.unigateway.ai/v1/videos/{id}/content" \
-H "Authorization: Bearer $UNIGATEWAY_API_KEY" \
-o output.mp4
参数说明(创建)
| 参数 | 必填 | 说明 |
|---|---|---|
model | 是 | 模型 ID:sora-2 或 sora-2-pro |
prompt | 是 | 期望视频的文字描述 |
size | 否 | 输出分辨率,例如 1280x720 |
seconds | 否 | 目标时长(秒),例如 4、5 |
轮询策略
- 创建后 5-10 秒首次查询
- 随等待时间增长逐步拉大间隔
- 在调用方设置总超时
Sora 与其他视频模型对比
| 视频家族 | Base URL | 协议 | Content-Type | 模型示例 |
|---|---|---|---|---|
| Sora | https://api.unigateway.ai/v1 | OpenAI 兼容 /v1/videos | multipart/form-data | sora-2 |
| Seedance | https://video.unigateway.ai | /api/v3/contents/generations/tasks | application/json | doubao-seedance-2.0-fast |
常见错误
| 状态码 | 原因 | 处理方式 |
|---|---|---|
400 | 参数错误或尺寸不支持 | 检查 size 和 seconds |
401 | API Key 无效或缺失 | 检查 Authorization 请求头 |
404 | 模型不存在 | 通过 GET /v1/models 确认 |
429 | 触发限流 | 增加退避并重试 |
500 | 服务或上游异常 | 指数退避重试 |