Happy Horse 1.0 is now on fal

fal-ai/kling/v1-5/kolors-virtual-try-on

Kling Kolors Virtual TryOn v1.5 is a high quality image based Try-On endpoint which can be used for commercial try on.
Inference
Commercial use
Partner

Input

Additional Settings

Customize your input with more control.

Result

Idle

What would you like to do next?

Your request will cost $0.07 per generation.

Logs

Kolors Virtual Try On - Free Change Clothes with AI Online | Kling v1.5

Virtual try-on model for fashion e-commerce. Composites a garment onto a person in a photo using Kling Kolors v1.5.


Endpoint

fal-ai/kling/v1-5/kolors-virtual-try-on

Cost: $0.07 / generation
Best for: Garment-on-model compositing, fashion e-commerce


About the Model

Kling Kolors Virtual Try-On v1.5 is a commercial-grade virtual try-on model developed by Kuaishou as part of the Kling image generation suite. It uses diffusion-based inpainting to realistically composite a garment onto a person: preserving the model's pose, skin tone, and body shape while accurately rendering fabric texture, color, and fit.

The model is image-in, image-out. It takes a photo of a person and a photo of a garment, and returns a single composited result. It is optimized for fashion e-commerce use cases and is cleared for commercial use.

Kolors refers to the underlying image generation backbone, which is Kuaishou's proprietary text-to-image model trained on a large Chinese and multilingual dataset. In the context of virtual try-on, the Kolors backbone handles perceptual quality and photorealism, while the Kling v1.5 wrapper handles garment alignment and pose conditioning.


Quick Start

JavaScript / Node.js
bash
npm install --save @fal-ai/client
bash
export FAL_KEY="YOUR_API_KEY"
javascript
import { fal } from "@fal-ai/client";

const result = await fal.subscribe("fal-ai/kling/v1-5/kolors-virtual-try-on", {
  input: {
    human_image_url: "https://example.com/person.jpg",
    garment_image_url: "https://example.com/shirt.jpg"
  },
  logs: true,
  onQueueUpdate: (update) => {
    if (update.status === "IN_PROGRESS") {
      update.logs.map((log) => log.message).forEach(console.log);
    }
  },
});

console.log(result.data.image.url); // output image URL
Python
bash
pip install fal-client
bash
export FAL_KEY="YOUR_API_KEY"
python
import fal_client

def on_queue_update(update):
    if isinstance(update, fal_client.InProgress):
        for log in update.logs:
            print(log["message"])

result = fal_client.subscribe(
    "fal-ai/kling/v1-5/kolors-virtual-try-on",
    arguments={
        "human_image_url": "https://example.com/person.jpg",
        "garment_image_url": "https://example.com/shirt.jpg"
    },
    with_logs=True,
    on_queue_update=on_queue_update,
)

print(result["image"]["url"])  # output image URL

Schema

Input
ParameterTypeDescription
`human_image_url`stringURL of the person photo. Front-facing, clear body visibility recommended.
`garment_image_url`stringURL of the garment photo. Flat lay with clean edges and no background preferred.
`sync_mode`booleanIf `true`, returns the image directly in the response instead of via queue.
json
{
  "human_image_url": "https://example.com/person.jpg",
  "garment_image_url": "https://example.com/shirt.jpg"
}
Output
FieldTypeDescription
`image.url`stringURL of the generated try-on image
`image.width`integerImage width in pixels
`image.height`integerImage height in pixels
`image.content_type`stringMIME type (e.g. `image/png`)
`image.file_name`stringFile name
`image.file_size`integerFile size in bytes
json
{
  "image": {
    "url": "https://v3.fal.media/files/panda/Hoy3zhimzVKi3F2uoGBnh_result.png",
    "width": 768,
    "height": 1024,
    "content_type": "image/png",
    "file_name": "result.png",
    "file_size": 595094
  }
}

Note: The output is a single image object, not an array. Access the URL at `result["image"]["url"]` (Python) or `result.data.image.url` (JS), not `result[0]`.


Strengths and Limitations

Works well with:

  • Upper body garments (shirts, jackets, tops)
  • Simple silhouettes
  • Front-facing models

Known limitations:

  • Struggles with garment type switching (e.g. swapping a skirt for pants)
  • Complex layering may not render accurately

Input Image Tips

Person photo:

  • Front-facing pose
  • Full or upper-body visibility
  • Minimal occlusion (arms not crossed, etc.)

Garment photo:

  • Flat lay or model shot with clean edges
  • White or plain background preferred
  • Avoid heavy shadows or folds

File Handling

You can pass images as public URLs or upload them via the client:

javascript
// Upload a local file and use the returned URL
const file = new File([fileData], "garment.jpg", { type: "image/jpeg" });
const url = await fal.storage.upload(file);
python
url = fal_client.upload_file("path/to/garment.jpg")

Base64 data URIs are also accepted, though they may slow down large requests.


Queue (Long-running Requests)

For async usage, submit to the queue and poll for results:

javascript
const { request_id } = await fal.queue.submit("fal-ai/kling/v1-5/kolors-virtual-try-on", {
  input: { human_image_url: "...", garment_image_url: "..." },
  webhookUrl: "https://your-webhook.url/results", // optional
});

const status = await fal.queue.status("fal-ai/kling/v1-5/kolors-virtual-try-on", {
  requestId: request_id,
  logs: true,
});

const result = await fal.queue.result("fal-ai/kling/v1-5/kolors-virtual-try-on", {
  requestId: request_id,
});

If this model doesn't fit your use case, consider:

  • `fal-ai/leffa/virtual-tryon`
  • `fal-ai/image-apps-v2/virtual-try-on`