Product logo warping in image-to-video: frames vs references

In Sume's image-to-video API, a packshot in frame_images sets the first frame; input_references only guide. Check the label in extracted stills.

5 min readSume
All posts

When a product logo has to match your photo, send the packshot to POST /v1/videos in frame_images with frame_type: "first_frame": a frame image sets the clip's first frame, while an image in input_references is visual guidance rather than an exact frame. No documented setting holds a label unchanged through the motion, so extract stills from the finished clip and compare them with the packshot before you publish.

Field behavior comes from Sume's Video generation, Video frames, and Image API docs, read on 2026-09-27. The fields are covered one by one in Image-to-video API and Reference-to-video API; this post is about choosing between them when the product has to stay recognizable.

Should the product photo be a first frame or a reference?

The two fields start different generation modes, and only a frame image is set as a frame of the clip. If a request carries both, frame_images takes precedence and the request is treated as image-to-video.

From Video generation, read 2026-09-27. Each model lists what it accepts in supported_frame_images and supported_input_references on GET /v1/videos/models.
You sendModeWhat the docs say
frame_images entry, frame_type: "first_frame"Image-to-videoSpecifies the clip's first frame.
frame_images entry, frame_type: "last_frame"Image-to-videoSpecifies the clip's last frame.
input_references entry, type: "image_url"Reference-to-videoA style or content reference, used “as visual guidance rather than exact frames.”
Both fields in one requestImage-to-videoframe_images takes precedence.

Can I pin the product at both ends of the clip?

On models that take an end frame, yes. Add a second frame_images entry with frame_type: "last_frame", such as a close-up of the label, so the clip opens and closes on your own images. Check supported_frame_images on GET /v1/videos/models first; the docs' Seedance 2.0 record lists both first_frame and last_frame. The frames in between are generated.

How should I prepare the packshot?

Settle the still before you animate it:

  • Host it at a public HTTPS URL. The video docs ask for reference images that are accessible over public HTTPS and in a supported format.
  • If you edit it on POST /v1/images first, send aspect_ratio: "auto" to match the reference, on a model whose catalog lists it. Omitting the field is not the same as auto.
  • For edits, ChatGPT Image 2.5 (openai/gpt-image-2.5) also takes an optional public HTTPS mask_url.
  • POST /v1/images returns data[].url as Sume-hosted and signed, and the video docs do not document passing it straight into frame_images. Host the still you pick at your own public HTTPS URL.

How do I check the logo in the finished clip?

Extract stills at the moments that matter and compare them with the packshot. POST /v1/video-frames takes one of your workspace's media.sume.com clips and exactly one of at[] (1–24 timestamps, each at least 0 and below the clip's duration) or fps (above 0 and at most 2, capped at 24 frames). Leave out max_edge to keep the source frame size, and ask for png for lossless inspection.

The /v1/videos poll returns unsigned_urls on the API host. The same job is visible at GET /v1/jobs/{id}/result, and completed jobs can include public artifacts under media.sume.com. Extraction is unbilled and the submit always answers 202: poll GET /v1/video-frames/{id} until resource_status is ready, then read frames[].

curl -X POST https://api.sume.com/v1/video-frames \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: label-check-001" \
  -d '{
    "video_url": "https://media.sume.com/artifacts/artf_demo/clip.mp4",
    "at": [0, 2, 4, 6, 8],
    "format": "png"
  }'

Which other Sume routes take a product image?

Two more, each with its own limits:

  • A presenter who talks about the product: Avatar 1.0 takes an optional product_image on POST /v1/avatar-1.0/talking-video. The docs do not say where the product appears in frame, so review a preview first, as in AI avatar video with your product and background.
  • Catalog image Formats whose descriptions name packaging, such as sume-serum-drip (“accurate bottle packaging”) and sume-sunscreen-splash (“accurate SPF packaging”). That is each Format's stated aim, not a guarantee. Format media comes back as durable, public media.sume.com URLs, so a still you approve can become a first frame.

What are the limits?

The docs set these bounds:

  • No documented setting keeps a logo or label unchanged through motion. A frame image sets one end of the clip; a reference only guides.
  • last_frame works only on models that list it in supported_frame_images.
  • Video frames reads a media.sume.com clip of at most 300 seconds and returns at most 24 stills per call. A timestamp outside [0, duration) fails with frame_time_out_of_range.

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume