Menu
All Kids Clothing Bags Shoes

Vrool API Documentation

Build AI fashion experiences with the Vrool Fashion Makeover API. Commercial, credit-metered, and production-ready.

Overview

The Vrool Fashion Makeover API dresses a person photo in the clothing you supply and returns a realistic AI-generated image. It is designed for ecommerce stores, marketplaces, fashion apps and agencies who want virtual try-on without running their own AI.

  • All AI runs on Vrool servers β€” you never handle or see model keys.
  • Simple JSON in, image out. No SDK required.
  • Credit-metered with a free sandbox to test before you pay.
  • The result image is returned inline β€” Vrool keeps no copy, so you store it on your own platform.

See it in action

Send a customer photo plus your product image. The API returns the customer realistically wearing that product.

1. Customer photo
person_image
+
2. Your product
top_image
AI makeover returned
image_base64

Add bottom_image, shoes_image or outfit_image to dress the full look. The person's face, pose and background are preserved β€” only the clothing changes.

What you can build

The Fashion Makeover API powers virtual try-on anywhere your customers shop.

🛍️

Ecommerce try-on

Let shoppers see clothes on themselves on product pages before they buy.

🏪

Marketplaces & resale

Add try-on to listings so buyers visualise second-hand and new items.

📱

Fashion & styling apps

Build virtual fitting rooms and outfit builders inside your app.

Social & campaigns

Generate shareable "wear the look" content for ads and UGC.

🧠

Personal shopping

Show AI recommendations on the actual customer for higher conversion.

📦

Fewer returns

Help customers pick the right look first time and cut return rates.

Getting started

1
Create a developer account
Register your company at the Developer Portal. https://vrool.com/developers
2
Get your API keys
You get 5 free sandbox credits and a sandbox key automatically. Create a live key when ready.
3
Make your first call
POST a person image + a garment image to the endpoint below.
4
Buy credits & go live
Top up credits in the portal and switch to your live key. Buy credits

Base URLs

POST https://vrool.com/api/v1/fashion/makeover

Also reachable at: https://vrool.com/content/plugins/vrool_ai/api/makeover.php

All requests use HTTPS. The same endpoint serves sandbox and live traffic β€” the key you use decides the mode.

Authentication

Every request needs your public key and secret key. Send them in the Authorization header:

Authorization: Bearer PUBLIC_KEY:SECRET_KEY

Or as separate headers:

X-Api-Key: PUBLIC_KEY
X-Api-Secret: SECRET_KEY

Keep your secret key server-side. Never expose it in browsers or mobile apps. If a key leaks, rotate or revoke it instantly in the Developer Portal.

Sandbox vs Live

SandboxLive
Key prefixvk_test_vk_live_
Credits5 free on signupPurchased credits
Real image outputYesYes
Use forTesting / integrationProduction traffic

The response includes a "mode" field so you always know which key handled the request.

Fashion Makeover

Send a person image plus one or more garment images. Each image can be a public HTTPS URL or a base64 data URI.

curl -X POST https://vrool.com/api/v1/fashion/makeover \
  -H "Authorization: Bearer PUBLIC_KEY:SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "person_image": "https://yourcdn.com/user.jpg",
    "top_image": "https://yourcdn.com/top.jpg",
    "bottom_image": "https://yourcdn.com/jeans.jpg",
    "shoes_image": "https://yourcdn.com/trainers.jpg",
    "attributes": { "gender": "female", "notes": "" }
  }'

Request parameters

FieldTypeRequiredDescription
person_imagestringYesPhoto of the person. HTTPS URL or data URI.
top_imagestringβ€”Upper-body garment.
bottom_imagestringβ€”Lower-body garment.
shoes_imagestringβ€”Footwear.
outfit_imagestringβ€”A full outfit in one image.
clothing_imagestringβ€”Generic single garment.
attributes.genderstringβ€”Optional hint: male / female / unisex.
attributes.body_typestringβ€”Optional body-type hint.
attributes.notesstringβ€”Optional extra styling notes.

At least one garment image is required. Up to 4 garment images are combined into one outfit. You can also send a generic array: garments: [{ "src": "...", "label": "top" }].

Image requirements

  • Formats: JPG, PNG, WEBP or GIF.
  • Max size: 12 MB per image.
  • Person photo: clear, well-lit, full or upper body facing the camera gives the best result.
  • Garment photo: the product on a plain background (or a clean product shot) works best.
  • URLs must be publicly reachable over HTTPS. Private, localhost and internal addresses are rejected for security.

Code examples

const res = await fetch("https://vrool.com/api/v1/fashion/makeover", {
  method: "POST",
  headers: {
    "Authorization": "Bearer " + PUBLIC_KEY + ":" + SECRET_KEY,
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    person_image: "https://yourcdn.com/user.jpg",
    top_image: "https://yourcdn.com/top.jpg"
  })
});
const data = await res.json();
// The image is returned inline β€” store it on YOUR platform.
const bytes = Uint8Array.from(atob(data.image_base64), c => c.charCodeAt(0));
// e.g. upload `bytes` to your own storage, or use data.image_data_uri directly.

Responses

A successful call returns HTTP 200 with the generated image inline as base64. Vrool does not keep a copy β€” decode and store it on your own platform.

{
  "success": true,
  "request_id": 10432,
  "image_base64": "iVBORw0KGgoAAAANSUhEUgAA...",
  "image_format": "png",
  "image_data_uri": "data:image/png;base64,iVBORw0KGgoAAA...",
  "credits_used": 1,
  "credits_remaining": 99,
  "mode": "sandbox",
  "time_ms": 8421
}
FieldDescription
image_base64The generated image, base64-encoded.
image_formatFile extension, e.g. png.
image_data_uriReady-to-use data: URI (embed directly in an <img> src).
credits_usedCredits charged for this request.
credits_remainingYour balance after the request.
request_idUnique id for support & reconciliation.
modesandbox or live.

Errors return a non-2xx status with:

{
  "success": false,
  "error": { "code": "insufficient_credits", "message": "Not enough API credits. Please top up." }
}

Error codes

HTTPCodeMeaning
401missing_credentialsKey and/or secret not supplied.
401invalid_keyKey not found or revoked.
401invalid_secretSecret does not match.
401invalid_signatureHMAC signature missing or wrong (when signing is required).
403suspendedAccount suspended.
403ip_blockedRequest IP not in allowlist.
400missing_person_imageperson_image not supplied.
400missing_clothingNo garment image supplied.
402insufficient_creditsTop up your API credits.
429rate_limitedToo many requests per minute.
429daily_limit / monthly_limitUsage cap reached.
502generation_failedGeneration failed β€” your credit was refunded.
503api_disabledThe API is temporarily unavailable.

Credits are deducted before processing and automatically refunded if generation fails, so you are never charged for a failed generation.

Rate limits

  • Per minute: 60 requests
  • Per day: 5,000
  • Per month: 100,000

Exceeding a limit returns HTTP 429. Enterprise accounts can request higher limits β€” contact support.

Signed requests optional

For extra security you can sign the raw request body with your secret using HMAC-SHA256 and send it as a header:

X-Vrool-Signature: base64(hmac_sha256(rawBody, SECRET_KEY))
<?php
$body = json_encode(["person_image" => $personUrl, "top_image" => $topUrl]);
$signature = base64_encode(hash_hmac("sha256", $body, $secretKey, true));
// send header:  X-Vrool-Signature: $signature

Signing is currently optional. Your account can require it for all traffic.

Buying credits

Each generation costs 1 credit (≈ Β£0.060). 5 free sandbox credits on signup. Buy credit packs securely by card in the Developer Portal β€” credits are added instantly.

CreditsPricePer credit
100Β£6.00Β£0.060
500Β£28.00Β£0.056
1,000Β£55.00Β£0.055

Need higher volume or custom pricing? Contact Vrool for an enterprise plan.

Best practices

  • Call the API only from your backend so your secret key stays private.
  • Store the returned image on your own storage/CDN β€” Vrool does not retain it.
  • Handle 429 responses with exponential backoff and retry.
  • Watch credits_remaining and top up before you run out.
  • Log request_id for every call to make support and reconciliation easy.
  • Use an IP allowlist and key rotation from the portal for tighter security.

Support & versioning

This is API v1. Breaking changes will ship under a new version path so your integration keeps working.

Manage keys, credits and usage anytime in the Developer Portal: https://vrool.com/developers

Scroll to top