'end_image_url requires image_url': a last frame needs a first frame

A last frame without a first frame is refused on both Sume video routes. Add a first frame, or drop the end frame and describe the ending in the prompt.

4 min readSume
All posts

"end_image_url requires image_url or first_frame_url." means you sent only a last frame to Video Router. Sume video models treat the end frame as a second anchor, so a start frame must come with it. The OpenRouter-shaped route says the same thing in its own words: "frame_images with a last_frame also requires a first_frame."

Both routes refuse a last-frame-only request

On the Video Router the check looks at the flat fields. On /v1/videos it looks at the frame_images array and raises an unsupported_capability error that names the model. Either way no job is created and nothing is reserved.

This means "end on this exact still" is not a standalone mode. If you only have the ending picture, you have three honest options.

Last-frame-only requests on Sume video routes on main (read 2026-10-05)
RouteYou sendResult
POST /v1/video-router/generateend_image_url only400: end_image_url requires image_url or first_frame_url.
POST /v1/video-router/generatelast_frame_url onlySame 400, same message
POST /v1/videosframe_images with only last_frameunsupported_capability: frame_images with a last_frame also requires a first_frame.
Either routefirst and last frame togetherAccepted if the model has end-frame support

Three ways out

Supply a first frame. If the shot continues a previous clip, the last frame of that clip makes a natural first frame; video_frames can extract it from a stored clip, as the related post on opening episode two shows. If the shot has no predecessor, make or pick a still that represents the opening and send both.

  • Add the opening still and keep the end frame, on a model with end_frame: true.
  • Drop the end frame and describe the ending in the prompt, accepting less control.
  • Generate the opening still first, then run the clip with both anchors.

Check the model supports an end frame at all

Even with a first frame, some models refuse the end frame. The catalog marks grok-imagine-video-1.5 and h3-max-recast as having no end frame, and Grok returns "end_image_url is not supported by model grok-imagine-video-1.5." The snippet reads the flag from the documented models endpoint, using supported_frame_images on each entry.

import os
import requests

hdr = {"Authorization": "Bearer " + os.environ["SUME_API_KEY"]}
r = requests.get("https://api.sume.com/v1/videos/models", headers=hdr, timeout=30)
r.raise_for_status()
for m in r.json()["data"]:
    frames = m.get("supported_frame_images") or []
    if "last_frame" in frames:
        print(m["id"], frames)

When this is the wrong tool

If you need a clip that lands on a precise end picture and cannot invent a start, a two-anchor interpolation is not available as a mode here; treat it as a prompt problem or build the first frame yourself. A still from a stock folder or a brand asset works as well as a generated one, as long as it is a public HTTPS image. Whatever you choose, test the combination on a short, cheap clip before committing to the full length.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume