# Bytedance | Seedance 2.5 | Image to Video Seedance 2.5 Image-to-Video animates first or first-and-last frames into cinematic clips up to 30 seconds with synchronized audio and natural motion. "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-image-to-video - **Branded URL:** https://www.eachlabs.ai/bytedance/seedance-2-5/bytedance-seedance-2-5-image-to-video - **Provider:** ByteDance - **Category:** Image to Video - **Output Type:** video - **Status:** active - **Base Cost:** $0.135–$0.67 per second, depending on duration and resolution - **Estimated Processing Time:** 250 seconds - **Interactive Demo:** https://www.eachlabs.ai/ai-models/bytedance-seedance-2-5-image-to-video ## Pricing - **Charge Type:** dynamic - **Estimate:** $0.135–$0.67 per second, depending on duration and resolution - **Pricing Details:** 480p, duration: $0.135 - **Pricing Details:** 1080p, duration: $0.67 - **Pricing Details:** duration: $0.285 - **Pricing Details:** 480p: $0.135 - **Pricing Details:** 1080p: $0.67 - **Pricing Details:** default: $0.285 ## Input Schema | Parameter | Type | Required | Default | Constraints | Description | |-----------|------|----------|---------|-------------|-------------| | prompt | string | Yes | - | - | The text prompt used to generate the video | | image_url | string | Yes | - | - | Start image URL to guide the video generation. | | end_image_url | string | No | - | - | Optional /Users/erenkayacan/Desktop/dev/eachlabs/be-monorepo/executor-worker/docs/examples/wavespeed/bytedance-seedance-2-0-image-to-video.jsonframe image URL for video continuation. | | resolution | string | No | 720p | 480p, 720p, 1080p | Video resolution - 480p for faster generation, 720p for balance. | | 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 | Duration of the video in seconds. Supports 4 to 30 seconds, or auto to let the model decide based on the prompt. | | generate_audio | boolean | No | true | - | Whether to generate synchronized audio for the video, including sound effects, ambient sounds, and lip-synced speech. The cost of video generation is the same regardless of whether audio is generated or not. | ## 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-image-to-video", "input": { "image_url": "https://cdn-us.eachlabs.ai/defaults/58a5b6e7e3bb4918a49cf711441066c9.png", "prompt": "The camera pushes in rapidly toward the bright mirrored reflection on the left side of the cat's iris, not toward the black pupil. The reflected desert horizon inside the reflection grows and expands until it fills the entire frame, becoming the real landscape at golden hour. The camera then drifts slowly forward and downward over the dune ridges, sand streaming past the lens, gradually revealing the lone figure walking along the distant crest." } }' ``` ## 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 | Image to Video Overview** **Bytedance | Seedance 2.5 | Image to Video** turns a still image, or a first-and-last frame setup, into a cinematic clip with natural motion and synchronized audio. It is part of ByteDance’s Seedance 2.5 family, which is designed for controlled AI video generation across image, video, and audio inputs. Its main differentiator is native long-form generation: Seedance 2.5 supports a **30-second single take** and can extend into longer sequences through multi-round generation, while keeping motion and scene continuity stable. On each::labs, this makes the model useful for creators who want a strong image-to-video workflow without stitching together many short clips. Compared with earlier Seedance releases, the 2.5 family also emphasizes richer reference control, region-level editing, and synchronized audiovisual output. ## 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.