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.

4 min readSume
All posts

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.

Nova Canvas mergeStyle, from Amazon's docs (read 2026-10-06)
mergeStyleWhat it givesThe cost
BALANCEDPixels outside the mask are protectedMay show a ghost seam
SEAMLESSNo seam at the mask edgeEvery pixel changes slightly; fine detail can fade
DETAILEDLogos and text inside small masks come out betterCan 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

All Comparisons posts

Written by Sume