# Bytedance | Seedance 2.0 | Text to Video ByteDance’s most advanced video generation model delivers cinematic output with native audio, realistic physics, and director-level camera control, supporting text, image, audio, and video inputs. "Please use this model only with AI-generated human faces, not real human faces. If you use real human faces, you accept full responsibility and liability for any consequences." ## API Information - **Model Slug:** bytedance-seedance-2-0-text-to-video - **Branded URL:** https://www.eachlabs.ai/bytedance/seedance-2-0/bytedance-seedance-2-0-text-to-video - **Provider:** ByteDance - **Category:** Text to Video - **Output Type:** video - **Status:** active - **Base Cost:** 720p resolution (default): approximately $0.18 per second of output video - **Estimated Processing Time:** 150 seconds - **Interactive Demo:** https://www.eachlabs.ai/ai-models/bytedance-seedance-2-0-text-to-video ## Pricing - **Charge Type:** dynamic - **Pricing Details:** 720p resolution (default): approximately $0.18 per second of output video ### Pricing Rules | Condition | Pricing | | --- | --- | | resolution == "480p" | 480p resolution: approximately $0.084 per second of output video | | resolution == "1080p" | 1080p resolution: approximately $0.444 per second of output video | | Rule 3 | 720p resolution (default): approximately $0.18 per second of output video | ## Input Schema | Parameter | Type | Required | Default | Constraints | Description | |-----------|------|----------|---------|-------------|-------------| | prompt | string | Yes | - | - | Text prompt describing the video to generate. English is always supported; Seedance 2.0 also supports Japanese, Indonesian, Spanish and Portuguese. Keep it under ~1000 words. | | aspect_ratio | string | No | auto | auto, 21:9, 16:9, 4:3, 1:1, 3:4, 9:16 | The aspect ratio of the generated video. Use 16:9 for landscape, 9:16 for portrait/vertical, 1:1 for square, 21:9 for ultrawide cinematic, or auto to let the model decide. | | duration | string | No | auto | auto, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 | Video duration in seconds. Supports 4 to 15 seconds, or auto (default) to let the model pick the best length from the prompt. Longer durations consume more tokens and cost proportionally more. | | resolution | string | No | 720p | 480p, 720p, 1080p | Output resolution. 480p for fastest/cheapest generation, 720p for a balanced default. 1080p for highest quality. | | generate_audio | boolean | No | true | - | Whether the model generates synchronized audio (voice, sound effects, ambient sound, background music) matched to the visuals. true (default) produces an audio video; false produces a silent video. Put spoken lines in double quotes in the prompt for best speech results. | | seed | integer | No | - | 1–0 | Random seed for reproducibility. The same seed with the same inputs yields similar (not guaranteed identical) results. Leave empty for a random seed on each run. | ## 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": "bytedance-seedance-2-0-text-to-video", "input": { "prompt": "Ultra realistic 1903 first human flight attempt, wooden airplane lifting gently off sandy ground at sunrise, wind moving fabric wings, emotional faces watching in awe, cinematic golden morning light, slow motion takeoff moment, shallow depth of field, detailed textures of wood and fabric, hopeful atmosphere, 4K HDR" } }' ``` ## 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 **Bytedance | Seedance 2.0 | Text to Video Overview** Bytedance | Seedance 2.0 | Text to Video is ByteDance's flagship AI model that transforms text prompts, images, videos, and audio into cinematic videos with native synchronized sound, solving the challenge of creating director-level content without extensive crews or editing suites. Part of the Seedance family, this model stands out with its unified multimodal architecture, enabling up to 9 image references, 3 video clips, and 3 audio files in a single workflow for precise control over consistency, motion, and audio sync. Creators gain realistic physics, character locking, and beat-aware generation, making it ideal for professional video production on platforms like each::labs. Available via the Bytedance | Seedance 2.0 | Text to Video API, it empowers users to produce high-quality clips efficiently. ## 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.