---
title: "Create an Inventory Product"
method: POST
path: "/inventory/products"
tags: ["InventoryProducts"]
---

# Create an Inventory Product

`POST /inventory/products`

This endpoint creates an inventory product for the given site.

## Request body

- object
  - `name` string, required — Display name of the inventory product, shown to staff in the stock admin UI and on purchase orders, stocktake sheets, and reports. Trimmed; 1-120 characters and must not contain HTML.
  - `brand_id` string, uuid, nullable, required — Identifier of the inventory brand this product is sold under. Used for filtering and reporting. Pass `null` if the product is unbranded; the brand must belong to the same site as `site_id`.
  - `category_id` string, uuid, nullable, required — Identifier of the inventory category this product is classified under. Used for filtering, reporting, and report grouping. Pass `null` for uncategorised products; the category must belong to the same site as `site_id`.
  - `site_id` string, uuid, required — Identifier of the site that owns this inventory product. Stock levels, suppliers, and adjustments are all scoped per site; the caller's API key must have access to it.

## Response `201`

The inventory product was successfully retrieved

- object
  - `data` InventoryProduct, required
    - `id` string, uuid, required — The ID of the inventory product.
    - `name` string, required — The name of the inventory product.
    - `description` string, nullable, required — A description of the inventory product.
    - `sku` string, nullable, required — A stock keeping unit (SKU) for the inventory product.
    - `barcode` string, nullable, required — A barcode for the inventory product.
    - `average_cost` integer, required — The average cost of the inventory product in the lowest denomination for this product's currency.
    - `currency` string, required — The currency of the inventory product.
    - `reorder_level` integer, nullable, required — The quantity of this inventory product which should be reordered.
    - `stock_level` number, required — The quantity of this stock at the site.
    - `stock_value` integer, required — The total value of this stock at the site in the lowest denomination for this product's currency.
    - `brand_id` string, uuid, nullable, required — The ID of the brand this inventory product belongs to.
    - `brand` InventoryBrand
      - `id` string, uuid, required — The ID of the inventory brand.
      - `name` string, required — The name of the inventory brand.
      - `site_id` string, uuid, nullable, required — The ID of the site the inventory brand belongs to.
      - `organisation_id` string, uuid, required — The ID of the organisation the inventory brand belongs to.
    - `category_id` string, uuid, nullable, required — The ID of the category this inventory product belongs to.
    - `category` InventoryCategory
      - `id` string, uuid, required — The ID of the inventory category.
      - `name` string, required — The name of the inventory category.
      - `site_id` string, uuid, nullable, required — The ID of the site the inventory category belongs to.
      - `organisation_id` string, uuid, required — The ID of the organisation the inventory category belongs to.
      - `order` integer, required — The display order of the inventory category within its site. Lower values are shown first. Set via the reorder endpoint.
    - `site_id` string, uuid, required — The ID of the site this inventory product belongs to.
    - `organisation_id` string, uuid, required — The ID of the organisation this inventory product belongs to.

## Other responses

- `401` — The user is unauthenticated
- `403` — The authenticated user does not have permission.
- `422` — The request didn't pass validation

---

[API](https://skmtc.dev/try/apis/trybe-api.md) · [All operations](https://skmtc.dev/try/apis/trybe-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/try/trybe-api/revisions/f37f92702da5/schema)
