One approved backdrop for 200 product photos: reference edit cost
Use one approved scene as the first reference and each product shot as the second, in Ideogram 4.5 on Sume. 200 photos cost $7.50 at low and $15 at medium.

To give 200 product photos the same background, approve one scene first, then send it as the first reference with each product photo as the second. On Sume's Ideogram 4.5 that is 200 calls at $0.075 each at medium quality, or $15, and $7.50 at low. The first reference is the image the model edits; the rest are references, so the order matters: the scene goes first, the product second.
Why the scene goes first
In the Image API docs, a call with references edits the first image and uses up to four more. If you put the product first, the model edits the product photo and may keep its table, wall and light. Put the approved scene first and tell the prompt to place the product from the second image into it.
Pick the scene with the products in mind. A busy scene with strong colour will tint white products and compete with labels; a plain surface with one clear light direction is easier for the model to match. Save the approved scene at the size you want outputs, since the output shape follows it.
Do not set aspect_ratio unless you want a change; an edit without it keeps the source shape, which here is the scene's shape. Every output then shares one frame, which is what a catalog grid wants.
The loop
The script below runs up to four requests at once with a semaphore. It reads the key from SUME_API_KEY and prints each HTTP status. The Image API answers synchronously for 30 seconds and then returns a 202 job envelope, so a production loop should handle both a 200 with images and a 202 with a job to poll; this sketch only reports the status code.
import asyncio, os
import httpx
BACKDROP = "https://example.com/approved-backdrop.jpg" # your approved scene
PRODUCTS = [
"https://example.com/p/001.jpg",
"https://example.com/p/002.jpg",
]
PROMPT = ("Place the product from the second image into the scene from the "
"first image, centred on the table, with a soft shadow.")
async def one(client, sem, url):
async with sem:
r = await client.post(
"https://api.sume.com/v1/images",
headers={"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"},
json={"model": "ideogram/ideogram-v4.5", "prompt": PROMPT, "quality": "low",
"input_references": [
{"type": "image_url", "image_url": {"url": BACKDROP}},
{"type": "image_url", "image_url": {"url": url}}]},
)
return url, r.status_code
async def main():
sem = asyncio.Semaphore(4)
async with httpx.AsyncClient(timeout=60) as client:
for url, status in await asyncio.gather(*(one(client, sem, u) for u in PRODUCTS)):
print(status, url)
asyncio.run(main())Budget by quality
Ideogram's per-image price does not change with size, so the count drives the bill. The prices come from the provider list ($0.03, $0.06 and $0.22) multiplied by Sume's 1.25.
| Quality | Per image | 200 images |
|---|---|---|
| low | $0.0375 | $7.50 |
| medium | $0.075 | $15.00 |
| high | $0.275 | $55.00 |
Approve in rounds
Do not send all 200 at once. Run ten products across different shapes: tall bottles, flat boxes, shiny items. Look for products that float, lose their label or pick up the scene's colours. Fix the prompt on those ten, then run the rest. A failed generation is not billed under the Sume docs, but a successful image with a floating bottle is, and you pay for it.
Write the prompt once and freeze it. If the wording changes halfway through, the first 100 and the last 100 will not match, and you cannot tell afterwards which prompt made which image. Store the prompt string with each output URL.
Name the files after the product code and keep the source URL in a sheet, so a client who rejects photo 117 can be answered with the exact request that made it. Retries are then a lookup, not a hunt.
Expect to spend more on the awkward ten per cent. Rerun those at high quality instead of raising the whole batch. For a batch that varies one setting at a time, n variants in one call lists the per-model limits.
Sources
Related posts
More in Use cases
- One voiceover, two ratios: render 9:16 and 1:1 from one audio file
Reuse one voiceover for a 1080x1920 and a 1080x1080 cut in Sume Timeline. Two renders at $0.10 per output minute each; only output width and height change.
- How do I make one intro bumper and reuse it in every course lesson?
Make a 5-second bumper once ($0.83 with a sting), then add it to 24 eight-minute lessons at $0.82 each: $20.51 for the course on Sume.
- Outage status update video with an AI avatar: script and cost
A 20 to 30 second avatar clip can front a status-page update. What to script, what it costs by tier, and why the written update must go out first.
- How to make a pep talk audio track with music: voice, bed and render
A 90-second pep talk with a music bed is one TTS job, one Music Router job and one render: about $0.39 on Sume. Suno Speech beta does it in one pass.
Written by Sume