Virtual Try-On API

Drop garments, wigs, or accessories onto any person photo with one REST call. From $0.0115 per try-on — production-ready for ecommerce, marketplaces, and fashion creator tools.

$0.0115 / try-on
No credit card · Upperbody · Lowerbody · Dresses · Royalty-free outputs

Built for production catalogs

Generate try-on imagery for thousands of SKUs without a studio, model agency, or per-shot enterprise contract.

👗

Three garment categories

Upperbody, lowerbody, and dresses with a single category param. Same endpoint also handles wigs and accessory swaps.

12–18 s typical

Around 12–18 seconds at default quality. Drop to 25 steps for ~8 second turnarounds when you need throughput over fidelity.

🧵

Fabric + texture fidelity

Preserves the garment's actual print, fabric texture, and silhouette — not a generic stylization.

🔁

Up to 4 variations

Set n_samples to 1–4 to get multiple try-on variants per garment in a single call — perfect for catalog A/B testing.

💸

$0.0115 per try-on

Pay-as-you-go from $0.0115 (11.5 credits). 4–17× cheaper than published VTO API rates from Vue.ai, VTO.ai, and Revery.ai.

📦

Batch + webhook ready

Queue thousands of try-ons via /v1/image/batch and receive webhook callbacks. No polling loops required.

Quickstart

Run one try-on with a single POST. Send the person photo and the garment photo as base64; receive the result.

curl Python Node
# curl — JSON with base64 inputs
PERSON_B64=$(base64 -w0 person.jpg)
GARMENT_B64=$(base64 -w0 garment.jpg)

curl -X POST https://api.pixelapi.dev/v1/virtual-tryon \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d "{
    \"person_image\": \"$PERSON_B64\",
    \"garment_image\": \"$GARMENT_B64\",
    \"category\": \"upperbody\",
    \"n_samples\": 1,
    \"n_steps\": 40
  }"
# Python — base64 inputs, polls the job until done
import base64, requests, time

def b64(path):
    with open(path, "rb") as f:
        return base64.b64encode(f.read()).decode()

r = requests.post(
    "https://api.pixelapi.dev/v1/virtual-tryon",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json={
        "person_image": b64("person.jpg"),
        "garment_image": b64("garment.jpg"),
        "category": "upperbody",
        "n_samples": 1,
    },
    timeout=60,
)
job_id = r.json()["job_id"]

while True:
    s = requests.get(
        f"https://api.pixelapi.dev/v1/virtual-tryon/jobs/{job_id}",
        headers={"Authorization": "Bearer YOUR_API_KEY"},
    ).json()
    if s["status"] in ("completed", "failed"):
        print(s)
        break
    time.sleep(2)
// Node — base64 inputs
const fs = require("fs");
const b64 = (p) => fs.readFileSync(p).toString("base64");

const r = await fetch("https://api.pixelapi.dev/v1/virtual-tryon", {
  method: "POST",
  headers: {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    person_image: b64("person.jpg"),
    garment_image: b64("garment.jpg"),
    category: "upperbody",
    n_samples: 1,
  }),
});
const { job_id } = await r.json();
console.log("queued", job_id);

PixelAPI vs other virtual try-on APIs

Published pricing or quote ranges from Vue.ai, VTO.ai, and Revery.ai. PixelAPI ships the same job at 5–20× lower cost with no enterprise contract.

PixelAPI Other VTO APIs
Price per try-on (PAYG)$0.10$0.50 – $2.00
Free credits on signup100 — no cardDemo only, enterprise sales call
Self-serve RESTYes — sign up, copy key, shipOften gated behind SaaS contract
Garment categoriesUpperbody, lowerbody, dressVaries — usually upperbody only
Variations per callUp to 4 (n_samples)1 per call typical
Batch endpointYes — webhook-drivenCustom contract
Other tools in same key14 (background, upscale, restore, edit, 3D…)1 (try-on only)
Indian Rupee billingRazorpay (₹200 / 2K credits)USD only

Competitor pricing references: public pages and reseller quote ranges, checked 2026-05-17. Most enterprise VTO APIs publish "contact sales" instead of per-call rates.

Use cases shipping on this endpoint today

A few of the workloads teams are running on /v1/virtual-tryon right now.

🛍️

Ecommerce PDPs

Marketplaces auto-generate a "see it on a model" preview for every SKU in a catalog, fed from the same flat garment photo their supplier already provided.

📱

Consumer try-on apps

Apps let the user upload a selfie and try on outfits from a curated catalog. Mobile parity via the Lensora Studio tool.

💇

Wig + accessory swaps

Beauty and hair brands swap wigs, headbands, eyewear, and earrings onto a hero shot to show variants without a re-shoot.

🧪

Ad creative testing

Growth teams generate 4 variants of the same garment on the same model with n_samples=4 and pick the highest-CTR variant for paid social.

FAQ

The questions we get most often from teams evaluating virtual try-on APIs.

How much does the virtual try-on API cost?

Each try-on costs 11.5 credits, which is $0.0115 on pay-as-you-go (1 credit = $0.001). That is 4–17× cheaper than published VTO API rates from Vue.ai, VTO.ai, or Revery.ai which usually land in the $0.50–$2.00 per try-on range or require enterprise contracts.

What garment types are supported?

Upperbody (tops, shirts, jackets, t-shirts), lowerbody (pants, jeans, skirts, shorts), and full dresses. You select the category with the category parameter. The same endpoint also handles wigs and accessories when sent as the garment image — the model swaps the masked region cleanly.

What are the constraints on the person photo?

The person should be visible from at least the chest up for upperbody, and from the knees up for dresses or lowerbody. Front-facing or slight three-quarter poses work best. The endpoint accepts JPEG, PNG, or WebP up to 4K, and returns the result as a new image at the same resolution.

Is there a batch endpoint for catalog ingestion?

Yes. POST /v1/image/batch lets you queue many try-on jobs in one call and receive a webhook when each completes. Most teams pair this with an n_samples value of 1–4 to produce multiple try-on variations per garment for catalog A/B testing.

What is the typical latency per try-on?

Around 12–18 seconds end-to-end for a 1024px input at the default 40 inference steps. You can drop n_steps to 25 for ~8 second turnarounds with a small fidelity trade-off, or check progress with GET /v1/virtual-tryon/jobs/{job_id}.

Can I use the output commercially?

Yes. Outputs from the PixelAPI virtual try-on endpoint are royalty-free and yours to use on product detail pages, ad creative, social media, and marketplaces. You retain full rights to the input images and the generated try-on result.

Does PixelAPI store the uploaded photos?

Inputs are kept only as long as needed to complete the job and produce the signed result URL. The retention window is configurable per plan. Enterprise customers can run inference with zero persistent storage by polling with the returned signed URL inside the configured TTL.

Try the virtual try-on API free

11.5 credits on signup. No card. Same key works on web, the Lensora mobile app, and the REST API.

Get 100 free credits