Skip to content

Seedance 2.5 API

Cinematic video from text or images.

  • 4 to 30 second clips
  • Draft clips at 480p to check a shot before you render the final
Pricing
ResolutionText or imagesWith video input
480pText or images26.4 Credits/s ($0.132/s)40% less than fal fal price $0.221 per secondWith video input15.8 Credits/s ($0.079/s)
720pText or images56.6 Credits/s ($0.283/s)40% less than fal fal price $0.473 per secondWith video input34 Credits/s ($0.17/s)
1080pText or images136.4 Credits/s ($0.682/s)40% less than fal fal price $1.137 per secondWith video input81.8 Credits/s ($0.409/s)

With video input, both the input and output seconds are billed.

Full pricing ↓All Seedance models

Frames can’t be used with reference media.

  • Image 1https://media.vizoapi.com/samples/seedance-2-5/odyssey-v1/keyframes/monolith.jpg
  • Image 2https://media.vizoapi.com/samples/seedance-2-5/odyssey-v1/keyframes/throw.jpg
  • Image 3https://media.vizoapi.com/samples/seedance-2-5/odyssey-v1/keyframes/tumble.jpg
  • Image 4https://media.vizoapi.com/samples/seedance-2-5/odyssey-v1/keyframes/station.jpg
  • Image 5https://media.vizoapi.com/samples/seedance-2-5/odyssey-v1/keyframes/ending.jpg

Drag items, or press Alt with the up and down arrow keys, to change their order.

A quick, lower-cost 480p preview. Upgrade it to 1080p in Upgrade a draft within 7 days.
Resolution
Between 4 and 30 seconds, or turn on Auto.
The model picks the length, up to 30 s. You pay for the length it makes.
Aspect ratio
Auto matches the shape of your input media. First frame, edit and extend always use Auto.
Adds a synchronized soundtrack.
Advanced
The same seed and settings give a similar result. Leave it empty for a random seed.
Also returns the last frame of the video as an image.

Checking whether you’re signed in.

Sign in to generate. What you enter here, including chosen files, is kept for when you come back.

Example

Pricing

Prices as of 2026-11-09

TierPrice
480p
26.4 Credits/s ($0.132/s)Note 14–30 s
720p
56.6 Credits/s ($0.283/s)Note 14–30 s
1080p
136.4 Credits/s ($0.682/s)Note 14–30 s
480p with video input
480p-video
15.8 Credits/s ($0.079/s)Notes 2, 34–30 s
720p with video input
720p-video
34 Credits/s ($0.17/s)Notes 2, 34–30 s
1080p with video input
1080p-video
81.8 Credits/s ($0.409/s)Notes 2, 34–30 s
  1. Holds Credits for up to 30 seconds and charges the actual length.
  2. The rate applies to input and output seconds.
  3. Holds Credits for up to 30 seconds of output plus up to 30 seconds of input, and charges the actual length.

1 Credit ≈ $0.005. At the standard pack price. Larger packs include bonus Credits, so each Credit costs less.

For 720p, fal charges $0.473/s; VizoAPI charges $0.283/s, 40% less.

Delivery and billing

Output
Finished files are listed in the task result with an asset ID and type for each.
Download
Files are kept for 7 days and downloaded through short-lived signed links. You can delete them any time.
Billing
Credits are held when a task is accepted and charged on delivery. If generation fails, or nothing is delivered within 24 hours, the held Credits are released in full.
Notifications
Poll the task by ID, or use signed webhooks and deduplicate by event_id.
How is it billed?
By output second.
Do failed generations cost anything?
No. If generation fails, or nothing is delivered within 24 hours of acceptance, the held Credits are released in full.

API reference

Create the task once, then poll it by its ID. Full script with upload and download · API reference

Request
API=https://api.vizoapi.com/v1
AUTH="Authorization: Bearer $VIZO_API_KEY"

# Create the task once and keep its ID.
ID=$(curl -fsS $API/generations -H "$AUTH" -H "Content-Type: application/json" \
  -d '{
  "model": "seedance-2-5",
  "input": {
    "content": [
      {
        "type": "text",
        "text": "A 12-second cinematic space opera in four shots, epic and quiet, film grain, natural light.\nShot 1: dawn on a prehistoric savanna, wide low-angle shot. A few early hominids crouch warily around a tall black monolith from the reference image. Its polished face carries an engraved open ring with a gap at the upper right.\nShot 2: slow push-in on the monolith. The amber sun rises behind it and sits exactly in the gap of the ring, completing the symbol. One hominid stands, raises a bleached animal skull with long curved horns, roars and hurls it high into the sky.\nShot 3: slow motion, low angle, the horned skull tumbles high against the blue dawn sky, its curved horns tracing an open ring. Match cut: the tumbling skull becomes the dark grey ring-shaped space station from the reference image, tumbling the same way in black space.\nShot 4: locked-off shot in space. The station slows and stops facing the camera: an open ring with a gap at the upper right, a line of tiny lights along it. An amber planet rises behind it and fills the gap exactly. Hold still.\nSound: wind, distant birds, low growls, a rising deep hum, a roar, the whoosh of the skull, then the silence of space and a long low synth tone. No music, no voices, no text."
      }
    ],
    "resolution": "720p",
    "ratio": "16:9",
    "duration": 5
  },
  "metadata": {
    "client_reference": "my-unique-reference-1"
  }
}' | jq -r .id)

# Poll until the task closes, then read its status and result.
until curl -fsS $API/generations/$ID -H "$AUTH" | jq -e '.closed_at != null' > /dev/null; do sleep 5; done
curl -fsS $API/generations/$ID -H "$AUTH" | jq '{status, result}'
All fields

Send these fields in input. A field the table does not list is refused with HTTP 422 invalid_input.

  • Apart from a draft_task request, content needs at least one text, image or video item.
  • Every image, video and audio item in content names its role.
  • Input limits: up to 30 images, 10 videos and 10 audio items in content, with no limit on the total. Each video and audio item runs 2 to 30 seconds, and an edit source video 4 to 30 seconds. Videos add up to at most 30 seconds, and audio to at most 30 seconds. Lengths are checked before the task is created when the file can be measured (422 input_duration_out_of_range).
  • Image pixel size and aspect ratio, and video resolution and frame rate, are not checked when the request is made: the model checks them when the task runs, and a file it refuses usually fails the task with input_media_invalid (otherwise generation_failed); the task is not charged.
  • first_frame and last_frame images (at most one each) cannot be combined with reference images, videos or audio, and a last_frame needs a first_frame.
  • ratio must be adaptive for first-frame, edit and extend input.
  • omni_reference_task_type may be omitted or auto with a reference video; it is not allowed without video. Automatic task selection holds the maximum output length to cover edit or extend; for edit, duration must be -1.
  • draft set to true needs resolution 480p and cannot be combined with return_last_frame.
  • A draft_task item must be the only item in content, and names a succeeded draft of your project from the last 7 days.
  • A draft_task request reuses the draft's settings: it does not accept duration, ratio, seed, generate_audio, omni_reference_task_type, draft or bitrate_mode, and resolution can only be 1080p.
  • Prompt text must not contain inline --flag parameters.
Request parameters
FieldDescription
contentarray of objectsRequired

Prompt text and media items. Each image, video and audio item names its role.

At least 1 items

content[].typestringRequired

Item kind.

Allowed valuestextimage_urlvideo_urlaudio_urldraft_task
Items where type is text
content[].textstringRequired

Prompt text, up to 4000 characters per item.

At most 4000 characters

Items where type is image_url
content[].rolestringRequired

Image roles: first_frame, last_frame, reference_image. Video: reference_video. Audio: reference_audio.

content[].image_urlobjectRequired
content[].image_url.urlstringRequired

An https URL or an uploaded asset id (ast_...).

At most 4000 characters · Pattern^(https://|ast_)

Items where type is video_url
content[].rolestringRequired

Image roles: first_frame, last_frame, reference_image. Video: reference_video. Audio: reference_audio.

content[].video_urlobjectRequired
content[].video_url.urlstringRequired

An https URL or an uploaded asset id (ast_...).

At most 4000 characters · Pattern^(https://|ast_)

Items where type is audio_url
content[].rolestringRequired

Image roles: first_frame, last_frame, reference_image. Video: reference_video. Audio: reference_audio.

content[].audio_urlobjectRequired
content[].audio_url.urlstringRequired

An https URL or an uploaded asset id (ast_...).

At most 4000 characters · Pattern^(https://|ast_)

Items where type is draft_task
content[].draft_taskobjectRequired

The finished draft to upgrade. Must be the only content item.

content[].draft_task.idstringRequired

Generation id of a succeeded draft (gen_...).

Pattern^gen_

resolutionstringOptional

Output resolution. Defaults to 720p, or 1080p when the content is a draft.

Allowed values480p720p1080p

Default 720p

ratiostringOptional

Output aspect ratio. Must be adaptive for first-frame, edit and extend inputs. Defaults to adaptive.

Allowed values16:94:31:13:49:1621:9adaptive

Default adaptive

durationintegerOptional

Output length in seconds, 4 to 30, or -1 to let the model choose. Defaults to 5. Must be -1 for edit.

Default 5

4 to 30, or -1

generate_audiobooleanOptional

Adds a synchronized soundtrack. Defaults to true.

Default true

seedintegerOptional

Random seed. -1 or omitted picks one at random.

Minimum -1 · Maximum 4,294,967,295

return_last_framebooleanOptional

Also returns the last frame of the video as an image.

output_formatstringOptional

Container format. Only mp4.

Only mp4

bitrate_modestringOptional

Encoding quality. Only standard.

Only standard

draftbooleanOptional

Generates a quick 480p preview that a later request can upgrade to 1080p.

omni_reference_task_typestringOptional

With a reference video, omit or choose auto to infer the task. Reference makes a new video, edit changes the source, and extend lengthens it. Automatic selection holds the maximum output length.

Allowed valuesreferenceeditextendauto
watermarkbooleanOptional

Add a visible watermark. Defaults to false; the tier price is unchanged.

Default false

execution_expires_afterintegerOptional

Execution and delivery deadline in seconds from acceptance. Defaults to 86400. Credits remain held until completion or this deadline.

Default 86400

Minimum 3600 · Maximum 259,200

Full example request and response

A complete create request, the 202 answer and the task once it has succeeded. This input selects the 720p tier at 56.6 Credits per second. For 5 seconds the API holds 283.000 Credits.

Request

{
  "model": "seedance-2-5",
  "input": {
    "content": [
      {
        "type": "text",
        "text": "A paper boat drifting on a pond at dawn, slow dolly in"
      }
    ],
    "resolution": "720p",
    "ratio": "16:9",
    "duration": 5
  },
  "metadata": {
    "client_reference": "my-unique-reference-1"
  }
}

202 Accepted

{
  "id": "gen_01JD8Z5QW3XR",
  "model": "seedance-2-5",
  "source": "api",
  "created_at": "2026-11-08T09:00:00Z",
  "customer_resolution_deadline": "2026-11-09T09:00:00Z",
  "late_result_available": false,
  "metadata": {
    "client_reference": "my-unique-reference-1"
  },
  "status": "processing",
  "execution_status": "processing",
  "delivery_status": "pending",
  "billing_status": "pending",
  "version": 1,
  "price": {
    "unit": "credit",
    "estimated": "283.000",
    "reserved": "0.000",
    "charged": "0.000",
    "refunded": "0.000"
  },
  "allowed_actions": [],
  "closed_at": null,
  "error": null,
  "result": null
}

200 Succeeded

{
  "id": "gen_01JD8Z5QW3XR",
  "model": "seedance-2-5",
  "source": "api",
  "created_at": "2026-11-08T09:00:00Z",
  "customer_resolution_deadline": "2026-11-09T09:00:00Z",
  "late_result_available": false,
  "metadata": {
    "client_reference": "my-unique-reference-1"
  },
  "status": "succeeded",
  "execution_status": "succeeded",
  "delivery_status": "ready",
  "billing_status": "settled",
  "version": 4,
  "price": {
    "unit": "credit",
    "estimated": "283.000",
    "reserved": "0.000",
    "charged": "283.000",
    "refunded": "0.000"
  },
  "allowed_actions": [],
  "closed_at": "2026-11-08T09:01:31Z",
  "error": null,
  "result": {
    "asset_id": "ast_01JD8Z9M2C4V",
    "outputs": [
      {
        "index": 0,
        "asset_id": "ast_01JD8Z9M2C4V",
        "content_type": "video/mp4"
      }
    ]
  }
}

Full API reference for Seedance 2.5