> ## Documentation Index
> Fetch the complete documentation index at: https://docs.yelinai.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Sora 官转方案

> OpenAI Sora 官方 API 透明转发，99.99% 可用性，支持 4/8/12 秒时长

## 方案介绍

**官转**（官方 API 转发）是指直接调用 OpenAI 官方 Sora API 并透明转发给用户的方案。与当前默认的”官逆”（官网逆向）方案不同，官转方案具有更高的稳定性和更精准的指令遵循能力。

\*\*什么是官转？\*\*官转是 OpenAI 官方 API 的透明代理转发服务。您的请求会直接转发到 OpenAI 官方服务器，享受与 OpenAI 官方完全一致的服务质量和稳定性。

## 方案对比

| 对比项      | 官转         | 官逆（当前默认）  |
| -------- | ---------- | --------- |
| **稳定性**  | 99.99% 可用性 | 依赖逆向，可能波动 |
| **指令遵循** | 精准还原       | 一般        |
| **画质**   | 稳定无模糊      | 偶现模糊      |
| **时长选择** | 4/8/12 秒   | 10/15 秒   |
| **图生视频** | 支持         | 支持        |
| **调用方式** | 仅异步        | 同步 + 异步   |
| **价格**   | 按秒计费       | 按次计费      |

**如何选择？**

* **追求稳定性和画质**：选择官转方案
* **追求性价比**：选择官逆方案（当前默认）

## 支持的模型和定价

### sora-2（标准模型）

| 分辨率          | 每秒价格  | 4 秒   | 8 秒   | 12 秒  |
| ------------ | ----- | ----- | ----- | ----- |
| 720x1280（竖屏） | \$0.1 | \$0.4 | \$0.8 | \$1.2 |
| 1280x720（横屏） | \$0.1 | \$0.4 | \$0.8 | \$1.2 |

### sora-2-pro（高清模型）

| 分辨率             | 每秒价格  | 4 秒   | 8 秒   | 12 秒  |
| --------------- | ----- | ----- | ----- | ----- |
| 720x1280（竖屏）    | \$0.3 | \$1.2 | \$2.4 | \$3.6 |
| 1280x720（横屏）    | \$0.3 | \$1.2 | \$2.4 | \$3.6 |
| 1024x1792（竖屏高清） | \$0.5 | \$2.0 | \$4.0 | \$6.0 |
| 1792x1024（横屏高清） | \$0.5 | \$2.0 | \$4.0 | \$6.0 |

以上价格已包含本站服务费。

## 如何开始使用

1

创建令牌

登录 [YeLIn AI 控制台](https://api.yelinai.com/token)，创建新令牌时，**分组选择”Sora2官转”**。（截图请在 **Console** 查看）

2

配置计费模式

计费模式必须选择 **“按量计费”**。

官转方案**不支持按次计费**模式，必须使用按量计费。

3

调用 API 生成视频

参考下方完整示例调用 API。

## API 参考

### 基础信息

| 配置项          | 值                                    |
| ------------ | ------------------------------------ |
| **Base URL** | `https://api.yelinai.com`            |
| **认证方式**     | `Authorization: Bearer YOUR_API_KEY` |
| **请求格式**     | `multipart/form-data`                |

### API 端点

| 端点                        | 方法   | 说明       |
| ------------------------- | ---- | -------- |
| `/v1/videos`              | POST | 创建视频生成任务 |
| `/v1/videos/{id}`         | GET  | 查询任务状态   |
| `/v1/videos/{id}/content` | GET  | 下载生成的视频  |

### 请求参数

| 参数                | 类型     | 必填 | 说明                              |
| ----------------- | ------ | -- | ------------------------------- |
| `model`           | string | 是  | 模型名称：`sora-2` 或 `sora-2-pro`    |
| `prompt`          | string | 是  | 视频描述文本                          |
| `size`            | string | 否  | 分辨率，如 `1280x720`（默认 `720x1280`） |
| `seconds`         | string | 否  | 视频时长：`4`、`8` 或 `12`（默认 `4`）     |
| `input_reference` | file   | 否  | 参考图片文件（用于图生视频）                  |

### 支持的分辨率（size 参数）

**sora-2:**

* `720x1280`（竖屏，默认）
* `1280x720`（横屏）

**sora-2-pro:**

* `720x1280`（竖屏）
* `1280x720`（横屏）
* `1024x1792`（竖屏高清）
* `1792x1024`（横屏高清）

## 完整示例

### 文生视频（cURL）

**Step 1: 创建视频生成任务**

```
curl -X POST "https://api.yelinai.com/v1/videos" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F model="sora-2" \
  -F prompt="A golden retriever playing fetch on a sunny beach, waves gently rolling in the background, cinematic lighting" \
  -F size="1280x720" \
  -F seconds="8"
```

**响应示例：**

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

**Step 2: 轮询任务状态**

```
curl "https://api.yelinai.com/v1/videos/video_69788dc4a1c8819887468fbeffdda023" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

**响应示例（进行中）：**

```
{
  "id": "video_69788dc4a1c8819887468fbeffdda023",
  "object": "video",
  "status": "in_progress",
  "progress": 45,
  "created_at": 1769508292
}
```

**响应示例（完成）：**

```
{
  "id": "video_69788dc4a1c8819887468fbeffdda023",
  "object": "video",
  "status": "completed",
  "progress": 100,
  "created_at": 1769508292,
  "completed_at": 1769508592
}
```

**Step 3: 下载视频**

```
curl "https://api.yelinai.com/v1/videos/video_69788dc4a1c8819887468fbeffdda023/content" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -o output.mp4
```

### 图生视频（cURL）

**图生视频**功能允许您提供一张参考图片作为视频的第一帧，AI 会基于这张图片生成动态视频。

```
curl -X POST "https://api.yelinai.com/v1/videos" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F model="sora-2" \
  -F prompt="The camera slowly zooms in, the scene comes alive with gentle movement, cinematic atmosphere" \
  -F size="1280x720" \
  -F seconds="4" \
  -F input_reference="@your_image.jpeg;type=image/jpeg"
```

**图片要求**

* 图片分辨率必须与 `size` 参数匹配（如 size=1280x720，则图片需为 1280×720 像素）
* 支持格式：JPEG、PNG、WebP
* **不支持包含真人面孔的图片**（会被内容审核系统拒绝）

### Python 示例

```
import requests
import time

API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.yelinai.com"

headers = {
    "Authorization": f"Bearer {API_KEY}"
}

# 文生视频
def create_video(prompt, model="sora-2", seconds="8", size="1280x720"):
    response = requests.post(
        f"{BASE_URL}/v1/videos",
        headers=headers,
        data={
            "model": model,
            "prompt": prompt,
            "seconds": seconds,
            "size": size
        }
    )
    response.raise_for_status()
    return response.json()

# 图生视频
def create_video_from_image(prompt, image_path, model="sora-2", seconds="4", size="1280x720"):
    with open(image_path, "rb") as f:
        response = requests.post(
            f"{BASE_URL}/v1/videos",
            headers=headers,
            data={
                "model": model,
                "prompt": prompt,
                "seconds": seconds,
                "size": size
            },
            files={
                "input_reference": (image_path.split("/")[-1], f, "image/jpeg")
            }
        )
    response.raise_for_status()
    return response.json()

# 轮询任务状态
def poll_status(video_id, timeout=600, interval=15):
    start_time = time.time()
    while time.time() - start_time < timeout:
        response = requests.get(
            f"{BASE_URL}/v1/videos/{video_id}",
            headers=headers
        )
        response.raise_for_status()
        data = response.json()

        status = data.get("status")
        progress = data.get("progress", 0)
        print(f"状态: {status}, 进度: {progress}%")

        if status == "completed":
            return data
        elif status == "failed":
            raise Exception(f"视频生成失败: {data.get('error')}")

        time.sleep(interval)

    raise TimeoutError("视频生成超时")

# 下载视频
def download_video(video_id, output_path="output.mp4"):
    response = requests.get(
        f"{BASE_URL}/v1/videos/{video_id}/content",
        headers=headers
    )
    response.raise_for_status()

    with open(output_path, "wb") as f:
        f.write(response.content)
    print(f"视频已保存到: {output_path}")

# 完整流程示例
if __name__ == "__main__":
    # 文生视频
    job = create_video(
        prompt="A golden retriever playing fetch on a sunny beach",
        model="sora-2",
        seconds="8",
        size="1280x720"
    )
    print(f"任务已创建: {job['id']}")

    # 等待完成
    result = poll_status(job["id"])
    print("视频生成完成!")

    # 下载视频
    download_video(job["id"], "my_video.mp4")

    # 图生视频示例
    # job2 = create_video_from_image(
    #     prompt="The scene comes alive with gentle movement",
    #     image_path="reference.jpg",
    #     model="sora-2",
    #     seconds="4",
    #     size="1280x720"
    # )
```

### 任务状态说明

| 状态            | 说明           |
| ------------- | ------------ |
| `queued`      | 任务已加入队列，等待处理 |
| `in_progress` | 正在生成视频       |
| `completed`   | 生成完成，可下载     |
| `failed`      | 生成失败         |

**轮询建议**视频生成通常需要 2-5 分钟。建议每 15-20 秒轮询一次状态，避免过于频繁的请求。

## 开发文档

官转方案完全兼容 OpenAI 官方 API 格式，更多参数和高级用法请参考：

## OpenAI Sora 官方指南

视频生成完整指南

## OpenAI Videos API

API 接口参考文档

## Sora 2 模型文档

sora-2 模型详情

## Sora 2 Pro 模型文档

sora-2-pro 模型详情

## 注意事项

**重要限制**

1. **仅支持异步调用**：官转方案不支持同步 API，所有请求均为异步模式
2. **仅支持按量计费**：必须选择”按量计费”模式，不支持”按次计费”
3. **分组选择**：创建令牌时必须选择”Sora2官转”分组
4. **图片限制**：图生视频不支持包含真人面孔的图片

## 常见问题

官转和官逆有什么区别？

官转是直接调用 OpenAI 官方 API 的透明转发，稳定性高达 99.99%；官逆是通过逆向工程官网实现的方案，价格更低但稳定性可能受影响。

为什么官转不支持同步 API？

OpenAI 官方 Sora API 本身只提供异步调用方式，因此官转方案也仅支持异步调用。

为什么时长选项不同？

官转方案支持 OpenAI 官方的 4/8/12 秒时长选项；官逆方案支持的是官网界面的 10/15 秒时长。

图生视频对图片有什么要求？

图片分辨率必须与目标视频的 size 参数匹配。例如，如果设置 size=1280x720，则图片必须是 1280×720 像素。支持 JPEG、PNG、WebP 格式，不支持包含真人面孔的图片。
