AI video generator from image: the URL checklist before you submit

Image-to-video on Sume needs a public HTTPS image URL. Five checks, the two error codes when Sume cannot fetch it, and the first-frame request body.

4 min readSume
All posts

To make a video from an image on Sume, send the image as a public HTTPS URL in frame_images with frame_type: "first_frame" on POST /v1/videos. Sume does not take a file upload for this; the docs tell you to make sure all input media is a public HTTPS image URL. Most failed image-to-video submits come from the URL, not from the prompt.

The request

This body is the image-to-video example from the docs, with Seedance 2.0 as the model:

curl -X POST https://api.sume.com/v1/videos \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2",
    "prompt": "A character walking through a forest",
    "frame_images": [{
      "type": "image_url",
      "image_url": {"url": "https://example.com/first-frame.png"},
      "frame_type": "first_frame"
    }],
    "resolution": "1080p"
  }'

Five checks on the image URL

Run these before the first call. They cost nothing.

  • The scheme is https://. A plain http:// URL, a local path or a data: string is not a public HTTPS image URL.
  • The URL opens in a private browser window with no login, cookie or expiring signature that lapses before Sume fetches it.
  • The host does not block automated fetches or send a login page in place of the file.
  • The file is a supported image format, because the docs say reference images must be in supported formats.
  • The URL stays up until the job is done, not just until the submit returns.

What Sume returns when the fetch fails

The errors page lists the media failures that happen before provider work is accepted:

Media errors on submit (Sume docs, read 2026-10-05)
CodeMeaningClient behavior
image_not_fetchableSume could not fetch or mirror the image safelyMake the URL public HTTPS, then retry
input_media_unreachableSame class: the input media could not be reachedSame fix, or contact support with the request id

Which models take a first frame

The catalog lists the accepted frame types in supported_frame_images. Seedance 2.0 reports first_frame and last_frame. Gemini Omni Flash 1.1 takes an image and an optional end image through the Video Router fields image_url and end_image_url. Read the list for your model from GET /v1/videos/models before you pin one, because limits differ per model.

Testing the URL from your side

The fastest check is to fetch the URL from a machine that is not logged in to anything. A one-line curl -I against the image URL should return 200 and an image content type. A 302 to a login page, a 403, or an HTML content type are all signs that Sume's fetch will fail too. If the image sits in private storage, create a time-limited public link that lasts well past the job, not a link that expires in a minute.

Remember that a queued job is fetched later than your submit. On a Free workspace with one running job, a clip can wait behind others, so a link that expires at five minutes may be dead by the time the job starts.

Completed jobs return Sume-hosted artifacts under media.sume.com. The docs call those URLs the public contract, not any provider URL. So you do not need to keep the source image hosted for the result to stay available, but keep it for as long as you may want to re-run the job with the same first frame. If a job fails with a media error, correct the URL and retry with the same idempotency key only for an exact retry; the docs return 409 idempotency_conflict when a key is reused for a different payload.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume