# Bytedance | Seedance 2.5 | Text to Video Seedance 2.5 Text-to-Video turns prompts into coherent 30-second clips with synchronized audio and timestamped shot control for cinematic storytelling. "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-5-text-to-video - **Branded URL:** https://www.eachlabs.ai/bytedance/seedance-2-5/bytedance-seedance-2-5-text-to-video - **Provider:** ByteDance - **Category:** Text to Video - **Output Type:** video - **Status:** active - **Base Cost:** 720p resolution (default): approximately $0.27 per second of output video - **Estimated Processing Time:** 250 seconds - **Interactive Demo:** https://www.eachlabs.ai/ai-models/bytedance-seedance-2-5-text-to-video ## Pricing - **Charge Type:** dynamic - **Pricing Details:** 720p resolution (default): approximately $0.27 per second of output video ### Pricing Rules | Condition | Pricing | | --- | --- | | resolution == "480p" | 480p resolution: approximately $0.12 per second of output video | | resolution == "1080p" | 1080p resolution: approximately $0.65 per second of output video | | Rule 3 | 720p resolution (default): approximately $0.27 per second of output video | ## Input Schema | Parameter | Type | Required | Default | Constraints | Description | |-----------|------|----------|---------|-------------|-------------| | prompt | string | Yes | - | - | Text prompt describing the video to generate. Recommended under 1000 words. English always supported; Seedance 2.5 also supports Spanish, Indonesian, Portuguese, Japanese, Malay, Thai, Arabic, Vietnamese and Korean. Put spoken lines in double quotes for best speech results. | | resolution | string | No | 720p | 480p, 720p, 1080p | Output resolution. Seedance 2.5 supports 480p for faster/cheaper generation and 720p (default) for higher quality. | | duration | string | No | auto | auto, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 | Video duration in seconds. Seedance 2.5 supports 4 to 30 seconds, or auto (default) to let the model pick the best length from the prompt. Longer durations consume more tokens and cost proportionally more. | | 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 from the prompt. | | 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. The cost is the same either way. | ## 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-5-text-to-video", "input": { "prompt": "Shot 1 (wide, 0–2s): A miniature city made entirely of desserts sits in darkness. A single candy streetlamp flickers on, then another — warm caramel light spreading across chocolate-brick buildings, frosting-covered rooftops and cobblestones of pressed biscuit, the sugar city waking from the dark.\n\nShot 2 (low angle, 2–4s): The camera glides at ground level down a licorice-paved street. A gingerbread man in an icing-piped apron steps out of a gingerbread doorway carrying a tray of real miniature pastries, while a gingerbread woman with a frosted skirt and candy-button details walks along the sidewalk beside two smaller gingerbread children, all of them waddling stiffly on flat cookie legs. Another gingerbread woman pauses to sit on a peppermint bench as a jelly bus wobbles past — everything moving with soft claymation charm.\n\nShot 3 (tracking, 4–6s): A chocolate train rounds a wafer bridge, headlights of glowing sugar cutting through the dark. A gingerbread man and a gingerbread woman stop at the railing and turn to watch it pass. The camera tracks alongside in slow motion, caramel light flickering through its windows, powdered-sugar snow drifting down past the lens.\n\nShot 4 (aerial, 6–8s): The camera rises slowly straight up above the whole dessert city, revealing it glowing from above — every candy lamp lit, every frosted window warm, the chocolate train winding through below, tiny gingerbread men and women moving along the streets like pedestrians, an edible world alive against the dark.\n\nStyle: Macro cinematic lens, shallow depth of field, glossy chocolate and matte frosting textures, warm baked cookie surfaces with white icing detailing, warm caramel glow, slow deliberate camera movement throughout." } }' ``` ## 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.5 | Text to Video Overview** **Bytedance | Seedance 2.5 | Text to Video** turns text prompts into cinematic video clips with synchronized audio and stronger shot-level control. It is designed for creators who need a model that can hold character identity, camera motion, lighting, and scene continuity inside a single generation. According to available Seedance 2.5 reporting, the model’s standout differentiator is its ability to generate up to 30-second clips in one pass while preserving coherence across scene changes, rather than stitching shorter outputs together. As a ByteDance model in the Seedance family, it fits workflows that need more than simple prompt-to-clip generation. It is aimed at cinematic storytelling, product visuals, and multi-shot sequences where audio and visual timing matter. The Seedance 2.5 name appears to be the product name used in public materials, while “Bytedance | Seedance 2.5 | Text to Video” is the page-level model label used on each::labs. ## 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.