{ "model_id": "pruna/p-image-try-on", "provider_id": "pruna", "name": "P-Image Try-On", "description": "Pruna's P-Image Try-On virtually fits one or more garments onto a person's photo. Provide a photo of a person plus garment reference images and the model realistically dresses the person in the provided garments.", "task": "Image-to-Image", "tags": [ "Image Editing", "Virtual Try-On", "Fashion" ], "context_length": null, "max_output_tokens": null, "schema_version": "1.0.0", "pricing": { "Per image": 0.015, "Per input image": 0.008 }, "examples": [ { "name": "Single Garment", "description": "Fit a single garment onto a person's photo.", "input": { "person_image": "https://huggingface.co/spaces/yisol/IDM-VTON/resolve/main/example/human/00121_00.jpg", "garment_images": [ "https://huggingface.co/spaces/yisol/IDM-VTON/resolve/main/example/cloth/04469_00.jpg" ] }, "output": { "image": "https://examples.aig.cloudflare.com/pruna/p-image-try-on/single-garment.jpg" }, "raw_response": { "state": "Completed", "result": { "image": "https://examples.aig.cloudflare.com/pruna/p-image-try-on/single-garment.jpg" }, "gatewayMetadata": { "keySource": "Unified" } }, "code_snippets": [ { "label": "typescript", "language": "typescript", "code": "const response = await env.AI.run(\n 'pruna/p-image-try-on',\n {\n person_image:\n 'https://huggingface.co/spaces/yisol/IDM-VTON/resolve/main/example/human/00121_00.jpg',\n garment_images: [\n 'https://huggingface.co/spaces/yisol/IDM-VTON/resolve/main/example/cloth/04469_00.jpg',\n ],\n },\n)\nconsole.log(response)" }, { "label": "curl", "language": "bash", "code": "curl https://api.cloudflare.com/client/v4/accounts/$CLOUDFLARE_ACCOUNT_ID/ai/run \\\n --header \"Authorization: Bearer $CLOUDFLARE_API_TOKEN\" \\\n --header \"Content-Type: application/json\" \\\n --data '{\n \"model\": \"pruna/p-image-try-on\",\n \"input\": {\n \"person_image\": \"https://huggingface.co/spaces/yisol/IDM-VTON/resolve/main/example/human/00121_00.jpg\",\n \"garment_images\": [\n \"https://huggingface.co/spaces/yisol/IDM-VTON/resolve/main/example/cloth/04469_00.jpg\"\n ]\n }\n}'" } ] }, { "name": "Turbo PNG", "description": "Faster generation with turbo optimizations, returning a PNG.", "input": { "person_image": "https://huggingface.co/spaces/yisol/IDM-VTON/resolve/main/example/human/00121_00.jpg", "garment_images": [ "https://huggingface.co/spaces/yisol/IDM-VTON/resolve/main/example/cloth/09163_00.jpg" ], "turbo": true, "output_format": "png" }, "output": { "image": "https://examples.aig.cloudflare.com/pruna/p-image-try-on/turbo-png.png" }, "raw_response": { "state": "Completed", "result": { "image": "https://examples.aig.cloudflare.com/pruna/p-image-try-on/turbo-png.png" }, "gatewayMetadata": { "keySource": "Unified" } }, "code_snippets": [ { "label": "typescript", "language": "typescript", "code": "const response = await env.AI.run(\n 'pruna/p-image-try-on',\n {\n person_image:\n 'https://huggingface.co/spaces/yisol/IDM-VTON/resolve/main/example/human/00121_00.jpg',\n garment_images: [\n 'https://huggingface.co/spaces/yisol/IDM-VTON/resolve/main/example/cloth/09163_00.jpg',\n ],\n turbo: true,\n output_format: 'png',\n },\n)\nconsole.log(response)" }, { "label": "curl", "language": "bash", "code": "curl https://api.cloudflare.com/client/v4/accounts/$CLOUDFLARE_ACCOUNT_ID/ai/run \\\n --header \"Authorization: Bearer $CLOUDFLARE_API_TOKEN\" \\\n --header \"Content-Type: application/json\" \\\n --data '{\n \"model\": \"pruna/p-image-try-on\",\n \"input\": {\n \"person_image\": \"https://huggingface.co/spaces/yisol/IDM-VTON/resolve/main/example/human/00121_00.jpg\",\n \"garment_images\": [\n \"https://huggingface.co/spaces/yisol/IDM-VTON/resolve/main/example/cloth/09163_00.jpg\"\n ],\n \"turbo\": true,\n \"output_format\": \"png\"\n }\n}'" } ] } ], "default_example": null, "code_snippets": [], "supports_async": false, "zdr": false, "zdr_comment": null, "external_info": "https://docs.api.pruna.ai/guides/quickstart", "terms": null, "cover_image_url": null, "metadata": { "Garments": "1 required, up to 6 recommended, up to 11 supported", "Input Modalities": "Image", "Output Formats": "jpg, png, webp" }, "request_formats": null, "providers": null, "provider_details": [ { "id": "pruna", "pricing": { "output_image_count": 0.015, "input_image_count": 0.008 } } ], "banner": { "id": "97503cbc-cf25-4782-b55e-03aa37f6c7e3", "title": "70% off P-Image-Try-On", "text": "Save 70% on all inference with P-Image-Try-On until Sunday, 21 June at 11:59 PM CEST", "severity": "info", "dismissible": false }, "created_at": "2026-06-18 15:52:42", "schema": { "input": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "person_image": { "type": "string", "description": "Image of the person to dress. A publicly reachable HTTP(S) URL or a base64 data URI (data:image/...;base64,...)." }, "garment_images": { "minItems": 1, "maxItems": 11, "type": "array", "items": { "type": "string" }, "description": "Garment reference images to fit onto the person. Each entry is an HTTP(S) URL or a base64 data URI. Up to 6 recommended, up to 11 supported." }, "prompt": { "default": "", "description": "Experimental guidance for non-flatlay garment images, e.g. which garment from which image to use.", "type": "string" }, "seed": { "description": "Random seed. Leave unset for a random seed.", "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, "turbo": { "default": false, "description": "Run faster with additional optimizations. Not recommended for more than 4 garments.", "type": "boolean" }, "output_format": { "default": "jpg", "description": "Format of the saved output image.", "type": "string", "enum": [ "webp", "jpg", "png" ] }, "output_quality": { "default": 95, "description": "Quality for jpg/webp outputs, from 0 to 100.", "type": "integer", "minimum": 0, "maximum": 100 }, "reference_pose": { "description": "Optional reference pose image (HTTP(S) URL or data URI). When provided, the person is reposed to match this reference before virtual try-on.", "type": "string" }, "preserve_input_size": { "default": true, "description": "Return the output at the original input resolution.", "type": "boolean" } }, "required": [ "person_image", "garment_images", "prompt", "turbo", "output_format", "output_quality", "preserve_input_size" ], "additionalProperties": {} }, "output": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "image": { "type": "string", "format": "uri", "description": "Presigned URL for the generated try-on image." } }, "required": [ "image" ], "additionalProperties": {} } } }