Bria Virtual Try On API Documentation

Bria Virtual Try On API Documentation

Playground

Try it on WaveSpeedAI!

Bria Virtual Try-On dresses a person in reference garments using a person photo, one to three garment or accessory reference images, and optional text instructions for virtual try-on, fashion visualization, e-commerce, and styling workflows. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.

Features

Bria Virtual Try-On lets you visualize garments and accessories on a person using a portrait or full-body photo and one to three reference images. Upload the person image separately from the clothing or accessory references, then optionally add instructions to guide how the items should appear in the final result.

The model is designed for fashion visualization, apparel previews, accessory try-on, and e-commerce workflows where you want to place referenced items onto an existing person image.


Why Choose This?

  • Purpose-built editing
    Visualize garments and accessories on a person from reference images.

  • Multi-reference support
    Combine one person photo with one to three garment or accessory reference images.

  • Optional prompt guidance
    Images alone are sufficient. Add a prompt only when you want to direct a specific edit.

  • Original framing by default
    Omit aspect_ratio to retain the person photo’s aspect ratio.

  • Standard image output
    Receive a PNG or JPEG image URL in the standard WaveSpeed prediction response.


Parameters

ParameterRequiredDescription
imageYesPerson photo to edit. Public image URL or Base64-encoded image. JPEG, JPG, PNG, and WEBP are supported.
reference_imagesYesOne to three garment or accessory reference images, supplied as public URLs or Base64-encoded images. These are separate from image.
promptNoOptional instructions to guide the edit. Omit to use the model’s built-in instructions.
aspect_ratioNoOutput aspect ratio: 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, or 16:9. Omit to preserve the person photo’s aspect ratio.
output_formatNoOutput image format: png or jpeg. Default: png.
seedNoRandom seed for generation. Omit for a random seed.

How to Use

  1. Upload a person photo - Provide the base person image in image.
  2. Add reference images - Supply one to three garment or accessory images in reference_images.
  3. Guide the edit optionally - Add a concise prompt for placement or styling details.
  4. Choose output settings - Optionally set the aspect ratio, output format, and seed.
  5. Submit - Poll the prediction result and retrieve the generated image URL.

Pricing

Pricing is fixed at $0.04 per generated image. Each successful request returns one image.

OutputPrice
One generated image$0.04

One to three reference images are included at the same price. prompt, aspect_ratio, output_format, and seed do not add separate charges.


Best Use Cases

  • Virtual clothing try-on
  • Fashion catalog variations
  • Multi-item outfit visualization

Pro Tips

  • Use a clear person photo with the relevant body area visible.
  • Use clear garment references with visible fabric, patterns, and closures. Use the prompt to explain layering or which existing items to retain.
  • Leave aspect_ratio unset when you want to preserve the original framing.
  • Keep all input image URLs publicly accessible while the request is processing.
  • Use a fixed seed when comparing prompt changes.

Notes

  • image and reference_images are required; prompt is optional.
  • The limit is one person photo plus one to three reference images, for two to four images in total.
  • Bria Virtual Try-On — Apply garment or accessory references to an existing person photo for virtual try-on workflows.
  • Bria Product Holding — Generate images of a person naturally holding or presenting a referenced product.

Authentication

For authentication details, please refer to the Authentication Guide.

API Endpoints

Submit Task & Query Result

set -euo pipefail

export WAVESPEED_API_KEY="your-api-key"

REQUEST_BODY=$(cat <<'JSON'
{
  "image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg",
  "reference_images": [
    "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg"
  ],
  "aspect_ratio": "1:1",
  "output_format": "png"
}
JSON
)

# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
  -X POST "https://api.wavespeed.ai/api/v3/bria/virtual-try-on" \
  -H "Authorization: Bearer ${WAVESPEED_API_KEY}" \
  -H "Content-Type: application/json" \
  -d "${REQUEST_BODY}")

TASK=$(printf '%s' "${SUBMIT_RESPONSE}" | jq 'if type == "object" and has("data") then .data else . end')
PREDICTION_ID=$(printf '%s' "${TASK}" | jq -r '.id // empty')
if [ -z "${PREDICTION_ID}" ]; then
  printf 'Submission response did not contain a prediction id
' >&2
  exit 1
fi
RESULT_URL="https://api.wavespeed.ai/api/v3/predictions/${PREDICTION_ID}/result"

# 2. Poll until the prediction finishes.
while true; do
  RESPONSE=$(curl --silent --show-error --fail-with-body \
    "${RESULT_URL}" \
    -H "Authorization: Bearer ${WAVESPEED_API_KEY}")
  RESULT=$(printf '%s' "${RESPONSE}" | jq 'if type == "object" and has("data") then .data else . end')
  STATUS=$(printf '%s' "${RESULT}" | jq -r '.status // empty')

  case "${STATUS}" in
    completed) printf '%s\n' "${RESULT}" | jq '.outputs'; break ;;
    failed|cancelled|timeout|deleted) printf '%s\n' "${RESULT}" | jq . >&2; exit 1 ;;
    *) sleep 2 ;;
  esac
done

Parameters

Task Submission Parameters

Request Parameters

ParameterTypeRequiredDefaultRangeDescription
imagestringYes-The person photo to edit. Public image URL or Base64-encoded image. Supported formats: JPEG, JPG, PNG, and WEBP.
reference_imagesarray<string>Yes-1 ~ 3 itemsOne to three garment or accessory reference images. Each entry is a public image URL or Base64-encoded image. These are separate from the person photo in image.
promptstringNo-Optional instructions to guide the edit. Omit to use the model's built-in instructions.
aspect_ratiostringNo-1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9Optional output aspect ratio. Omit to preserve the person photo's original aspect ratio.
output_formatstringNopngpng, jpegOutput image format. Default: png.
seedintegerNo--Random seed for generation. Omit to let the upstream service choose a random seed.

Response Parameters

ParameterTypeDescription
codeintegerHTTP status code (e.g., 200 for success)
messagestringStatus message (e.g., “success”)
data.idstringUnique identifier for the prediction, Task Id
data.modelstringModel ID used for the prediction
data.outputsarrayOutput values, usually URL strings; some models return text strings or structured result objects (empty when status is not completed)
data.urlsobjectObject containing related API endpoints
data.statusstringTask status. completed is successful; failed, cancelled, timeout, and deleted are failure terminal statuses.
data.created_atstringISO timestamp of when the request was created (e.g., “2023-04-01T12:34:56.789Z”)
data.errorstringError message (empty if no error occurred)
data.timingsobjectObject containing timing details
data.timings.inferenceintegerInference time in milliseconds

Result Request Parameters

ParameterTypeRequiredDefaultDescription
idstringYes-Task ID

Result Response Parameters

ParameterTypeDescription
codeintegerHTTP status code (e.g., 200 for success)
messagestringStatus message (e.g., “success”)
dataobjectThe prediction data object containing all details
data.idstringUnique identifier for the prediction
data.modelstringModel ID used for the prediction
data.outputsarray<string | object>Array of generated outputs (empty when status is not completed). Items are usually URL strings, but may be text strings or structured result objects, depending on the model.
data.urlsobjectObject containing related API endpoints
data.statusstringStatus: completed is successful; failed, cancelled, timeout, and deleted are failure terminal statuses
data.created_atstringISO timestamp of when the request was created
data.errorstringError message (empty if no error occurred)
data.timingsobjectObject containing timing details
data.timings.inferenceintegerInference time in milliseconds
© 2026 WaveSpeedAI. All rights reserved.