Titan vs Nova Canvas image masks: which colour is edited
Titan says mask value 0 (black) is regenerated and bans alpha. Nova Canvas inpainting edits black too. Build one mask check and test any mask on Sume.

Mask conventions are where image APIs disagree, and a flipped mask edits everything except the area you wanted. Amazon's two image models on Bedrock give the same answer for inpainting, but the two pages describe different file rules.
| Rule | Titan Image Generator | Nova Canvas |
|---|---|---|
| Edited area | Mask value 0 (black) is regenerated | Inpainting: pure black is edited, pure white is kept |
| Allowed values | Only black (0) and white (255) | Only pure black and pure white |
| Size | Same height and width as the input | Same size as the input |
| Alpha | Not supported; RGB only | PNG input must have no transparent pixels |
| Encoding | maskImage is a base64 string | JPEG mask must be saved at 100% quality |
A mask checker
This script flags the three mistakes that cause most failures: wrong size, gray pixels and an alpha channel. It does not tell you which colour a given service edits; that is the table above.
from PIL import Image
import numpy as np
def check_mask(src_path: str, mask_path: str) -> list[str]:
src, mask = Image.open(src_path), Image.open(mask_path)
problems = []
if src.size != mask.size:
problems.append(f"size {mask.size} != {src.size}")
if "A" in mask.getbands():
problems.append("mask has an alpha channel")
px = np.asarray(mask.convert("L"))
gray = int(((px != 0) & (px != 255)).sum())
if gray:
problems.append(f"{gray} gray pixels")
return problems
print(check_mask("photo.png", "mask.png") or "mask ok")On Sume
Only the two ChatGPT Image 2.5 variants take mask_url. The Sume docs do not state the colour convention for it, and the earlier post on the mask alpha channel covers what to send. Treat the first call as a test: make a mask with a clear left half, send it, and see which half changed, then diff with the numpy check.
Sources
Related posts
More in Comparisons
- TTS latency vs quality: Sume has async jobs, no streaming tier
Sume TTS is an async file job on Sonic models at one price. There is no streaming or latency tier, so you trade by script size and wait mode, not model.
- Unreal Speech TTS plans in dollars per million characters vs Sume
Unreal Speech's plans work out from $16.33 to $8.00 per million characters. Sume lists $47.50 with no plan. Break-even by monthly volume.
- Which AI video models charge the same for 720p and 1080p?
Google lists Veo 3.1 Standard at $0.40 a second for both 720p and 1080p, and Sume's Kling Video v3 Pro has one rate for both. Other models charge more at 1080p.
- Veo 3.1: how many Lite takes cost one Standard take (5 at 1080p)
At 1080p one Standard take costs 5 Lite takes or 3.3 Fast takes; at 720p, 8 Lite or 4 Fast. Break-even math from Google prices, read 2026-10-06.
Written by Sume