# Sora 2 > OpenAI's video generation model supporting text-to-video and image-to-video at 720p resolution with durations up to 20 seconds ## Quick Reference - Model ID: sora-2 - 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 ## Model Identifiers - Primary Slug: sora-2 ## Tags video-generation, text-to-video, image-to-video ## Available Providers ### Replicate - Config Key: replicate/sora-2 - Provider Model ID: openai/sora-2 - Pricing: $0.100/second - Source: https://replicate.com/openai/sora-2 ### OpenAI - Config Key: openai/sora-2 - Provider Model ID: sora-2 - Pricing: $0.100/second - Source: https://openai.com/api/pricing/ ### fal.ai - Config Key: fal/sora-2 - Provider Model ID: fal-ai/sora-2/text-to-video - Pricing: $0.100/second - Source: https://fal.ai/models/fal-ai/sora-2/text-to-video ## Image Gallery 2 images available for this model. - Curated examples: 2 - "Cinematic drone shot of a sleek, futuristic orange sports car gliding effortlessly through a rain-drenched neon stree..." - "Cinematic drone shot of a sleek, futuristic orange sports car gliding effortlessly through a rain-drenched neon stree..." ## Example Prompt The following prompt was used to generate an example video in our playground: Cinematic drone shot of a sleek, futuristic orange sports car gliding effortlessly through a rain-drenched neon street in a cyberpunk city. The wet pavement perfectly reflects the vibrant signs and "SORA 2" glowing on a nearby billboard. As the car zooms past a modern bus stop, a capybara is calmly sitting on the bench under an umbrella, waiting for the bus. Hyper-realistic textures, fluid camera motion, and cinematic lighting showcasing incredible consistency and detail. ## Code Examples ### Text to Video (Async Generation) The video API is asynchronous: submit a generation request, then poll for the result. #### 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", "prompt": "A serene mountain landscape at sunset", "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', prompt: 'A serene mountain landscape at sunset', 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", "prompt": "A serene mountain landscape at sunset", "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) ## About ## Overview Sora 2 is a high-fidelity video generation model developed by OpenAI that transforms text prompts or static images into cinematic video sequences. It represents an evolution in the Sora family, capable of producing content at 720p resolution with extended durations reaching up to 20 seconds. This model is distinguished by its ability to maintain temporal consistency and complex motion dynamics over longer spans than many first-generation video models. ## Strengths * **Temporal Consistency:** Maintains the identity of characters, objects, and environmental details across the entire 20-second duration, minimizing the "morphing" or warping effects common in shorter-clip models. * **Physical Simulation:** Demonstrates a sophisticated understanding of physical interactions, such as fluid dynamics, lighting reflections, and gravity, leading to more realistic movement. * **Multimodal Input Flexibility:** Supports both text-to-video for purely generative tasks and image-to-video for animating existing assets or extending still photography into motion. * **Enhanced Resolution:** Outputs native 720p video, providing sufficient clarity for social media content, prototyping, and digital backgrounds without immediate need for upscaling. ## Limitations * **Causal Reasoning:** While physically grounded, the model may still struggle with complex "cause and effect" sequences, such as a character taking a bite out of a cookie and the cookie not showing a bite mark. * **Spatial Confusion:** In high-action scenes involving multiple moving parts (e.g., a crowded street), the model can occasionally mix up left/right orientations or produce impossible limb movements. * **Resolution Ceiling:** At 720p, it lacks the native 4K or 1080p detail required for professional film production pipelines without significant post-processing. ## Technical Background Sora 2 utilizes a diffusion transformer (DiT) architecture, which combines the scaling properties of transformers with the generative capabilities of diffusion models. It operates on spacetime patches, treating video data as a three-dimensional collection of patches that allow the model to train on diverse aspect ratios and resolutions. This architecture enables the model to look ahead and behind in a sequence to ensure global coherence rather than generating frames in a strictly linear, autoregressive fashion. ## Best For Sora 2 is best suited for rapid prototyping in creative agencies, generating b-roll for digital marketing, and creating environmental backgrounds for web design. It excels at animating conceptual art where maintaining character consistency is a priority. This model is available for testing and integration through Lumenfall's unified API and playground, allowing developers to compare its outputs directly against other video generation frameworks. ## Frequently Asked Questions ### How much does Sora 2 cost? Sora 2 starts at $0.1 per video through Lumenfall. Pricing varies by provider. Lumenfall does not add any markup to provider pricing. ### How do I use Sora 2 via API? You can use Sora 2 through Lumenfall's OpenAI-compatible API. Send requests to the unified endpoint with model ID "sora-2". Code examples are available in Python, JavaScript, and cURL. ### Which providers offer Sora 2? Sora 2 is available through Replicate, OpenAI, and fal.ai on Lumenfall. Lumenfall automatically routes requests to the best available provider. ## Links - Model Page: https://lumenfall.ai/models/openai/sora-2 - About: https://lumenfall.ai/models/openai/sora-2/about - Providers, Pricing & Performance: https://lumenfall.ai/models/openai/sora-2/providers - API Reference: https://lumenfall.ai/models/openai/sora-2/api - Benchmarks: https://lumenfall.ai/models/openai/sora-2/benchmarks - Use Cases: https://lumenfall.ai/models/openai/sora-2/use-cases - Gallery: https://lumenfall.ai/models/openai/sora-2/gallery - Playground: https://lumenfall.ai/playground?model=sora-2 - API Documentation: https://docs.lumenfall.ai