Bedrock background removal (Nova, Titan) vs Sume transparent output

Nova Canvas and Titan v2 remove backgrounds into transparent PNGs. On Sume, background transparent is a GPT Image 2.5 option. Compare what each returns.

4 min readSume
All posts

Cutting a product out of its background is a one-call job on Amazon Bedrock. Nova Canvas has a BACKGROUND_REMOVAL task that returns a PNG with 8-bit transparency, and Titan Image Generator v2 has a background removal feature that returns a transparent background (Amazon docs, read 2026-10-06). The Sume Image API has a different shape, so port with care.

Transparent output (Amazon docs, read 2026-10-06; Sume docs)
Bedrock Nova Canvas / Titan v2Sume /v1/images
How to askBACKGROUND_REMOVAL task / background removal featurebackground: "transparent" on a generation or edit
Which modelsNova Canvas, Titan v2 onlyBoth ChatGPT Image 2.5 variants only
Output typePNG with 8-bit transparency (Nova)Set output_format to png or webp
Other modelsNot applicablebackground is rejected with 400 unsupported_parameter

What changes

On Bedrock the cutout is its own task: image in, same image out without a background. On Sume the transparent background is an option on a generation, so the model redraws the picture rather than masking pixels. For a packshot where the product must stay pixel-exact, that matters. Sume also has a separate background removal tool priced per image, covered in the post on cleaning 200 product photos.

Verify the alpha channel

Whichever service you use, check that the file really has transparency. This test fails on a flat white background.

import io, os, requests
from PIL import Image

r = requests.post("https://api.sume.com/v1/images", timeout=90,
    headers={"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"},
    json={"model": "openai/gpt-image-2.5", "background": "transparent",
          "output_format": "png", "prompt": "A single red apple, studio lighting."})
r.raise_for_status()
img = Image.open(io.BytesIO(requests.get(r.json()["data"][0]["url"]).content))
print(img.mode)
alpha = img.convert("RGBA").getchannel("A")
print("transparent pixels:", sum(1 for a in alpha.getdata() if a == 0))

Sources

Related posts

More in Comparisons

All Comparisons posts

Written by Sume