Watch or bracelet try-on from a wrist photo: two references, one call

Show a watch or bracelet on a shopper's own wrist with Sume's image API: wrist photo plus product photo as two references. Request shape, checks and cost notes.

4 min readSume
All posts

ChatGPT Try On launched on 1 October 2026 for clothing and accessories, running on ChatGPT Images 2.5, and the user supplies a selfie or full-body photo (TechCrunch, read 2026-10-04). A store selling watches or bracelets wants the same thing inside its own product page, with a wrist instead of a body.

Sume's Image API serves openai/gpt-image-2.5, which takes up to 16 input references. A wrist try-on needs only two: the shopper's wrist photo and one clean product shot.

The call

Both images must be public HTTPS URLs; Sume rejects localhost, private-network and non-HTTPS addresses before submission. Say in the prompt which image is which, and what must not change: the strap, the dial, the clasp, the skin tone and the sleeve.

import os, requests

H = {"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"}
resp = requests.post("https://api.sume.com/v1/images", headers=H, timeout=90, json={
    "model": "openai/gpt-image-2.5",
    "prompt": "Image 1 is the shopper's wrist. Image 2 is the watch. Put the watch on the wrist in image 1, worn the way a watch sits on the wrist. Keep the dial, strap and clasp exactly as in image 2. Keep skin, sleeve and background from image 1.",
    "input_references": [
        {"type": "image_url", "image_url": {"url": "https://example.com/wrist.jpg"}},
        {"type": "image_url", "image_url": {"url": "https://example.com/watch.jpg"}}
    ],
    "aspect_ratio": "auto",
})
resp.raise_for_status()
if resp.status_code == 202:
    raise SystemExit("job envelope: poll data.status_url")
body = resp.json()
print([d["url"] for d in body["data"]], body.get("usage"))

What to check before showing it

  • Dial and hands: ask for the same time as the product photo and compare them side by side.
  • Scale: a 44 mm case on a thin wrist looks different from a 36 mm one, so state the case size in the prompt.
  • Clasp and strap holes: a bracelet that shows no clasp at all is a rejection, not a style choice.
  • Skin and lighting: the wrist photo is the base layer, so its edges should look unchanged.

Cost and limits

Each call returns usage.cost with the billed amount, so log it per shopper session. Quality defaults to high; Sume's docs list auto, low, medium, high, xhigh and max, and a lower tier is the cheaper way to preview before the shopper commits to a full render.

Treat the result as a visual preview, not a size guide. Say so in the page copy, and keep the shopper's upload only as long as your privacy policy states; ChatGPT's own feature saves the photo to the user's library, per the TechCrunch report.

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume