> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fire.rest/llms.txt
> Use this file to discover all available pages before exploring further.

# Create item

> Creates a new catalog item. Items are the physical supplies and ingredients tracked in BOH.

<ParamField header="x-api-key" type="string" required>
  BOH API key with `catalog:write` scope.
</ParamField>

<ParamField path="vendorId" type="string" required>
  Vendor UUID.
</ParamField>

<ParamField body="name" type="string" required>
  Display name (1–256 characters).
</ParamField>

<ParamField body="type" type="string" required>
  Item type: `INGREDIENT`, `PACKAGING`, `SUPPLY`, `PREPARED_ITEM`, or `FINISHED_GOOD`.
</ParamField>

<ParamField body="procurement_type" type="string" required>
  How the item is obtained: `PURCHASED`, `PRODUCED`, or `PURCHASED_AND_PRODUCED`.
</ParamField>

<ParamField body="unit_group_id" type="string" required>
  UUID of the unit group (e.g. mass, volume, count). Cannot be changed after creation.
</ParamField>

<ParamField body="base_unit_id" type="string" required>
  UUID of the base unit within the group (e.g. grams within mass). Cannot be changed after creation.
</ParamField>

<ParamField body="external_item_id" type="string">
  Your system's identifier for this item (1–128 characters). Used for sync reconciliation.
</ParamField>

<ParamField body="code" type="string">
  Short alphanumeric code (1–64 characters). Must be unique within the vendor.
</ParamField>

<ParamField body="is_inventory_tracked" type="boolean" default="true">
  Whether BOH tracks stock movements for this item.
</ParamField>

<ParamField body="count_frequency" type="string | null">
  Suggested physical count cycle: `DAILY`, `WEEKLY`, `MONTHLY`, or `null`.
</ParamField>

<ParamField body="metadata" type="object">
  Free-form key-value store for your system's extra data.
</ParamField>

<ParamField body="external_user_id" type="string">
  ID of the user performing this action in your system (for audit).
</ParamField>

<ResponseField name="id" type="string">BOH-assigned UUID.</ResponseField>
<ResponseField name="account_id" type="string">Account UUID.</ResponseField>
<ResponseField name="external_item_id" type="string">Your system's identifier.</ResponseField>
<ResponseField name="code" type="string">Short alphanumeric code.</ResponseField>
<ResponseField name="name" type="string">Display name.</ResponseField>
<ResponseField name="type" type="string">Item type.</ResponseField>
<ResponseField name="procurement_type" type="string">Procurement type.</ResponseField>
<ResponseField name="unit_group_id" type="string">UUID of the unit group.</ResponseField>
<ResponseField name="base_unit_id" type="string">UUID of the base unit.</ResponseField>
<ResponseField name="is_inventory_tracked" type="boolean">Whether stock movements are recorded.</ResponseField>
<ResponseField name="is_active" type="boolean">`false` when archived.</ResponseField>
<ResponseField name="count_frequency" type="string | null">Suggested count cycle.</ResponseField>
<ResponseField name="metadata" type="object">Free-form extra data.</ResponseField>
<ResponseField name="created_at" type="string">ISO 8601 creation timestamp.</ResponseField>
<ResponseField name="updated_at" type="string">ISO 8601 last-update timestamp.</ResponseField>

<RequestExample>
  ```json theme={null}
  {
    "name": "All-purpose flour",
    "type": "INGREDIENT",
    "procurement_type": "PURCHASED",
    "unit_group_id": "ug_mass_01...",
    "base_unit_id": "unit_g_01...",
    "external_item_id": "SKU-001",
    "code": "FLOUR-KG",
    "is_inventory_tracked": true,
    "count_frequency": "WEEKLY",
    "external_user_id": "user_jane_42"
  }
  ```
</RequestExample>

<ResponseExample>
  ```json 201 theme={null}
  {
    "id": "itm_01j5k...",
    "account_id": "acc_01j...",
    "external_item_id": "SKU-001",
    "code": "FLOUR-KG",
    "name": "All-purpose flour",
    "type": "INGREDIENT",
    "procurement_type": "PURCHASED",
    "unit_group_id": "ug_mass_01...",
    "base_unit_id": "unit_g_01...",
    "is_inventory_tracked": true,
    "is_active": true,
    "count_frequency": "WEEKLY",
    "metadata": {},
    "created_at": "2026-08-07T14:30:00.000Z",
    "updated_at": "2026-08-07T14:30:00.000Z"
  }
  ```

  ```json 400 theme={null}
  {
    "error": {
      "kind": "validation_error",
      "message": "unit_group_id is required"
    }
  }
  ```
</ResponseExample>
