FLUX 3 Image's New, Anchor and Move elements as Sume edit prompts

BFL's FLUX 3 Image tags every box as New, Anchor or Move. Sume has no box field, so here is how each tag maps to a prompt, a mask or a two-pass edit.

6 min readSume
All posts

FLUX 3 Image labels every element in a layout as New, Anchor or Move, and Sume's Image API has no field for any of them. You get the same three jobs done differently: New becomes an instruction in the prompt, Anchor becomes a preserve list plus, on GPT Image 2.5, a mask, and Move becomes two edits because no Sume model has a move operation.

That is the honest answer to "can I do FLUX 3 style box edits on Sume": the effects are reachable for most edits, but the control is looser. BFL's docs describe a structured request. Sume's current docs describe a prompt, up to 10 reference images on most edit models (16 on ChatGPT Image 2.5) and an optional mask_url for ChatGPT Image 2.5 edits.

What BFL's three tags mean

From BFL's FLUX 3 Image documentation: New is generated content added to the image, Anchor is content preserved unchanged from a reference, and Move is content repositioned from a source location to a target location. Boxes use [y0, x0, y1, x1] coordinates on a 0 to 1000 grid. The docs also show recolor and replace edits, including several replacements in one request.

read 2026-10-03
BFL elementMeaningClosest thing on SumeHow close
NewGenerated content placed in a boxAdd X in the left third, plus mask_url on GPT Image 2.5Close for placement, loose on exact size
AnchorKept unchanged from a referenceA preserve list in the prompt; a mask that leaves the region opaqueGuidance, not a guarantee
MoveRepositioned source to targetErase pass, then place passTwo paid jobs, drift risk
Recolor / ReplaceEdit one element, keep the restOne masked edit per elementGood on a clean mask

Writing the three as a prompt

A small builder keeps the wording consistent across edits. Anchors become one closing sentence listing what to keep, which is the form the habit our GPT Image 2.5 edit-drift post recommends repeating on every turn, because edits drift over several rounds. It deliberately refuses move rather than pretending the prompt can do it.

def edit_prompt(elements):
    """elements: list of dicts with kind new|anchor|move|replace|recolor, name, and optional where/to."""
    keep = [e["name"] for e in elements if e["kind"] == "anchor"]
    steps = []
    for e in elements:
        k = e["kind"]
        if k == "new":
            steps.append(f"Add {e['name']} {e.get('where', '')}".strip())
        elif k == "replace":
            steps.append(f"Replace {e['name']} with {e['to']}")
        elif k == "recolor":
            steps.append(f"Recolor {e['name']} to {e['to']}")
        elif k == "move":
            raise ValueError("no move operation: run an erase pass, then a place pass")
    prompt = ". ".join(steps) + "."
    if keep:
        prompt += " Keep exactly as in the input: " + ", ".join(keep) + ". Change nothing else."
    return prompt

print(edit_prompt([
    {"kind": "recolor", "name": "the sofa", "to": "forest green"},
    {"kind": "new", "name": "a floor lamp", "where": "in the left third"},
    {"kind": "anchor", "name": "the window and curtains"},
    {"kind": "anchor", "name": "the rug"},
]))

Where the mapping breaks

A mask on Sume is guidance. The docs for GPT Image 2.5 list mask_url as an optional public HTTPS URL and no other model accepts it; a request that sets an unsupported parameter is rejected with 400 unsupported_parameter. Reports of edits leaking outside a mask are the reason to verify unchanged areas yourself instead of trusting the label "Anchor".

Move is the weakest mapping. FLUX 3 Image takes it as an element type. On Sume you erase the object at the old location with a masked edit, then place it at the new one with a second masked edit that takes the object as a reference. Each pass is a paid generation that can shift pixels, so check the result against the original before you ship.

Which one to reach for

If your edits are recolor, replace and add on a stable photo, GPT Image 2.5 with a mask and a preserve list gets you most of the way. If your core need is a layout of many labelled boxes with exact pixel preservation, that is what BFL built FLUX 3 Image for, and it is not something Sume lists today. Both facts can be true in one pipeline: keep Sume for the generation and edit steps it serves and decide on BFL separately.

For the box-to-mask conversion itself, see FLUX 3 bounding box to mask URL in Python. For the Sume side of mask edits, the Image API docs list the fields.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume