Seedance is Volcengine's video generation model, supporting text-to-video, image-to-video, and video-to-video modes.

Available models

Supported unified parameters

Unified fieldSupportedDescription
modelYesmodel
promptYescontent[]{ type: "text", text }
imageYescontent[]image_url entries
videoYescontent[]video_url entries
audioYescontent[]audio_url entries
ratioYesratio
resolutionYesresolution
headersYesCustom HTTP headers

upstream_options for Seedance

OptionTypeDescription
callback_urlstringCallback URL
return_last_framebooleanReturn last frame
service_tier'default' | 'flex'Service tier
execution_expires_afternumberExecution expiry
generate_audiobooleanGenerate audio
draftbooleanDraft mode
toolsArray<{ type: string }>Tool definitions
safety_identifierstringSafety identifier
prioritynumberPriority
durationnumberVideo duration
framesnumberFrame count
seednumberRandom seed
camera_fixedbooleanFixed camera
watermarkbooleanWatermark toggle

Media input mapping

Media input parameter handling:

User inputResult
image: "https://..."{ "type": "image_url", "image_url": { "url": "..." }, "role": "reference_image" }
image: { "type": "first_frame", "url": "..." }{ "type": "image_url", "image_url": { "url": "..." }, "role": "first_frame" }
video: "https://..."{ "type": "video_url", "video_url": { "url": "..." }, "role": "reference_video" }
video: { "type": "reference_video", "url": "..." }{ "type": "video_url", "video_url": { "url": "..." }, "role": "reference_video" }
audio: "https://..."{ "type": "audio_url", "audio_url": { "url": "..." }, "role": "reference_audio" }
audio: { "type": "reference_audio", "url": "..." }{ "type": "audio_url", "audio_url": { "url": "..." }, "role": "reference_audio" }

Arrays are expanded per entry. Strings use the default role. Objects use their type field as the role.

Example: Text-to-video

curl -X POST https://51kik.com/video/v1/generations \
  -H 'Authorization: Bearer sk-xxxxxxxx' \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "doubao-seedance-1-0-pro-250528",
    "prompt": "A golden retriever running on the beach, sunset backlight, slow motion",
    "resolution": "720p",
    "ratio": "16:9",
    "upstream_options": {
      "duration": 5,
      "watermark": false,
      "service_tier": "default"
    }
  }'

Example: Video input

curl -X POST https://51kik.com/video/v1/generations \
  -H 'Authorization: Bearer sk-xxxxxxxx' \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "doubao-seedance-1-0-pro-250528",
    "prompt": "Generate a sequel based on the reference video, keep characters and setting consistent",
    "video": { "type": "reference_video", "url": "https://example.com/reference.mp4" },
    "resolution": "720p",
    "upstream_options": { "duration": 5 }
  }'

Example: Multi-modal (image + video + audio)

curl -X POST https://51kik.com/video/v1/generations \
  -H 'Authorization: Bearer sk-xxxxxxxx' \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "doubao-seedance-1-0-pro-250528",
    "prompt": "Generate a commercial based on the first frame, reference video, and background music",
    "image": { "type": "first_frame", "url": "https://example.com/first.jpg" },
    "video": "https://example.com/reference.mp4",
    "audio": "https://example.com/bgm.mp3",
    "resolution": "1080p",
    "ratio": "16:9",
    "upstream_options": {
      "duration": 8,
      "generate_audio": true,
      "watermark": false
    }
  }'

Billing

Seedance uses billingMethod: "modality_tokens":

Request has video inputCustomer price fieldUsage field
Nooutput_tokens_pricingusage.output_tokens
Yesinput_video_output_tokens_pricingusage.output_tokens

has_input_video is determined solely by the video field in the request body: any non-empty string, non-empty URL object, or valid video entry in an array counts as true.