# Sora 2 Pro > OpenAI's professional video generation model with higher resolution support up to 1080p, native audio synthesis, and durations up to 20 seconds ## Quick Reference - Model ID: sora-2-pro - Creator: OpenAI - Status: active - Family: sora - Base URL: https://api.lumenfall.ai/v1 ## Specifications - Max Video Duration: 20 seconds - Input Modalities: text, image - Output Modalities: video - Supported Modes: Text to Video, Image to Video ## API Parameters The compiled parameter schema for this model is available via the API: `GET /v1/models/sora-2-pro?schema=true`. ### Core Parameters - `prompt` (string) — REQUIRED: Text prompt for video generation. Modes: Image to Video, Text to Video - `duration` (number): Video duration in seconds. Values: 12, 4, 8. Modes: Image to Video, Text to Video ### Size & Layout - `size` (string): Video dimensions as WxH pixels (e.g. "1920x1080") or aspect ratio (e.g. "16:9"). Values: auto, 1280x720, 720x1280, 1365x768, 768x1365, 1792x1024, 1024x1792. Modes: Image to Video, Text to Video - `aspect_ratio` (string): Aspect ratio of the output video (e.g. "16:9", "1:1"). Values: auto, 9:16, 16:9. Modes: Image to Video, Text to Video - `resolution` (string): Output resolution tier (e.g. "1K", "4K"). Values: auto, 1K. Modes: Image to Video, Text to Video ### Media Inputs - `input_reference` (string): An optional image to use as the first frame of the video. The image must be the same aspect ratio as the video.. Modes: Text to Video, Image to Video. Only available via replicate ### Output & Format - `n` (integer): Number of videos to generate. Default: 1. Modes: Image to Video, Text to Video ### Additional Parameters - `character_ids` (array): Up to two character IDs (from create-character) to use in the video. Refer to characters by name in the prompt. When set, only the OpenAI provider is used.. Modes: Image to Video, Text to Video. Only available via fal - `delete_video` (boolean): Whether to delete the video after generation for privacy reasons. If True, the video cannot be used for remixing and will be permanently deleted.. Modes: Image to Video, Text to Video. Only available via fal - `detect_and_block_ip` (boolean): If enabled, the prompt (and image for image-to-video) will be checked for known intellectual property references and the request will be blocked if any are detected.. Modes: Image to Video, Text to Video. Only available via fal - `openai_api_key` (string): Optional: Your OpenAI API key. If you use your own OpenAI API key, you will be charged directly by OpenAI.. Modes: Text to Video, Image to Video. Only available via replicate - `seconds` (integer): Duration of the video in seconds. Modes: Text to Video, Image to Video. Only available via replicate ## Model Identifiers - Primary Slug: sora-2-pro ## Dates - Released: September 2025 ## Tags video-generation, text-to-video, image-to-video ## Available Providers ### fal.ai - Config Key: fal/sora-2-pro-i2v - Provider Model ID: fal-ai/sora-2/image-to-video/pro - Pricing: $0.300/second, $0.500/second - Source: https://fal.ai/models/fal-ai/sora-2/image-to-video/pro ### fal.ai - Config Key: fal/sora-2-pro - Provider Model ID: fal-ai/sora-2/text-to-video/pro - Pricing: $0.300/second, $0.500/second - Source: https://fal.ai/models/fal-ai/sora-2/text-to-video/pro ### Replicate - Config Key: replicate/sora-2-pro - Provider Model ID: openai/sora-2-pro - Pricing: $0.300/second, $0.500/second - Source: https://replicate.com/openai/sora-2-pro ### OpenAI - Config Key: openai/sora-2-pro - Provider Model ID: sora-2-pro - Pricing: $0.300/second, $0.500/second - Source: https://openai.com/api/pricing/ ## Arena Benchmarks ### The Rubik's Gauntlet - Elo: 1283 - Record: 20W / 5L / 4T (29 battles) - Rank: #1 of 6 ### The Soul Gauntlet - Elo: 1202 - Record: 13W / 10L / 1T (24 battles) - Rank: #3 of 6 ### Neon Rain Reverie - Elo: 1147 - Record: 4W / 18L / 2T (24 battles) - Rank: #6 of 6 ### The Will Smith Spaghetti Challenge - Elo: 981 - Record: 0W / 20L / 0T (20 battles) - Rank: #6 of 6 ## Use Cases & Category Performance ### Temporal Consistency (Text-to-Video) - Rank: #1 of 5 - Elo: 1275 - Record: 33W / 15L / 5T (53 battles) - Win Rate: 62.3% ### Aesthetics (Text-to-Video) - Rank: #2 of 5 - Elo: 1178 - Record: 37W / 33L / 7T (77 battles) - Win Rate: 48.1% ### Physics & Realism (Text-to-Video) - Rank: #4 of 7 - Elo: 1174 - Record: 37W / 53L / 7T (97 battles) - Win Rate: 38.1% ### Motion Quality (Text-to-Video) - Rank: #4 of 7 - Elo: 1174 - Record: 37W / 53L / 7T (97 battles) - Win Rate: 38.1% ### Prompt Adherence (Text-to-Video) - Rank: #5 of 7 - Elo: 1202 - Record: 20W / 25L / 4T (49 battles) - Win Rate: 40.8% ### Human Fidelity (Text-to-Video) - Rank: #5 of 7 - Elo: 1211 - Record: 33W / 35L / 5T (73 battles) - Win Rate: 45.2% ### Creativity (Text-to-Video) - Rank: #4 of 5 - Elo: 1195 - Record: 17W / 28L / 3T (48 battles) - Win Rate: 35.4% ### Scenes & Atmospherics (Text-to-Video) - Rank: #4 of 4 - Elo: 1147 - Record: 4W / 18L / 2T (24 battles) - Win Rate: 16.7% ### Lighting, Shadows & Materials (Text-to-Video) - Rank: #4 of 4 - Elo: 1147 - Record: 4W / 18L / 2T (24 battles) - Win Rate: 16.7% ## Image Gallery 5 images available for this model. Browse all at https://lumenfall.ai/models/openai/sora-2-pro/gallery ### Arena Video Results - : Elo . Prompt: "A vibrant, sun-drenched pottery studio where a ceramicist’s hands expertly shape a spinning clay ..." - The Rubik's Gauntlet: Elo 1283. Prompt: "Hyper-realistic cinematic close-up of a professional speedcuber solving a 3x3 Rubik's Cube at wor..." - The Soul Gauntlet: Elo 1202. Prompt: "Extreme cinematic close-up of a beautiful young woman experiencing deep, raw emotion. Her express..." - Neon Rain Reverie: Elo 1147. Prompt: "Hyper-realistic cinematic video of an elegant young woman in a flowing white silk dress dancing g..." - The Will Smith Spaghetti Challenge: Elo 981. Prompt: "A medium shot of Will Smith sitting at a cozy, dimly lit Italian restaurant, twirling a forkful o..." ## Example Prompt The following prompt was used to generate an example video in our playground: A vibrant, sun-drenched pottery studio where a ceramicist’s hands expertly shape a spinning clay vase. The camera slowly zooms in, capturing the wet texture of the clay and fine dust motes dancing in the light. In the soft-focus background, a capybara wearing a tiny yellow neckerchief sits peacefully on a wooden stool, watching the process. On the wall, a neon sign glows with the words "Sora 2 Pro." Cinematic lighting, 4k, hyper-realistic textures, peaceful atmosphere. ## Code Examples ### Text to Video (/v1/videos/generations) — Async #### cURL # Step 1: Submit video generation request VIDEO_ID=$(curl -s -X POST \ https://api.lumenfall.ai/v1/videos \ -H "Authorization: Bearer $LUMENFALL_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "sora-2-pro", "prompt": "", "size": "1024x1024" }' | jq -r '.id') echo "Video ID: $VIDEO_ID" # Step 2: Poll for completion while true; do RESULT=$(curl -s \ https://api.lumenfall.ai/v1/videos/$VIDEO_ID \ -H "Authorization: Bearer $LUMENFALL_API_KEY") STATUS=$(echo $RESULT | jq -r '.status') echo "Status: $STATUS" if [ "$STATUS" = "completed" ]; then echo $RESULT | jq -r '.output.url' break elif [ "$STATUS" = "failed" ]; then echo $RESULT | jq -r '.error.message' break fi sleep 5 done #### JavaScript const BASE_URL = 'https://api.lumenfall.ai/v1'; const API_KEY = 'YOUR_API_KEY'; // Step 1: Submit video generation request const submitRes = await fetch(`${BASE_URL}/videos`, { method: 'POST', headers: { 'Authorization': `Bearer ${API_KEY}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ model: 'sora-2-pro', prompt: '', size: '1024x1024' }) }); const { id: videoId } = await submitRes.json(); console.log('Video ID:', videoId); // Step 2: Poll for completion while (true) { const pollRes = await fetch(`${BASE_URL}/videos/${videoId}`, { headers: { 'Authorization': `Bearer ${API_KEY}` } }); const result = await pollRes.json(); if (result.status === 'completed') { console.log('Video URL:', result.output.url); break; } else if (result.status === 'failed') { console.error('Error:', result.error.message); break; } await new Promise(r => setTimeout(r, 5000)); } #### Python import requests import time BASE_URL = "https://api.lumenfall.ai/v1" API_KEY = "YOUR_API_KEY" HEADERS = { "Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json" } # Step 1: Submit video generation request response = requests.post( f"{BASE_URL}/videos", headers=HEADERS, json={ "model": "sora-2-pro", "prompt": "", "size": "1024x1024" } ) video_id = response.json()["id"] print(f"Video ID: {video_id}") # Step 2: Poll for completion while True: result = requests.get( f"{BASE_URL}/videos/{video_id}", headers=HEADERS ).json() if result["status"] == "completed": print(f"Video URL: {result['output']['url']}") break elif result["status"] == "failed": print(f"Error: {result['error']['message']}") break time.sleep(5) ### Image to Video (/v1/videos/generations) — Async #### cURL # Step 1: Submit image-to-video request VIDEO_ID=$(curl -s -X POST \ https://api.lumenfall.ai/v1/videos \ -H "Authorization: Bearer $LUMENFALL_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "sora-2-pro", "prompt": "", "image_url": "https://example.com/start-frame.jpg", "duration": "10", "aspect_ratio": "16:9" }' | jq -r '.id') echo "Video ID: $VIDEO_ID" # Step 2: Poll for completion while true; do RESULT=$(curl -s \ https://api.lumenfall.ai/v1/videos/$VIDEO_ID \ -H "Authorization: Bearer $LUMENFALL_API_KEY") STATUS=$(echo $RESULT | jq -r '.status') echo "Status: $STATUS" if [ "$STATUS" = "completed" ]; then echo $RESULT | jq -r '.output.url' break elif [ "$STATUS" = "failed" ]; then echo $RESULT | jq -r '.error.message' break fi sleep 5 done #### JavaScript const BASE_URL = 'https://api.lumenfall.ai/v1'; const API_KEY = 'YOUR_API_KEY'; // Step 1: Submit image-to-video request const submitRes = await fetch(`${BASE_URL}/videos`, { method: 'POST', headers: { 'Authorization': `Bearer ${API_KEY}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ model: 'sora-2-pro', prompt: '', image_url: 'https://example.com/start-frame.jpg', duration: '10', aspect_ratio: '16:9' }) }); const { id: videoId } = await submitRes.json(); console.log('Video ID:', videoId); // Step 2: Poll for completion while (true) { const pollRes = await fetch(`${BASE_URL}/videos/${videoId}`, { headers: { 'Authorization': `Bearer ${API_KEY}` } }); const result = await pollRes.json(); if (result.status === 'completed') { console.log('Video URL:', result.output.url); break; } else if (result.status === 'failed') { console.error('Error:', result.error.message); break; } await new Promise(r => setTimeout(r, 5000)); } #### Python import requests import time BASE_URL = "https://api.lumenfall.ai/v1" API_KEY = "YOUR_API_KEY" HEADERS = { "Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json" } # Step 1: Submit image-to-video request response = requests.post( f"{BASE_URL}/videos", headers=HEADERS, json={ "model": "sora-2-pro", "prompt": "", "image_url": "https://example.com/start-frame.jpg", "duration": "10", "aspect_ratio": "16:9" } ) video_id = response.json()["id"] print(f"Video ID: {video_id}") # Step 2: Poll for completion while True: result = requests.get( f"{BASE_URL}/videos/{video_id}", headers=HEADERS ).json() if result["status"] == "completed": print(f"Video URL: {result['output']['url']}") break elif result["status"] == "failed": print(f"Error: {result['error']['message']}") break time.sleep(5) ## About ## Overview Sora 2 Pro is OpenAI’s high-fidelity video generation model designed for professional creative workflows. It extends the capabilities of the original Sora architecture by supporting 1080p high-definition output, native audio synthesis, and extended shot durations of up to 20 seconds. The model supports both text-to-video generation, where motion is synthesized from natural language prompts, and image-to-video, which uses a static image as a starting frame to guide the visual composition. ## Strengths * **Temporal Stability:** Maintains consistent character features, background elements, and object persistence over a continuous 20-second duration. * **Multi-Modal Synthesis:** Generates synchronized audio alongside video, reducing the need for external sound design for basic environmental or atmospheric effects. * **High-Resolution Output:** Supports native rendering up to 1080p, offering significantly more detail in textures and lighting compared to standard-definition latent diffusion models. * **Instruction Adherence:** Excels at following complex prompts that require specific camera movements (e.g., "dolly zoom" or "tracking shot") and physics-compliant motion. ## Limitations * **Prompt Latency:** Due to the high parameter count and high-resolution output, generation times are significantly longer than lower-resolution or shorter-form video models. * **Synthesizing Physics:** While improved, the model may still struggle with complex physical interactions, such as objects shattering or fluid dynamics that require precise causal logic. * **Cost:** At a starting price of $0.30 per generation, it is more expensive than many lightweight competitors, making it less ideal for rapid, iterative storyboarding. ## Technical Background Sora 2 Pro is built on a transformer-based diffusion architecture that operates on spacetime patches. By treating video frames as sequences of patches rather than individual images, the model can learn spatial and temporal relationships simultaneously. This version incorporates a more robust latent space representative of higher resolutions and an integrated audio head that generates waveforms conditioned on the visual latent representations. ## Best For Sora 2 Pro is best suited for high-end marketing content, high-fidelity cinematic prototyping, and social media production where visual clarity and longer durations are required. It is an ideal choice for creators who need to animate existing concept art via its image-to-video mode or generate high-quality B-roll directly from text. You can experiment with and deploy Sora 2 Pro through Lumenfall’s unified API and interactive playground. ## Frequently Asked Questions ### How much does Sora 2 Pro cost? Sora 2 Pro starts at $0.3 per video through Lumenfall. Pricing varies by provider. Lumenfall does not add any markup to provider pricing. ### How do I use Sora 2 Pro via API? You can use Sora 2 Pro through Lumenfall's OpenAI-compatible API. Send requests to the unified endpoint with model ID "sora-2-pro". Code examples are available in Python, JavaScript, and cURL. ### Which providers offer Sora 2 Pro? Sora 2 Pro is available through fal.ai, Replicate, and OpenAI on Lumenfall. Lumenfall automatically routes requests to the best available provider. ## Links - Model Page: https://lumenfall.ai/models/openai/sora-2-pro - About: https://lumenfall.ai/models/openai/sora-2-pro/about - Providers, Pricing & Performance: https://lumenfall.ai/models/openai/sora-2-pro/providers - API Reference: https://lumenfall.ai/models/openai/sora-2-pro/api - Benchmarks: https://lumenfall.ai/models/openai/sora-2-pro/benchmarks - Use Cases: https://lumenfall.ai/models/openai/sora-2-pro/use-cases - Gallery: https://lumenfall.ai/models/openai/sora-2-pro/gallery - Playground: https://lumenfall.ai/models/openai/sora-2-pro/playground - API Documentation: https://docs.lumenfall.ai