Virtual Try On APIs
Explore fal’s Collection Of The Best Virtual Try-On APIs
fal is the best developer-friendly, one-stop shop for AI virtual try-on models. Every virtual try-on model on fal runs through the same SDK pattern, so once you’ve integrated one, switching between Kling Kolors v1.5, FASHN v1.6, image-apps-v2, or FLUX 2 LoRA Gallery is a one-line endpoint change.
How do I run a virtual try-on through fal?
The static try-on endpoints take a person image plus a garment image and return a composited result. Here’s what it looks like after installing @fal-ai/client and setting your FAL_KEY.
jsimport { fal } from "@fal-ai/client"; const result = await fal.subscribe("fal-ai/kling/v1-5/kolors-virtual-try-on", { input: { human_image_url: "https://your-host.com/person.jpg", garment_image_url: "https://your-host.com/shirt.jpg" } }); console.log(result.data.image.url);
The same call shape works across static virtual try-on endpoints. You swap the endpoint string and adjust the input fields each model expects.
Which models on fal handle image-based virtual try-on?
Here are four models that handle static image-based virtual try-on.
- Kling Kolors v1.5 takes a person image and a garment image, returning a composited output via diffusion-based inpainting. It works well with front-facing model photos paired with flat-lay or clean-background garment shots.
- FASHN v1.6 renders garment details like text and patterns at 864×1296 resolution and accepts both on-model and flat-lay garment photos. Its
categoryparameter handles tops, bottoms, or one-pieces, with auto-detection as the default. - image-apps-v2 try-on takes a person image and clothing image, with a
preserve_posetoggle and aspect ratio control for 4K output. - FLUX 2 LoRA Gallery applies LoRA fine-tuning to FLUX.2 for garment transfer, with batch output of 1-4 variations per call and a
lora_scaleparameter to balance garment visibility against photorealism.
Use these models when you need static try-on results for ecommerce, catalog imagery, personalization flows, or creative styling previews.
How does the real-time virtual try-on endpoint work?
Decart Lucy 2.1 VTON Realtime transforms your webcam feed in real time using a text prompt and an optional reference garment image. It operates over WebRTC rather than the standard request-response queue.
To start a session, you can use fal.realtime.connect with the endpoint and send your initial prompt.
jsimport { fal } from "@fal-ai/client"; const connection = fal.realtime.connect("decart/lucy2-vton/realtime", { connectionKey: `session-${Date.now()}`, throttleInterval: 0, onResult: handleResult, }); connection.send({ prompt: "Substitute the current top with a bright red hoodie", reference_image_url: "https://example.com/outfit.png" });
You can update the prompt or reference image mid-session by sending new messages on the same connection, which is useful for shopping flows where the user cycles through garment options.
What controls do these models offer for garment accuracy or output quality?
Each model exposes different parameters for tuning garment accuracy, generation speed, and output quality.
- FASHN v1.6 has the most explicit controls: a
modeparameter for the speed-to-quality tradeoff, withperformance,balanced, andqualityoptions;garment_photo_typeto optimize parsing for on-model versus flat-lay inputs; andnum_samplesfor batching multiple variations in one call. - FLUX 2 LoRA Gallery uses
lora_scale, with a 0-2 range, to control how strongly the LoRA fine-tuning influences the output. It also includes anaccelerationparameter for faster generation. - Kling Kolors v1.5 keeps its schema minimal: just the two image URLs and an optional
sync_modeflag.
Use FASHN when you need more explicit control, FLUX 2 LoRA Gallery when you want LoRA-driven garment transfer and variations, and Kling Kolors when you want a simple two-image try-on flow.
Pricing
Pricing varies by model and unit across fal’s virtual try-on catalog.
| Model | Price |
|---|---|
| FLUX 2 LoRA Gallery | $0.021 / processed megapixel |
| Decart Lucy 2.1 VTON Realtime | $0.02 / second of streaming |
| Kling Kolors v1.5 | $0.07 / generation |
As a worked example, 100 static try-on generations would cost roughly:
- $7 on Kling Kolors v1.5
- Variable cost on FLUX 2 LoRA Gallery, depending on processed megapixels
- $120 for 100 one-minute Decart Lucy 2.1 VTON Realtime sessions
You only pay for what you generate or stream, which lets you compare static try-on quality, real-time responsiveness, and garment control options without rewriting your integration.
Quick Start
Install the client
bashnpm install --save @fal-ai/client
Set your API key
bashexport FAL_KEY="YOUR_API_KEY"
Call a model
jsimport { fal } from "@fal-ai/client"; const result = await fal.subscribe("fal-ai/kling/v1-5/kolors-virtual-try-on", { input: { human_image_url: "https://your-host.com/person.jpg", garment_image_url: "https://your-host.com/shirt.jpg" } }); console.log(result.data.image.url);
The same auth, billing, and queue logic carry across every virtual try-on endpoint, so you can compare models side by side without rewriting integration code.
For real-time try-on, use the WebRTC-based realtime connection flow instead of the standard request-response queue.