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.

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.
| Model id | Duration range | Billed for 22 s |
|---|---|---|
| wan-3.0 | 2-30 s | 480p $1.38, 720p $2.75, 1080p $5.50 |
| seedance-2.5 | 4-30 s | token priced, read pricing_skus |
| higgsfield-genjutsu | 4-30 s (source length) | read pricing_skus |
| h3-max-recast | 5-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
- 23-second AI video with audio references on Wan 3.0 and Seedance
Audio references are accepted by Wan 3.0 (up to 5 clips, 15 s total) and Seedance 2.5. A 23 s clip price on Wan and the rules for audio inputs.
- 502 from the Sume Images API: read code, next_action and status_url
A 502 on POST /v1/images is a failed job, not an outage. Parse error.code, retryable and next_action, then fetch status_url for the job. Python handler.
- MiniMax H3 on Sume: "720p is not supported; use 768p" explained
MiniMax H3 and H3 Max render natively at 480p and 768p. Send resolution 720p and Sume answers 400. Why, what to send, and what it costs per second.
- A/B test two reference sets on Seedance 2.5: six takes for about $16
Which reference images work better on Seedance 2.5? Run two sets, three takes each, 10 s at 480p on Sume for about $16, and score blind.
Written by Sume