Skip to main content

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.

This is legacy Sora2 route documentation and is now outdated. Use Sora Official Forward for the currently available video route.
Looking for a more stable solution?This page describes the outdated Sync API and is kept only for historical troubleshooting. Use Sora Official Forward for the currently available route.

Prerequisites

1

Get API Key

Login to laozhang.ai console to get your API key
2

Configure Billing Mode

Edit token settings, choose either billing mode (both have same price):
  • Pay-as-you-go (Recommended): Uses balance first, auto-switches when low. Suitable for most users
  • Pay-per-call: Direct charge per call. Suitable for strict budget control
Both modes have exactly the same price: $0.15/call (10s or 15s), only billing method differs.
Token settings
API calls will fail if billing mode is not set. Must complete this configuration first!

Text-to-Video Example

About @sama in ExamplesYou may notice @sama used in examples. This is OpenAI CEO Sam Altman’s authorized ID, allowing his likeness to appear in videos.This is optional:
  • ✓ Can use @sama or other verified IDs
  • ✓ Can skip it and use normal scene descriptions (e.g., “a cat in a garden”)
  • ✗ Cannot upload real person photos (will be rejected and charged)
Want yourself in the video? Requires Cameo certification in Sora iOS app. See FAQ
The simplest usage method - generate videos using only text descriptions.
curl -X POST "https://api.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": "A happy cat playing with a ball in a sunny garden"
          }
        ]
      }
    ]
  }'

Image-to-Video Example

Supports uploading reference images (up to 1 image), supports both URL and Base64 methods.
curl -X POST "https://api.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": "Make this character jump off the desk and come to life"
          },
          {
            "type": "image_url",
            "image_url": {
              "url": "https://filesystem.site/cdn/download/20250407/OhFd8JofOAJCsNOCsM1Y794qnkNO3L.png"
            }
          }
        ]
      }
    ]
  }'

Streaming Output Example

Enable streaming output to view generation progress in real-time.
import openai
import re

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

stream = client.chat.completions.create(
    model="sora_video2",
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "text",
                    "text": "A cute cat playing with a ball in a sunny garden"
                }
            ]
        }
    ],
    stream=True
)

# Store full content to extract video link
full_content = ""

print("Generation progress:\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")

# Extract video link
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 link: {video_url}")
    print("⚠️  Video valid for 1 day, download immediately!")
else:
    print("\n❌ Video link not found, generation may have failed")

Output Interpretation

Streaming Output Format

When "stream": true is enabled, API returns SSE (Server-Sent Events) format:
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\": \"Vertical 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":"> ⌛️ Task is in queue, please wait patiently...\n\n"},"finish_reason":null}]}

data: {"id":"foaicmpl-xxx","object":"chat.completion.chunk","created":1759759480,"model":"sora_video2","choices":[{"index":0,"delta":{"content":"> 🏃 Progress: 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":"> ✅ Video generated successfully, [Click here](https://sora.gptkey.asia/assets/sora/xxx.mp4) to view video~~~\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]

Key Field Descriptions

  • choices[0].delta.content: Contains progress information or final video link
  • finish_reason: When "stop", generation is complete
  • usage: Last message contains token usage
  • Video link: Provided as Markdown link in success message

Generation Time

  • Queue Wait: Depends on peak hours
  • Video Generation: About 2-3 minutes (for 10-second video)
  • Total: 2-5 minutes on average

Next Steps

Sora Official Forward (Current)

Use the currently available Sora2 video route

API Reference

View legacy API documentation

Code Examples

View more usage examples

FAQ

Common issues and solutions

Important Notes

Remember to download videos immediately!Generated video URLs are valid for only 1 day. Please download to local storage after generation to avoid losing videos.
Model Selection
  • sora_video2: Vertical screen (704×1280), suitable for mobile viewing
  • sora_video2-landscape: Horizontal screen (1280×704), suitable for widescreen displays