Seedance 2.5 AI Video Generator
POST /api/v1/seedance-2-5-ai-video-generator/submit
Required inputs
Required inputs depend on the selected mode. Check the mode rules below before submitting.
Edit the sample inputs for your own task before submitting.
# Set VIDMAGE_IDEMPOTENCY_KEY to a unique value for this task; preserve it for transport retries.
curl -X POST "https://vidmage.ai/api/v1/seedance-2-5-ai-video-generator/submit" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Idempotency-Key: ${VIDMAGE_IDEMPOTENCY_KEY}" \
-H "Content-Type: application/json" \
-d '{"prompt":"A cinematic tea-garden commercial at dusk, with a slow camera drift and native audio for wind in the leaves","duration":"5","aspectRatio":"adaptive","resolution":"720p","sound":true,"webSearch":false,"returnLastFrame":false,"bitrateMode":"standard","seed":-1,"outputFormat":"mp4"}'
# -> { "success": true, "taskId": "...", "creditsConsumed": ... }Parameters and input rules18 fields
| Field | Type | Required | Default | Meaning and limits |
|---|---|---|---|---|
prompt | string | No | Not specified | Text prompt describing the video to generate (max 20480 chars). Optional only in provider modes whose image input fully defines the generation. Maximum length: 20480 |
imageUrl | string | No | Not specified | Optional input image URL. When provided, the task runs in image-to-video mode. No additional field constraint listed. |
imageUrls | string[] | No | Not specified | Optional multimodal reference images. Public URLs only; 50 MB per file. Maximum items: 30 |
videoUrls | string[] | No | Not specified | Optional multimodal reference videos. Each video is 4–30 seconds and 50 MB max. Maximum items: 10 |
audioUrls | string[] | No | Not specified | Optional multimodal reference audio. Each audio is 2–30 seconds and 50 MB max. Maximum items: 10 |
lastFrameUrl | string | No | Not specified | Optional public URL for the final frame in image-to-video mode. No additional field constraint listed. |
duration | string | No | "5" | Video duration in seconds. Values: "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" · Default: "5" |
aspectRatio | string | No | "adaptive" | Output aspect ratio. Values: "adaptive", "16:9", "4:3", "1:1", "3:4", "9:16", "21:9" · Default: "adaptive" |
resolution | string | No | "720p" | Output resolution tier. Values: "480p", "720p", "1080p", "2k", "4k" · Default: "720p" |
sound | boolean | No | true | Generate synchronized audio along with the video. No separate sound surcharge is configured. Default: true |
webSearch | boolean | No | false | Enable web-search enhancement for text-to-video generation. Default: false |
returnLastFrame | boolean | No | false | Return the generated video's last frame as an additional output. Default: false |
bitrateMode | string | No | "standard" | Output bitrate. High mode produces a file approximately 3–5 times larger than standard. Values: "standard", "high" · Default: "standard" |
seed | number | No | -1 | Seed for reproducible generation. Use -1 for a random seed. Default: -1 · Minimum: -1 · Maximum: 2147483647 · Multiple of: 1 · Whole numbers only |
outputFormat | string | No | "mp4" | Output video format. MP4 offers broad compatibility; MOV preserves higher color precision for editing. Values: "mp4", "mov" · Default: "mp4" |
realPersonMode | boolean | No | true | Allow the provider to convert supported real-person references into generation assets. Default: true |
conversionSlots | string[] | No | ["all"] | Choose which image slots should be converted into real-person assets. Item values: "all", "firstFrameUrl", "lastFrameUrl", "image1", "image2", "image3", "image4", "image5", "image6", "image7", "image8", "image9", "image10", "image11", "image12", "image13", "image14", "image15", "image16", "image17", "image18", "image19", "image20", "image21", "image22", "image23", "image24", "image25", "image26", "image27", "image28", "image29", "image30", "video1", "video2", "video3", "video4", "video5", "video6", "video7", "video8", "video9", "video10" · Default: ["all"] · Maximum items: 41 |
omniReferenceTaskType | string | No | "auto" | Fixed-duration reference generation. Video editing and extension are temporarily unavailable. Values: "auto", "reference" · Default: "auto" |
Mode-specific fields & media limits
Text To Video rules
| Control | Mode-specific rule |
|---|---|
prompt | Required; minimum 1 characters; maximum 20480 characters |
duration | Values: "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"; mode default: "5" |
aspectRatio | Values: "adaptive", "16:9", "4:3", "1:1", "3:4", "9:16", "21:9"; mode default: "adaptive" |
resolution | Values: "480p", "720p", "1080p", "2k", "4k"; mode default: "720p" |
sound | Boolean control; default true |
webSearch | Default: false |
returnLastFrame | Default: false |
bitrateMode | Values: "standard", "high"; Default: "standard" |
seed | Range: -1 to 2147483647; Default: -1 |
outputFormat | Values: "mp4", "mov"; Default: "mp4" |
Image To Video rules
| Control | Mode-specific rule |
|---|---|
prompt | Optional; minimum 0 characters; maximum 20480 characters |
duration | Values: "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"; mode default: "5" |
aspectRatio | Values: "adaptive"; mode default: "adaptive" |
resolution | Values: "480p", "720p", "1080p", "2k", "4k"; mode default: "720p" |
sound | Boolean control; default true |
imageUrl | Image input |
lastFrameUrl | Optional final-frame image input |
returnLastFrame | Default: false |
bitrateMode | Values: "standard", "high"; Default: "standard" |
seed | Range: -1 to 2147483647; Default: -1 |
outputFormat | Values: "mp4", "mov"; Default: "mp4" |
realPersonMode | Default: true |
conversionSlots | Maximum items: 3; Default: ["all"] |
Multimodal Video rules
| Control | Mode-specific rule |
|---|---|
prompt | Required; minimum 1 characters; maximum 20480 characters |
duration | Values: "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"; mode default: "25" |
aspectRatio | Values: "adaptive", "16:9", "4:3", "1:1", "3:4", "9:16", "21:9"; mode default: "adaptive" |
resolution | Values: "480p", "720p", "1080p", "2k", "4k"; mode default: "720p" |
sound | Boolean control; default true |
imageUrls | Image input; up to 30 items |
videoUrls | Video references; up to 10 items |
audioUrls | Audio references; up to 10 items |
returnLastFrame | Default: false |
bitrateMode | Values: "standard", "high"; Default: "standard" |
seed | Range: -1 to 2147483647; Default: -1 |
outputFormat | Values: "mp4", "mov"; Default: "mp4" |
realPersonMode | Default: true |
conversionSlots | Maximum items: 41; Default: ["all"] |
omniReferenceTaskType | Values: "auto", "reference"; Default: "auto" |
Retrieve the result
Save taskId from the accepted submission and send it to this endpoint:
POST /api/v1/seedance-2-5-ai-video-generator/query
Use the same Bearer API key. On completion, read the videoUrl result field.
curl -X POST "https://vidmage.ai/api/v1/seedance-2-5-ai-video-generator/query" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "taskId": "TASK_ID_FROM_SUBMIT" }'
# -> { "success": true, "data": { "status": "...", "videoUrl": "https://..." } }