# Seedance 2.5 Video Edit API Documentation > LLM-optimized documentation for Seedance 2.5 Video Edit. Copy into your AI assistant for integration help. ## Overview **Model ID:** `seedance-2-5-video-edit` **Type:** Video Generation **Credit Cost:** 3.5 credits per second (per-second by resolution: 480p: 1.5, 720p: 3.5) Edit or extend an existing video with Seedance 2.5. Replace a subject, add or remove objects, or continue a clip forward or backward, with up to 50 reference materials. ## Endpoint ``` POST https://pixeldojo.ai/api/v1/models/seedance-2-5-video-edit/run ``` ## Authentication All requests require an API key in the Authorization header: ``` Authorization: Bearer YOUR_API_KEY ``` Get your API key: https://pixeldojo.ai/api-platform/api-keys ## Input Parameters | Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | `mode` | enum | Yes | edit | edit changes what happens inside the clip and keeps its length. extend adds new footage before or after it. (Options: edit, extend) | | `prompt` | string | Yes | - | The change you want. Do not write the trigger wording yourself — the server prefixes the canonical phrase for your mode. Tag extra materials as @Image1, @Video2, @Audio1 (the source clip is always @Video1). | | `video_url` | url | Yes | - | The clip to edit or extend. Must be 4-30 seconds. Becomes @Video1. | | `direction` | enum | No | forward | extend only: whether the new footage comes after the clip or before it. (Options: forward, backward) | | `duration` | integer | No | -1 | extend only: length of the result in seconds (4-30), or -1 to let the model choose. Ignored in edit mode, where the provider requires -1 and matches the source length. (min: -1, max: 30) | | `reference_images` | array | No | - | Up to 30 extra images, e.g. the face or product to paste into the shot. | | `reference_videos` | array | No | - | Up to 9 extra clips alongside the source (10 videos total, 30s combined). | | `reference_audios` | array | No | - | Up to 10 audio tracks, e.g. a voice to match. | | `resolution` | enum | No | 720p | Output resolution. Seedance 2.5 supports 480p and 720p only. (Options: 480p, 720p) | | `generate_audio` | boolean | No | true | Generate a native audio track. | | `thinking` | boolean | No | false | Let the model reason about the prompt before generating. Costs no extra credits. Off by default. | ## Capabilities - Image to Video - Audio Generation - NSFW Content ## Quick Start ### 1. Submit a Job ```bash curl -X POST "https://pixeldojo.ai/api/v1/models/seedance-2-5-video-edit/run" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "mode": "edit", "video_url": "https://pixeldojo.ai/example.mp4", "prompt": "give the car a glossy red paint job" }' ``` **Response:** ```json { "jobId": "job_abc123...", "status": "pending", "statusUrl": "https://pixeldojo.ai/api/v1/jobs/job_abc123", "creditCost": 35, "creditsRemaining": 95 } ``` ### 2. Poll for Results ```bash curl "https://pixeldojo.ai/api/v1/jobs/job_abc123" \ -H "Authorization: Bearer YOUR_API_KEY" ``` **Completed Response:** ```json { "jobId": "job_abc123...", "status": "completed", "output": { "video": "https://temp.pixeldojo.ai/..." }, "creditCost": 35 } ``` ## Python Example ```python import requests import time API_KEY = "YOUR_API_KEY" # Submit job response = requests.post( "https://pixeldojo.ai/api/v1/models/seedance-2-5-video-edit/run", headers={ "Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json" }, json={ "mode": "edit", "video_url": "https://pixeldojo.ai/example.mp4", "prompt": "give the car a glossy red paint job" } ) job = response.json() job_id = job["jobId"] # Poll for completion while True: status_response = requests.get( f"https://pixeldojo.ai/api/v1/jobs/{'{job_id}'}", headers={"Authorization": f"Bearer {API_KEY}"} ) status = status_response.json() if status["status"] == "completed": print("Output:", status["output"]) break elif status["status"] == "failed": print("Error:", status.get("error")) break time.sleep(2) ``` ## JavaScript Example ```javascript const API_KEY = 'YOUR_API_KEY'; // Submit job const submitResponse = await fetch('https://pixeldojo.ai/api/v1/models/seedance-2-5-video-edit/run', { method: 'POST', headers: { 'Authorization': `Bearer ${API_KEY}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ "mode": "edit", "video_url": "https://pixeldojo.ai/example.mp4", "prompt": "give the car a glossy red paint job" }) }); const job = await submitResponse.json(); // Poll for completion const pollForResult = async (jobId) => { while (true) { const statusResponse = await fetch(`https://pixeldojo.ai/api/v1/jobs/${jobId}`, { headers: { 'Authorization': `Bearer ${API_KEY}` } }); const status = await statusResponse.json(); if (status.status === 'completed') return status.output; if (status.status === 'failed') throw new Error(status.error); await new Promise(r => setTimeout(r, 2000)); } }; const output = await pollForResult(job.jobId); console.log('Output:', output); ``` ## Error Codes | Code | Status | Description | |------|--------|-------------| | `unauthorized` | 401 | Invalid or missing API key | | `insufficient_credits` | 402 | Not enough credits | | `invalid_request` | 400 | Invalid parameters | | `model_not_found` | 404 | Model ID not found | | `rate_limited` | 429 | Too many requests | | `internal_error` | 500 | Server error | ## Links - **Full Documentation:** https://pixeldojo.ai/api-platform/seedance-2-5-video-edit - **API Keys:** https://pixeldojo.ai/api-platform/api-keys - **Buy Credits:** https://pixeldojo.ai/api-platform/buy-credits - **All Models:** https://pixeldojo.ai/api/v1/models - **OpenAPI Spec:** https://pixeldojo.ai/api/openapi