Business Context
The Problem: Frame fit is the single largest return driver in online optical. Customers don’t know their face width, bridge size, or whether a temple length will pinch behind the ear — so they bracket-buy across sizes. On the VR/AR side, a strap that’s 10mm too tight causes pressure headaches, and a light seal that doesn’t match face depth leaks light and breaks immersion. Virtual try-on solves the aesthetic question; it doesn’t solve fit.
The Solution: Two numbers most customers already know — height and weight — captured at the point of size selection. DimensionsPot takes those two inputs and returns up to 24 precise head and face dimensions in under 10ms. No cameras, no scans, no PII. One API call tells you which frame front width fits the face, which temple length reaches behind the ears, and which headset strap size matches the customer’s head circumference.
The Customization Edge: The real margin move happens between order and dispatch. Route the order to the correct temple length SKU, select the Asian-fit or standard rim based on facial proportions, and ship the headset with the matching light-seal cushion already installed.
Recommended API Configuration
| Parameter | Value | Reason |
|---|---|---|
anchors | body_height + body_mass | PRIMARY_BOTH tier — skeletal HEAD_FACE BONE dims ~85 confidence |
bundle | HEAD_FACE | Returns all 20 head and face dimensions |
body_build_type | CIVILIAN | Standard population |
confidence_score_threshold | 0 | Receive all 20 dims and filter client-side by use case |
include_range_95 | true | Required for boundary detection at frame size thresholds |
Regional calibration is critical for head and face dimensions. East Asian and South Asian populations have measurably different head breadth, nasal bridge depth, and bizygomatic breadth relative to the ANSUR global baseline. Always set
input_origin_regionandtarget_regioncorrectly.
Sample Request
curl -X POST "https://dimensionspot-bodysize-engine.p.rapidapi.com/v1/predict" \
-H "Content-Type: application/json" \
-H "X-RapidAPI-Key: YOUR_KEY" \
-H "X-RapidAPI-Host: dimensionspot-bodysize-engine.p.rapidapi.com" \
-d '{
"input_data": {
"input_unit_system": "metric",
"subject": {
"gender": "male",
"exact_age": 35.0,
"age_category": "ADULT",
"input_origin_region": "ASIA_PACIFIC"
},
"anchors": {
"body_height": 1740.0,
"body_mass": 72.0
}
},
"output_settings": {
"calculation": {
"calculation_model": "AUTO",
"target_region": "ASIA_PACIFIC",
"body_build_type": "CIVILIAN"
},
"requested_dimensions": {
"bundle": "HEAD_FACE",
"specific_dimensions": null
},
"output_format": {
"unit_system": "metric",
"confidence_score_threshold": 0,
"include_range_95": true,
"include_iso_codes": false
}
}
}'
Key Dimensions for Eyewear & VR/AR
| API Key | Label | Type | Use |
|---|---|---|---|
head_breadth | Head Breadth | BONE | Frame front width sizing; VR shell width |
bizygomatic_breadth | Cheekbone Breadth | BONE | Frame front width selection; cheek clearance |
face_length | Face Length | BONE | Frame vertical depth; lens height selection |
head_circumference | Head Circumference | FLESH | VR/AR headset strap size |
head_length | Head Length | BONE | VR headset front-to-back depth |
bitragion_coronal_arc | Bitragion Coronal Arc | BONE | Over-head strap length; VR head strap tensioning |
bridge_width | Bridge Width | BONE | Frame bridge size — pad-corrected value |
nasal_root_breadth | Nasal Root Breadth | BONE | Asian-fit vs standard routing; AR/VR nose-rest geometry |
menton_sellion_length | Face Depth | BONE | VR light-seal cushion depth |
ear_protrusion ‡ | Ear Protrusion | BONE | VR/AR ear cup depth clearance |
ear_length ‡ | Ear Length | BONE | Earbud and in-ear device sizing |
tragion_top_of_head ‡ | Tragion-Top of Head | BONE | VR headset vertical crown height |
‡ FULL_BODY only. The four ear and head-height dimensions are not returned by
bundle: "HEAD_FACE". To retrieve them alongside the 20 HEAD_FACE dimensions, either usebundle: "FULL_BODY"or list all needed keys explicitly inspecific_dimensions.
Frame Size Recommendation Pattern
def recommend_frame(dims):
head_breadth = dims["head_breadth"]["value"]
face_length = dims["face_length"]["value"]
bizygomatic = dims["bizygomatic_breadth"]["value"]
bridge = dims["bridge_width"]["value"]
if bizygomatic < 130:
width_cat = "narrow"
elif bizygomatic < 142:
width_cat = "medium"
else:
width_cat = "wide"
if face_length < 112:
height_cat = "short"
elif face_length < 124:
height_cat = "medium"
else:
height_cat = "tall"
if head_breadth < 148:
temple_mm = 135
elif head_breadth < 158:
temple_mm = 140
else:
temple_mm = 145
return {
"frame_width_category": width_cat,
"frame_height_category": height_cat,
"bridge_size_mm": round(bridge),
"recommended_temple_length_mm": temple_mm,
}
Asian-Fit Detection Pattern
def detect_asian_fit(dims, input_origin_region):
nasal_root = dims["nasal_root_breadth"]["value"]
regional_flag = input_origin_region in ("ASIA_PACIFIC", "INDIA")
anatomical_flag = nasal_root < 32.0
return regional_flag or anatomical_flag
asian_fit = detect_asian_fit(dims, input_origin_region="ASIA_PACIFIC")
sku_suffix = "AF" if asian_fit else "STD"
VR/AR Headset Strap & Seal Sizing
HEADSET_STRAP_SIZES = [
(0, 530, "S"), (530, 570, "M"), (570, 610, "L"), (610, 9999, "XL"),
]
LIGHT_SEAL_VARIANTS = [
(0, 115, "slim"), (115, 128, "standard"), (128, 9999, "deep"),
]
def lookup(value_mm, table):
for lo, hi, label in table:
if lo <= value_mm < hi:
return label
return "Unknown"
def size_vr_headset(dims):
head_circ_upper = dims["head_circumference"]["range_95"][1]
face_depth = dims["menton_sellion_length"]["value"]
return {
"strap_size": lookup(head_circ_upper, HEADSET_STRAP_SIZES),
"light_seal_variant": lookup(face_depth, LIGHT_SEAL_VARIANTS),
}
Response Handling Tips
- HEAD_FACE BONE dimensions (head_breadth, bizygomatic_breadth, face_length, head_length, menton_sellion_length) reach confidence ~85 at PRIMARY_BOTH tier.
head_circumference(FLESH) reaches ~78. - Use
range_95for boundary detection. For VR straps specifically, always use the upperrange_95bound — a tight strap is a return; a loose one is adjustable. nasal_root_breadthis the correct input for Asian-fit SKU routing logic.bridge_width(nasal_root_breadth − 4 mm) is the correct value to display in UI copy.- For platforms serving ASIA_PACIFIC, INDIA, or MIDDLE_EAST: always pass
input_origin_regionper customer. Regional calibration has a proportionally larger effect on head and face dimensions than on body dimensions. - Flag any dimension with
biological_limit_status: "OUT_OF_BOUNDS"before using it in fit routing — out-of-bounds values should trigger a manual review prompt.