Skip to main content
AI

Sora 2 Video Generation

Sora 2 supports prompt-based video generation with optional reference image input. The source scope includes the UniAll video generation endpoint and an OpenAI-native compatibility page.

Supported Models

ModelNotes
sora2-landscape-4sLandscape output, 4 seconds.
sora2-landscape-8sLandscape output, 8 seconds.
sora2-landscape-12sLandscape output, 12 seconds.
sora2-portrait-4sPortrait output, 4 seconds.
sora2-portrait-8sPortrait output, 8 seconds.
sora2-portrait-12sPortrait output, 12 seconds.
sora2-pro-720pPro public model, 720p.
sora2-pro-1080pPro public model, 1080p.
sora2-pro-true-1080pPro true-1080p model when enabled.

Endpoint

POST /v1/video/generations
GET /v1/videos/{task_id}

The source also includes a native OpenAI-format page for clients that need OpenAI-compatible request formatting.

Authentication

Authorization: Bearer sk-***
Content-Type: application/json

Request Parameters

ParameterTypeRequiredDescription
modelstringYesSora 2 model ID.
promptstringYesVideo prompt.
image_urlstringNoPublic reference image URL.
aspect_ratiostringNo16:9 or 9:16.
durationinteger/stringNoSource description lists 4, 8, 12, 16, or 20. Model names may already encode duration.

Request Example

curl -X POST "{BASE_URL}/v1/video/generations" \
-H "Authorization: Bearer sk-***" \
-H "Content-Type: application/json" \
-d '{
"model": "sora2-portrait-12s",
"prompt": "A cat running through grass",
"image_url": "https://example.com/image.jpg"
}'

Submit Response

{
"id": "gen_xxxxxxxxxxxx",
"object": "video.generation.job",
"model": "sora2",
"status": "queued",
"progress": 0,
"created_at": 1770405483,
"seconds": "12"
}

Query Task Status

curl "{BASE_URL}/v1/videos/gen_xxxxxxxxxxxx" \
-H "Authorization: Bearer sk-***"
{
"id": "gen_xxxxxxxxxxxx",
"object": "video.generation.job",
"model": "sora2-portrait-12s",
"status": "completed",
"progress": 100,
"video_url": "https://example.com/output.mp4",
"seconds": "12"
}

Billing Notes

Sora 2 billing depends on model, duration, orientation, resolution, and whether a Pro model is selected. Use the current model pricing surface and task settlement record as the source of truth.

Common Errors

  • Passing an unsupported Sora 2 model ID.
  • Sending a private or expired image_url.
  • Passing an aspect_ratio that conflicts with a landscape or portrait model name.
  • Treating a queued task as complete before polling finishes.
  • Mixing UniAll task format and native OpenAI format in one request.