Midjourney edits only the selected pixels: repeat edits on Sume safely

Midjourney says targeted edits change only selected pixels. On Sume, mask edits and editing from the original keep repeated edits from degrading your image.

4 min readSume
All posts

Midjourney's 9/24 update says that making targeted edits "will change only the pixels that you've selected", which reduces the quality loss from repeated edits. On the Sume image API you get the same property in two ways: pass a mask_url on ChatGPT Image 2.5, or keep your untouched original and apply each edit to it instead of to the previous edit.

The vendor claim

From Midjourney's update page.

Midjourney edit-model facts, read 2026-10-02
ItemWhat the page says
Targeted editsChange only the pixels that you've selected.
EffectMore control and repeated edits without degrading image quality.

Option 1: a mask on the Sume side

The Image API docs list an optional mask_url, a public HTTPS mask, for ChatGPT Image 2.5 edits (openai/gpt-image-2.5 and openai/gpt-image-2.5-sunburst). Both also take up to 16 image references. Other catalog models do not list mask_url, and sending it to them returns 400 unsupported_parameter.

A mask tells the model where to work; it does not guarantee byte-identical pixels elsewhere, so measure. The related pixel-diff post shows a check you can run.

Option 2: edit from the original, not the last edit

Without a mask, every edit is a fresh generation conditioned on the reference you send. If you feed each output back in as the next reference, small changes accumulate. A safer loop keeps the original as the reference for every pass and writes the full instruction set in the prompt.

  • Keep original.jpg untouched and public over HTTPS.
  • For each variant, send the original plus a prompt that states the single change and what must not move.
  • Only chain passes when the next step truly depends on the last result, and stop after two or three.

Tracking which pass made which file

Put the pass number and parent in metadata, which Sume stores on the job and does not send to the provider. A list of your own job ids is then enough to rebuild the chain later. The docs' GET /v1/jobs accepts status and starting_after filters for paging through completed work.

Cost note

Edits are billed like any generation: completed images are billed in full and failed or cancelled generations are not billed. Budget the number of passes, not just the number of finals.

A worked example

Suppose you have a studio photo and want three colourways of a jacket. With a mask on ChatGPT Image 2.5, mark only the jacket, send the same original three times, and change the colour in the prompt each time. The background and model stay constrained to the unmasked area, and no variant depends on another.

Without a mask, send the original three times with a prompt such as "change only the jacket to forest green; keep the face, background and lighting unchanged". Review each result against the original rather than against its neighbour.

In both cases, resist the urge to feed variant one into variant two. That is how a slight shift in skin tone or shadow becomes a visible drift by the fourth pass.

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume