Add AI virtual try-on to any app with one REST call. Send a photo + a clothing image or a text prompt — get a photorealistic result in seconds. Just 2 credits per request.
Designed for ecommerce, styling apps, and fashion marketplaces — fast response, clean REST endpoints, and flat credit pricing.
Send a garment image or a text prompt — the AI picks the right mode automatically.
No GPU-second billing, no per-call surcharge — your plan covers every request.
Keeps pose, lighting, skin tone, and fabric drape intact — trained for fashion, not generic images.
Images encrypted in transit and at rest. Never used for training. Auto-delete on request.
API access is bundled into the Monthly and Yearly plans. One flat rate — 2 credits per API call.
Unlimited swaps in the app + REST API access.
Just $7.50/mo · Save 75% vs Monthly.
For businesses with heavy usage — thousands of calls every day.
⚠️ API access is not available on the Weekly plan. You must be on Monthly or Yearly to receive an API key.
Pick your language, paste the snippet, and you have a working try-on in production.
# Mode A — image-to-image (garment photo)
curl -X POST https://api.looksyai.in/v1/clothes-swap \
-H "Authorization: Bearer $LOOKSY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"person_image_url": "https://example.com/person.jpg",
"clothing_image_url": "https://example.com/dress.jpg",
"quality": "hd"
}'
# Mode B — image-to-prompt (text description)
curl -X POST https://api.looksyai.in/v1/clothes-swap \
-H "Authorization: Bearer $LOOKSY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"person_image_url": "https://example.com/person.jpg",
"prompt": "Red floral summer dress with white sneakers",
"quality": "hd"
}'
import Looksy from "@looksyai/sdk";
const looksy = new Looksy({ apiKey: process.env.LOOKSY_API_KEY });
// Mode A — image-to-image (garment photo)
const a = await looksy.clothesSwap.create({
person_image_url: "https://example.com/person.jpg",
clothing_image_url: "https://example.com/dress.jpg",
quality: "hd"
});
// Mode B — image-to-prompt (text description)
const b = await looksy.clothesSwap.create({
person_image_url: "https://example.com/person.jpg",
prompt: "Red floral summer dress with white sneakers",
quality: "hd"
});
console.log(a.result_url, b.result_url);
import requests, os
URL = "https://api.looksyai.in/v1/clothes-swap"
HEADERS = {
"Authorization": f"Bearer {os.environ['LOOKSY_API_KEY']}",
"Content-Type": "application/json",
}
# Mode A — image-to-image (garment photo)
a = requests.post(URL, headers=HEADERS, json={
"person_image_url": "https://example.com/person.jpg",
"clothing_image_url": "https://example.com/dress.jpg",
"quality": "hd",
}).json()
# Mode B — image-to-prompt (text description)
b = requests.post(URL, headers=HEADERS, json={
"person_image_url": "https://example.com/person.jpg",
"prompt": "Red floral summer dress with white sneakers",
"quality": "hd",
}).json()
print(a["result_url"], b["result_url"])
// Mode A — image-to-image (garment photo)
$a = file_get_contents('https://api.looksyai.in/v1/clothes-swap', false,
stream_context_create([
'http' => [
'method' => 'POST',
'header' => "Authorization: Bearer ".getenv('LOOKSY_API_KEY')."\r\nContent-Type: application/json\r\n",
'content' => json_encode([
'person_image_url' => 'https://example.com/person.jpg',
'clothing_image_url' => 'https://example.com/dress.jpg',
'quality' => 'hd',
]),
]
])
);
// Mode B — image-to-prompt (text description)
$b = file_get_contents('https://api.looksyai.in/v1/clothes-swap', false,
stream_context_create([
'http' => [
'method' => 'POST',
'header' => "Authorization: Bearer ".getenv('LOOKSY_API_KEY')."\r\nContent-Type: application/json\r\n",
'content' => json_encode([
'person_image_url' => 'https://example.com/person.jpg',
'prompt' => 'Red floral summer dress with white sneakers',
'quality' => 'hd',
]),
]
])
);
echo json_decode($a, true)['result_url'];
echo json_decode($b, true)['result_url'];
Get your API key on the Monthly or Yearly plan → dashboard → Developer → Create key.
Everything you need to wire it up — request parameters, response schema, status codes, and webhook payloads.
All requests must include your API key in the Authorization header using the Bearer scheme. Generate keys from your Looksy dashboard (Monthly or Yearly plan only).
Two modes supported — pass exactly one of the following alongside person_image_url:
clothing_image_url — a photo of the garment (flat-lay, model shot, or product shot).prompt — a text description of the outfit you want to try (e.g. "Red floral summer dress with white sneakers").If both are provided, clothing_image_url takes priority. Returns a generation ID and, when mode=sync (default), the final result URL.
| Parameter | Type | Description |
|---|---|---|
person_image_urlREQUIRED |
string | Publicly accessible URL to the person photo. JPG, PNG, or WebP. 256×256 to 4096×4096 px. Max 10 MB. |
clothing_image_urlONE OF |
string | Image-to-image mode. Publicly accessible URL to the outfit/garment image — flat-lay, model shot, or product shot. Mutually exclusive with prompt (if both provided, this one wins). |
promptONE OF |
string | Image-to-prompt mode. Text description of the outfit (e.g. "navy blazer with white sneakers"). Max 500 chars. Use when you don't have a garment photo. |
mode |
enum | One of sync (default, blocks until result) or async (returns immediately with generation_id). |
quality |
enum | One of standard (default) or hd. HD costs the same 2 credits. |
webhook_url |
string | Optional. If supplied, Looksy POSTs the final result payload to this URL when generation completes. |
metadata |
object | Free-form JSON object (up to 1 KB) echoed back in the response and webhook — useful for tying requests to orders or users. |
{
"generation_id": "gen_0xB4F8A9C1",
"status": "COMPLETED",
"result_url": "https://cdn.looksyai.in/r/0xB4F8A9C1.png",
"credits_charged": 2,
"duration_ms": 27482,
"metadata": { "order_id": "ord_12" }
}
Poll this endpoint when using mode=async. Typical polling cadence: every 3 seconds, up to 2 minutes.
Status values: QUEUED, IN_PROGRESS, COMPLETED, FAILED.
When you include webhook_url, Looksy POSTs this JSON body with header X-Looksy-Signature (HMAC-SHA256 of the raw body signed with your API secret).
{
"event": "clothes_swap.completed",
"generation_id": "gen_0xB4F8A9C1",
"status": "COMPLETED",
"result_url": "https://cdn.looksyai.in/r/0xB4F8A9C1.png",
"credits_charged": 2
}
| Code | Reason |
|---|---|
401 | Invalid or missing API key. No credits charged. |
402 | Plan does not include API access (Weekly or expired). |
403 | Content blocked — subject fails safety checks. No credits charged. |
422 | Unreadable input image (bad URL, corrupt file, unsupported format). |
429 | Rate limit exceeded — slow down and retry with backoff. |
500 | Transient server error. Retry once after 2 seconds. |
| Plan | Requests / minute | Concurrent jobs |
|---|---|---|
| Monthly | 60 | 4 |
| Yearly | 120 | 8 |
Burst 2× for 10 seconds allowed. Contact support for higher quotas.
From Shopify try-on buttons to personal-styling apps — here are the most common ways developers use virtual try-on in production.
Let shoppers upload a selfie and see how a product looks on them — drop-in for Shopify, WooCommerce, and custom storefronts.
Power outfit-swap features in your mobile app. Works with existing photo pickers and gallery flows.
Generate model-on shots from flat-lay product photos at scale — boost listing CTR without a photoshoot.
Add an AI outfit filter to your creator app. Save results to drafts, downloads, or editable compositions.
Let your stylist bot send “here's you in it” images back in chat — single endpoint, JSON in, image out.
Pair with a background-remover to produce clean on-model imagery for Amazon, Meesho, Flipkart, and Etsy listings.
Most virtual try-on APIs charge per GPU-second with unpredictable bills. Looksy bundles calls into a flat subscription so costs are simple to plan.
| Feature | Looksy Clothes Swap API | Typical VTO APIs |
|---|---|---|
| Pricing model | Flat — bundled in Monthly / Yearly | Pay-per-call + GPU minutes |
| Cost per request | 2 credits (0 extra $ on plan) | $0.05 – $0.30 |
| Free-tier failed calls | Refunded (safety / unreadable) | Often charged |
| Response time | 20–40s median | 30–90s variable |
| Webhook support | Yes, HMAC signed | Varies |
| SDK languages | Node, Python, PHP, cURL | Usually cURL only |
| Consumer app included | Yes (iOS + Android) | API only |
Each successful API request costs 2 credits from your active Looksy plan. API access is included in the Monthly ($9.99/mo) and Yearly ($89.99/yr) plans — no extra per-call fees on top of your subscription.
Only the Monthly and Yearly plans include API access. The Weekly plan is app-only. Upgrade to Monthly or Yearly to receive an API key.
The Monthly plan includes 200 credits every month, the Yearly plan includes 3,000 credits every year. Each API call uses 2 credits. Enterprise plans get custom credit packs with volume discounts.
Use image-to-image (clothing_image_url) when you have a photo of the exact garment — product shots, supplier images, flat-lays, or model shots. Use image-to-prompt (prompt) when the user describes the outfit in words — "red saree with gold border", "navy blazer with white sneakers". Both modes cost the same 2 credits.
It accepts a person photo plus either a clothing image or a text prompt, and returns a photorealistic virtual try-on image — preserving pose, lighting, fabric drape, and skin tone. Works with sarees, dresses, swimwear, streetwear, kurtas, suits, and more.
Median response is 20–40 seconds. Use mode=async plus a webhook for long-running jobs and non-blocking integrations.
Yes — it's built for that. Drop it into your product page, cart, or custom styling flow. Raw JSON response gives you full control over the UI.
No. You're only charged 2 credits on a successful generation. Safety blocks and unreadable inputs are free.
JPG, PNG, and WebP via public URL. Recommended minimum 512×512 px, max 10 MB per image.
Generate your AI Clothes Changer API key on the Monthly or Yearly plan. Flat 2 credits per call. Cancel anytime.