Virtual try-on API
Send a photo of a person and a product image. Get back a photo of that person wearing the product, in about 8 seconds.
- median per try-on
- 8.2 s
- per try-on on plans
- $0.02
- free credits to start
- 10
person
product
Product text sent with this request
"title": "Cocktail mini dress""description": "Party cocktail mini dress, fitted bodice, short hemline, evening occasion"
- median per try-on
- 8.2 s
- per try-on on plans
- $0.02
- free credits to start
- 10
Used by 900+ fashion stores
Three requests, from photo to result
Use the TypeScript SDK or plain REST from any language.
Quickstart guide →- 1
Upload the photo
POST /images/upload
You get an imageId back. Reuse it for every try-on with that photo.
- 2
Create the try-on
POST /try-on
Send the product image, title and description with the imageId. No catalog to sync first.
- 3
Get the result
GET /generations/:id
Poll, call waitFor() in the SDK, or receive a webhook.
Keep your API key on your server. Browser requests should go through your backend.
import { Genlook } from "@genlook/api";
import { readFile } from "node:fs/promises";
const client = new Genlook({ apiKey: process.env.GENLOOK_API_KEY! });
// 1. Upload the customer photo once, reuse the imageId.
const { imageId } = await client.images.upload(
await readFile("./customer.jpg"),
{ mimeType: "image/jpeg" },
);
// 2. Create the try-on. The product is created inline.
const { generationId } = await client.tryOn.create({
products: [{
externalId: "hoodie-42",
title: "Oversized cotton hoodie",
description: "Relaxed fit, dropped shoulders, hip length.",
images: [{ source: { url: "https://cdn.example.com/hoodie.jpg" } }],
}],
person: { image: { source: { id: imageId } } },
});
// 3. Wait for the result (or use a webhook).
const result = await client.generations.waitFor(generationId);
console.log(result.resultImageUrl);GET /generations/:id200 · COMPLETED{
"generationId": "cm8gen456xyz",
"status": "COMPLETED",
"resultImageUrl": "https://storage.googleapis.com/...",
"createdAt": "2026-03-30T10:00:00.000Z",
"updatedAt": "2026-03-30T10:00:10.000Z"
}Works with any product type
Each image came from one try-on call. Hover to see the photo that was sent.
More examples →























Any product type
Clothing, shoes, eyewear, hats, wigs, colored lenses and pet wear.
Outfits
Up to 4 products in one try-on, like a top, trousers and a jacket.
Webhooks
Get generation.completed and generation.failed events instead of polling.
Any image input
JPEG, PNG, WebP or HEIC up to 10 MB, as a file, a URL or an imageId.
Failed try-ons are refunded
Every error returns a clear code and message.
User data controls
Delete all images of one user in one call, or keep uploads for 1, 3 or 7 days.
Your branding
Add your logo to results. The EU AI Act label can be turned off per request.
Nothing to host
No GPUs or queues on your side, and engine updates reach you automatically.
$0.02 per try-on on plans
Down to $0.015 at volume, or $0.04 pay as you go. Same API and engine on every option, cancel anytime.
Custom plans start at $1,000 a month. For those and the startup program, email thibault@genlook.app.
Get an API key- Pay as you go$0.04 per try-on, in credit packs from $5. Credits never expire.$80.00/ month$0.04 per try-on
- StarterLowest cost$20 a month, 1,000 try-ons included, then $0.02 each.$40.00/ month$0.02 per try-on
- Growth$99 a month, 6,000 try-ons included, then $0.018 each.$99.00/ month$0.0495 per try-on
- Scale$300 a month, 20,000 try-ons included, then $0.015 each.$300/ month$0.15 per try-on
Estimate before tax. Failed try-ons are refunded. New accounts get 10 free credits.
SDK and tools
Compare with other try-on APIs
Full comparison table →How do I get an API key?
Can I call the API from the browser?
I run a Shopify, WooCommerce or PrestaShop store. Do I need the API?
How fast is it?
How can I test without spending credits?
Do you have a startup program?
Start with 10 free credits.
Create an account, get an API key and run your first try-on in a few minutes.












