Fit preference and usual sizes
Besides their body, a shopper can tell TryYourSize two optional things. Both are asked after the essential measurements, take one tap each and can be skipped. They live in the shopper’s TryYourSize profile, follow them to every store, and can be changed at any time in the measuring window (“Refine your body”) or in their account.
Your store never receives these inputs. As with the body, you get a size.
Fit preference
Section titled “Fit preference”“How do you like your clothes to fit?” with three answers:
| Value | The shopper says they like clothes |
|---|---|
tight |
close to the body |
regular |
regular |
loose |
with more room |
Not answered means regular. The shopper can also set a different answer for tops and for bottoms (for example tops regular, bottoms loose); a per-line answer overrides the overall one for that line.
The window shows the answer back as a fact the shopper stated (“You prefer a regular fit”), never as a judgement of a garment.
Usual sizes
Section titled “Usual sizes”“Do you know your size in another brand?”: rows such as “I usually wear M in Uniqlo tops”. The shopper picks the brand from a curated list, the line (tops or bottoms, women’s or men’s) and one of that brand’s sizes. Several rows are allowed, up to 20.
A row can also come from a purchase the shopper kept in a store that uses TryYourSize. Those rows are labelled “From a purchase you kept”; the shopper can delete them but not edit them.
API shapes
Section titled “API shapes”You do not call these routes from a store integration: the measuring window and our SDKs do, with the shopper’s session. They are listed for native apps that run the window’s flow themselves, and so you can read your request logs.
| Route | Auth | What it does |
|---|---|---|
GET /v1/shopper/fit-profile |
Shopper session | The shopper’s preference and usual sizes. An empty profile when nothing was saved. |
PUT /v1/shopper/fit-profile |
Shopper session | Replaces the profile. usual_sizes is the whole list. Unknown brand or size: 422. |
GET /v1/usual-size-brands |
None | The curated brand list with each brand’s sizes per line. The same for every shopper; cacheable for a day. |
The profile:
{ "preference": "regular", "preference_tops": null, "preference_bottoms": "loose", "usual_sizes": [ { "id": "6f1c…", "brand": "uniqlo", "line": "tops", "sex": "female", "size": "M", "source": "declared", "created_at": "2026-10-27T10:00:00Z" } ], "updated_at": "2026-10-27T10:00:00Z"}preference,preference_tops,preference_bottoms:tight,regular,looseornull(not answered).usual_sizes[].brand: akeyfromGET /v1/usual-size-brands.line:topsorbottoms.sex: the brand’s women’s (female) or men’s (male) line, the shopper’s own when omitted.size: one of that brand’s sizes for the line.- On
PUT, rows without anidare saved as the shopper’s own (declared). Akept_purchaserow stays only when itsidis in the list.
The brand list:
{ "data": [ { "key": "uniqlo", "name": "Uniqlo", "lines": [ { "line": "tops", "sex": "female", "sizes": ["XS", "S", "M", "L", "XL"] } ] } ]}The fit field on size requests
Section titled “The fit field on size requests”POST /v1/tryon and POST /v1/recommendation_handles accept an optional fit object with the same fields as the profile (without id, source, created_at and updated_at):
{ "product": "CREW-TSHIRT", "basics": { "sex": "female", "age_years": 34, "height_mm": 1680, "weight_kg": 61 }, "measurements": [], "body_state": [], "fit": { "preference": "regular", "usual_sizes": [{ "brand": "uniqlo", "line": "tops", "size": "M" }] }}Without fit, a signed-in shopper’s saved profile is used, and a guest gets sizes for a regular preference. The measuring window sends it with every size request: a signed-in shopper’s saved profile, or what a guest answered in this session.
In TypeScript, @tryyoursize/sdk and @tryyoursize/react export the types FitProfile, FitInput, PreferredFit, UsualSize and UsualSizeBrand.
Was this page helpful?
Thank you. We read every answer.