# Fashn Virtual Try-On API

> Provider: **Fashn**
> Source: https://www.pixazo.ai/models/fashn-vton

Fashn VTON provides state-of-the-art AI virtual try-on technology that realistically renders clothing items on human subjects. Through Pixazo's API, e-commerce platforms and fashion retailers can enable customers to visualize how garments will look on them before purchasing.

## Fashn v1.6

### Image to Image (Virtual Try On)

## Base URL

```
https://gateway.pixazo.ai/fashn-virtual-try-on/v1
```

## Authentication

All requests require an API key passed via header.

Header

Type

Required

Description

Ocp-Apim-Subscription-Key

string

Yes

Your API subscription key

## Fashn Virtual Try-On generate request - Fashn Virtual Try-On API

## Request Code

HTTP Python JavaScript cURL

```
POST https://gateway.pixazo.ai/fashn-virtual-try-on/v1/fashn-virtual-try-on-request
Content-Type: application/json
Cache-Control: no-cache
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

{
  "model_image": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/vt_human.jpg",
  "garment_image": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/vt_top.jpeg",
  "category": "auto",
  "mode": "balanced",
  "garment_photo_type": "auto",
  "moderation_level": "permissive",
  "num_samples": 1,
  "segmentation_free": true,
  "output_format": "png"
}
```

```
import requests

url = "https://gateway.pixazo.ai/fashn-virtual-try-on/v1/fashn-virtual-try-on-request"
headers = {
    "Content-Type": "application/json",
    "Cache-Control": "no-cache",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
    "model_image": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/vt_human.jpg",
    "garment_image": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/vt_top.jpeg",
    "category": "auto",
    "mode": "balanced",
    "garment_photo_type": "auto",
    "moderation_level": "permissive",
    "num_samples": 1,
    "segmentation_free": true,
    "output_format": "png"
}

response = requests.post(url, json=data, headers=headers)
print(response.json())
```

```
const url = 'https://gateway.pixazo.ai/fashn-virtual-try-on/v1/fashn-virtual-try-on-request';

const headers = {
  'Content-Type': 'application/json',
  'Cache-Control': 'no-cache',
  'Ocp-Apim-Subscription-Key': 'YOUR_SUBSCRIPTION_KEY'
};

const body = {
  model_image: 'https://pub-582b7213209642b9b995c96c95a30381.r2.dev/vt_human.jpg',
  garment_image: 'https://pub-582b7213209642b9b995c96c95a30381.r2.dev/vt_top.jpeg',
  category: 'auto',
  mode: 'balanced',
  garment_photo_type: 'auto',
  moderation_level: 'permissive',
  num_samples: 1,
  segmentation_free: true,
  output_format: 'png'
};

fetch(url, {
  method: 'POST',
  headers: headers,
  body: JSON.stringify(body)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
```

```
curl -X POST "https://gateway.pixazo.ai/fashn-virtual-try-on/v1/fashn-virtual-try-on-request" \
  -H "Content-Type: application/json" \
  -H "Cache-Control: no-cache" \
  -H "Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY" \
  --data-raw '{
    "model_image": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/vt_human.jpg",
    "garment_image": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/vt_top.jpeg",
    "category": "auto",
    "mode": "balanced",
    "garment_photo_type": "auto",
    "moderation_level": "permissive",
    "num_samples": 1,
    "segmentation_free": true,
    "output_format": "png"
  }'
```

## Output

```
{
  "request_id": "fashn-virtual-try-on_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/fashn-virtual-try-on_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
```

[Try Now](https://api.pixazo.ai/api-details#api=fashn-virtual-try-on&operation=fashn-virtual-try-on-request)

## Webhook (Optional)

Add the `X-Webhook-URL` header to your generate request to receive a POST callback instead of polling.

```
X-Webhook-URL: https://your-server.com/webhook/callback
```

## Request Parameters - Fashn Virtual Try-On generate request

Parameter

Required

Type

Description

model\_image

Yes

string

URL to a human model image (full body or upper body). Must be accessible via public HTTP/HTTPS endpoint.

garment\_image

Yes

string

URL to a garment image (on-model or flat-lay). Must be a public HTTP/HTTPS endpoint.

category

No

string

Specifies garment category to improve segmentation. Values: auto, top, bottom, dress, outerwear.

mode

No

string

Processing mode balancing speed and quality. Values: fast, balanced, high\_quality.

garment\_photo\_type

No

string

Specifies the type of garment image provided. Values: auto, on\_model, flat\_lay.

moderation\_level

No

string

Content moderation sensitivity. Values: strict, moderate, permissive.

num\_samples

No

integer

Number of try-on variations to generate. Maximum value: 5.

segmentation\_free

No

boolean

When true, bypasses detailed segmentation for faster processing (may reduce accuracy on complex garments).

output\_format

No

string

Output image format. Values: png, jpeg.

## Example Request

```
{
  "model_image": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/vt_human.jpg",
  "garment_image": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/vt_top.jpeg",
  "category": "auto",
  "mode": "balanced",
  "garment_photo_type": "auto",
  "moderation_level": "permissive",
  "num_samples": 1,
  "segmentation_free": true,
  "output_format": "png"
}
```

## Response

```
{
  "request_id": "fashn-virtual-try-on_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/fashn-virtual-try-on_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
```

## Request Headers

Header

Value

Content-Type

application/json

Cache-Control

no-cache

Ocp-Apim-Subscription-Key

YOUR\_SUBSCRIPTION\_KEY

## Response Handling

Common status codes.

Code

Meaning

202

Accepted — Request queued

400

Bad Request

401

Unauthorized

402

Insufficient Balance

403

Forbidden

429

Too Many Requests

500

Internal Server Error

## Error Responses

Queue system errors and model validation errors.

### Queue System Errors

```
// 402 — Insufficient balance
{
  "error": "Insufficient Balance",
  "message": "Your wallet does not have enough balance."
}
```

```
// 400 — Model not found
{
  "error": "Model not found",
  "message": "Model 'fashn-virtual-try-on' not found or is disabled"
}
```

### Error via Status/Webhook

```
{
  "request_id": "fashn-virtual-try-on_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "fashn-virtual-try-on",
  "error": "Description of the error",
  "output": null
}
```

## Retrieving Results

Poll the universal status endpoint to check progress and retrieve results.

### Endpoint

```
GET https://gateway.pixazo.ai/v2/requests/status/{request_id}
Ocp-Apim-Subscription-Key: YOUR_API_KEY
```

## cURL Example

```
curl -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  "https://gateway.pixazo.ai/v2/requests/status/fashn-virtual-try-on_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
```

## Response (Completed)

```
{
  "request_id": "fashn-virtual-try-on_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "fashn-virtual-try-on",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/fashn-virtual-try-on_019dxxxx-xxxx/output.ext"
    ],
    "media_type": "application/octet-stream"
  },
  "created_at": "2026-03-31T10:00:00.000Z",
  "updated_at": "2026-03-31T10:00:15.000Z",
  "completed_at": "2026-03-31T10:00:15.000Z"
}
```

## Response Fields

Field

Type

Description

request\_id

string

Unique request identifier

status

string

QUEUED, PROCESSING, COMPLETED, FAILED, or ERROR

model\_id

string

Model that processed the request

error

string|null

Error message if failed

output.media\_url

array

URLs to generated media (R2 CDN)

output.media\_type

string

MIME type of the output

created\_at

string

When request was created

completed\_at

string|null

When request completed

polling\_url

string

Status URL (initial response only)

## Status Values

Status

Description

QUEUED

Request accepted, waiting to be processed

PROCESSING

Being processed by the model

COMPLETED

Done — output contains the result

FAILED

Failed — check error field

ERROR

System error — not charged

## Status Flow

```
QUEUED → PROCESSING → COMPLETED
                    → FAILED
                    → ERROR
```

## Typical Workflow

1.  **Send a generate request** to the API endpoint
2.  **Save the `request_id`** from the response
3.  **Poll** every 5-10 seconds: `GET /v2/requests/status/{request_id}`
4.  **When `status` is `"COMPLETED"`**, download from `output.media_url`

**Tip:** Use `X-Webhook-URL` header to get a callback instead of polling.

## Glass v1

### Text to Image

## Generate - Pixazo Accessories-VTON

## Request Code

HTTP Python JavaScript cURL

```
POST https://gateway.pixazo.ai/glass-virtual-try-on/v1/api/glass-virtual-tryon
Content-Type: application/json
Cache-Control: no-cache
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

{
  "model_image_path": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/model.png",
  "glass_image_path": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/Capturade-tela-2025-07-17%20171034.png"
}
```

```
import requests

url = "https://gateway.pixazo.ai/glass-virtual-try-on/v1/api/glass-virtual-tryon"
headers = {
    "Content-Type": "application/json",
    "Cache-Control": "no-cache",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
    "model_image_path": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/model.png",
    "glass_image_path": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/Capturade-tela-2025-07-17%20171034.png"
}

response = requests.post(url, json=data, headers=headers)
print(response.json())
```

```
const url = 'https://gateway.pixazo.ai/glass-virtual-try-on/v1/api/glass-virtual-tryon';

const data = {
  model_image_path: 'https://pub-582b7213209642b9b995c96c95a30381.r2.dev/model.png',
  glass_image_path: 'https://pub-582b7213209642b9b995c96c95a30381.r2.dev/Capturade-tela-2025-07-17%20171034.png'
};

fetch(url, {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Cache-Control': 'no-cache',
    'Ocp-Apim-Subscription-Key': 'YOUR_SUBSCRIPTION_KEY'
  },
  body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
```

```
curl -v -X POST "https://gateway.pixazo.ai/glass-virtual-try-on/v1/api/glass-virtual-tryon" \
-H "Content-Type: application/json" \
-H "Cache-Control: no-cache" \
-H "Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY" \
--data-raw '{
  "model_image_path": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/model.png",
  "glass_image_path": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/Capturade-tela-2025-07-17%20171034.png"
}'
```

## Output

```
{
  "success": true,
  "request_id": "abc-123-xyz",
  "status": "submitted"
}
```

[Try Now](https://api.pixazo.ai/api-details#api=glass-virtual-try-on&operation=generate)

## Request Parameters - Generate

Parameter

Required

Type

Description

model\_image\_path

Yes

string

Support inputting image Base64 encoding or image URL (ensure accessibility). Ex: https://pub-582b7213209642b9b995c96c95a30381.r2.dev/model.png. Please note, if you use the Base64 method, make sure all image data parameters you pass are in Base64 encoding format. When submitting data, do not add any prefixes to the Base64-encoded string, such as data:image/png;base64. The correct parameter format should be the Base64-encoded string itself. Supported image formats include .jpg / .jpeg / .png. The image file size cannot exceed 10MB, and the image resolution should not be less than 300\*300px

glass\_image\_path

No

string

Default: null. Support inputting image Base64 encoding or image URL (ensure accessibility). Ex: https://pub-582b7213209642b9b995c96c95a30381.r2.dev/Capturade-tela-2025-07-17%20171034.png. Please note, if you use the Base64 method, make sure all image data parameters you pass are in Base64 encoding format. When submitting data, do not add any prefixes to the Base64-encoded string, such as data:image/png;base64. The correct parameter format should be the Base64-encoded string itself. Supported image formats include .jpg / .jpeg / .png. The image file size cannot exceed 10MB, and the image resolution should not be less than 300\*300px

num\_images

No

number

Default: 1. Number of images to generate

output\_format

No

string

Default: "jpeg". Output format for the images. Possible values: "jpeg", "png"

## Example Request

```
{
  "model_image_path": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/model.png",
  "glass_image_path": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/Capturade-tela-2025-07-17%20171034.png"
}
```

## Response

```
{
  "success": true,
  "request_id": "abc-123-xyz",
  "status": "submitted",
  "message": "Request submitted"
}
```

## Request Headers

Header

Value

Content-Type

application/json

Cache-Control

no-cache

Ocp-Apim-Subscription-Key

YOUR\_SUBSCRIPTION\_KEY

## Response Handling

Common status codes for Generate.

Code

Meaning

200

Success

400

Bad Request

401

Unauthorized

403

Forbidden

404

Not Found

429

Too Many Requests

500

Internal Server Error

## Retrieving Image Result and URL

After submitting your request, use this endpoint to check status and retrieve results.

### Endpoint

**POST** https://gateway.pixazo.ai/glass-virtual-try-on-polling/api/glass-virtual-tryon-result

### Request Body

```
{ "request_id": "abc-123-xyz" }
```

### Request Code

HTTP Python JavaScript cURL

```
POST https://gateway.pixazo.ai/glass-virtual-try-on-polling/api/glass-virtual-tryon-result
Content-Type: application/json
Cache-Control: no-cache
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

{
  "request_id": "abc-123-xyz"
}
```

```
import requests

url = "https://gateway.pixazo.ai/glass-virtual-try-on-polling/api/glass-virtual-tryon-result"
headers = {
    "Content-Type": "application/json",
    "Cache-Control": "no-cache",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
    "request_id": "abc-123-xyz"
}

response = requests.post(url, json=data, headers=headers)
print(response.json())
```

```
const url = 'https://gateway.pixazo.ai/glass-virtual-try-on-polling/api/glass-virtual-tryon-result';

const data = {
  request_id: 'abc-123-xyz'
};

fetch(url, {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Cache-Control': 'no-cache',
    'Ocp-Apim-Subscription-Key': 'YOUR_SUBSCRIPTION_KEY'
  },
  body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
```

```
curl -v -X POST "https://gateway.pixazo.ai/glass-virtual-try-on-polling/api/glass-virtual-tryon-result" \
-H "Content-Type: application/json" \
-H "Cache-Control: no-cache" \
-H "Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY" \
--data-raw '{
  "request_id": "abc-123-xyz"
}'
```

### Response

```
{
  "request_id": "abc-123-xyz",
  "status": "completed",
  "image_url": "https://result-url.example.com/image.jpg",
  "content_type": "image/jpeg",
  "file_size": 174795
}
```

### Image to Image (Virtual Try On)

## Glass Virtual Try On - Pixazo Accessories-VTON

## Request Code

HTTP Python JavaScript cURL

```
POST https://gateway.pixazo.ai/glass-virtual-try-on/v1/api/glass-virtual-tryon
Content-Type: application/json
Cache-Control: no-cache
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

{
  "model_image_path": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/model.png",
  "glass_image_path": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/Capturade-tela-2025-07-17%20171034.png",
  "num_images": 1,
  "output_format": "jpeg"
}
```

```
import requests

url = "https://gateway.pixazo.ai/glass-virtual-try-on/v1/api/glass-virtual-tryon"
headers = {
    "Content-Type": "application/json",
    "Cache-Control": "no-cache",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
    "model_image_path": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/model.png",
    "glass_image_path": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/Capturade-tela-2025-07-17%20171034.png",
    "num_images": 1,
    "output_format": "jpeg"
}

response = requests.post(url, json=data, headers=headers)
print(response.json())
```

```
const url = 'https://gateway.pixazo.ai/glass-virtual-try-on/v1/api/glass-virtual-tryon';

const data = {
  model_image_path: 'https://pub-582b7213209642b9b995c96c95a30381.r2.dev/model.png',
  glass_image_path: 'https://pub-582b7213209642b9b995c96c95a30381.r2.dev/Capturade-tela-2025-07-17%20171034.png',
  num_images: 1,
  output_format: 'jpeg'
};

fetch(url, {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Cache-Control': 'no-cache',
    'Ocp-Apim-Subscription-Key': 'YOUR_SUBSCRIPTION_KEY'
  },
  body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
```

```
curl -v -X POST "https://gateway.pixazo.ai/glass-virtual-try-on/v1/api/glass-virtual-tryon" \
-H "Content-Type: application/json" \
-H "Cache-Control: no-cache" \
-H "Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY" \
--data-raw '{
  "model_image_path": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/model.png",
  "glass_image_path": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/Capturade-tela-2025-07-17%20171034.png",
  "num_images": 1,
  "output_format": "jpeg"
}'
```

## Output

```
{
  "success": true,
  "request_id": "abc-123-xyz",
  "status": "submitted",
  "message": "Request submitted"
}
```

[Try Now](https://api.pixazo.ai/api-details#api=glass-virtual-try-on&operation=glass-virtual-try-on)

## Request Parameters - Glass Virtual Try On

Parameter

Required

Type

Description

model\_image\_path

Yes

string

Support inputting image Base64 encoding or image URL (ensure accessibility). Ex: https://pub-582b7213209642b9b995c96c95a30381.r2.dev/model.png. Please note, if you use the Base64 method, make sure all image data parameters you pass are in Base64 encoding format. When submitting data, do not add any prefixes to the Base64-encoded string, such as data:image/png;base64. The correct parameter format should be the Base64-encoded string itself. Supported image formats include .jpg / .jpeg / .png. The image file size cannot exceed 10MB, and the image resolution should not be less than 300\*300px

glass\_image\_path

No

string

Default: null. Support inputting image Base64 encoding or image URL (ensure accessibility). Ex: https://pub-582b7213209642b9b995c96c95a30381.r2.dev/Capturade-tela-2025-07-17%20171034.png. Please note, if you use the Base64 method, make sure all image data parameters you pass are in Base64 encoding format. When submitting data, do not add any prefixes to the Base64-encoded string, such as data:image/png;base64. The correct parameter format should be the Base64-encoded string itself. Supported image formats include .jpg / .jpeg / .png. The image file size cannot exceed 10MB, and the image resolution should not be less than 300\*300px

num\_images

No

number

Default: 1. Number of images to generate

output\_format

No

string

Default: "jpeg". Output format for the images. Possible values: "jpeg", "png"

## Example Request

```
{
  "model_image_path": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/model.png",
  "glass_image_path": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/Capturade-tela-2025-07-17%20171034.png",
  "num_images": 1,
  "output_format": "jpeg"
}
```

## Response

```
{
  "success": true,
  "request_id": "abc-123-xyz",
  "status": "submitted",
  "message": "Request submitted"
}
```

## Request Headers

Header

Value

Content-Type

application/json

Cache-Control

no-cache

Ocp-Apim-Subscription-Key

YOUR\_SUBSCRIPTION\_KEY

## Response Handling

Common status codes for Glass Virtual Try On.

Code

Meaning

200

Success

400

Bad Request

401

Unauthorized

403

Forbidden

404

Not Found

429

Too Many Requests

500

Internal Server Error
