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.

5 min readSume
All posts

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.

Billed price for 5 seconds, list x 1.25, read from the Sume catalog on 2026-10-05
ModelSetting5-second morphNotes
wan-3.0480p$0.3125Cheapest end-frame row
minimax-h3768p$0.375Audio always on
gemini-omni-flash-1.1720p$0.625Native audio, 16:9 or 9:16
kling-3720p 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

All Use cases posts

Written by Sume