---
title: "Recommend a clothing size"
audience: "A clothing retailer embedding try-on, or calling the API"
goal: "Return an estimated clothing size and a fit, loose, or tight reading"
status: live
requires:
  - "A Size Mode digital twin (measurements or a clothing size, not a full-body photo)"
  - "A body-range chart for the product: version 1, basis body, centimetres or inches"
produces:
  - "A recommended size label"
  - "A fit, loose, or tight reading on the measurements the chart and the twin share"
do_not:
  - "Use this for shoes"
  - "Send garment measurements instead of body ranges"
  - "Expect a result from a photo-mode twin"
  - "Expect a 3D heatmap or the shopper's measurements in the response"
manual: true
last_updated: "2026-09-22"
description: "This estimate compares the shopper's Size Mode twin with your body size chart. It returns a size label and, for each compared measurement, fit, loose, or..."
---


# Recommend a clothing size

This estimate compares the shopper's Size Mode twin with **your** body size chart. It returns a size label and, for each compared measurement, **fit**, **loose**, or **tight**. It does not draw a heatmap and it does not send the shopper's measurements back.

It belongs to [Clothing AI Try-On](see-on-person.md). Shoe retailers want [Recommend a shoe size](../shoes/recommend-size.md) instead. The shoe API is a different product; `POST /api/v1/size-fitting` will not size a shoe.

## At a glance

| | |
|--|--|
| Who can do it | Whoever already embeds clothing try-on, or a server that holds an API key. |
| You need | A body chart (the range of bodies a size is cut for) and a twin built from measurements or from a named clothing size. |
| You connect | The chart on the embedded product, or `POST /api/v1/size-fitting` on [api.wearfits.com](https://api.wearfits.com) with `X-API-Key`. |
| The shopper sees | A recommended size and a fit / loose / tight reading. |
| You receive | That reading only when the twin is eligible and the chart shares a measurement with it. |

## What you put in

The chart describes bodies, not the garment's tape measurements.

- `version` is `1`
- `basis` is `"body"`
- `unit` is `"cm"` or `"in"`
- Each size has a label (`S`, `M`, `32`, …) and at least one range the category can use

| Category | Ranges that count |
|----------|-------------------|
| Top | Chest, waist |
| Bottom | Waist, hip, inseam |
| Full length | Chest, waist, hip, height |

Each range has a minimum and a maximum. The hosted app and the API use the same rules. Field names and a request example are in the [clothing API reference](../genai-tryon/api-reference.md).

## Which twin qualifies

| Twin | Size estimate |
|------|----------------|
| Face photo + body measurements | Yes |
| Height + clothing size (XS–3XL) | Yes |
| Face photo + full-body photo | No. The API returns `available: false`. |

If the chart and the twin share no comparable measurement, that product is skipped. If nothing can be compared, there is no estimate.

## How to read the result

- **Fit** — the body is inside the chart range for that measurement.
- **Loose** — the body is below that range, so the size is roomier than the body.
- **Tight** — the body is above that range, so the size is smaller than the body.

The reading is an estimate for that chart, not a promise of comfort. The [clothing user guide](../genai-tryon/user-guide.md) shows the same estimate inside [tryon.wearfits.com](https://tryon.wearfits.com).

## Shopify and WooCommerce

The Shopify apparel switch and the WooCommerce clothing plugin turn on the fitting room. Neither guide describes a size-chart field in the plugin screen. Visual try-on works without a chart. This estimate needs a body chart on the product and a Size Mode twin, sent with the embed or with `POST /api/v1/size-fitting`.
