Vidu Q4 image-to-video request, field by field, as a Sume body

Vidu Q4 Preview is not in Sume's video catalog (read 2026-10-09). Map its img2video fields to POST /v1/videos on seedance-2.5 or wan-3.0.

4 min readSume
All posts

Vidu Q4 Preview is not listed in Sume's video catalog (catalog read 2026-10-09), so you cannot send viduq4-preview to POST /v1/videos. You can move an image-to-video call to seedance-2.5 or wan-3.0 by renaming about eight fields. The table shows each one.

What does the Vidu Q4 image-to-video call send?

Vidu's page for the preview model lists a POST https://api.vidu.com/ent/v2/img2video create call and a GET https://api.vidu.com/ent/v2/tasks/{id}/creations query. The body carries model: viduq4-preview, one start-frame images entry, and optional prompt, duration, resolution, audio, seed, payload and callback_url.

Vidu Q4 Preview image-to-video field and its Sume counterpart (Vidu page read 2026-10-09)
Vidu fieldSume fieldNote
model: viduq4-previewmodel: seedance-2.5 or wan-3.0Pick an id from GET /v1/videos/models
images (one start frame, URL or base64)frame_images with frame_type first_framePublic HTTPS URL only
prompt (optional, up to 20,000 characters)promptRequired on a pinned model
duration 3 to 16, default 5durationseedance-2.5 takes 4 to 30, wan-3.0 takes 2 to 30
resolution 540p to 4K, default 720presolution480p, 720p or 1080p on both rows
audio, default truegenerate_audioSame on/off idea
seednoneSume models reject seed
callback_urlcallback_urlMust be HTTPS

What fails if you copy the call unchanged?

A few Vidu habits fail on Sume.

  • seed is rejected: every v1 model reports seed: false and rejects the field.
  • payload is not a Sume field, and a non-empty provider.options returns 400 unsupported_parameter.
  • A base64 images string is not a public HTTPS URL, so host the file first.
  • duration: 3 is below the 4-second floor of seedance-2.5; wan-3.0 starts at 2.
  • 540p, 2K and 4K are not values these two rows list.

What does the Sume version look like?

This submits a 5-second 720p clip from a first frame and prints the URL to poll. Replace the example image URL with your own public HTTPS file.

import os, requests

body = {
    "model": "seedance-2.5",
    "prompt": "The camera pushes in as she turns and smiles",
    "duration": 5,
    "resolution": "720p",
    "aspect_ratio": "16:9",
    "generate_audio": True,
    "frame_images": [{
        "type": "image_url",
        "image_url": {"url": "https://example.com/start.png"},
        "frame_type": "first_frame",
    }],
}
r = requests.post(
    "https://api.sume.com/v1/videos",
    headers={"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"},
    json=body,
    timeout=60,
)
print(r.status_code, r.json().get("polling_url"))

Where do the limits come from?

The limits per row are in the video generation docs: read supported_durations, supported_resolutions and supported_frame_images from GET /v1/videos/models before you hard-code anything. Sume bills the provider list price times 1.25 and reserves that amount at submit.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume