Leffa Virtual TryOn
Integriruj
leffa/virtual-tryon
# Run the model; wait up to 20 s for the finished result in the same call
curl -X POST "https://api.doitong.com/v1/run/leffa/virtual-tryon?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"human_image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg",
"garment_image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg",
"garment_type": "upper_body"
}'
# Still "queued" or "running"? Poll with the id from the response:
curl "https://api.doitong.com/v1/requests/REQUEST_ID?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY"
const API = "https://api.doitong.com/v1";
const headers = {
"Authorization": "Bearer " + process.env.DOITONG_API_KEY,
"Content-Type": "application/json",
};
// Run the model; wait up to 20 s for the finished result in the same call
let res = await fetch(API + "/run/leffa/virtual-tryon?wait=20", {
method: "POST",
headers,
body: JSON.stringify({
"human_image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg",
"garment_image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg",
"garment_type": "upper_body"
}),
});
let request = await res.json();
if (!res.ok) throw new Error(request.error.code + ": " + request.error.message);
// Not finished yet: long-poll until it is
while (request.status === "queued" || request.status === "running") {
res = await fetch(API + "/requests/" + request.id + "?wait=20", { headers });
request = await res.json();
}
if (request.status !== "succeeded") throw new Error(JSON.stringify(request.error));
console.log(request.outputs.map((o) => o.url), request.cost.credits + " API credits ($" + request.cost.usd + ")");
import os
import requests
API = "https://api.doitong.com/v1"
headers = {"Authorization": "Bearer " + os.environ["DOITONG_API_KEY"]}
payload = {
"human_image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg",
"garment_image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg",
"garment_type": "upper_body",
}
# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/leffa/virtual-tryon", params={"wait": 20}, json=payload, headers=headers)
request = r.json()
if not r.ok:
raise RuntimeError(request["error"]["code"] + ": " + request["error"]["message"])
# Not finished yet: long-poll until it is
while request["status"] in ("queued", "running"):
request = requests.get(API + "/requests/" + request["id"], params={"wait": 20}, headers=headers).json()
if request["status"] != "succeeded":
raise RuntimeError(request["error"])
print([o["url"] for o in request["outputs"]], request["cost"]["credits"], "API credits", "$" + request["cost"]["usd"])
# 1. Connect once (Claude Code; Cursor, VS Code, Claude Desktop: https://doitong.com/rom/developers/docs/mcp)
claude mcp add --transport http doitong-models https://api.doitong.com/v1/mcp \
--header "Authorization: Bearer $DOITONG_API_KEY"
# 2. Your agent calls the "run" tool with:
{
"model_id": "leffa/virtual-tryon",
"input": {
"human_image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg",
"garment_image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg",
"garment_type": "upper_body"
}
}
Kall o Leffa Virtual TryOn modelo (leffa/virtual-tryon) vas o Doitong API. Dokumentacia vaš agentura: https://doitong.com/rom/developers/models/leffa/virtual-tryon.md
POST https://api.doitong.com/v1/run/leffa/virtual-tryon?wait=20
Authorization: Bearer $DOITONG_API_KEY
Content-Type: application/json
{
"human_image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg",
"garment_image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg",
"garment_type": "upper_body"
}
Te o response status si "queued" vaj "running", ker polling GET https://api.doitong.com/v1/requests/REQUEST_ID?wait=20 dži kaj te avel "succeeded"; e fajlo si andro outputs[].url. POST https://api.doitong.com/v1/quote/leffa/virtual-tryon sa jekhe body-esa del o precizno molipen angl-o phiripen.
Kava mangipen: $0.10 100 API krediti Phir les kate
Tiro nevo API klidin. Dikhavel pes akana numa thaj si angleder ando kodo thaj ando API klidin kotor tele. Garav les: na thovel les ande kodo savo keren andre jekh browser.
Tiro prvo rezultato si kate
Ker tele jekh mangipen thaj phir les tire API klidinosa. E rezultatur si kopirime amare arakhipneste, vično vaj 7 dives bilačhes.
Ker jekh mangipen
O kontrolura kerde si katar e schemaske. O kodo thaj e cena menjinen sar tu len menjines.
/run/leffa/virtual-tryon?wait=20
hesab → $0.10
# Run the model; wait up to 20 s for the finished result in the same call
curl -X POST "https://api.doitong.com/v1/run/leffa/virtual-tryon?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"human_image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg",
"garment_image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg",
"garment_type": "upper_body"
}'
# Still "queued" or "running"? Poll with the id from the response:
curl "https://api.doitong.com/v1/requests/REQUEST_ID?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY"
const API = "https://api.doitong.com/v1";
const headers = {
"Authorization": "Bearer " + process.env.DOITONG_API_KEY,
"Content-Type": "application/json",
};
// Run the model; wait up to 20 s for the finished result in the same call
let res = await fetch(API + "/run/leffa/virtual-tryon?wait=20", {
method: "POST",
headers,
body: JSON.stringify({
"human_image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg",
"garment_image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg",
"garment_type": "upper_body"
}),
});
let request = await res.json();
if (!res.ok) throw new Error(request.error.code + ": " + request.error.message);
// Not finished yet: long-poll until it is
while (request.status === "queued" || request.status === "running") {
res = await fetch(API + "/requests/" + request.id + "?wait=20", { headers });
request = await res.json();
}
if (request.status !== "succeeded") throw new Error(JSON.stringify(request.error));
console.log(request.outputs.map((o) => o.url), request.cost.credits + " API credits ($" + request.cost.usd + ")");
import os
import requests
API = "https://api.doitong.com/v1"
headers = {"Authorization": "Bearer " + os.environ["DOITONG_API_KEY"]}
payload = {
"human_image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg",
"garment_image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg",
"garment_type": "upper_body",
}
# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/leffa/virtual-tryon", params={"wait": 20}, json=payload, headers=headers)
request = r.json()
if not r.ok:
raise RuntimeError(request["error"]["code"] + ": " + request["error"]["message"])
# Not finished yet: long-poll until it is
while request["status"] in ("queued", "running"):
request = requests.get(API + "/requests/" + request["id"], params={"wait": 20}, headers=headers).json()
if request["status"] != "succeeded":
raise RuntimeError(request["error"])
print([o["url"] for o in request["outputs"]], request["cost"]["credits"], "API credits", "$" + request["cost"]["usd"])
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "run",
"arguments": {
"model_id": "leffa/virtual-tryon",
"input": {
"human_image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg",
"garment_image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg",
"garment_type": "upper_body"
},
"wait_seconds": 20
}
}
}
Phandel kava mangipen
Tiro kluč ačhel kadale browsereste: bičhalel pes numa ko Doitong API thaj šuvav pes (localStorage) numa te tiknes Remember. Le jekh API ključ
Palal Leffa Virtual TryOn
Renderisarel jekh gad katar jekh kipo pe manuš ande aver kipo. Inputura si `human_image_url`, `garment_image_url` thaj obligatori `garment_type`: upper_body, lower_body vaj dresses. `num_inference_steps` džal dži 50 (standardno 50) thaj `guidance_scale` dži 20. O rezultato si jekh png vaj jpeg, e `seed`-sa pala pale-keribare rezultatura.
Parametra
num_inference_stepsopcionalno
seedopcionalno
guidance_scaleopcionalno
enable_safety_checkeropcionalno
output_formatopcionalno
human_image_urltrubul
garment_image_urltrubul
garment_typetrubul
Fajloske parametra lel jekh publikano https:// URL, jekh data: URI dži 10 MB, vaj e file_url uploadoski. Fajlura
Rezultato
{
"id": "req_8k2m4q7x1z9c3v5b6n0p2r4t",
"object": "request",
"model": "leffa/virtual-tryon",
"status": "succeeded",
"created_at": "2026-10-20T12:00:00Z",
"started_at": "2026-10-20T12:00:02Z",
"completed_at": "2026-10-20T12:00:09Z",
"queue_position": null,
"cost": {
"credits": 100,
"usd": "0.10",
"charged": 100,
"refunded": 0
},
"input": {
"human_image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg",
"garment_image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg",
"garment_type": "upper_body"
},
"output": {
"image": {
"url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
"content_type": "image/jpeg",
"file_name": "0-output.jpeg",
"file_size": 1843200,
"width": 1024,
"height": 768
},
"seed": 42,
"has_nsfw_concepts": false
},
"outputs": [
{
"type": "image",
"url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
"content_type": "image/jpeg",
"file_size": 1843200,
"width": 1024,
"height": 768,
"stored": true
}
],
"error": null,
"metrics": {
"inference_seconds": 6.8
},
"urls": {
"self": "https://api.doitong.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t",
"cancel": "https://api.doitong.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t/cancel"
}
}
Outputoske fieldura
- image
- object {url, content_type, file_name, file_size, width, height}Kipo dino sar rezultato.
- seed
- integerSeed upotreblovano ande inferencia.
- has_nsfw_concepts
- booleanIndikator e NSFW konceptonge ande o kipo.
Aver variantura e Leffa
Bute modeli: Editime e kipesko
AI agentenge: kadija rig sar Markdown si kate https://doitong.com/rom/developers/models/leffa/virtual-tryon.md. Sa e modelura thaj e gidura: https://doitong.com/developers/llms.txt






