Morph one photo into another: first and last frame cost by model
To morph photo A into photo B, send A as first_frame and B as last_frame. Grok cannot; Kling 3, Wan 3.0, H3 and Omni can. 5 s costs $0.31 to $0.70.

The short answer
To morph one photo into another, send photo A as a first_frame and photo B as a last_frame in the same /v1/videos request. Grok Imagine cannot do it because it has no end frame. On Sume, kling-3, wan-3.0, minimax-h3 and gemini-omni-flash-1.1 can. A 5-second morph costs between $0.31 and $0.70 depending on the model.
What a morph needs
A morph is the cleanest use of two frames: a before and after, a day and night shot, a sketch turning into a render, or a product in two colors. The model invents the middle. Both images should share framing, because a morph between two different compositions produces a dissolve rather than a move.
Five-second cost
Rates are per second, so a 5-second morph is five times the rate.
| Model | Setting | 5-second morph | Notes |
|---|---|---|---|
| wan-3.0 | 480p | $0.3125 | Cheapest end-frame row |
| minimax-h3 | 768p | $0.375 | Audio always on |
| gemini-omni-flash-1.1 | 720p | $0.625 | Native audio, 16:9 or 9:16 |
| kling-3 | 720p or 1080p, silent | $0.70 | $1.05 with audio |
Request
Both frames go in frame_images. The frame_type value tells Sume which is which. The 5 seconds are the whole clip, so the end frame lands on the last frame of the video.
curl -X POST https://api.sume.com/v1/videos \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: morph-001" \
-d '{
"model": "wan-3.0",
"prompt": "Smooth dissolve-free morph, camera locked",
"duration": 5,
"resolution": "480p",
"frame_images": [
{"type": "image_url", "image_url": {"url": "https://example.com/a.png"}, "frame_type": "first_frame"},
{"type": "image_url", "image_url": {"url": "https://example.com/b.png"}, "frame_type": "last_frame"}
]
}'What gets rejected
If you also send input_references, Sume uses the frame_images. The two do not combine. Sending size or seed returns 400 unsupported_parameter, and a value a model does not support returns 400 unsupported_capability. Grok has no end frame in the catalog, so do not send it a last_frame.
Draft cheap, finish on Kling
Draft on Wan at 480p, where a morph is $0.3125, then move to Kling 3 for the version you publish. Kling 3 charges the same at 720p and 1080p, so there is no price reason to stay at 720p once you are on it. See Kling 3 first and last frame for that route.
Sources
Related posts
More in Use cases
- MSN's AI content policy: AIAC vs unreviewed AIGC for video makers
MSN separates AI-assisted content from unreviewed AI-generated content, and asks for disclosure now. What a Sume video publisher on MSN should do.
- A holiday music video from one Lyria track: 18 clips, about $23.50
Lyria track $0.125, eighteen 10-second Omni Flash clips at 720p $22.50, Timeline $0.30, captions $0.60. Total about $23.53 for 3 minutes.
- Music visualizer clip: MiniMax H3 Max, image plus audio reference
Make a 10-second visualizer from cover art plus a track excerpt with minimax-h3-max on Sume: $1.00 at 768p; audio alone is not a valid reference.
- Napkin sketch to product render: one reference on GPT Image 2.5
Turn a photographed napkin sketch into a product render with one input reference on GPT Image 2.5. Set aspect_ratio auto to keep the shape. Code and prices.
Written by Sume