22-second AI video from a first and last frame on Sume

A 22 s clip that must land on a given last frame can use Wan 3.0 or Seedance 2.5 on Sume, the two end-frame models that run past 15 s.

5 min readSume
All posts

To make a 22 second video that starts on one image and ends on another, use Wan 3.0 or Seedance 2.5 on Sume. Both accept an end frame and both run past 15 s. Kling 3 and H3 also take an end frame, but they stop at 15 s.

Which models accept 22 seconds

Grok Imagine 1.5 needs a first-frame image and has no end frame at all.

Models whose supported_durations include 22 s on Sume, with billed price for 22 s (provider list x 1.25, rounded up to the cent). Sume docs and code, read 2026-10-04.
Model idDuration rangeBilled for 22 s
wan-3.02-30 s480p $1.38, 720p $2.75, 1080p $5.50
seedance-2.54-30 stoken priced, read pricing_skus
higgsfield-genjutsu4-30 s (source length)read pricing_skus
h3-max-recast5-30 s (source length)768p $8.25, 1080p $12.38

How the frames are sent

On POST /v1/videos, send frame_images with a first and a last frame. On the legacy wire, end_image_url requires image_url. A last frame without a first frame is rejected.

frame_images takes precedence over input_references when both are present, so do not expect a reference image to override your frames.

What a 22 second request costs

Sume bills the provider list price times 1.25, rounded up to the next cent. The amount is reserved when you submit and refunded if the job fails, so a rejected or failed clip does not cost you. The /v1/videos/models descriptor lists the billable rate in pricing_skus, which is the field to trust over any number in a blog post.

A 22 s Wan clip bills $1.38 at 480p, $2.75 at 720p and $5.50 at 1080p.

Check 22 seconds against the live catalog

Duration support lives in the catalog, not in this page. Each entry on GET /v1/videos/models carries supported_durations, which is every whole second from the model minimum to its maximum, so one membership test answers the question. This script lists every model that accepts 22 s, with its resolutions and billable rates.

Set SUME_API_KEY first. See the Video Generation docs for the request and polling lifecycle.

import os
import requests

N = 22
resp = requests.get(
    "https://api.sume.com/v1/videos/models",
    headers={"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"},
    timeout=30,
)
resp.raise_for_status()
for m in resp.json()["data"]:
    if N in m["supported_durations"]:
        print(m["id"], m["supported_resolutions"], m["pricing_skus"])

Sources

Related posts

More in Developers

All Developers posts

Written by Sume