Photo to stained glass window: one Seedream 4.5 edit
Turn a photo into a stained glass window with one reference edit: Seedream 4.5 at $0.05 an image, an explicit ratio, and four takes for $0.20 on Sume.

To turn a photo into a stained glass window, send the photo as an input_references entry to an edit-capable image model and describe the glass: thick dark lead lines, flat coloured panes, light coming through from behind. On Sume the cheapest sensible row for this is Seedream 4.5 (bytedance-seed/seedream-4.5), which lists at $0.05 an image, so four takes with n: 4 cost $0.20.
Seedream 4.5 does not list aspect_ratio: "auto", so unlike Nano Banana 2.1 you pass the source photo's ratio yourself. Everything below comes from the Image API page and Sume's image catalog code, read on 2026-10-11. Sume does not publish a style-fidelity ranking between models, so treat the model choice as a price and limits choice, then compare four takes by eye.
What the request looks like
One POST /v1/images call carries the model, the prompt and the photo. The reference must be a public HTTPS URL; Sume rejects localhost, private-network and non-HTTPS URLs before it submits anything. Seedream 4.5 accepts up to 10 references, but a stained glass edit needs only the one photo.
Pick the aspect ratio from the photo, not from the window you imagine. A 4:5 portrait photo should go in with aspect_ratio: "4:5", a landscape with 3:2 or 4:3. Seedream 4.5's list is 1:1, 16:9, 9:16, 4:3, 3:4, 4:5, 5:4, 3:2 and 2:3, so a nearly square photo is a 1:1 or 5:4 decision. If you leave the field out on a model without auto, the docs say the result is not the same as matching the reference.
import os, requests
r = requests.post(
"https://api.sume.com/v1/images",
headers={"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"},
json={
"model": "bytedance-seed/seedream-4.5",
"prompt": "Redraw this photo as a stained glass window: thick black lead lines, flat jewel-coloured glass panes, backlit, keep the composition",
"input_references": [
{"type": "image_url", "image_url": {"url": "https://example.com/photo.jpg"}}
],
"aspect_ratio": "4:5",
"n": 4,
},
timeout=60,
)
r.raise_for_status()
body = r.json()
if r.status_code == 202:
print("still running:", body["data"]["status_url"])
else:
for img in body["data"]:
print(img["url"])
Which Sume row fits a stained glass edit
Four edit-capable rows are worth a test. The prices are the catalog list rate times Sume's 1.25 margin, as the docs describe it; the reference and n ceilings come from the endpoint descriptors.
| Sume model id | Price per image | Ratio matches the photo? | References | Max n |
|---|---|---|---|---|
| bytedance-seed/seedream-4.5 | $0.05 | Send it explicitly | up to 10 | 4 |
| bytedance-seed/seedream-5-lite | $0.04375 | Send it explicitly | up to 10 | 4 |
| google/nano-banana-2.1 | $0.10 at 1K | Accepts auto | up to 10 | 4 |
| qwen/qwen-image | $0.025 | Send it explicitly | up to 10 | 4 |
Prompt wording to try
Glass work has a few visual rules a model can follow if you name them. These are habits from prompting in general, not a Sume setting, so judge them on your own four takes:
- Name the lead lines: "thick dark lead came outlining every pane" tends to beat "stained glass style" alone.
- Ask for flat colour per pane and no photographic gradients, otherwise skin and sky stay smooth.
- Say the light direction: "lit from behind, glowing" gives the translucent look.
- Add "simplified into large shapes" for faces, since small panes around eyes tend to fall apart.
- Keep the composition clause ("keep the composition") so a landscape does not turn into a new scene.
Cost of a first pass
Four Seedream 4.5 takes of one photo cost 4 x $0.05 = $0.20. Running the same prompt on Seedream 5.0 Lite costs 4 x $0.04375 = $0.175, and on Qwen Image 4 x $0.025 = $0.10. Nano Banana 2.1 at 1K costs 4 x $0.10 = $0.40. A set of twelve family photos at one take each on Seedream 4.5 is $0.60.
Sume bills a generation only if it completes. A failed or cancelled generation is not charged, and the response cost field is the amount billed to your wallet.
Limits that matter
POST /v1/images waits up to 30 seconds. If four takes at a large size do not finish in that window, Sume answers 202 with a job envelope instead of the images, as the sample code above handles; poll the status_url and fetch the result as described in Jobs and results. Result URLs are Sume-hosted and signed, so copy the files you want to keep.
Fine detail is the weak spot of any glass look: small text, many faces and busy backgrounds turn muddy. Crop to one subject before you send the photo, and if a window is meant for print, upscale the winner afterwards rather than asking for a larger first render.
Sources
Related posts
More in Use cases
- Tilt-shift miniature effect: Nano Banana 2.1 edit or Pillow blur
Make a photo look like a tiny model town: a Nano Banana 2.1 edit with auto ratio from $0.10 on Sume, or a free Pillow gradient blur. Both compared.
- Voice actor or AI voice for a 30-second ad? What an API covers
Hire a voice actor or use AI text to speech for a 30-second ad: what Sume's TTS API does, what it cannot do, and the $0.315 audio bill for three takes.
- AI album cover generator: square art at 3000×3000
Generate square album art, then upscale: Apple recommends at least 3000×3000. On Sume, generate 2400×2400 and upscale it 1.25× to reach 3000×3000.
- AI avatar for online course videos: build and update lessons
Use an AI avatar as your online course instructor: one reusable avatar, a short talking video per section, captions, and one Timeline join per lesson.
Written by Sume