Seedance Video Generation API: Text-to-Video, Image-to-Video, First and Last Frames, Real-Person References—All in One API

Seedance is a video generation model from ByteDance's Doubao series. It is highly practical for domestic content scenarios: it understands Chinese prompts well, produces stable image-to-video results, and also supports uploading real-person photos as "character references," allowing the same person to appear in entirely new scenes.

This article explains how to use the Seedance API on Ace Data Cloud. The endpoint is POST https://api.acedata.cloud/seedance/videos, and the documentation is available at platform.acedata.cloud/documents/seedance-videos. You can call it by getting a Token from the console, and the first application includes free credits.

First, See Real Outputs and Real Costs

The clip below is a cinematic short generated with Seedance (a paper boat drifting on the water). The actual cost recorded by the platform for this call was 5.7 credits—not an estimate, but the amount actually deducted for this request.

📹 https://cdn.acedata.cloud/de34c29169.mp4

Basic Usage: Text-to-Video

Seedance has a slightly different input structure from other video APIs—prompts, reference images, and reference audio/videos are all placed in a single content array, with each item distinguished by type. The simplest text-to-video request includes only one type: text item:

curl -X POST 'https://api.acedata.cloud/seedance/videos' \
  -H 'authorization: Bearer {token}' \
  -H 'accept: application/json' \
  -H 'content-type: application/json' \
  -d '{
    "model": "doubao-seedance-2-0-fast-260128",
    "content": [
      {"type": "text", "text": "A white paper boat drifts on a calm dark water surface at dusk, cinematic reflection, gentle ripples, slow dolly-in, moody lighting."}
    ],
    "resolution": "720p",
    "ratio": "16:9",
    "duration": 5,
    "async": true
  }'

Video generation takes 1–2 minutes; add "async": true to immediately receive a task_id:

{
  "success": true,
  "task_id": "dc7cceb5-3c12-4de7-a5f4-abcbba3e8e39",
  "trace_id": "b3b09de3-b7fa-4bb0-88b5-aad4b4a96fd4"
}

Then poll /seedance/tasks; when the task is complete, data.status will be succeeded, and data.video_url will be the finished output:

curl -X POST 'https://api.acedata.cloud/seedance/tasks' \
  -H 'authorization: Bearer {token}' \
  -H 'content-type: application/json' \
  -d '{"id": "dc7cceb5-3c12-4de7-a5f4-abcbba3e8e39", "action": "retrieve"}'
{
  "success": true,
  "task_id": "dc7cceb5-3c12-4de7-a5f4-abcbba3e8e39",
  "data": {
    "task_id": "cgt-20251222072003-x2259",
    "status": "succeeded",
    "video_url": "https://cdn.acedata.cloud/assets/examples/seedance/036f24ed-a9b1-49b3-92c4-30049a3bc152-102bf9f98e35.mp4",
    "model": "doubao-seedance-2-0-fast-260128"
  }
}

Image-to-Video: First Frame / First and Last Frames

To animate an image, add an item with type: image_url in content. Note that image_url must be in object format {"url": "https://..."}; you cannot pass a string directly, or it will return a 400 error.

Upload only one image → first-frame mode, where the video begins moving from that image. Upload two images and label them role: first_frame and role: last_frame respectively → first-and-last-frame mode, where the video transitions from the first image to the second:

{
  "model": "doubao-seedance-1-0-pro-250528",
  "content": [
    {"type": "text", "text": "360-degree shot"},
    {"type": "image_url", "role": "first_frame", "image_url": {"url": "https://.../first.jpg"}},
    {"type": "image_url", "role": "last_frame",  "image_url": {"url": "https://.../last.jpg"}}
  ]
}

Omni-Modal References and Video Editing (Seedance 2.0 / 2.5)

The Seedance 2.0 series can combine character, audio, and video references; Seedance 2.5 (doubao-seedance-2-5-260628) further supports up to 30 reference images, 10 videos, 10 audio clips, audio-only references, as well as editing or extending reference videos.

{
  "model": "doubao-seedance-2-0-fast-260128",
  "content": [
    {"type": "text", "text": "The same woman wearing a beige coat walks through a sunny autumn park, golden leaves falling around her, she smiles softly at the camera, cinematic tracking shot."},
    {"type": "image_url", "role": "reference_image", "image_url": {"url": "https://.../portrait.jpg"}}
  ],
  "resolution": "720p",
  "ratio": "9:16",
  "duration": 5
}

A few key points:

  • The three scenarios—first frame, first and last frames, and omni-modal references—are mutually exclusive: first_frame / last_frame cannot be mixed with reference_image / reference_video / reference_audio;
  • The 2.5 omni_reference_task_type can be set to auto, reference, edit, or extend;
  • Please upload only real-person, character, audio, and video materials that you own or are authorized to use.

If you want the person to precisely reproduce the composition in the photo (rather than "the same person in a different scene"), use first_frame so that the video begins moving from that photo.

Common Parameter Quick Reference

  • model: 1.x, 1.5, 2.0, and doubao-seedance-2-5-260628;
  • resolution: 480p / 720p / 1080p; 2.0 Standard additionally supports 4k;
  • ratio: 16:9 / 9:16 / 1:1 / 4:3 / 3:4 / 21:9 / adaptive;
  • duration: 4–15 seconds for 2.0, 4–30 seconds for 2.5; both support -1 for automatic duration;
  • generate_audio: 1.5 Pro and 2.x support generating videos with sound;
  • callback_url: Asynchronous callback URL; the platform POSTs the result there when the task is complete (you can also use async + polling).

What You Can Build with It

  • Vertical short videos: ratio: 9:16 directly produces vertical versions adapted for Douyin/Xiaohongshu. Combined with 2.0's real-person reference, it can enable a fixed on-camera persona to batch-produce content;
  • E-commerce and products: use first-frame mode to rotate/display product images, or first-and-last-frame mode to create a "form change" demonstration;
  • Short films with sound: use doubao-seedance-1-5-pro-251215 + generate_audio to generate a video with ambient sound in one step.

Among these use cases, "real-person short videos with stable on-camera appearances" are especially valuable—it is the most difficult part for content accounts to continuously supply. Put the link to the tool you use in your profile, and earn commissions from the consumption of users who register through you via the Ace Data Cloud Monetization Alliance; this is a revenue stream beyond content. Or package this asynchronous generation workflow into a tool and sell it to merchants who need to produce short videos in batches, with the cost being the platform's usage-based billing (such as the 5.7 credits for the example above).

First use the free credits to run a text-to-video generation, then try the real-person reference; you will have a more concrete judgment of what it can do.