Nova Canvas virtual try-on mergeStyle: BALANCED, SEAMLESS, DETAILED
Nova Canvas try-on has three mergeStyle values with different trade-offs. What each protects, and the closest Sume route with a pixel diff to check it.

Amazon Nova Canvas has a VIRTUAL_TRY_ON task type that puts a garment onto a person. Its mergeStyle setting decides how the garment is blended back into the photo. The three values trade the same two things against each other: untouched pixels and fine detail.
| mergeStyle | What it gives | The cost |
|---|---|---|
| BALANCED | Pixels outside the mask are protected | May show a ghost seam |
| SEAMLESS | No seam at the mask edge | Every pixel changes slightly; fine detail can fade |
| DETAILED | Logos and text inside small masks come out better | Can show a seam |
What that means for a shop
For a catalogue shot where the model's face and the background must stay the same, BALANCED is the safe pick and you accept the seam risk. For a loose, editorial look, SEAMLESS hides the join. For a garment with a printed logo, DETAILED is the one to try first.
The Sume route
Sume has no try-on task or mergeStyle field. The closest route is an edit call: the person photo goes first in input_references, the garment photo second, and the prompt says what to put on whom. Models with several reference slots, such as GPT Image 2.5 with up to 16, accept both images in one request. Sume's API rejects parameters that a model's catalog row does not list, so a mergeStyle field would return 400 unsupported_parameter.
You choose the trade-off yourself by measuring. Count how many pixels outside the garment area changed, and zoom in on the logo. The numpy check for an edit outside the mask does the first part.
Request shape
Send the person first and the garment second. Read usage.cost from the response.
import os, requests
r = requests.post(
"https://api.sume.com/v1/images",
headers={"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"},
json={
"model": "openai/gpt-image-2.5",
"prompt": "Dress the person in image 1 in the jacket from image 2. "
"Keep the face, pose and background of image 1 unchanged.",
"input_references": [
{"type": "image_url", "image_url": {"url": "https://example.com/person.jpg"}},
{"type": "image_url", "image_url": {"url": "https://example.com/jacket.jpg"}},
],
},
timeout=90,
)
print(r.status_code, r.json().get("usage"))Sources
Related posts
More in Comparisons
- 720p thumbnail list prices: GPT Image 2.5 low vs Google Banana lines
For a 1280x720 image, GPT Image 2.5 low is about $0.0032 at OpenAI's list rate. Google lists $0.0336 (Flash Lite Image) and $0.045 (Flash Image 0.5K).
- Qwen Image vs Qwen Image Max for 25 square menu tiles: $0.63 vs $2.34
Qwen Image bills $0.025 per 1:1 tile on Sume and Qwen Image Max $0.09375. For 25 menu tiles that is $0.625 against $2.34, and Max rejects reference images.
- How many reference video seconds? Kling 4.0, Wan 3.0, H3, Omni
Reference video limits differ by model: Kling 4.0 allows 5 videos at 30 seconds combined, Omni 3 clips of 3 seconds. A table of the numbers I could read.
- Runway Gen-4.5 cost per second by plan vs Sume per-second rates
Using Runway's annual prices, a Gen-4.5 second costs 23 cents on Standard, 15 on Pro and 9.6 on Max. Sume's per-second rates run from 6.25 to 25 cents.
Written by Sume