Integrate AI-powered 3D/AR try-on for shoes and bags into your e-commerce website
Sign UpWEARFITS Shoes & Bags 3D/AR Try-On is a cutting-edge solution that transforms product photos into interactive 3D models. Shoes get a full AR try-on experience — customers see footwear at real-world scale using their smartphone camera. Bags get an interactive 3D viewer so customers can inspect the product from every angle.
Upload 1-4 images of a shoe or bag, and our AI generates a high-quality 3D model that can be viewed on any mobile device via a simple QR code scan.
Key benefits include increased customer confidence, reduced returns, and an innovative shopping experience that differentiates your brand.
Advanced AI converts 2D product photos into detailed 3D models automatically — works for both shoes and bags.
Generated models are instantly available via QR code — shoes get AR try-on, bags get a 3D viewer. No app required.
RESTful API with job-based processing. Submit images, poll for status, get the viewer URL.
AR/3D viewer works on all modern smartphones with WebXR support.
The WEARFITS Shoes & Bags 3D/AR Try-On enables customers to visualize footwear and handbags from AI-generated 3D models. The process is simple:
Upload 1-4 high-quality images of the product. Multiple angles improve 3D model quality:
Shoes and bags follow the same upload flow; use the options.productType hint (see API Reference) to tell the backend which one it is, or pass "auto" to let it auto-detect.
Our AI processes the images using state-of-the-art 3D reconstruction technology. The best model is automatically selected for optimal results.
Once processing completes, you receive a viewer URL:
/tryon?object=...). Customers scan the QR code and see the shoe in augmented reality at real-world scale./viewer?object=...). Customers inspect the bag from every angle in an interactive 3D viewer. AR try-on is shoe-specific and not available for bags.Either way, customers can:
https://api.wearfits.com/v1
All requests require an API key in the header:
X-API-Key: your-api-key
If you already have a 3D model of the product in .glb format, you can upload it directly to bypass the AI 2D-to-3D generation phase. Works for both shoes and bags.
POST /v1/files/upload
Content-Type: multipart/form-data
| Field | Type | Required | Description |
|---|---|---|---|
file |
file | Yes | The .glb base 3D model (max 50MB) |
{
"url": "https://storage.wearfits.com/uploads/abc-123.glb"
}
The /v1/shoe-3d endpoint handles both shoes and bags — the historical name is retained for backwards compatibility. Use options.productType to indicate the product type (or "auto" to detect it).
POST /v1/shoe-3d
{
"images": [
"https://example.com/product-front.jpg",
"https://example.com/product-side.jpg"
],
"glbInput": "https://storage.wearfits.com/uploads/abc-123.glb",
"options": {
"uploadToWearFits": true,
"productType": "auto",
"enhanceTexture": true,
"genaiQuality": "high",
"smoothNormals": true
}
}
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
images |
array | Yes | — | Array of image URLs or base64 data URLs (1-4 images) |
glbInput |
string | No | — | Optional URL of a pre-uploaded .glb model to bypass AI mesh generation (texture extraction only) |
options.uploadToWearFits |
boolean | Yes* | false |
Must be true to get the AR viewer URL in the completed response |
options.rightShoe |
boolean | No | false |
Set to true if the image shows the right shoe (shoes only) |
options.enhanceTexture |
boolean | No | true |
Apply AI texture enhancement to the generated model |
options.genaiQuality |
string | No | "standard" |
Quality preset for 3D generation. Accepted: "standard", "high" |
options.skipCache |
boolean | No | false |
Force a fresh generation, bypassing any cached result for the same inputs |
options.smoothNormals |
boolean | No | true |
Smooth the generated mesh normals for a softer shaded surface. Set to false to preserve faceted geometry |
options.pipelineVariant |
string | No | "A" |
Select generation pipeline. "B" enables the beta pipeline (experimental) |
options.productType |
string | No | "shoe" |
Product type hint. "auto" lets the backend detect the product (e.g. bags). Non-shoe products generate a 3D viewer link instead of AR try-on |
* Required to receive wearfitsTryOn.viewerUrl in the completed response. Without it you only get the raw .glb URL in results[].url.
{
"jobId": "d6543a37-7867-4986-af23-856501c1338d"
}
GET /v1/jobs/{jobId}
{
"id": "d6543a37-7867-4986-af23-856501c1338d",
"status": "processing",
"progress": {
"stage": "generating_3d_model",
"percentage": 45
}
}
{
"id": "d6543a37-7867-4986-af23-856501c1338d",
"status": "completed",
"mode": "shoe-3d",
"results": [
{
"url": "https://storage.example.com/model.glb",
"expiresAt": "2026-01-22T00:43:10.895Z"
}
],
"wearfitsTryOn": {
"modelId": "shoe-model-123",
"colorId": "color-456",
"viewerUrl": "https://dev.wearfits.com/tryon/shoe/shoe-model-123/color-456"
},
"progress": {
"stage": "completed",
"percentage": 100
}
}
| Status | Description |
|---|---|
queued |
Job is waiting to be processed |
validating |
Validating input images |
processing |
Generating 3D model |
uploading |
Uploading to WEARFITS AR platform |
completed |
Job finished successfully |
failed |
Job failed (check error field) |
Once you've generated the viewer URL via the API (backend), add a "Try On" / "View in 3D" button to your product pages:
# Shoes — AR try-on (WebXR)
https://dev.wearfits.com/tryon?object={id}
# Bags (and other non-shoe products) — 3D viewer
https://dev.wearfits.com/viewer?object={id}
The completed job response returns the correct URL in wearfitsTryOn.viewerUrl based on the detected product type. For shoes, the frontend may convert /viewer? → /tryon? to enable AR mode; for bags, keep the /viewer? URL as-is. Store the resulting URL in your product database.
<!-- Direct link to viewer (AR for shoes, 3D for bags) -->
<a href="https://dev.wearfits.com/tryon?object=abc123"
target="_blank"
class="tryon-button">
Try On in AR
</a>
<div class="wearfits-viewer">
<!-- QR Code for mobile scanning -->
<img src="https://api.qrserver.com/v1/create-qr-code/?size=200x200&data=https://dev.wearfits.com/tryon?object=abc123"
alt="Scan to view" />
<p>Scan with your phone to view in 3D / AR</p>
<a href="https://dev.wearfits.com/tryon?object=abc123"
target="_blank">
Open Viewer
</a>
</div>
// Product data from your backend (viewer URL already generated)
const product = {
id: 'sku-001',
name: 'Running Sneaker', // or a handbag, etc.
productType: 'shoe', // 'shoe' | 'bag'
viewerUrl: 'https://dev.wearfits.com/tryon?object=abc123'
};
// Generate QR code URL
function getQrCodeUrl(url) {
return `https://api.qrserver.com/v1/create-qr-code/?size=200x200&data=${encodeURIComponent(url)}`;
}
// Add a viewer button to the product page.
// Shoes get "Try On in AR"; non-shoe products get "View in 3D".
function addViewerButton(product) {
const button = document.createElement('a');
button.href = product.viewerUrl;
button.target = '_blank';
button.className = 'tryon-button';
button.textContent = product.productType === 'shoe'
? 'Try On in AR'
: 'View in 3D';
document.querySelector('.product-actions').appendChild(button);
}
The WEARFITS photo-to-3D app automatically persists in-progress jobs across page reloads:
For technical support and API access, contact our support team