Virtual try-on or virtual fitting: which Sume Format for apparel?
Both Formats start from a garment still and make a 9:16 video. Virtual try-on shows a creator changing into the garment; fitting shows its silhouette and drape.

Use sume-virtual-try-on for an ad, where a creator changes into the garment and the reveal is the hook. Use sume-virtual-fitting for a product page or a returns-aware preview, where the point is to show silhouette, sleeve length and drape with a small turn. Both take a garment still as the clothing reference, both make a 9:16 video, and the shipped examples build the first frame with ChatGPT Image 2 and animate it with Seedance 2.5 reference-to-video.
How do they differ?
From the Format catalog and shipped example briefs, read 2026-10-01:
| sume-virtual-try-on | sume-virtual-fitting | |
|---|---|---|
| Shot | A creator changing into a relaxed overshirt, same face, body, room and camera angle | A preview of an oversized shirt, same person, with a small turn |
| What it stresses | The outfit reveal | Silhouette, sleeve length and fabric drape |
| Best for | Short-video and feed ads | Product-page or listing video |
| Input | A garment still as clothing reference | A garment still as clothing reference |
| Method | ChatGPT Image 2 first frame, Seedance 2.5 reference-to-video | ChatGPT Image 2 first frame, Seedance 2.5 reference-to-video |
How do I call either one?
The wire contract is the same, only the slug differs. Send the garment as an attachment and name the garment's real colour, cut and length in the brief, since that is what the fitting Format is meant to show.
curl -X POST https://api.sume.com/v1/formats/sume/sume-virtual-fitting/runs \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: fitting-shirt-001" \
-d '{
"instruction": "9:16 fitting preview of this oversized shirt, show sleeve length and drape, small turn",
"attachments": [{ "type": "input_image", "image_url": "https://example.com/shirt.jpg" }],
"generation_spend_cap_usd": 20
}'What are the limits?
- A fitting preview is generated, so it is not a size guide. It cannot tell a shopper how the garment fits their body, and it should not be presented that way.
- Fabric drape and sleeve length are the first things to check against the real garment.
- If the garment has a printed pattern or text, check it frame by frame.
- For a catalogue of garments, queue them as a bulk run, but the queue has no webhook; poll it, and read
counts.failedwhen it reportscompleted. - Using a real person's likeness needs their permission.
How do I tell them apart before I spend?
Call GET /v1/formats/sume/sume-virtual-try-on and GET /v1/formats/sume/sume-virtual-fitting. Each returns a description and an io profile with input_kind and output_kind, plus a showcase of an output the Format actually produced. Look at the two showcases side by side; they show the difference faster than a description.
Which one first for Q4?
Run the ad version on your best-selling gift item and the fitting version on the item with the most returns questions. Compare them by what each is for, not by one score. When the clips are approved, the same slugs can be queued for the rest of the line.
Sources
Related posts
More in Formats
- Serum drip, toner pour or cream squeeze: which Sume image Format?
Eight Sume catalog Formats make a single beauty hero image from a packshot. What each one shows, so you can pick one for holiday skincare ads.
- What is a Sume Format? Turn an agent thread into one API call
A Sume Format is a saved video recipe your backend calls by handle and slug. One POST runs it in a fresh sandbox and returns media plus optional typed JSON.
- How to embed AI video generation in your product with Sume Formats
To embed AI video generation, your server holds one Sume API key and runs a Format per customer, with a derived Idempotency-Key, spend cap, and webhook.
- Sume Format run lifecycle: statuses, webhooks, and polling
A Sume Format run goes from queued to processing to a terminal status. Learn the outcome from one signed format.run.terminal webhook, by polling, or both.
Written by Sume