API
Seedance 2.0 Fast API
VideoSeedance 2.0 Fast API generates 4–15 second videos at 480p / 720p, using text, first/last frames, or multimodal references. Reference mode accepts up to 9 images, 3 videos and 3 audio files. Each image must be no larger than 30 MB.
Body
application/jsonmodelstringrequiredseedance-2-0-fastinput.promptstringrequiredDescribe the subject, action, scene, lighting, camera movement, and timing. Leading and trailing whitespace is trimmed.
input.frames_imagesstring[]optionalA list of one or two publicly accessible HTTPS image URLs: first frame, then optional last frame. This is a separate generation mode and cannot be combined with reference_images, reference_videos or reference_audios.
With input.frames_images, Seedance 2.0 Fast automatically uses adaptive aspect ratio based on the supplied frames.
Maximum URLs: 2.
Maximum size per image: 30 MB.
Example: ["https://example.com/first-frame.png","https://example.com/last-frame.png"]
input.reference_imagesstring[]optionalA list of publicly accessible HTTPS reference image URLs. May be combined with reference_videos and reference_audios, but never with frames_images. Send URL strings, not uploaded file objects or base64.
Maximum URLs: 9.
Maximum size per image: 30 MB.
Example: ["https://example.com/your-image.png"]
input.reference_videosstring[]optionalA list of publicly accessible HTTPS reference video URLs. Cannot be combined with frames_images. Providing videos changes credit consumption; see the reference-video pricing row and billing formula below.
Maximum URLs: 3.
Example: ["https://example.com/your-video.mp4"]
input.reference_audiosstring[]optionalA list of publicly accessible HTTPS reference audio URLs. May be combined with other reference_* lists, but never with frames_images.
Maximum URLs: 3.
Example: ["https://example.com/your-audio.mp3"]
input.durationintegeroptionalVideo duration in whole seconds, from 4 to 15. Defaults to 5. Credit usage scales with this duration.
Default: 5
input.resolutionstringoptionalOutput video resolution. Use a lowercase value from the list below. Resolution changes the credit rate.
Default: 720p
input.aspect_ratiostringoptionalOutput width-to-height ratio. Defaults to 16:9. Frame inputs can guide the final composition.
Default: 16:9
input.soundbooleanoptionalWhether to generate audio alongside the video. Defaults to false. Send a JSON boolean, not a string.
Default: false
Request examples
Choose one generation mode: omit all media for text-to-video; use frames_images for first/last-frame generation; or combine reference_images, reference_videos and reference_audios for reference-guided generation. frames_images cannot be combined with any reference_* media list. All resources are lists of publicly accessible HTTPS URLs, not file objects or base64. Replace example.com URLs before use. Save data.task_id and poll POST /api/v1/check until completed or failed.
POST /api/v1/createcurl -X POST https://nanobanana.io/api/v1/create \
-H "Authorization: Bearer sk_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2-0-fast",
"input": {
"prompt": "A red vintage car drives along a coastal road at sunset. The camera tracks smoothly beside the car as warm light reflects on the ocean.",
"duration": 5,
"aspect_ratio": "16:9",
"resolution": "720p",
"sound": false
}
}'POST /api/v1/create · HTTP 201{
"data": {
"task_id": "task_example",
"model": "seedance-2-0-fast",
"status": "processing",
"credits": 500
}
}Poll this endpoint using the returned task ID until the task is completed or failed. We recommend polling every 5 seconds to check the latest task status.
POST /api/v1/check{
"task_id": "task_example"
}Response
Task status returned by POST /api/v1/check. The IDs, URLs, and timestamps below are illustrative.
idstringrequiredTask identifier in data.id, matching the task_id used in the check request.
statusstringrequiredfailed_reasonstringoptionalOnly returned when status is failed, to explain the failure. This field is omitted for completed and processing.
Completed · completed
The download URLs are in data.data.results.
POST /api/v1/check · HTTP 200{
"data": {
"id": "task_example",
"created_at": 1791244800,
"model": "seedance-2-0-fast",
"status": "completed",
"data": {
"results": [
"https://example.com/generated.mp4"
],
"processing_time": 120
}
}
}Other statuses
For processing or failed, data.data is null. This example shows failed: only failed includes failed_reason. Continue polling for processing; stop polling for failed.
POST /api/v1/check · HTTP 200{
"data": {
"id": "task_example",
"created_at": 1791244800,
"model": "seedance-2-0-fast",
"status": "failed",
"data": null,
"failed_reason": "Generation failed."
}
}Credit usage
Credits per billable second, by resolution and reference-video mode.
| Generation | 480P | 720P |
|---|---|---|
| Without reference videos | 50 | 100 |
| With reference videos | 30 | 60 |
Each request generates one video. Omitted duration and resolution use the defaults above. Reference-video requests may consume more credits; use the matching row and formula.
Choose the row matching whether reference_videos is present. Total credits = generated video seconds × the selected per-second rate. Images or audio alone use the row without reference videos.
The credits field returned by POST /api/v1/create shows the amount charged for the task.
