Midjourney edits now touch only selected pixels; the API route on Sume

Midjourney's Sep 24 update says edits modify only selected pixels. Midjourney isn't on Sume; a masked edit via mask_url on ChatGPT Image 2.5 is the API route.

4 min readSume
All posts

Midjourney's Sep 24, 2026 update says its edit model now "only modify selected pixels" for improved inpainting and outpainting, shipped to alpha.midjourney.com. If you want that behaviour from an API on Sume, the route is a masked edit on ChatGPT Image 2.5: send the source in input_references and a public HTTPS mask_url. Midjourney itself is not in the Sume image catalog, and the Midjourney pages we read state no public image API.

What each side offers

Facts come from Midjourney's update post (read 2026-10-05) and the Sume Image API docs.

Selected-pixel editing, read 2026-10-05
ItemMidjourney (alpha site)Sume Image API
Selected-pixel editsStated in the Sep 24 updatemask_url on ChatGPT Image 2.5
Models with a maskEdit model in the alpha editoropenai/gpt-image-2.5 and -sunburst only
OutpaintingImproved, per the updateNot a documented operation
Public APINone stated on the pages we readPOST /v1/images
Tile blending--tile blends invisibly on V8.1/8.2Not documented
Mask ruleSelection in the editorPublic HTTPS mask URL; other models return 400 unsupported_parameter

A masked edit on Sume

The request has three parts: the source image, the mask, and a prompt that names only the change. Sume docs say reference and mask URLs must be public HTTPS. They do not specify which mask colour marks the editable area, so run one small test and read the result before you batch.

import asyncio, os, httpx

async def main():
    body = {
        "model": "openai/gpt-image-2.5",
        "prompt": "Replace the vase with a bowl of oranges. Change nothing else.",
        "input_references": [{"type": "image_url", "image_url": {"url": "https://example.com/room.png"}}],
        "mask_url": "https://example.com/room-mask.png",
    }
    headers = {"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"}
    async with httpx.AsyncClient(timeout=60) as c:
        r = await c.post("https://api.sume.com/v1/images", headers=headers, json=body)
    print(r.status_code, r.json())

asyncio.run(main())

How to verify an edit stayed local

A mask asks the model to keep the rest; it does not prove it did. Download the source and the result at the same size, take a pixel difference, and look at where it is non-zero. Do this for the first ten edits, then spot check. An edit can come back in a different shape, so set aspect_ratio: "auto" to match the reference, as the Sume docs advise for edit calls.

Outpainting is the gap. The Sume docs list no outpaint operation, so extending a canvas means generating a new image from a prompt and a reference. See whether Sume offers a Midjourney API for the broader question.

What we could not verify

We did not run Midjourney's edit model, so we cannot say how closely its output matches the unselected pixels. The update post is a vendor description. The same caution applies to any masked edit, on Sume or elsewhere: measure it yourself. The Sume docs say mask_url is live only on ChatGPT Image 2.5, and that any other model rejects the field with 400 unsupported_parameter rather than ignoring it.

Sources

Related posts

More in Comparisons

All Comparisons posts

Written by Sume