Generation Tools
Virtual Try-On (Batch)
Put a full outfit — top, bottom, shoes, whatever you need — on one AI fashion model in a single shot, instead of generating each garment separately.
toolId: "outfit_photo"
4 credits
model_garment
ratio: global (default 1:1)
What it does
Same idea as Virtual Try-On (Single), but multiple garment photos compose into one coherent outfit on the model — a blazer, trousers and shoes become a single finished shot instead of three separate generations.
Request body
| Field | Type | Description | |
|---|---|---|---|
toolId | string | required | Always "outfit_photo". |
images.fashion_model | string | required | A catalog ID from GET /v1/fashion-models, or a direct image URL. |
images.garment_photos | string[] | required | Array of garment photo URLs — at least one, e.g. top + bottom + shoes. |
images.venue | string | optional | A catalog ID from GET /v1/venues, or a direct image URL. Omit for a clean studio background. |
pose | string | optional | A catalog ID from GET /v1/poses. Omit for a natural standing pose. |
ratio | string | optional | One of 1:1, 4:5, 3:4, 9:16, 16:9. Defaults to 1:1. |
Example request
curl -X POST https://api.fashiolabs.com/v1/generations \
-H "Authorization: Bearer fio_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"toolId": "outfit_photo",
"images": {
"fashion_model": "fm_south_asian_01",
"garment_photos": [
"https://your-cdn.com/blazer.jpg",
"https://your-cdn.com/trousers.jpg"
],
"venue": "venue_studio_white"
},
"pose": "pose_standing_relaxed",
"ratio": "4:5"
}'
const res = await fetch("https://api.fashiolabs.com/v1/generations", {
method: "POST",
headers: {
Authorization: "Bearer " + process.env.FASHIO_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
toolId: "outfit_photo",
images: {
fashion_model: "fm_south_asian_01",
garment_photos: [
"https://your-cdn.com/blazer.jpg",
"https://your-cdn.com/trousers.jpg",
],
venue: "venue_studio_white",
},
pose: "pose_standing_relaxed",
ratio: "4:5",
}),
});
const { id } = await res.json();
import os, requests
res = requests.post(
"https://api.fashiolabs.com/v1/generations",
headers={"Authorization": f"Bearer {os.environ['FASHIO_API_KEY']}"},
json={
"toolId": "outfit_photo",
"images": {
"fashion_model": "fm_south_asian_01",
"garment_photos": [
"https://your-cdn.com/blazer.jpg",
"https://your-cdn.com/trousers.jpg",
],
"venue": "venue_studio_white",
},
"pose": "pose_standing_relaxed",
"ratio": "4:5",
},
)
job_id = res.json()["id"]
Response
202 Accepted
{ "success": true, "id": "8b1e...", "status": "processing" }Poll GET /v1/generations/:id (see Quickstart) until it completes:
200 · completed
{
"success": true,
"id": "8b1e...",
"status": "completed",
"resultUrls": ["https://.../result.jpg"],
"errorMessage": null
}Common errors
| Status | Meaning |
|---|---|
| 400 | outfit_photo: missing required image "garment_photos" — required image field wasn't resolvable. |
| 402 | Insufficient diamonds. Required 4, have <n>. |
| 429 | Daily request cap reached for this key — see Rate Limits. |
Related tools
- Virtual Try-On (Single) — single garment instead.
- Pro Studio — adds shot-type and style-preset controls.