# Sora 2 | Text to Video Sora 2 is an advanced text-to-video model that creates ultra-realistic, naturally moving scenes from text prompts. ## API Information - **Model Slug:** sora-2-text-to-video - **Branded URL:** https://www.eachlabs.ai/openai/sora-2/sora-2-text-to-video - **Provider:** OpenAI - **Category:** Text to Video - **Output Type:** video - **Status:** active - **Base Cost:** $0.10 per second - **Estimated Processing Time:** 110 seconds - **Interactive Demo:** https://www.eachlabs.ai/ai-models/sora-2-text-to-video ## Pricing - **Charge Type:** dynamic - **Estimate:** $0.10 per second - **Pricing Details:** default: $0.1 ## Input Schema | Parameter | Type | Required | Default | Constraints | Description | |-----------|------|----------|---------|-------------|-------------| | prompt | string | Yes | - | - | The text prompt describing the video you want to generate. | | aspect_ratio | string | No | 16:9 | 16:9, 9:16 | The aspect ratio of the generated video. | | duration | integer | No | 4 | 4, 8, 12, 16, 20 | Duration of the generated video in seconds. | | character_id | string | No | - | - | Optional character asset ID (char_xxx) uploaded via the Characters API. The character's name must appear verbatim in the prompt. | ## Example Request ```bash curl -X POST https://api.eachlabs.ai/v1/prediction/ \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "sora-2-text-to-video", "input": { "prompt": "Early morning sunlight spreads across a quiet countryside road as a lone cyclist moves steadily along gentle curves. The camera glides smoothly beside and slightly ahead, capturing golden light filtering through trees and mist drifting near the fields. Long shadows stretch across the pavement, and the breeze flows through tall grass on both sides of the road. Soft tire noise and distant birds complete the calm, ultra-realistic atmosphere, with natural motion and warm HDR lighting." } }' ``` ## Output Schema Response returned by `GET /v1/prediction/{id}` when the job completes: ```json { "status": "success", "predictionID": "string", "output": "string (URL of generated video)", "metrics": { "predict_time": "number (seconds)" } } ``` ## Polling ```bash curl https://api.eachlabs.ai/v1/prediction/{PREDICTION_ID} \ -H "Authorization: Bearer YOUR_API_KEY" ``` | Status | Meaning | |--------|---------| | `processing` | Still running — poll again | | `success` | Done — read `output` | | `error` | Failed — read `message` / `details` | ## Webhook (alternative to polling) Pass `"webhook_url": "https://your.host/path"` in the create request. Eachlabs POSTs this payload when the job ends: ```json { "exec_id": "prediction-uuid", "status": "succeeded", "output": "https://...", "error": "" } ``` `status` is `"succeeded"` or `"failed"`. `exec_id` equals the `predictionID` from create. Return 2xx within 30 seconds. ## Errors Error body: `{ "status": "error", "message": "...", "details": "..." }` | Code | Meaning | |------|---------| | `400` | Invalid input | | `401` | Missing / invalid `Authorization` bearer token | | `404` | Unknown model or prediction id | | `429` | Rate limit — 100 creates / min, 10 concurrent per key | | `5xx` | Retry with backoff | ## Overview **sora-2-text-to-video — Text to Video AI Model** sora-2-text-to-video, OpenAI's advanced **text-to-video AI model** from the Sora 2 family, transforms text prompts into cinematic-quality videos with native audio synchronization, solving the challenge of creating realistic motion and sound without post-production. This **OpenAI text-to-video** capability delivers hyper-realistic scenes up to 20 seconds long, ideal for creators seeking "AI video generator with audio" tools that match professional standards. Developers and marketers turn to sora-2-text-to-video for its precise physics simulation and narrative coherence, generating clips in 720p or 1080p resolutions with aspect ratios like 16:9 landscape or 9:16 portrait. ## Usage Notes - API Base URL: `https://api.eachlabs.ai/v1` - Authentication: send `Authorization: Bearer YOUR_API_KEY`. Generate a key from the Eachlabs dashboard at https://www.eachlabs.ai/dashboard/api-keys. - File-typed parameters (`*_url`, `image_url`, `video_url`, `audio_url`, etc.) accept publicly-reachable HTTPS URLs only. Upload your asset first (GCS / S3 / your CDN) and pass the resulting URL. Data-URIs and localhost URLs are rejected. - For structured parameters (arrays / objects) send real JSON values, not stringified payloads. - Monetary values are reported in USD; per-token / per-megapixel rates may be billed in micro-cents internally. - Prefer `webhook_url` over polling for long-running predictions — see the Webhook Callback section.