Generate
REST APIModel Specifics

Seedance 2.5

Adaptive framing and length, and a 480p draft before the 1080p final.

Adaptive aspect ratio

Set video_config.aspect_ratio to "adaptive" to let the model choose the framing from your prompt and references. T2V and R2V also take the fixed ratios. I2V follows the source image, so it takes "adaptive" only.

Adaptive duration

For T2V and I2V, set video_config.duration_secs to -1 to let the model choose how long the video is, between 4 and 30 seconds. You are only charged for what's generated.

For R2V, -1 instead edits the first reference video and keeps its length. It needs a reference video and aspect_ratio: "adaptive".

Draft mode

Make a quick 480p draft to check the scene, shots, and motion. When it looks right, turn it into a 1080p final. The final reuses the draft's prompt, references, named subjects, duration, aspect ratio, seed, and audio.

Draft mode works for text-to-video, image-to-video, and reference-to-video (T2V, I2V, R2V). The draft and the final are billed as normal videos at 480p and 1080p. See Pricing for the rates.

The Python client doesn't send these fields yet, so call POST /api/v0/generate directly.

Parameters

FieldTypeDescription
draftbooleantrue to make a 480p draft.
draft_source_task_idstringThe draft's task_id, to make its 1080p final.

1. Make the draft

Set draft to true and video_config.height to 480.

curl https://api.machgen.ai/api/v0/generate \
  -H "Authorization: Bearer $MACHGEN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "Seedance-2.5",
    "task_type": "T2V",
    "prompt": "A paper boat crossing a rain-soaked neon street at night",
    "draft": true,
    "video_config": {
      "duration_secs": 5,
      "height": 480,
      "aspect_ratio": "16:9"
    }
  }'

For image-to-video and reference-to-video, pass src_image_urls (and subject_to_image_ids for @ names) as you normally would.

Poll GET /api/v0/tasks/{task_id} until it's COMPLETED. A draft has metadata.draft set to true:

{
  "task_id": "t-draft",
  "status": "COMPLETED",
  "metadata": {
    "model": "Seedance-2.5",
    "task_type": "T2V",
    "height": 480,
    "draft": true
  }
}

2. Make the final

Send a new request with draft_source_task_id set to the draft's task_id. Leave draft out.

prompt and video_config are still required, but the draft's settings replace them and the video renders at 1080p. A fixed aspect ratio keeps its shape, so 16:9 becomes 1920x1080. adaptive stays adaptive.

curl https://api.machgen.ai/api/v0/generate \
  -H "Authorization: Bearer $MACHGEN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "Seedance-2.5",
    "task_type": "T2V",
    "prompt": "A paper boat crossing a rain-soaked neon street at night",
    "draft_source_task_id": "t-draft",
    "video_config": {
      "duration_secs": 5,
      "height": 1080,
      "aspect_ratio": "16:9"
    }
  }'

Poll the final like any other task. It doesn't have metadata.draft.

Error Codes

Each of these returns 400 Bad Request:

detailWhen
Draft is only available for Seedance 2.5 videodraft is true on another model, or on a task type other than T2V, I2V, or R2V.
Draft videos are 480pdraft is true with a height other than 480.
Draft task was not founddraft_source_task_id is missing or isn't one of your tasks.
Final videos start from a Seedance 2.5 draftThe source task isn't a Seedance 2.5 draft.
The draft video is not readyThe draft hasn't reached COMPLETED yet.