# tys.recommendations.create()

> The shopper's size for up to 25 products (SKUs), from a browser SDK handle.

Source: https://docs.tryyoursize.com/reference/python/recommendations-create/

*Method* · `tryyoursize`

The shopper's size for up to 25 products (SKUs), from a browser SDK handle.

Sizes only, in your labels: ``data`i`` has `product`, `status`` (`ready`/`computing`/`none`/`unavailable`), `size`, `studio_size` and `wearable_sizes`. Never starts a simulation. Scope `fit_checks:read`.

```python
def create(*, handle: str, products: Iterable[str], idempotency_key: Optional[str] = None) -> RecommendationList
```

## Parameters

- **`handle`** (`str`, required): The handle from the browser SDK (`await tys.recommendationHandle()`), sent to your server.
- **`products`** (`Iterable[str]`, required): Up to 25 of your SKUs / style IDs.
- **`idempotency_key`** (`Optional[str]`, optional, default `None`)

## Returns

`RecommendationList`: `{"data": [...]}`, one recommendation per product, in your size labels. Sizes only.

- **`product`** (`string`, required)
- **`status`** (`"ready" | "computing" | "none" | "unavailable"`, required): `ready`: a size. `computing`: a simulation the shopper started is running (ask again later). `none`: simulated, no size can be worn. `unavailable`: no published garment for this product, not simulated on this body yet, or the store's plan has no fit checks left. A page view or this API never starts a simulation.
- **`size`** (`string`, required): The recommended size in the store's label (the product's size map), or null.
- **`studio_size`** (`string`, required): The same size as entered in TryYourSize Studio, or null.
- **`wearable_sizes`** (`string[]`, required): Sizes that can be worn on this body, in the store's labels.
- **`tryon_id`** (`string`, optional): The try-on that produced the size, when there is one. Send it back with orders for attribution.

## Example

**Python**

```python
answer = tys.recommendations.create(handle=handle, products=["SKU-123", "SKU-456"])
for rec in answer["data"]:
    if rec["status"] == "ready":
        print(rec["product"], rec["size"], rec["wearable_sizes"])
```

**Node.js**

```ts
// handle: from the browser SDK, `await tys.recommendationHandle()`, sent to your server
const { data } = await tys.recommendations.create({
  handle,
  products: ["SKU-123", "SKU-456"],
});
for (const r of data) {
  if (r.status === "ready") console.log(r.product, r.size, r.wearable_sizes);
}
```

**cURL**

```bash
curl -X POST https://api.tryyoursize.com/v1/recommendations \
  -H "Authorization: Bearer $TRYYOURSIZE_SECRET_KEY" \
  -H "TYS-Version: 2026-10-25" \
  -H "Content-Type: application/json" \
  -d '{"handle":"tys_rh_…","products":["SKU-123","SKU-456"]}'
```

## See also

- [Server-side recommendations](https://docs.tryyoursize.com/guides/server-side-recommendations.md)
- [recommendations.create (HTTP API)](https://docs.tryyoursize.com/api/reference/operations/createrecommendations.md)
