mask_url and background on Nano Banana, Seedream, FLUX, Grok: 400

On Sume only the two GPT Image 2.5 ids accept mask_url and background. Other image models return 400 unsupported_parameter. What to use for a local edit.

5 min readSume
All posts

On Sume, mask_url and background are accepted only by openai/gpt-image-2.5 and openai/gpt-image-2.5-sunburst. Send either one to openai/gpt-image-2, a Nano Banana row, a Seedream row, Grok Imagine or FLUX.2 and you get 400 unsupported_parameter naming the field and the model, not a silently ignored mask. If you need a region-limited edit or a transparent PNG on another model, you need a different method.

Because the call is rejected before generation, you lose nothing but a request, but it is a common surprise when you swap the model id in a working masked edit.

Which models take a mask or a background?

Both fields are added to the catalog only for the two GPT Image 2.5 ids. mask_url is a presence-only descriptor: it takes a public HTTPS URL. background is an enum of auto, transparent and opaque.

mask_url and background by Sume image model, read 2026-10-02
Model idmask_urlbackground
openai/gpt-image-2.5, openai/gpt-image-2.5-sunburstYesauto, transparent, opaque
openai/gpt-image-2No (400)No (400)
google/nano-banana-2, google/nano-banana-proNo (400)No (400)
Seedream, FLUX.2, Qwen Image, IdeogramNo (400)No (400)
x-ai/grok-imageNo (400)No (400)

What does OpenAI say about masks?

OpenAI's image generation guide says the image and the mask must be the same format and size, under 50MB, and that the mask needs an alpha channel. It also says the model uses the mask as guidance and may not follow its exact shape with complete precision. For transparency it says background: "transparent" combined with output_format of png or webp works on both 2.5 models.

So even where the field exists, a mask is a hint. The leaked-edit post shows what that looks like, and the pixel-diff post gives a way to check.

What do I use on the other models?

For a local edit, send the source as an input_references entry and describe the region in the prompt: name what changes, then list what must stay the same, such as the face, the logo and the framing. Keep one change per call and use aspect_ratio: "auto" on rows that list it so the frame does not move. Then compare the result with the source to confirm the rest stayed put.

For a transparent background on these rows, generate on a plain flat background and cut it out afterwards. On the hosted MCP server the cutout tool is rmbg_create (see the MCP tools page), and the Image 1.0 compatibility route still accepts transparency: true, but it uses the same Auto model selection, so you do not pick the model. The Image 1.0 page lists the fields, and the Image API docs point there for transparent stills today.

curl -sS https://api.sume.com/v1/images \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"google/nano-banana-2",
       "prompt":"Change only the sofa colour to deep green. Keep the room, lighting, rug and framing identical.",
       "input_references":[{"type":"image_url","image_url":{"url":"https://example.com/room.jpg"}}],
       "aspect_ratio":"auto"}'
# Adding "mask_url" here returns 400 unsupported_parameter.

How do I decide which route to take?

If the edit must stay inside a shape, use a 2.5 id with mask_url. If you only need the same scene with one change, any edit-capable row works with a preserve list, and Nano Banana rows list auto ratio so the frame follows the source. If the output must be transparent, use background: "transparent" on a 2.5 id with PNG or WebP output.

Check the descriptors in the catalog before you branch, as the capability filter post shows, so the branch follows the live list and not this table.

What should I log for edits?

Save the source URL, the prompt, the model id and the returned URL for every edit, using the metadata field for your own ids. Sume stores metadata on the job and does not send it to the provider, so it is a safe place for an order number or a lineage id.

When an edit drifts outside the area you meant to change, you can then see which route produced it and rerun the same input on a 2.5 id with a mask. That comparison is the fastest way to decide whether a mask is worth the model switch.

Sources

Related posts

More in Models

All Models posts

Written by Sume