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

# 快速开始（同步 API，已过时）

> Sora 2 旧同步 API 文档，仅供历史排查参考；当前请使用 Sora 官方 API 转发方案。

<Warning>
  该页面属于 Sora2 旧线路文档，目前已过时，仅供历史排查参考。当前可用入口请使用 [Sora 官方 API 转发方案](/api-capabilities/sora2/official-forward)。
</Warning>

<Note>
  **寻找更稳定的方案？**

  本页面介绍已经过时的**同步 API**，仅供历史排查参考。当前可用入口请使用 [Sora 官方 API 转发方案](/api-capabilities/sora2/official-forward)。
</Note>

## 前置要求

<Steps>
  <Step title="获取 API Key">
    登录 [laozhang.ai 控制台](https://api2.laozhang.ai) 获取 API 密钥
  </Step>

  <Step title="配置计费模式">
    编辑令牌设置，选择以下任一计费模式（两者价格相同）：

    * **按量优先**（推荐）：优先使用余额计费，余额不足时自动切换。适合大多数用户
    * **按次计费**：每次调用直接扣费。适合预算控制严格的场景

    <Note>
      两种模式**价格完全相同**，都是 \$0.15/次（10秒或15秒），仅扣费方式不同。
    </Note>

    <img src="https://mintcdn.com/laozhangai-edd05f2c/_loZ0Jy0ZI__xJ9z/images/sora2-token-setting.png?fit=max&auto=format&n=_loZ0Jy0ZI__xJ9z&q=85&s=d54128f51509467d6b73d207bbe5c86f" alt="令牌设置" width="1280" height="537" data-path="images/sora2-token-setting.png" />

    <Warning>
      如果未设置计费模式，API调用会失败。必须先完成此配置！
    </Warning>
  </Step>
</Steps>

## 文生视频示例

<Note>
  **关于示例中的 `@sama`**

  您可能注意到示例中使用了 `@sama`，这是 OpenAI CEO Sam Altman 的授权真人ID，可以让他的形象出现在视频中。

  **这是可选功能**：

  * ✓ 可以使用 `@sama` 或其他已认证的真人ID
  * ✓ 也可以不使用，直接描述普通场景（如"一只猫在花园里"）
  * ✗ 不能上传真人照片（会被拒绝且扣费）

  **如何让您自己出镜？** 需要在 Sora iOS 应用中完成 Cameo 认证。详见 [常见问题](/api-capabilities/sora2/troubleshooting#为什么生成人物视频失败)
</Note>

最简单的使用方式，仅使用文字描述生成视频。

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST "https://api2.laozhang.ai/v1/chat/completions" \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "model": "sora_video2",
      "messages": [
        {
          "role": "user",
          "content": [
            {
              "type": "text",
              "text": "@sama 在八达岭长城上的背景，开心地口述：laozhang.ai的客户朋友们，国庆中秋佳节，玩得愉快！"
            }
          ]
        }
      ]
    }'
  ```

  ```python Python theme={null}
  import openai

  client = openai.OpenAI(
      api_key="YOUR_API_KEY",
      base_url="https://api2.laozhang.ai/v1"
  )

  response = client.chat.completions.create(
      model="sora_video2",
      messages=[
          {
              "role": "user",
              "content": [
                  {
                      "type": "text",
                      "text": "@sama 在八达岭长城上的背景，开心地口述：laozhang.ai的客户朋友们，国庆中秋佳节，玩得愉快！"
                  }
              ]
          }
      ]
  )

  print(response.choices[0].message.content)
  ```

  ```javascript JavaScript theme={null}
  const OpenAI = require('openai');

  const client = new OpenAI({
    apiKey: 'YOUR_API_KEY',
    baseURL: 'https://api2.laozhang.ai/v1'
  });

  async function generateVideo() {
    const response = await client.chat.completions.create({
      model: 'sora_video2',
      messages: [
        {
          role: 'user',
          content: [
            {
              type: 'text',
              text: '@sama 在八达岭长城上的背景，开心地口述：laozhang.ai的客户朋友们,国庆中秋佳节，玩得愉快！'
            }
          ]
        }
      ]
    });

    console.log(response.choices[0].message.content);
  }

  generateVideo();
  ```
</CodeGroup>

## 图生视频示例

支持上传参考图片（最多 1 张），支持 URL 和 Base64 两种方式。

<CodeGroup>
  ```bash cURL (URL) theme={null}
  curl -X POST "https://api2.laozhang.ai/v1/chat/completions" \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "model": "sora_video2",
      "messages": [
        {
          "role": "user",
          "content": [
            {
              "type": "text",
              "text": "生成视频：让这个手办形象从桌子上跳出来，变成活人的一个场景~"
            },
            {
              "type": "image_url",
              "image_url": {
                "url": "https://filesystem.site/cdn/download/20250407/OhFd8JofOAJCsNOCsM1Y794qnkNO3L.png"
              }
            }
          ]
        }
      ]
    }'
  ```

  ```python Python (URL) theme={null}
  import openai

  client = openai.OpenAI(
      api_key="YOUR_API_KEY",
      base_url="https://api2.laozhang.ai/v1"
  )

  response = client.chat.completions.create(
      model="sora_video2",
      messages=[
          {
              "role": "user",
              "content": [
                  {
                      "type": "text",
                      "text": "生成视频：让这个手办形象从桌子上跳出来，变成活人的一个场景~"
                  },
                  {
                      "type": "image_url",
                      "image_url": {
                          "url": "https://filesystem.site/cdn/download/20250407/OhFd8JofOAJCsNOCsM1Y794qnkNO3L.png"
                      }
                  }
              ]
          }
      ]
  )

  print(response.choices[0].message.content)
  ```

  ```bash cURL (Base64) theme={null}
  curl -X POST "https://api2.laozhang.ai/v1/chat/completions" \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "model": "sora_video2",
      "messages": [
        {
          "role": "user",
          "content": [
            {
              "type": "text",
              "text": "生成视频：让这个手办形象从桌子上跳出来，变成活人的一个场景~"
            },
            {
              "type": "image_url",
              "image_url": {
                "url": "data:image/png;base64,iVBORw0KGgoAAAANS..."
              }
            }
          ]
        }
      ]
    }'
  ```
</CodeGroup>

## 流式输出示例

启用流式输出可以实时查看生成进度。

<CodeGroup>
  ```python Python (流式) theme={null}
  import openai
  import re

  client = openai.OpenAI(
      api_key="YOUR_API_KEY",
      base_url="https://api2.laozhang.ai/v1"
  )

  stream = client.chat.completions.create(
      model="sora_video2",
      messages=[
          {
              "role": "user",
              "content": [
                  {
                      "type": "text",
                      "text": "一只可爱的猫咪在阳光明媚的花园里玩球"
                  }
              ]
          }
      ],
      stream=True
  )

  # 存储完整内容以提取视频链接
  full_content = ""

  print("生成进度:\n")
  for chunk in stream:
      if chunk.choices[0].delta.content:
          content = chunk.choices[0].delta.content
          print(content, end='', flush=True)
          full_content += content

  print("\n")

  # 提取视频链接
  video_url_match = re.search(r'https://[^\s\)]+\.mp4', full_content)
  if video_url_match:
      video_url = video_url_match.group(0)
      print(f"\n✅ 视频链接: {video_url}")
      print("⚠️  视频有效期1天，请立即下载！")
  else:
      print("\n❌ 未找到视频链接，生成可能失败")
  ```

  ```javascript JavaScript (流式) theme={null}
  const OpenAI = require('openai');

  const client = new OpenAI({
    apiKey: 'YOUR_API_KEY',
    baseURL: 'https://api2.laozhang.ai/v1'
  });

  async function generateVideoStream() {
    const stream = await client.chat.completions.create({
      model: 'sora_video2',
      messages: [
        {
          role: 'user',
          content: [
            {
              type: 'text',
              text: '一只可爱的猫咪在阳光明媚的花园里玩球'
            }
          ]
        }
      ],
      stream: true
    });

    for await (const chunk of stream) {
      if (chunk.choices[0]?.delta?.content) {
        process.stdout.write(chunk.choices[0].delta.content);
      }
    }
  }

  generateVideoStream();
  ```
</CodeGroup>

## 输出解读

### 流式输出格式

启用 `"stream": true` 时，API 返回 SSE（Server-Sent Events）格式：

````text theme={null}
data: {"id":"foaicmpl-xxx","object":"chat.completion.chunk","created":1759759480,"model":"sora_video2","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}

data: {"id":"foaicmpl-xxx","object":"chat.completion.chunk","created":1759759480,"model":"sora_video2","choices":[{"index":0,"delta":{"content":"```json\n{\n    \"prompt\": \"A happy cat playing with a ball in a sunny garden\",\n    \"mode\": \"竖屏模式\"\n}\n```\n\n"},"finish_reason":null}]}

data: {"id":"foaicmpl-xxx","object":"chat.completion.chunk","created":1759759480,"model":"sora_video2","choices":[{"index":0,"delta":{"content":"> ⌛️ 任务正在队列中，请耐心等待...\n\n"},"finish_reason":null}]}

data: {"id":"foaicmpl-xxx","object":"chat.completion.chunk","created":1759759480,"model":"sora_video2","choices":[{"index":0,"delta":{"content":"> 🏃 进度：36.0%\n\n"},"finish_reason":null}]}

data: {"id":"foaicmpl-xxx","object":"chat.completion.chunk","created":1759759480,"model":"sora_video2","choices":[{"index":0,"delta":{"content":"> ✅ 视频生成成功，[点击这里](https://sora.gptkey.asia/assets/sora/xxx.mp4) 查看视频~~~\n\n"},"finish_reason":null}]}

data: {"id":"foaicmpl-xxx","object":"chat.completion.chunk","created":1759759480,"model":"sora_video2","choices":[{"index":0,"delta":{},"finish_reason":"stop"}],"usage":{"prompt_tokens":17,"completion_tokens":244,"total_tokens":261}}

data: [DONE]
````

### 关键字段说明

* `choices[0].delta.content`: 包含进度信息或最终视频链接
* `finish_reason`: 为 `"stop"` 时表示生成完成
* `usage`: 最后一条消息包含 token 使用情况
* 视频链接: 在成功消息中以 Markdown 链接形式提供

### 生成时间

* **排队等待：** 视高峰期而定
* **视频生成：** 约 2-3 分钟（10秒视频）
* **总耗时：** 通常在 2.5-4 分钟之间

<Warning>
  设置超时时间时，建议不少于 **5 分钟**（300秒），以确保视频生成完成。
</Warning>

## 带水印视频生成

<Note>
  **10/18 新增功能**

  默认生成的视频**水印策略以模型返回为准**。如需生成带 Sora 原生水印的视频，在 URL 添加参数 `?watermark=true`。
</Note>

<CodeGroup>
  ```bash cURL (带水印) theme={null}
  curl -X POST "https://api2.laozhang.ai/v1/chat/completions?watermark=true" \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "model": "sora_video2",
      "messages": [
        {
          "role": "user",
          "content": [
            {
              "type": "text",
              "text": "一只可爱的猫咪在阳光明媚的花园里玩球"
            }
          ]
        }
      ]
    }'
  ```

  ```python Python (带水印) theme={null}
  import openai

  client = openai.OpenAI(
      api_key="YOUR_API_KEY",
      # 注意这里使用带 watermark 参数的 URL
      base_url="https://api2.laozhang.ai/v1?watermark=true"
  )

  response = client.chat.completions.create(
      model="sora_video2",
      messages=[
          {
              "role": "user",
              "content": [
                  {
                      "type": "text",
                      "text": "一只可爱的猫咪在阳光明媚的花园里玩球"
                  }
              ]
          }
      ]
  )

  print(response.choices[0].message.content)
  ```
</CodeGroup>

<Tip>
  **使用场景：**

  * 水印策略以模型返回为准：适合商业使用、品牌宣传等需要水印策略以模型返回为准的场景
  * 带水印：适合测试、学习、展示 Sora 生成效果等场景
</Tip>

## 视频下载

<Steps>
  <Step title="获取视频链接">
    从 API 响应中提取视频 URL
  </Step>

  <Step title="立即下载">
    视频存储时效仅 **1 天**，请立即下载到本地
  </Step>

  <Step title="保存备份">
    建议保存到云存储或本地硬盘
  </Step>
</Steps>

<Tip>
  视频链接有效期较短。请注意及时下载，超过 1 天后链接将失效。
</Tip>

## 下一步

<CardGroup cols={2}>
  <Card title="Sora 官方 API 转发方案（当前可用）" icon="shield-check" href="/api-capabilities/sora2/official-forward">
    当前 Sora2 视频可用入口
  </Card>

  <Card title="模型定价" icon="tag" href="/api-capabilities/sora2/models-pricing">
    查看旧线路模型对比
  </Card>

  <Card title="更多示例" icon="code" href="/api-capabilities/sora2/examples">
    查看 Cherry Studio 等场景应用
  </Card>

  <Card title="常见问题" icon="circle-question-mark" href="/api-capabilities/sora2/troubleshooting">
    解决使用中的问题
  </Card>
</CardGroup>
