Platform Documentation v2.1

Virtro Integration & Architecture Guide

Empower your luxury fashion store with an AI Virtual Fitting Room that delivers an authentic drape, lifts Add-to-Cart conversions by +20% to +35%, and completely protects your brand from biometric compliance liability under UK GDPR Article 9.

🛍️ In Plain English for Store Owners:

Virtro allows online shoppers to try on clothes directly on your product pages. It requires no 3D modeling, no CSV uploads, and no complex tagging. Just paste one tag into your store template, and our multimodal AI vision automatically handles the rest.

💻 Architecture for Engineers:

Virtro consists of a decoupled Web Component (<virtro-fitting-room>), a postMessage iframe bridge to embed.virtro.tech, and an Express/Node 24 microservice running Google Gemma 4 multimodal vision bouncers with dynamic GPU model routing (Fal FLUX.2 & Pruna).

Zero-Touch JIT

No catalog imports needed. Gemma 4 analyzes clothing photos on first shopper click.

GDPR Article 9

Customer biometrics run in isolated iframes; guest uploads purge automatically in 120m.

+32% Lift Benchmark

Transparent telemetry tracking try-on to cart conversion and £17.50 return savings.

Integration

5-Minute Quickstart Integration

Integrating Virtro into your boutique storefront takes two simple steps. No backend database setup or catalog sync is required upfront.

1Include the Virtro CDN Script

Add this lightweight module script inside your store theme's <head> or right before </body>:

HTML
<script type="module" src="https://cdn.virtro.tech/v1/virtro.js"></script>

2Place the <virtro-fitting-room> Tag on Your Product Detail Page (PDP)

Position this tag right beneath or beside your boutique's primary "Add to Bag" button. The only required attribute is garment-image-url:

HTML
<virtro-fitting-room
  garment-image-url="https://yourboutique.com/images/silk-midi-skirt.jpg"
  title="Pleated Silk Midi Skirt"
  price="£185.00"
  product-url="https://yourboutique.com/products/pleated-silk-skirt"
  accent-color="#10b981"
></virtro-fitting-room>
Catalog Architecture

Zero-Touch Merchant Catalog Onboarding

Unlike legacy virtual try-on software that forces merchants to manually upload CSV spreadsheets, map 50 category fields, or configure 3D mesh assets, Virtro is Zero-Touch and AI-Autonomous.

Does a Merchant Need to Enter Every Property into the Widget?

No. Virtro’s multimodal vision engine (Google Gemma 4) inspects your product photo directly and classifies the garment autonomously.

  • The Only Required Attribute: garment-image-url (or image-url).
  • Autonomous Classification: Virtro categorizes whether the piece is a skirt, tailored trousers, dress, or blouse.
  • Fabric & Texture Extraction: Synthesizes fine-grained cut prompts (e.g., "black pleated silk midi skirt with fluid drape") in ~180ms.
  • Automatic Accessory Rejection: Shoes, handbags, sunglasses, and jewelry are automatically flagged so your AI credits are never wasted on non-wearable items.
Onboarding MethodBest ForEffortUpfront Import Needed?
1. Zero-Touch JIT (Recommended)Most boutiques (Shopify, WooCommerce, Custom)5 MinutesNone (Caches on First Click)
2. Batch CSV Pre-WarmCatalogs with 500+ SKUs wanting pre-launch QA15 MinutesYes (Pre-flight Scanned)
3. Real-Time WebhooksAutomated enterprise inventory sync1 HourAutomated on Publish

Shopify Theme Integration (Liquid)

In your Shopify theme editor, open sections/main-product.liquid (or your custom product actions block) and paste the fitting room custom element:

sections/main-product.liquid
<!-- Virtro Virtual Fitting Room Integration -->
<virtro-fitting-room
  garment-image-url="{{ product.featured_image | image_url: width: 1200 }}"
  title="{{ product.title | escape }}"
  price="{{ product.price | money }}"
  product-url="{{ shop.url }}{{ product.url }}"
  accent-color="#171717"
></virtro-fitting-room>

WooCommerce Theme Integration (PHP)

In your WordPress child theme, add this to woocommerce/single-product/add-to-cart/simple.php or hook it into woocommerce_after_add_to_cart_button:

content-single-product.php
<?php
// Hook into WooCommerce PDP
echo sprintf(
  '<virtro-fitting-room garment-image-url="%s" title="%s" price="%s" product-url="%s" accent-color="#171717"></virtro-fitting-room>',
  esc_url( wp_get_attachment_url( $product->get_image_id() ) ),
  esc_attr( $product->get_name() ),
  esc_attr( wc_price( $product->get_price() ) ),
  esc_url( get_permalink() )
);
?>

Batch CSV Pre-Inspection Script

For boutiques scanning 500+ items upfront before marketing launch. With your merchant key, rate limits elevate to 250 requests/min so you can inspect an entire catalog in under 2 minutes:

preflight-catalog.js
import fs from 'fs';
import { parse } from 'csv-parse/sync';

const VIRTRO_API_URL = "https://api.virtro.tech/garment/inspect";
const MERCHANT_API_KEY = process.env.VIRTRO_API_KEY; // "vtr_live_..."

async function prewarmCatalog(csvFilePath) {
  const fileContent = fs.readFileSync(csvFilePath, 'utf-8');
  const records = parse(fileContent, { columns: true, skip_empty_lines: true });

  console.log(`Starting pre-flight inspection for ${records.length} garments...`);

  for (const item of records) {
    const res = await fetch(VIRTRO_API_URL, {
      method: "POST",
      headers: {
        "Content-Type": "application/json",
        "x-api-key": MERCHANT_API_KEY
      },
      body: JSON.stringify({
        image_url: item.image_url,
        title: item.title
      })
    });
    const data = await res.json();
    console.log(`[PASS] ${item.title}: ${data.garment?.category} (${data.latency_ms}ms)`);
  }
}

prewarmCatalog('./catalog.csv');
Frontend Specification

Web Component Specification (<virtro-fitting-room>)

Packaged as @virtro/embed-element. It renders an understated, luxury secondary action button with a sparkling diamond icon and opens the sandboxed cross-origin fitting room modal.

AttributeTypeRequiredDescription
garment-image-urlstring (URL)RequiredHigh-resolution garment photograph (flat-lay or on-model).
titlestringOptionalGarment name displayed in modal header and closet summary.
pricestringOptionalPrice string (e.g. "£185.00" or "$240") shown on try-on card.
product-urlstring (URL)OptionalDirect PDP permalink for shopper history re-engagement.
accent-colorhex colorOptionalBoutique primary accent color (defaults to neutral black #171717).

React & Next.js SDK (@virtro/react)

For custom headless storefronts built with Next.js App Router, Hydrogen, or Remix:

BASH
npm install @virtro/react
components/ProductFittingRoom.tsx
"use client";

import { VirtroFittingRoom } from "@virtro/react";

export function ProductFittingRoom({ product }: { product: any }) {
  return (
    <VirtroFittingRoom
      imageUrl={product.thumbnail}
      title={product.title}
      price={product.price}
      productUrl={`https://yourboutique.com/products/${product.handle}`}
      accentColor="#171717"
    />
  );
}
Commercial Telemetry

Retailer Insights & Conversion Telemetry

Virtro proves its exact commercial lift. When you query your Retailer Insights API, you receive verified metrics measuring customer engagement, conversion lift, and reverse-logistics cost savings.

Programmatic Endpoint: GET /analytics/insights

Supply your boutique merchant key in the X-Virtro-Key header to fetch 7-day, 30-day, or 90-day aggregated performance:

BASH
curl -X GET "https://api.virtro.tech/analytics/insights?period=30d" \
  -H "X-Virtro-Key: vtr_live_your_boutique_key"
Response (200 OK)
{
  "status": "success",
  "retailer": "your-boutique",
  "period": "30d",
  "summary": {
    "total_tryons": 1420,
    "unique_shoppers": 985,
    "conversion_lift_percent": 32.1,
    "vto_attributed_orders": 248,
    "vto_attributed_revenue_gbp": 21080.00,
    "est_returns_avoided": 54,
    "est_return_cost_savings_gbp": 945.00
  }
}
Commercial Benchmarks Engine

Boutique Conversion Lift & ROI Calculator

Calculate your store's projected revenue increase and return cost savings with Virtro.

+20%–35% Benchmark
Monthly Orders800
Total orders across catalog
Average Order Value£85
Basket size in GBP
Current Return Rate26%
UK apparel avg is ~26%
Try-On Engagement30%
PDP shoppers clicking try-on
Additional Monthly Sales
+£5,780
From +28.5% Add-to-Cart lift (+68 orders)
Reverse Logistics Savings
+£245
14 returns avoided @ £17.50 avg cost
Net Monthly Gain
+£6,025
Annualized: +£72,300 / year
Abuse Shield

Multi-Tier Rate Limiting & Automated IP Defense

Virtro protects GPU infrastructure and boutique budgets with multi-tier rate limiting and automated IP banning.

Endpoint & ActionStandard QuotaMerchant Partner QuotaAbuse Protection Behavior
POST /garment/inspect30 req / min250 req / min (via x-api-key)Allows rapid catalog ingestion while stopping bots
POST /process-vto (Burst)8 try-ons / min8 try-ons / minStops UI button mashing during GPU generation
POST /process-vto (Sustained)30 / hour (Guest)100 / hour (Account)Incentivizes account creation while shielding costs
GET /vault/upload-url15 tickets / min15 tickets / minPrevents automated image storage flooding
🛡️ Automated 24-Hour IP Bouncer:

If an IP address exceeds rate limits 5 times within 15 minutes, it is automatically written to virtro_engine.blocked_ips and blocked for 24 hours. Boutique administrators can immediately restore genuine shoppers in 1 click via POST /admin/unblock-ip.

Biometric Perimeter

Zero-Trust Biometrics & UK GDPR Article 9

Customer body photographs are classified as Special Category Biometric Data under UK GDPR Article 9. Virtro eliminates retailer liability through strict architectural isolation.

Zero Merchant Liability

Photos exist strictly inside the cross-origin iframe (embed.virtro.tech). Store JavaScript cannot touch or inspect customer photos.

120-Minute Guest Purge

Unauthenticated guest uploads are strictly ephemeral and are permanently purged after 120 minutes by our automated janitor.

AES-256 Vault

When a customer creates a Virtro Account, photos are stored in an encrypted biometric vault for seamless reuse across all Virtro boutiques.

Biometric Governance: Age Restrictions & Base Layers

Clear, transparent human rules governing customer uploads:

🔞 16+ Age Requirement: Virtro Virtual Fitting Rooms are restricted to customers aged 16 or older.
👙 Form-Fitting Base Layers Welcome: Opaque lingerie, activewear, and swimwear are fully supported to enable natural garment drape without excessive fabric bunched underneath.
🚫 Explicit Nudity Filtered: Uploads containing explicit nudity are automatically rejected by our Gemma 4 pre-flight bouncer with friendly guidance.
🔒 Zero Commercial Resale: Customer biometric photos are never sold, shared with third parties, or used to train public generative models.
Interactive Vision Bouncer Demo

Test Zero-Touch Pre-Flight Inspection (`POST /garment/inspect`)

See how Virtro automatically identifies garment categories, fabrics, and fit routing without manual merchant tagging.

Sub-180ms Vision
REQUEST (cURL / JSON)POST /garment/inspect
curl -X POST "https://api.virtro.tech/garment/inspect" \
  -H "Content-Type: application/json" \
  -H "x-api-key: vtr_live_demo" \
  -d '{
    "image_url": "https://images.unsplash.com/photo-15834966...",
    "title": "Pleated Silk Midi Skirt"
  }'
API RESPONSE
Click "Simulate Pre-Flight Inspection" to execute real-time multimodal inspection payload.
Data Sovereignty

Enterprise Data Sovereignty: Private Gemma 4 Enclave

For luxury fashion conglomerates and high-security enterprise retailers requiring zero public cloud AI exposure.

Private VPC & On-Premise GPU Execution

Virtro supports deploying the vision inspection engine natively using Google Gemma 4 (26B) on dedicated single-tenant A100 or dual L4 nodes inside your own corporate cloud perimeter (GCP VPC, AWS PrivateLink, or Azure Enclave).

  • Zero Data Egress: Zero customer biometric tokens leave your private VPC.
  • Ultra-Low Latency: Sub-180ms image inspection and sub-3s GPU virtual try-on latency.
  • Predictable Economics: Flat-rate compute model with zero per-token third-party AI billing.
API Reference

Core REST API Reference

POSThttps://api.virtro.tech/process-vto

Executes the neural virtual try-on pipeline combining the subject photo and the garment reference.

Request Body
{
  "model_image_url": "https://storage.virtro.tech/biometric-closet/guest/user_abc123.jpg",
  "garment_image_url": "https://yourboutique.com/images/silk-skirt.jpg",
  "garment_category": "lower_body",
  "garment_description": "black pleated silk midi skirt"
}
POSThttps://api.virtro.tech/garment/inspect

Pre-flight multimodal vision bouncer. Returns garment category, fabric description, and suitability.

Request Body
{
  "image_url": "https://yourboutique.com/images/wool-blazer.jpg",
  "title": "Tailored Double-Breasted Wool Blazer"
}
GEThttps://api.virtro.tech/vault/upload-url

Generates a presigned direct binary upload ticket to private Supabase storage.

Response (200 OK)
{
  "status": "success",
  "upload_url": "https://supabase.virtro.tech/storage/v1/upload/resumable/...",
  "file_path": "guest/session_xyz987.jpg",
  "expires_in_seconds": 900
}
POSThttps://api.virtro.tech/admin/unblock-ip

Allows store administrators to remove an IP address from the automated abuse lockout list.

Request Body
{
  "ip_address": "82.165.197.1"
}

Boutique Credentials & Dedicated Support

How to Obtain Live Boutique API Keys

During our private beta phase, API keys (vtr_live_...) are provisioned directly by Virtro Tech engineering.

Boutique Support Deskapi-support@virtro.tech
Partner Pilot PortalRequest Partner Onboarding →