# Seedance 2.5 Draft to Final > Turn a Seedance 2.5 draft (a 480p preview made with draft=true) into the final 1080p video. The final reuses the draft's prompt, reference media, duration, aspect ratio, seed and audio setting, so what you approved in the draft is what you get. Drafts can be finalized for 7 days. Served directly from BytePlus ModelArk. - **Provider**: byteplus-draft - **Model ID**: bytedance/seedance-2.5/draft-to-final - **Category**: video_generation - **Credits**: from 31,710 for the default configuration — varies by input, see Pricing - **Pricing Type**: input_based ## API Endpoint Base URL: https://api.core.today/v1 ### Create Prediction POST /predictions ### Get Status GET /predictions/{job_id} ### Cancel DELETE /predictions/{job_id} ## Authentication Header: `X-API-Key: YOUR_API_KEY` ## Input Parameters - `draft_job_id` (string, **required**): job_id of a completed Seedance 2.5 draft (POST /predictions with model bytedance/seedance-2.5 and draft=true), created by your team within the last 7 days. The prompt, reference media, duration, aspect ratio, seed and audio setting are reused from the draft and cannot be changed here. - `output_format` (string, optional): Output video container format. Not reused from the draft - omitted means mp4. (Default: `mp4`; Options: `mp4`, `mov`) - `watermark` (boolean, optional): Add a watermark. Not reused from the draft - omitted means no watermark. (Default: `false`) ## Example Request ```json { "model": "bytedance/seedance-2.5/draft-to-final", "input": { "draft_job_id": "YourDraftJobId0123456789abcdefAB" } } ``` ## Response Format ```json { "job_id": "abc123", "status": "pending", "provider": "byteplus-draft", "model": "bytedance/seedance-2.5/draft-to-final", "created_at": "2026-01-01T00:00:00Z", "result": null, "error": null, "credits_used": null } ``` Status values: `pending`, `processing`, `completed`, `failed`, `cancelled` When the job is `completed`, `result` holds the output URL(s) or data and `credits_used` the net credits charged. When it is `failed`, `error` and `error_code` say why and the charge is refunded. ## Usage Flow 1. POST /predictions with model and input → receive job_id 2. Poll GET /predictions/{job_id} until status is `completed` or `failed` 3. Result contains output URL(s) or data ## Pricing Charged by input. Rules are checked top to bottom and the first match applies: - When `_draft_has_video` = `false`: 1,335.21495 credits per unit (`_draft_billable_seconds`, 4–30, default 30) - When `_draft_has_video` = `true`: 798.87465 credits per unit (`_draft_billable_seconds`, 8–60, default 60) - Otherwise: 1,335.21495 credits per unit (`_draft_billable_seconds`, 4–30, default 30) Default configuration: 31,710 credits. These are list prices. The amount charged is rounded, and large charges are discounted progressively. `POST /predictions/estimate` with the same `model` and `input` returns the charge for that input without creating a job (an estimate when the price depends on the output). ## Output Type url ## Tags bytedance, seedance, video-generation, draft-mode, 1080p ## Documentation https://docs.byteplus.com/en/docs/modelark/seedance-2-5#2.5_draft_mode