# Seedance 2.5 Source: https://funnyai.io/models/seedance-2-5 Create video with sound for up to 30 seconds using Seedance 2.5. Start from a prompt, guide the scene with media references or set the opening and ending images. Try the brief in the Playground, then use Funny AI’s API to bring video generation into your app. Build your request in the Playground. Sign in to check generation availability, your balance and the current estimate. ## What is Seedance 2.5? Seedance 2.5 is a ByteDance video model for creating scenes with synchronized sound from text and media inputs. Its longer duration gives a brief room for an arrival, a pause and a response within one generated clip. You can choose an output size up to 1080p for the version you intend to review or edit. A larger reference collection helps you describe different parts of a Seedance 2.5 scene. Use one source for a character, another for the setting and a clip for the movement you have in mind. Explain those roles in the prompt so the material supports one coherent shot. Seedance 2.5 accepts up to 30 reference images, 10 videos and 10 audio clips. Video references total at most 30 seconds; audio has its own thirty-second total. - Single generation: up to 30 seconds - Output options: 480p, 720p, 1080p; model version and input-mode restrictions apply. - References: 30 images, 10 video clips, 10 audio clips. ## Scene study: a traveler on a bridge Scene illustration generated with Wan 3.0 · 5 seconds · 480p · silent. This is not Seedance 2.5 output. Prompt: An adult traveler in a red raincoat walks slowly across a small stone bridge in a misty green valley, carrying a closed yellow umbrella. The traveler pauses at the midpoint and looks toward a warm light in a distant cottage. Gentle cinematic storybook atmosphere, wide static camera, soft morning fog. One continuous five-second shot, one person only, no text, no logos, no watermark. Use this bridge scene as a brief to adapt for Seedance 2.5: a traveler walks, pauses and looks toward a cottage. The illustration was generated with Wan 3.0, so it does not demonstrate the longer duration or soundtrack available on the model described here. [Sample video](https://funnyai.io/media/funny-ai/2026-10-18/seedance-2-5/video.mp4) ## Budget a Seedance 2.5 shot Seedance 2.5 pricing follows video-token usage. The table translates current rates into per-second estimates for 16:9 output at 24 fps, helping you budget a short test before preparing a longer take. Reference footage adds billable input to a Seedance 2.5 request, with a minimum usage threshold. Draft uses the normal 480p rate, and a final render is another paid task. Turning generated audio off does not lower the token rate. Estimates use 16:9 output at 24 fps. Other aspect ratios and actual output dimensions can change the cost. Without reference video, only output seconds count. With reference video, input and output seconds count; billable input time is at least two-thirds of the output duration, rounded up to a whole second. - 480p: approximately $0.0925 / billable second without reference video; $0.0553 with reference video. Official comparison: $0.1028 and $0.0615, respectively. Underlying rates: $9.63 / 1M video tokens without reference video; $5.76 with reference video. - 720p: approximately $0.2080 / billable second without reference video; $0.1244 with reference video. Official comparison: $0.2311 and $0.1382, respectively. Underlying rates: $9.63 / 1M video tokens without reference video; $5.76 with reference video. - 1080p: approximately $0.5118 / billable second without reference video; $0.3062 with reference video. Official comparison: $0.5686 and $0.3402, respectively. Underlying rates: $10.53 / 1M video tokens without reference video; $6.3 with reference video. ## Two ways to prepare the take ### Try the scene in your browser Arrange Seedance 2.5 inputs in the Playground and inspect the prepared request. Review the estimate after choosing references and output settings, then submit when the brief is ready. ### Build with Seedance 2.5 Use the Seedance 2.5 integration guide to prepare a request with your server-side key. Keep the returned task ID so your app can retrieve the same generation after completion. ## Direct the action and its surroundings ### Give Seedance 2.5 time to unfold Give Seedance 2.5 an ordered brief that fits within four to thirty seconds. Describe where the action begins and how it ends, leaving time for the important movement to read. ### A reference for each part of the brief Use the larger Seedance 2.5 reference allowance to separate appearance, setting and movement. Select files that contribute a specific cue instead of adding unrelated examples to fill the available slots. ### An opening and a destination Give Seedance 2.5 a first frame and, optionally, a last frame when those compositions matter. Frame mode uses adaptive aspect ratio and stays separate from the mixed reference collection. ### Review a draft before a final task Seedance 2.5 offers a 480p Draft workflow with a separate 1080p final-generation step. You can inspect the draft before deciding whether to pay for the final task; output choices include MP4 and MOV. ## Briefs that benefit from more time ### A character arriving somewhere Use Seedance 2.5 for a short narrative: a traveler crosses a bridge, pauses and notices a light. Write those beats in order, then review whether the finished clip gives each moment enough space. ### A gradual product reveal Describe a camera passing around an object with Seedance 2.5, including the moment a detail comes into view. Reference images can explain the product’s appearance while your prompt directs the reveal. ### A scene led by sound Bring an audio reference to Seedance 2.5 even when you have no image or video reference. Add a visual brief that belongs with the sound, then review the completed picture and audio together. ## Prepare your first longer take ### Write the sequence Give Seedance 2.5 a subject, setting and ordered action. Make the ending clear enough to judge when the completed video reaches it. ### Choose your visual guidance Select frames or references for Seedance 2.5. Use fixed endpoints for composition, or a media collection when different sources guide appearance, movement and sound. ### Set the output and budget Choose the Seedance 2.5 duration and resolution, then check the current estimate. Keep the first test focused on the part of the brief you most need to evaluate. ### Review and keep the task Watch the complete Seedance 2.5 take for subject continuity and timing. Save the task ID with the settings before revising the scene or preparing a final generation. ## Build with Seedance 2.5 The Seedance 2.5 API guide covers frame inputs, references and the Draft workflow. Submit once and keep the accepted task ID; your app can resume checking that task after a status-query interruption without creating another paid generation. Seedance 2.5 supports text, first and last frames, and image, video and audio references, with output at 480p, 720p, 1080p. Generate up to 30 seconds per request. [Model details and Playground](/models/seedance-2-5). ## Connect to Funny AI [#connect-to-wan-api] Use `https://api.wanapi.app` as the API base URL. Create a key with the **Seedance** model family in [API key settings](/settings/apikeys) and send it as `Authorization: Bearer YOUR_API_KEY`. Keep keys on your server. Playground uses your website session and charges the same account balance; it does not require pasting a key into the browser. Access requires an enabled account with sufficient balance. `GET /v1/models` lists the models available to your key. Seedance models use `POST /v1/videos`; select the model in the JSON body. | Setting | Seedance 2.5 | | --- | --- | | Model ID | `bytedance/seedance-2.5` | | `resolution` | `480p`, `720p`, `1080p`; default: `720p`. | | `duration` | 4–30 output seconds, or `-1` for automatic; default: `-1`. | | `aspectRatio` | `adaptive`, `16:9`, `4:3`, `1:1`, `3:4`, `9:16`, `21:9`; default: `adaptive`. | | `generateAudio` | `true` by default. `false` does not reduce the token rate. | | Output | One video per request, at 24 fps. | The [request fields](#request-fields) describe all 14 top-level fields. Use the field names shown here, including `aspectRatio` and `generateAudio`. ## Submit a Seedance 2.5 task This is a four-second text-to-video request at 720p. Set `WAN_API_KEY` to your Seedance key on the server. Submit once and save the returned `id`. ```bash curl https://api.wanapi.app/v1/videos \ -H "Authorization: Bearer $WAN_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "bytedance/seedance-2.5", "prompt": "A paper boat floats through a sunlit stream. Slow tracking shot.", "resolution": "720p", "aspectRatio": "16:9", "duration": 4, "generateAudio": true }' ``` ## Query a Seedance 2.5 task Save the returned `id` as `TASK_ID`, then query with the same key. Submission returns a task receipt; the video is available after completion. Begin polling every five seconds; see [task statuses and downloads](#poll-and-download-the-video). ```bash curl "https://api.wanapi.app/v1/videos/$TASK_ID" \ -H "Authorization: Bearer $WAN_API_KEY" ``` ## Seedance 2.5 pricing Rates are in USD per one million video tokens. Input and output video tokens determine the final cost. Resolution, duration and reference video inputs affect usage; use the matching rate for requests with or without reference video. Audio has no separate price tier. [View Seedance 2.5 pricing and estimates](/models/seedance-2-5#pricing). Review the estimate in the [Playground](/models/seedance-2-5#playground) before submitting. ## Request fields Send a JSON object. For a new scene, `model` and a non-empty prompt or at least one media input are required; other fields are optional. For a final render, send only `model`, `draftTaskId` and `resolution: "1080p"` (optional `n: 1` and `providerOptions.bytedance.output_format`). Unknown fields are rejected. | Field | Type | Contract | | --- | --- | --- | | `model` | string | Required: `bytedance/seedance-2.5`. | | `draftTaskId` | string | Public ID of your completed Seedance 2.5 draft. For final rendering, send only model, draftTaskId and resolution: `1080p` (optional n: 1 and providerOptions.bytedance.output_format). | | `prompt` | string | Text instructions; up to 20,000 characters on this service. A new scene requires a prompt or media input. Omit this field when using `draftTaskId`. | | `image` | URL or URL object | First-frame image URL, or an object with `type: "url"`, `url` and optional `mediaType`. Use `image` or `frameImages`, not both. | | `frameImages` | array | One `first_frame` and an optional `last_frame`. Each entry has `frameType` and `image`; see the frame example below. | | `inputReferences` | array | Up to 30 images and 10 videos. Each entry has `type: "url"`, `url` and `mediaType`. The `data`/`mediaType` URL form is also accepted. | | `aspectRatio` | string | `adaptive` (default), `16:9`, `4:3`, `1:1`, `3:4`, `9:16`, `21:9`. First-frame modes require adaptive. | | `resolution` | string | `480p`, `720p`, `1080p`. Default: `720p`. Also accepts `854x480`, `1280x720`, `1920x1080` as resolution tiers; use `aspectRatio` to select the shape. | | `duration` | integer | 4–30 output seconds, or `-1` for automatic. Default: `-1`. | | `fps` | integer | Fixed at `24`; omit or send `24`. | | `seed` | integer | Optional; `-1` to `2147483647`. No repeatability guarantee. Do not also specify `providerOptions.bytedance.seed`. | | `generateAudio` | boolean | Generate audio. Default: `true`; disabling it does not change the token rate. | | `n` | integer | Fixed at `1`; one video per request. | | `providerOptions` | object | Optional `bytedance` object: `referenceAudio` (up to 10 HTTP(S) URLs), `seed` (same bounds as top-level `seed`), `draft` (boolean; default `false`; `true` requires `480p`), `output_format` (`mp4` or `mov`; default `mp4`). Unknown options are rejected. | ### Input combinations and media limits - Use `image` for a first frame, or `frameImages` for a first frame and optional last frame. A last frame alone and duplicate frame types are rejected. - Frames cannot be combined with `inputReferences` or `providerOptions.bytedance.referenceAudio`. - Reference mode accepts up to 30 images, 10 videos and 10 audio clips, with at most 50 references in total. - Frame inputs require `aspectRatio: "adaptive"`. Reference audio can be used without an image or video. - Media inputs must be public HTTP(S) URLs. Upload bytes and credential-bearing URLs are not accepted. - Images: JPEG, PNG, WebP, BMP, TIFF or GIF, HEIC or HEIF; below 30 MB; each side 300–6000 pixels; aspect ratio 0.4–2.5. - Videos: MP4 or MOV; at most 200 MB per file; each clip 2–30 seconds and at most 30 seconds combined; 300–6000 pixels per side, aspect ratio 0.4–2.5, 24–60 fps. - Audio: MP3 or WAV; at most 15 MB per file; each clip 2–30 seconds and at most 30 seconds combined. - Remote media size, encoding and duration are checked during processing; URL validation alone cannot guarantee that a file is usable. - Use draftTaskId to render a completed draft at 1080p. Arbitrary native task options are not accepted. ## Frame and reference examples Send these bodies to the same `POST /v1/videos` endpoint. Replace every `example.com` URL with your own directly accessible media URL before submitting. Keep input URLs available until the task finishes. ### First and last frames For a single first frame, use `image: "https://example.com/first-frame.jpg"` and omit `frameImages`. To set both endpoints of the clip, use: ```json { "model": "bytedance/seedance-2.5", "prompt": "The camera slowly moves from the opening scene to the closing scene.", "frameImages": [ { "frameType": "first_frame", "image": "https://example.com/first-frame.jpg" }, { "frameType": "last_frame", "image": "https://example.com/last-frame.jpg" } ], "aspectRatio": "adaptive", "resolution": "720p", "duration": 4 } ``` ### Image, video and audio references Put image and video inputs in `inputReferences`, with an explicit MIME type. Put audio URLs in `providerOptions.bytedance.referenceAudio`. Do not add frame inputs to this request. ```json { "model": "bytedance/seedance-2.5", "prompt": "Use the character from the image and the camera movement from the video.", "inputReferences": [ { "type": "url", "url": "https://example.com/character.jpg", "mediaType": "image/jpeg" }, { "type": "url", "url": "https://example.com/motion.mp4", "mediaType": "video/mp4" } ], "providerOptions": { "bytedance": { "referenceAudio": [ "https://example.com/sound.wav" ] } }, "resolution": "720p", "duration": 4 } ``` ### Draft preview Use `providerOptions.bytedance.draft: true` with `resolution: "480p"` to create a draft. Draft uses the normal 480p token rate. After it completes, use its public task ID for a separate 1080p final render. ```json { "model": "bytedance/seedance-2.5", "prompt": "A paper boat floats through a sunlit stream. Slow tracking shot.", "resolution": "480p", "aspectRatio": "16:9", "duration": 4, "generateAudio": true, "providerOptions": { "bytedance": { "draft": true } } } ``` ### Render a draft at 1080p Send this body to `POST /v1/videos`, using the completed draft’s public `task_…` ID. The draft must belong to your account, use the same model and channel, and be less than 7 days old. This native draft lifetime is separate from video storage retention. ```json { "model": "bytedance/seedance-2.5", "draftTaskId": "task_YOUR_COMPLETED_DRAFT", "resolution": "1080p" } ``` Do not resend prompt, media, duration, aspectRatio, seed, generateAudio, fps, draft or referenceAudio. These settings come from the draft. You may set providerOptions.bytedance.output_format for the final output. The API returns a new task ID; poll `GET /v1/videos/{new_task_id}` for the final video and its Bunny URL. The final render is billed separately at the current 1080p rate and the original draft’s reference-video tier, using actual completion tokens. Polling does not regenerate or charge again. If submission is uncertain, do not automatically resubmit. ## MOV output Set `providerOptions.bytedance.output_format` to `mov` for MOV or `mp4` for MP4 (default). This output option works for a new scene or a draft-to-final request. ```json { "model": "bytedance/seedance-2.5", "prompt": "A red ball on a plain table. Static camera.", "resolution": "480p", "duration": 4, "providerOptions": { "bytedance": { "output_format": "mov" } } } ``` After completion, `videos[0].url` is the signed Bunny URL of the original `.mov` file and `videos[0].mediaType` is `video/quicktime`. MOV is not converted to MP4. Browser playback depends on codec support; download the file if your browser cannot play it. Files are uploaded to Bunny; only file references and task metadata are stored in the database. Base64 media inputs are not accepted. ## Poll and download the video An accepted task returns an object like this. Example IDs and timestamps are illustrative: ```json { "id": "task_EXAMPLE", "object": "video", "model": "bytedance/seedance-2.5", "status": "queued", "progress": 0, "created_at": 1792022400 } ``` Poll `GET /v1/videos/{task_id}` with your API key. The query returns the same public task ID and model. Use `status` to decide when to stop polling; `progress` is not an estimate of remaining time. | Status | Meaning | Next step | | --- | --- | --- | | `queued` | The task has been accepted. | Continue polling. | | `in_progress` | Generation is running. | Continue polling. | | `completed` | The video is ready. | Read `videos[0].url` and download. | | `failed` | Generation failed. | Stop polling and inspect `error`. | A completed query includes `videos`, an array of objects containing `url` and `mediaType`. Timestamps use Unix seconds; `completed_at` appears when completion is recorded. ```json { "id": "task_EXAMPLE", "object": "video", "model": "bytedance/seedance-2.5", "status": "completed", "progress": 100, "created_at": 1792022400, "completed_at": 1792022460, "videos": [ { "url": "/v1/tasks/task_EXAMPLE/artifacts/video/content", "mediaType": "video/mp4" } ] } ``` When the returned URL is a relative path, resolve it against `https://api.wanapi.app` and authenticate with your API key. For the example above: ```bash curl "https://api.wanapi.app/v1/tasks/$TASK_ID/artifacts/video/content" \ -H "Authorization: Bearer $WAN_API_KEY" \ -o video.mp4 ``` If a signed HTTPS media URL is returned, use it directly without forwarding your API key to that host. Result URLs can expire. Save videos you want to keep to your own storage. Polling and downloading an existing result do not create another generation. A failed task includes an `error` object with `code` and `message`, for example: ```json { "id": "task_EXAMPLE", "object": "video", "model": "bytedance/seedance-2.5", "status": "failed", "error": { "code": "generation_failed", "message": "Video generation failed" } } ``` ## Billing and failure handling The final charge follows actual video token usage and the current model rate. The Playground estimate is a maximum estimate, not a fixed quote. Longer clips and larger output resolutions can increase token usage. Failed requests are not charged. - **Invalid parameters:** correct the fields or input combination before submitting again. Check media formats and limits as well as URL syntax. - **Authentication or model access:** use a valid Seedance key enabled for the requested model. - **Insufficient balance:** add funds before a new paid request. A key limit does not add account credit. - **Temporary polling failure:** retry the GET with backoff and a maximum waiting period. A failed query does not mean the generation failed. - **Submission timeout or missing task ID:** the outcome may be unknown. Do not automatically repeat the POST; it could create a second paid task. - **Download failure:** retry the existing result before starting a new generation. Keep the task ID and contact [support](/contact) if an uncertain submission needs investigation. [Download the Seedance 2.5 OpenAPI schema](https://funnyai.io/models/seedance-2-5/openapi.json). ## Seedance 2.5 limits to plan around - Seedance 2.5 outputs up to 1080p. Its longer duration and larger reference allowance do not include the 4K tier offered by standard Seedance 2.0. - Keep frame inputs separate from mixed references in Seedance 2.5. A last frame requires a first frame, and reference-video and reference-audio durations have separate thirty-second totals. - The Seedance 2.5 final-generation step requires an eligible completed draft belonging to your account and outputs 1080p. It is a separate paid task, not a free resolution change. ## Seedance 2.5 questions ### Can Seedance 2.5 generate thirty seconds? Yes. Seedance 2.5 accepts four to thirty seconds or automatic duration. Give the action time to unfold and review the complete result; extra time does not guarantee that every requested event will appear correctly. ### Does Seedance 2.5 have a 4K setting? No. Seedance 2.5 offers 480p, 720p and 1080p. Standard 2.0 has a 4K option; choose around the size and length your edit needs. ### Can Seedance 2.5 start from audio alone? Yes. Seedance 2.5 accepts reference audio without an accompanying reference image or video. You can provide up to ten audio clips with a combined duration of thirty seconds or less, and add a prompt to describe the visual scene you want. ### Is Seedance 2.5 Draft cheaper than normal 480p? Seedance 2.5 Draft uses the same 480p token rate as normal generation. Its value is the separate review step: you can inspect the draft before requesting a paid 1080p final task. Review each estimate separately when planning the total cost. ### Can Seedance 2.5 combine frames and reference clips? Choose one mode for a Seedance 2.5 request. First/last frames define endpoints, while the mixed reference collection supplies other media guidance. Frame generation uses adaptive aspect ratio; use the API guide to prepare the matching request fields. ### Is the bridge video a Seedance 2.5 result? No. The five-second, 480p illustration was generated with standard Wan 3.0. It gives you a scene idea to adapt for Seedance 2.5, with the source identified beside the player. It does not demonstrate this model’s duration, sound or performance. [Seedance 2.5 vs 2.0: time, references and resolution](https://funnyai.io/blog/seedance-2-5-vs-2-0) [Official model page](https://seed.bytedance.com/en/seedance2_5) [Release announcement](https://seed.bytedance.com/en/blog/one-take-creation-flexible-referencing-introducing-seedance-2-5)