Skip to main content
Seedance 2.0 is ByteDance’s latest video generation model available through Upmore API. It supports text-to-video, image-to-video, multimodal reference input, video editing, video extension, and synchronized audio generation.

Key capabilities

FeatureDescription
Text-to-videoGenerate video from text prompts
Image-to-video (first frame)Use an image as the first frame
Image-to-video (first + last frame)Use two images as first and last frames
Multimodal referenceCombine images, videos, and audio as references (1–9 images, up to 3 videos, up to 3 audio clips)
Video editingModify elements in an existing video using reference images
Video extensionExtend and concatenate reference videos
Audio generationAuto-generate synchronized voice, sound effects, and background music
Web searchEnhance generation with real-time internet content (text-to-video only)
Return last frameRetrieve the last frame of generated video

Output specifications

PropertyValue
Resolution480p, 720p, 1080p
Aspect ratio16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive
Duration4–15 seconds
Formatmp4

Workflow

1. POST /v1/video/generations  →  task_id
2. Poll GET /v1/video/generations/{task_id}  →  status
3. When status = "succeeded"  →  download video URL (valid 24 hours)

Examples

Text-to-video

curl https://api.upmore.net/v1/video/generations \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance",
    "content": [
      {
        "type": "text",
        "text": "A cat playing piano in a sunlit room, cinematic lighting"
      }
    ],
    "generate_audio": true,
    "ratio": "16:9",
    "duration": 8
  }'
import requests
import time

headers = {"Authorization": "Bearer YOUR_API_KEY", "Content-Type": "application/json"}

# Step 1: create task
resp = requests.post(
    "https://api.upmore.net/v1/video/generations",
    headers=headers,
    json={
        "model": "seedance",
        "content": [
            {"type": "text", "text": "A cat playing piano in a sunlit room, cinematic lighting"}
        ],
        "generate_audio": True,
        "ratio": "16:9",
        "duration": 8
    }
)
task_id = resp.json()["task_id"]

# Step 2: poll for result
while True:
    result = requests.get(
        f"https://api.upmore.net/v1/video/generations/{task_id}",
        headers=headers
    ).json()
    status = result["data"]["status"]
    if status == "SUCCESS":
        print("Video URL:", result["data"]["data"]["content"]["video_url"])
        break
    elif status == "FAILED":
        print("Failed:", result["data"].get("fail_reason"))
        break
    time.sleep(5)

Multimodal reference (image + video + audio)

cURL
curl https://api.upmore.net/v1/video/generations \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance",
    "content": [
      {
        "type": "text",
        "text": "Extend the video with a smooth camera pan, festive atmosphere"
      },
      {
        "type": "image_url",
        "image_url": {"url": "https://example.com/character.jpg"},
        "role": "reference_image"
      },
      {
        "type": "video_url",
        "video_url": {"url": "https://example.com/clip.mp4"},
        "role": "reference_video"
      },
      {
        "type": "audio_url",
        "audio_url": {"url": "https://example.com/bgm.mp3"},
        "role": "reference_audio"
      }
    ],
    "generate_audio": true,
    "ratio": "16:9",
    "duration": 11
  }'

Video editing

cURL
curl https://api.upmore.net/v1/video/generations \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance",
    "content": [
      {
        "type": "text",
        "text": "Replace the water bottle in the video with the perfume bottle from the image, keep camera movement unchanged"
      },
      {
        "type": "image_url",
        "image_url": {"url": "https://example.com/perfume.jpg"},
        "role": "reference_image"
      },
      {
        "type": "video_url",
        "video_url": {"url": "https://example.com/original.mp4"},
        "role": "reference_video"
      }
    ],
    "generate_audio": true,
    "ratio": "16:9",
    "duration": 5
  }'

Web search enhanced (text-to-video only)

cURL
curl https://api.upmore.net/v1/video/generations \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance",
    "content": [
      {
        "type": "text",
        "text": "Macro shot of cherry blossoms in spring, petals falling slowly"
      }
    ],
    "generate_audio": true,
    "ratio": "16:9",
    "duration": 11,
    "tools": [{"type": "web_search"}]
  }'

Parameters

ParameterTypeRequiredDescription
modelstringYesseedance
contentarrayYesInput content array (text, image_url, video_url, audio_url items)
content[].typestringYestext, image_url, video_url, or audio_url
content[].textstringText itemsText prompt (max 500 Chinese chars / 1000 English words)
content[].image_url.urlstringImage itemsImage URL, Base64 data URI, or asset://<ID>
content[].video_url.urlstringVideo itemsVideo URL or asset://<ID> (mp4/mov, max 50 MB, 2–15s)
content[].audio_url.urlstringAudio itemsAudio URL, Base64 data URI, or asset://<ID> (wav/mp3, max 15 MB)
content[].rolestringConditionalfirst_frame, last_frame, reference_image, reference_video, reference_audio
generate_audiobooleanNoGenerate synchronized audio. Default: true
resolutionstringNo480p, 720p, or 1080p. Default: 720p
ratiostringNo16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive. Default: adaptive
durationintegerNo4–15 seconds. Default: 5
toolsarrayNo[{"type": "web_search"}] for web search (text-to-video only)
watermarkbooleanNoAdd watermark. Default: false

Input modes

ModeContent itemsrole values
Text-to-video1× text
Image-to-video (first frame)text (optional) + 1× image_urlfirst_frame or omit
Image-to-video (first + last frame)text (optional) + 2× image_urlfirst_frame + last_frame
Multimodal referencetext (optional) + image/video/audioreference_image, reference_video, reference_audio
Video editingtext + image_url + video_urlreference_image + reference_video
Video extensiontext + video_url(s)reference_video
Note: First frame, first+last frame, and multimodal reference are mutually exclusive — do not mix them in the same request.

Resolution pixel values

Resolution16:94:31:13:49:1621:9
480p864x496752x560640x640560x752496x864992x432
720p1280x7201112x834960x960834x1112720x12801470x630
1080p1920x10801664x12481440x14401248x16641080x19202208x944