# tys.products.create()

> Create a product.

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

*Method* · `tryyoursize`

Create a product. `external_id` (SKU / style ID) is unique per store (409).

```python
def create(*, external_id: str, name: str, category: str, idempotency_key: Optional[str] = None) -> Product
```

## Parameters

- **`external_id`** (`str`, required): Your SKU / style ID, unique per store (409 otherwise).
- **`name`** (`str`, required): The product name.
- **`category`** (`str`, required): The garment category, e.g. `tshirt`, `jeans`.
- **`idempotency_key`** (`Optional[str]`, optional, default `None`)

## Returns

`Product`: The product.

- **`id`** (`string`, required)
- **`external_id`** (`string`, required): The brand's SKU or style ID (unique per brand).
- **`name`** (`string`, required)
- **`category`** (`GarmentCategory`, required): The garment type; it sets which POMs are needed.
- **`published_version`** (`integer`, optional): Garment version shoppers are fitted against, if any.
- **`draft_version`** (`integer`, optional): Garment version being edited, if any.
- **`created_at`** (`string`, required)
- **`updated_at`** (`string`, required)
- **`fit_group_id`** (`string`, optional): The fit group whose garment this product uses (absent until grouped).
- **`brand_id`** (`string`, optional): The brand the product belongs to; every store of the brand sees it.
- **`home_store_id`** (`string`, optional): The store the product was created in.
- **`retired_at`** (`string`, optional): Set when the product is retired; shoppers no longer get a size for it.
- **`available`** (`boolean`, optional): Whether the store it was read through offers it (false in the brand list, see `stores`).

## Example

**Python**

```python
product = tys.products.create(external_id="TEE-001", name="Basic tee", category="tshirt")
```

**Node.js**

```ts
const product = await tys.products.create({
  external_id: "TEE-001",   // your SKU / style ID, unique per store
  name: "Basic tee",
  category: "tshirt",
});
```

**cURL**

```bash
curl -X POST https://api.tryyoursize.com/v1/products \
  -H "Authorization: Bearer $TRYYOURSIZE_SECRET_KEY" \
  -H "TYS-Version: 2026-10-25" \
  -H "Content-Type: application/json" \
  -d '{"external_id":"TEE-001","name":"Basic tee","category":"tshirt"}'
```

## See also

- [products.create (HTTP API)](https://docs.tryyoursize.com/api/reference/operations/createcatalogproduct.md)
