Swap a character into an existing image with an Ideogram 4.5 edit
Put your mascot or character into a finished layout with Ideogram 4.5 on Sume: the layout image goes first, the character image second, one change per call.

To swap a character into an existing image, send two images in input_references to Ideogram 4.5 on Sume: the finished layout first, because the first reference is the one that gets edited, and the character image second. Then write a prompt that names which figure to replace and what to keep, and make one change per call.
MindStudio's hands-on test of Ideogram 4.5 reports that when a reference character was swapped into an existing composition, the edit came through clean and the character rendered consistently rather than drifting into a generic version, and it also says a full verdict needs more testing across a wider range of edit types (read 2026-10-06, MindStudio). Treat that as one reviewer's two tasks, not a guarantee. The Sume docs say the model edits the first image and uses up to four more as references, five in total.
What goes where
Order matters. If you put the character first, that image becomes the canvas and the layout becomes a reference, which is the opposite of what you want. Keep a note of the order in your code so the call never flips by accident.
| Position | Image | Role |
|---|---|---|
| 1 | The finished layout or ad | Edited |
| 2 | The character or mascot | Reference |
| 3 to 5 | Extra poses or a logo | Optional references |
The edit call
Omit aspect_ratio so the output keeps the shape of the layout, as the docs describe. Medium quality is the default and is enough to test; the price list is $0.03, $0.06 or $0.22 per image by quality before Sume's 1.25 multiplier (read 2026-10-06, fal).
import os
import requests
def ref(url):
return {"type": "image_url", "image_url": {"url": url}}
body = {
"model": "ideogram/ideogram-v4.5",
"prompt": (
"Replace the person on the left of the first image with the "
"character shown in the second image. Keep the background, the "
"lighting, the pose and all text exactly as they are."
),
"input_references": [ref(os.environ["LAYOUT_URL"]), ref(os.environ["CHARACTER_URL"])],
"quality": "medium",
}
r = requests.post(
"https://api.sume.com/v1/images",
headers={"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"},
json=body,
timeout=60,
)
print(r.status_code)
print(r.json()["data"][0]["url"] if r.status_code == 200 else r.text[:300])Check the result
Compare the result with the layout. Look at the character's face and outfit against the reference, then at everything you asked to keep: text, background and lighting. A swap that changes the headline has failed even if the character looks right.
If the character is only close, add a second reference from another angle, which uses one of the four extra slots. If the layout moved, tighten the keep list rather than raising the quality. Raising quality costs more and does not make the model follow an instruction it did not understand; a clearer sentence usually does. When you have a prompt that works, save it with the two source URLs, so the same swap can be repeated for the next campaign without rediscovering the wording.
Prompt wording that helps
A swap prompt has two jobs: say what to change and say what to keep. Be explicit on both.
- Name the target: the person on the left, the mascot on the sign.
- Say the source: the character from the second image.
- List what stays: the pose, lighting, background and all text.
- Give one change per call; do outfit and background in separate passes.
- Re-run from the original if the first result drifts, instead of editing the edit.
Cost and batching
One swap is one billed edit. At the default medium quality the list price is $0.06 per image, so Sume's rate is $0.075 per edit with its 1.25 multiplier (the catalog rounds a billed amount up to a whole cent, 8 cents), and a set of ten ad layouts costs $0.75 to $0.80 if each swap works first time. Budget for some retries. A good routine is to approve the swap on one layout, then run the same prompt over the other nine, then review each result. Run the calls in parallel with a small limit and keep the results keyed by layout, so a failed one can be retried alone without repeating the others.
Rights and honesty
Only swap in characters you own or have permission to use, and do not put a real person into an image without their consent. If the image will be published, check the platform's rules on AI-edited images. Sume makes the file; the decision to publish it is yours.
Sources
Related posts
More in Use cases
- Narrate 10 slides: one Sume TTS job or ten, and what rounding costs
Ten 80-character slide lines cost 10 cents as ten Sume jobs and 4 cents as one 800-character job. When splitting is worth the extra cents, and when it is not.
- Make a Top 5 vertical video from five stills with Sume Timeline
Five images, a 30-second silent Timeline at 1080x1920, then burned captions: the slot math, the still-motion limit and the cost in Sume.
- Tote bag mockup with an AI image API: your logo on a canvas bag
Send your logo as a reference to GPT Image 2.5 on Sume and ask for a canvas tote on a plain studio set. Check the logo against the original before you list it.
- Two-camera podcast clip for Shorts: alternate angles with source_in
Cut between two camera files against one audio spine in Timeline 1.0: equal on-spine starts and source_in keep both angles in sync. Python builder included.
Written by Sume