Avatar 1.0 media URLs: image_url, product_image, scene.image_url
Which Sume field takes which public HTTPS URL: input.image_url, product_image, scene.image_url, background.url, video_url. Table, rejection rules, examples.
Avatar 1.0 takes media as public HTTPS URLs, and each URL goes in a specific field: input.image_url for an avatar photo, product_image for a product shot, scene.image_url for a scene photo, video_inputs[].background.url for a per-scene background and video_url for face swap or captions.
The mapping is the table on Media inputs, read 2026-10-02. You do not need to create a Sume asset first.
Which field do I use for what?
Putting a URL in the wrong field is a common first-run mistake, and the fields are not interchangeable.
| Workflow | Field | Condition |
|---|---|---|
| Avatar 1.0 photo input | input.image_url | input.type is photo |
| Avatar Video product | product_image | Optional; omit for a productless video |
| Avatar Video scene photo | scene.image_url | scene.type is photo |
| Avatar Video scene background | video_inputs[].background.url | background.type is image |
| Face swap (Beta) | video_url | Public HTTPS source video |
| Video captions | video_url | Public HTTPS source video |
What gets a URL rejected?
Before generation is submitted, Sume rejects localhost and private-network URLs, non-HTTPS URLs, signed or private URLs, and responses whose content type does not match. Because the check happens before submit, a bad URL fails fast and does not start a paid job.
The practical consequence: a presigned storage link is the wrong thing to paste in, since it counts as signed. Host the file at a stable public HTTPS address, or reuse a media.sume.com URL from an earlier result.
What does a request with several fields look like?
An avatar created from a photo, then a video that uses a product image and a prompt-described scene. Scene direction has two shapes: { "type": "prompt", "prompt": "..." } and { "type": "photo", "image_url": "https://..." }.
{
"avatar_handle": "reference_presenter",
"product_image": "https://example.com/product.png",
"scene": {"type": "photo", "image_url": "https://example.com/kitchen.jpg"},
"script": "Meet our new pour-over kettle.",
"quality": "plus"
}The avatar itself would have been created earlier with input: { "type": "photo", "image_url": "https://example.com/reference.png" }. The video request references it only by handle.
What comes back, and where do I store it?
Completed jobs can include artifact objects with an id, a url, a type and a content_type. Sume mirrors outputs into Sume-owned media.sume.com URLs before exposing them, so store the Sume URL, not a raw provider URL. Signed upload and download URLs and private object keys are not part of the public API contract.
If you need a first-party asset id rather than a URL, asset registration and upload paths are write-gated; the docs recommend public HTTPS URLs in generation payloads when you do not need ids.
A pre-flight checklist for media URLs
Open every URL in a private browser window before you submit; if it needs a login, it will not work. Confirm it starts with https://, points to a public host and returns the right content type: an image field needs an image response, and a page that merely contains an image does not count.
Keep a small test image on your own domain so you can separate a URL problem from a content problem. Then check that the field matches the branch: scene.image_url only applies when scene.type is photo, and background.url only when background.type is image.
This post only covers where URLs go. For what an avatar photo costs, see the reference-image post.
Can I reuse the same image in two fields?
Yes. Nothing in the docs ties a URL to a single field, so the same public image can be the avatar photo in one request and a product image in another. Each field is validated on its own when you submit, and each request is billed on its own estimate.
Reusing URLs also keeps your storage simple: one hosted file, referenced by every request that needs it. Just do not change the file behind a URL while a job that uses it may still be fetching it.
Sources
Related posts
More in Sume Avatar 1.0
- Avatar catalog estimate is a 4-second floor: real cost at 15, 30, 60 s
The catalog shows 74, 98 and 220 cents for avatar videos, which is the 4-second floor. Here is what 15, 30 and 60 second scripts cost at each Sume quality tier.
- Avatar handle with a leading @: how Sume stores and reuses it
Sume accepts an avatar_handle with or without a leading @ and stores it without. Why a stable handle beats a generated id, and how to reuse it.
- Avatar video captions: inline has four knobs, no design override
Inline captions on a Sume avatar video take style, font, language and script_text. For design colors, caption the clean MP4 with standalone captions.
- Avatar video_inputs voice rules: text, silence, script vs input_text
Each video_inputs scene takes a voice of type text or silence. Text needs exactly one of script or input_text; silence needs duration and forbids both.
Written by Sume