Seedream 4.5 edit: swap a product with up to 10 references
fal describes Seedream 4.5 edit as multi-reference product replacement and text overlay with no masking tool. The same shape of call on Sume.

To swap a product in a photo with Seedream 4.5, send the scene and the new product as reference images and say in the prompt which goes where. fal's page for the edit endpoint says you can reference up to 10 images per edit, that spatial directions come from the prompt with no manual masking, and that it targets e-commerce product composites. On Sume the same model is bytedance-seed/seedream-4.5, and references go in input_references.
Model facts are from fal's Seedream 4.5 edit page, read 2026-10-03. Sume request rules are from the Image API docs.
What fal says about the edit endpoint
The page unifies generation and editing under natural-language instructions and names product replacement and text overlay composition as examples of the multi-image workflow. It lists a maximum output of 4MP (2048x2048), configurable dimensions of 1920 to 4096 pixels per axis, PNG output, a price of $0.04 per edit and roughly 60 seconds per request on fal.
| Item | Value |
|---|---|
| References per edit | Up to 10 images |
| Price | $0.04 per edit |
| Maximum output | 4MP (2048x2048) |
| Typical processing | About 60 seconds per request on fal |
The call on Sume
The Sume docs use Seedream 4.5 as their own catalog example with input_references from 0 to 10 and note that reference URLs must be public HTTPS. For an edit, the docs advise aspect_ratio: "auto" to match the reference; omitting the field is not the same as auto, and a model only accepts the values its descriptors list. Put the scene first and the product second, and name both in the prompt.
import os
import requests
key = os.environ["SUME_API_KEY"]
payload = {
"model": "bytedance-seed/seedream-4.5",
"prompt": "Image 1 is the room. Replace the lamp on the table with the lamp in image 2; keep everything else unchanged",
"input_references": [
{
"type": "image_url",
"image_url": {
"url": "https://example.com/room.png"
}
},
{
"type": "image_url",
"image_url": {
"url": "https://example.com/lamp.png"
}
}
],
"aspect_ratio": "auto"
}
resp = requests.post(
"https://api.sume.com/v1/images",
headers={"Authorization": f"Bearer {key}"},
json=payload,
timeout=60,
)
if resp.status_code == 200:
print([item["url"] for item in resp.json()["data"]])
elif resp.status_code == 202:
print("still running:", resp.json()["data"]["status_url"])
else:
print(resp.status_code, resp.text)
Limits
A 60-second edit on fal's page is longer than Sume's 30-second blocking wait, so expect a 202 job envelope for some calls and read the result from the job result endpoint. Check the catalog before relying on aspect_ratio: "auto" for this model; the docs say descriptors decide which values are accepted. Product swaps change pixels, so compare label text and logos against the real product before publishing.
Sources
Related posts
More in Use cases
- Separate audio and video tracks in a Short: the same split in Sume
Reports say YouTube's Shorts editor now separates audio and video tracks. Sume's Timeline has that split: one audio spine, up to 200 video slots.
- Share another creator's video on YouTube without re-uploading it
YouTube points creators who want to show another creator's video to the Posts tab. How the share works, its limits, and an own-footage Short for your take.
- 71.6% of small businesses shelved a video: a 60-second avatar fix
HeyGen's September 2026 survey says 71.6% recorded a business video and never posted it. Replace the shelved take with a 4-60 second Sume avatar clip.
- Shop moved to shop.com: fix AI clips with a shop.app link on screen
Shopify moved Shop's web experience from shop.app to shop.com on Sept 29, 2026. Old links redirect, but a URL burned into a clip does not update. What to redo.
Written by Sume