Ai Clothes Changer
Playground
Try it on WavespeedAI!AI Clothes Changer swaps clothing on a person using reference clothing images. Upload a portrait and up to 10 clothing images to try on. Ready-to-use REST inference API, no coldstarts, affordable pricing.
Features
AI Clothes Changer
AI Clothes Changer is your virtual fitting room — no lines, no hassle. Upload a portrait and any clothing image, and watch the AI seamlessly dress you in seconds. Try on outfits before you buy, visualize your wardrobe, or just have fun experimenting with looks you’d never dare try in real life.
Why Choose This?
-
Instant virtual try-on See how any outfit looks on you without changing clothes. Shopping from the couch just got real.
-
Up to 10 items at once Mix and match — upload multiple clothing images and try them all in one go.
-
Realistic fitting AI adapts clothing to your body shape, pose, and lighting for natural-looking results.
-
Any clothing, any style Dresses, suits, casual wear, costumes, vintage fits — if you can photograph it, you can try it on.
-
Works with any portrait Front-facing photos, casual selfies, professional headshots — all welcome.
Parameters
| Parameter | Required | Description |
|---|---|---|
| image | Yes | Your portrait photo (URL or upload) |
| clothes | Yes | Clothing images to try on (up to 10) |
How to Use
- Upload your portrait — a clear, front-facing photo works best.
- Add clothing images — upload up to 10 garment photos you want to try on.
- Run — AI works its magic.
- Download — save your new looks and share with friends.
Pricing
| Output | Cost |
|---|---|
| Per image | $0.12 |
Best Use Cases
- Online shopping — Try before you buy. See how that jacket actually looks on you.
- Wardrobe planning — Visualize outfit combinations without opening your closet.
- Fashion content — Create lookbooks, style guides, or social media content.
- Costume preview — Halloween, cosplay, themed parties — see it before you commit.
- Gift shopping — Will that sweater look good on them? Now you can check.
- Just for fun — Ever wondered how you’d look in a tuxedo? A vintage dress? A superhero cape?
Pro Tips
- Portrait quality matters — clear, well-lit, front-facing photos give the best results.
- Clothing images should show the full garment against a clean background.
- For best fit, use photos where clothing is laid flat or on a mannequin.
- Try different poses in your portrait for varied results.
- The more visible your body in the portrait, the more realistic the try-on.
Notes
- Both portrait and clothing images are required.
- Maximum 10 clothing images per request.
- Ensure uploaded image URLs are publicly accessible.
- Results are for visualization — actual fit may vary.
Authentication
For authentication details, please refer to the Authentication Guide.
API Endpoints
Submit Task & Query Result
# Submit the task
curl --location --request POST "https://api.wavespeed.ai/api/v3/wavespeed-ai/ai-clothes-changer" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ${WAVESPEED_API_KEY}" \
--data-raw '{}'
# Get the result
curl --location --request GET "https://api.wavespeed.ai/api/v3/predictions/${requestId}/result" \
--header "Authorization: Bearer ${WAVESPEED_API_KEY}"
Parameters
Task Submission Parameters
Request Parameters
| Parameter | Type | Required | Default | Range | Description |
|---|---|---|---|---|---|
| image | string | Yes | - | The URL of the input image. | |
| clothes | array | Yes | - | 1 ~ 10 items | List of clothing image URLs (up to 10). |
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| code | integer | HTTP status code (e.g., 200 for success) |
| message | string | Status message (e.g., “success”) |
| data.id | string | Unique identifier for the prediction, Task Id |
| data.model | string | Model ID used for the prediction |
| data.outputs | array | Array of URLs to the generated content (empty when status is not completed) |
| data.urls | object | Object containing related API endpoints |
| data.urls.get | string | URL to retrieve the prediction result |
| data.has_nsfw_contents | array | Array of boolean values indicating NSFW detection for each output |
| data.status | string | Status of the task: created, processing, completed, or failed |
| data.created_at | string | ISO timestamp of when the request was created (e.g., “2023-04-01T12:34:56.789Z”) |
| data.error | string | Error message (empty if no error occurred) |
| data.timings | object | Object containing timing details |
| data.timings.inference | integer | Inference time in milliseconds |
Result Request Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| id | string | Yes | - | Task ID |
Result Response Parameters
| Parameter | Type | Description |
|---|---|---|
| code | integer | HTTP status code (e.g., 200 for success) |
| message | string | Status message (e.g., “success”) |
| data | object | The prediction data object containing all details |
| data.id | string | Unique identifier for the prediction, the ID of the prediction to get |
| data.model | string | Model ID used for the prediction |
| data.outputs | string | Array of URLs to the generated content (empty when status is not completed). |
| data.urls | object | Object containing related API endpoints |
| data.urls.get | string | URL to retrieve the prediction result |
| data.status | string | Status of the task: created, processing, completed, or failed |
| data.created_at | string | ISO timestamp of when the request was created (e.g., “2023-04-01T12:34:56.789Z”) |
| data.error | string | Error message (empty if no error occurred) |
| data.timings | object | Object containing timing details |
| data.timings.inference | integer | Inference time in milliseconds |