For the complete documentation index, see llms.txt. This page is also available as Markdown.

Manage Product Items

Create and maintain Product Items in your Haut.AI Product Inventory through the SaaS API.

A Product Item is one product in your catalog, such as a cleanser, moisturizer, or shampoo. In API paths and responses, Product Items are called Inventory Items.

Before making a request, prepare your API key and Company ID as described in API for Product Inventory.

Common Product Item fields

You can use the interactive API blocks below to see every available field. These are the fields new users most often need:

Field
What to enter

name

The product name customers should recognize.

vendor_code

Your SKU or another unique code from your catalog.

description

A full product description.

short_description

A shorter description for compact layouts.

image

A publicly accessible product image URL.

link

The product page URL where a customer can learn more or buy the product.

price

The selling price, written as a decimal value.

currency

The currency used for the price.

status

The product state: active, draft, or archived.

out_of_stock

true to keep the product in the inventory but exclude it from recommendations, false (default) when it is in stock.

priority

A number used to influence the product's order.

category, concerns, and other tag fields

Information used to match the product to recommendation needs.

You can start with basic product information and add recommendation tags later.

Available actions

Everyday actions

Advanced actions

Create a Product Item

Use this operation to add one product to your inventory. The response contains the new Product Item's id. Save this value if you plan to add the product to a shelf or update it later.

A simple request body can look like this:

Replace the example URLs and values with information from your catalog. You may send more fields from the request schema when needed.

Create inventory item

post

Create inventory item

Authorizations
AuthorizationstringRequired

Authenticate using SaaS Private token

Path parameters
company_idstring · uuidRequired
Body
namestring · min: 1Optional
vendor_codestring · nullableOptional
descriptionstring · nullableOptional
short_descriptionstring · nullableOptional
imagestring · nullableOptional
linkstring · nullableOptional
pricestring · nullableOptionalPattern: ^-?\d{0,8}(?:\.\d{0,2})?$
currencyone of · nullableOptional
string · enumOptional
  • AED - United Arab Emirates Dirham
  • AUD - Australian Dollar
  • BRL - Brazilian Real
  • CAD - Canadian Dollar
  • CHF - Swiss Franc
  • CNY - Chinese Yuan
  • DKK - Danish Krone
  • EUR - Euro
  • GBP - British Pound
  • HKD - Hong Kong Dollar
  • ILS - Israeli New Shekel
  • INR - Indian Rupee
  • IQD - Iraqi Dinar
  • JPY - Japanese Yen
  • KRW - South Korean Won
  • MXN - Mexican Peso
  • MYR - Malaysian Ringgit
  • NOK - Norwegian Krone
  • NZD - New Zealand Dollar
  • PLN - Polish Zloty
  • RUB - Russian Ruble
  • SAR - Saudi Riyal
  • SEK - Swedish Krona
  • SGD - Singapore Dollar
  • THB - Thai Baht
  • TRY - Turkish Lira
  • USD - US Dollar
  • ZAR - South African Rand
Possible values:
or
undefined · enumOptionalPossible values:
compare_at_pricestring · nullableOptionalPattern: ^-?\d{0,8}(?:\.\d{0,2})?$
priorityinteger · min: -2147483648 · max: 2147483647Optional
cart_integration_idstring · nullableOptional
statusstring · enumOptional
  • active - Active
  • draft - Draft
  • archived - Archived
Possible values:
categoryone of · nullableOptional
string · enumOptional
  • makeup_remover - Make-up remover
  • cleanser - Cleanser
  • toner - Toner
  • exfoliator - Exfoliator
  • masks_patches - Masks & Patches
  • treatment - Treatment
  • eye_care - Eye care
  • moisturizer - Moisturizer
  • sunscreen - Sunscreen
Possible values:
or
undefined · enumOptionalPossible values:
how_often_to_applyone of · nullableOptional
string · enumOptional
  • daily - Daily
  • weekly - Weekly
  • monthly - Monthly
  • as_needed - As needed
Possible values:
or
undefined · enumOptionalPossible values:
tagging_modestring · enumOptional
  • manual - Manual
  • auto - Auto
Possible values:
is_featuredbooleanOptional
Responses
201Success
application/json
idintegerRead-onlyRequired
company_idstring · uuidRead-onlyRequired
namestring · min: 1Optional
vendor_codestring · nullableOptional
descriptionstring · nullableOptional
short_descriptionstring · nullableOptional
imagestring · nullableOptional
linkstring · nullableOptional
pricestring · nullableOptionalPattern: ^-?\d{0,8}(?:\.\d{0,2})?$
currencyone of · nullableOptional
string · enumOptional
  • AED - United Arab Emirates Dirham
  • AUD - Australian Dollar
  • BRL - Brazilian Real
  • CAD - Canadian Dollar
  • CHF - Swiss Franc
  • CNY - Chinese Yuan
  • DKK - Danish Krone
  • EUR - Euro
  • GBP - British Pound
  • HKD - Hong Kong Dollar
  • ILS - Israeli New Shekel
  • INR - Indian Rupee
  • IQD - Iraqi Dinar
  • JPY - Japanese Yen
  • KRW - South Korean Won
  • MXN - Mexican Peso
  • MYR - Malaysian Ringgit
  • NOK - Norwegian Krone
  • NZD - New Zealand Dollar
  • PLN - Polish Zloty
  • RUB - Russian Ruble
  • SAR - Saudi Riyal
  • SEK - Swedish Krona
  • SGD - Singapore Dollar
  • THB - Thai Baht
  • TRY - Turkish Lira
  • USD - US Dollar
  • ZAR - South African Rand
Possible values:
or
undefined · enumOptionalPossible values:
compare_at_pricestring · nullableOptionalPattern: ^-?\d{0,8}(?:\.\d{0,2})?$
priorityinteger · min: -2147483648 · max: 2147483647Optional
created_atstring · date-timeRead-onlyRequired
updated_atstring · date-timeRead-onlyRequired
cart_integration_idstring · nullableOptional
tagsany · nullableRead-onlyRequired
statusstring · enumOptional
  • active - Active
  • draft - Draft
  • archived - Archived
Possible values:
attached_to_shelvesintegerRead-onlyRequiredDefault: 0
is_lockedbooleanRead-onlyRequiredDefault: false
out_of_stockbooleanRead-onlyRequired
categoryone of · nullableOptional
string · enumOptional
  • makeup_remover - Make-up remover
  • cleanser - Cleanser
  • toner - Toner
  • exfoliator - Exfoliator
  • masks_patches - Masks & Patches
  • treatment - Treatment
  • eye_care - Eye care
  • moisturizer - Moisturizer
  • sunscreen - Sunscreen
Possible values:
or
undefined · enumOptionalPossible values:
how_often_to_applyone of · nullableOptional
string · enumOptional
  • daily - Daily
  • weekly - Weekly
  • monthly - Monthly
  • as_needed - As needed
Possible values:
or
undefined · enumOptionalPossible values:
tagging_modestring · enumOptional
  • manual - Manual
  • auto - Auto
Possible values:
tagging_statusstring · enumRequired
  • pending - Pending
  • processing - Processing
  • success - Success
  • failure - Failure
Possible values:
tagging_status_updated_atstring · date-timeRead-onlyRequired

Timestamp when the tagging status was last updated

is_ready_to_sellbooleanRead-onlyRequiredDefault: false
is_featuredbooleanOptional
post/api/v1/companies/{company_id}/inventory_items/
POST /api/v1/companies/{company_id}/inventory_items/ HTTP/1.1
Host: saas.haut.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 433

{
  "name": "text",
  "vendor_code": null,
  "description": null,
  "short_description": null,
  "image": null,
  "link": null,
  "price": null,
  "currency": "AED",
  "compare_at_price": null,
  "priority": 1,
  "cart_integration_id": null,
  "status": "active",
  "category": "makeup_remover",
  "skin_type": [
    "normal"
  ],
  "concerns": [
    "breakouts"
  ],
  "when_to_apply": [
    "am"
  ],
  "how_often_to_apply": "daily",
  "active_ingredients": [
    "aha"
  ],
  "other": [
    "vegan"
  ],
  "tagging_mode": "manual",
  "is_featured": true
}
{
  "id": 1,
  "company_id": "123e4567-e89b-12d3-a456-426614174000",
  "name": "text",
  "vendor_code": null,
  "description": null,
  "short_description": null,
  "image": null,
  "link": null,
  "price": null,
  "currency": "AED",
  "compare_at_price": null,
  "priority": 1,
  "created_at": "2026-01-01T00:00:00.000Z",
  "updated_at": "2026-01-01T00:00:00.000Z",
  "cart_integration_id": null,
  "tags": null,
  "status": "active",
  "attached_to_shelves": 0,
  "inventory_item_sets": [
    {
      "id": 1,
      "name": "text",
      "description": "text",
      "is_locked": false,
      "inventory_items_count": 0,
      "created_at": "2026-01-01T00:00:00.000Z",
      "updated_at": "2026-01-01T00:00:00.000Z"
    }
  ],
  "is_locked": false,
  "out_of_stock": true,
  "category": "makeup_remover",
  "skin_type": [
    "normal"
  ],
  "concerns": [
    "breakouts"
  ],
  "when_to_apply": [
    "am"
  ],
  "how_often_to_apply": "daily",
  "active_ingredients": [
    "aha"
  ],
  "other": [
    "vegan"
  ],
  "tagging_mode": "manual",
  "tagging_status": "pending",
  "tagging_status_updated_at": "2026-01-01T00:00:00.000Z",
  "is_ready_to_sell": false,
  "is_featured": true
}

List and search Product Items

Use this operation to view products in your company's inventory. You can return a specific page, change the number of results per page, search with q, change the order, or filter by fields such as shelf, category, concern, or readiness to sell.

Start without filters if you want to see all Product Items. The response is paginated, so check the response for the total count and links to the next or previous page.

List inventory items

get

List inventory items

Authorizations
AuthorizationstringRequired

Authenticate using SaaS Private token

Path parameters
company_idstring · uuidRequired
Query parameters
idinteger[]Optional

Multiple values may be separated by commas.

priorityintegerOptional
sourcestringOptional

Source

inventory_item_set_idnumberOptional

Inventory item set ID

is_ready_to_sellbooleanOptional

Is ready to sell

is_featuredbooleanOptional

Is featured

orderingstringOptional

Which field to use when ordering the results.

qstringOptional

A search term.

pageintegerOptional

A page number within the paginated result set.

page_sizeintegerOptional

Number of results to return per page.

Responses
200Success
application/json
countintegerRequiredExample: 123
nextstring · uri · nullableOptionalExample: http://api.example.org/accounts/?page=4
previousstring · uri · nullableOptionalExample: http://api.example.org/accounts/?page=2
get/api/v1/companies/{company_id}/inventory_items/
GET /api/v1/companies/{company_id}/inventory_items/ HTTP/1.1
Host: saas.haut.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "count": 123,
  "next": "http://api.example.org/accounts/?page=4",
  "previous": "http://api.example.org/accounts/?page=2",
  "results": [
    {
      "id": 1,
      "company_id": "123e4567-e89b-12d3-a456-426614174000",
      "name": "text",
      "vendor_code": null,
      "description": null,
      "short_description": null,
      "image": null,
      "link": null,
      "price": null,
      "currency": "AED",
      "compare_at_price": null,
      "priority": 1,
      "created_at": "2026-01-01T00:00:00.000Z",
      "updated_at": "2026-01-01T00:00:00.000Z",
      "cart_integration_id": null,
      "tags": null,
      "status": "active",
      "attached_to_shelves": 0,
      "inventory_item_sets": [
        {
          "id": 1,
          "name": "text",
          "description": "text",
          "is_locked": false,
          "inventory_items_count": 0,
          "created_at": "2026-01-01T00:00:00.000Z",
          "updated_at": "2026-01-01T00:00:00.000Z"
        }
      ],
      "is_locked": false,
      "out_of_stock": true,
      "category": "makeup_remover",
      "skin_type": [
        "normal"
      ],
      "concerns": [
        "breakouts"
      ],
      "when_to_apply": [
        "am"
      ],
      "how_often_to_apply": "daily",
      "active_ingredients": [
        "aha"
      ],
      "other": [
        "vegan"
      ],
      "tagging_mode": "manual",
      "tagging_status": "pending",
      "tagging_status_updated_at": "2026-01-01T00:00:00.000Z",
      "is_ready_to_sell": false,
      "is_featured": true
    }
  ]
}

Get one Product Item

Use this operation when you know the Product Item id and want its complete current information.

Retrieve inventory item

get

Retrieve inventory item

Authorizations
AuthorizationstringRequired

Authenticate using SaaS Private token

Path parameters
company_idstring · uuidRequired
idintegerRequired

A unique integer value identifying this Inventory Item.

Responses
200Success
application/json
idintegerRead-onlyRequired
company_idstring · uuidRead-onlyRequired
namestring · min: 1Optional
vendor_codestring · nullableOptional
descriptionstring · nullableOptional
short_descriptionstring · nullableOptional
imagestring · nullableOptional
linkstring · nullableOptional
pricestring · nullableOptionalPattern: ^-?\d{0,8}(?:\.\d{0,2})?$
currencyone of · nullableOptional
string · enumOptional
  • AED - United Arab Emirates Dirham
  • AUD - Australian Dollar
  • BRL - Brazilian Real
  • CAD - Canadian Dollar
  • CHF - Swiss Franc
  • CNY - Chinese Yuan
  • DKK - Danish Krone
  • EUR - Euro
  • GBP - British Pound
  • HKD - Hong Kong Dollar
  • ILS - Israeli New Shekel
  • INR - Indian Rupee
  • IQD - Iraqi Dinar
  • JPY - Japanese Yen
  • KRW - South Korean Won
  • MXN - Mexican Peso
  • MYR - Malaysian Ringgit
  • NOK - Norwegian Krone
  • NZD - New Zealand Dollar
  • PLN - Polish Zloty
  • RUB - Russian Ruble
  • SAR - Saudi Riyal
  • SEK - Swedish Krona
  • SGD - Singapore Dollar
  • THB - Thai Baht
  • TRY - Turkish Lira
  • USD - US Dollar
  • ZAR - South African Rand
Possible values:
or
undefined · enumOptionalPossible values:
compare_at_pricestring · nullableOptionalPattern: ^-?\d{0,8}(?:\.\d{0,2})?$
priorityinteger · min: -2147483648 · max: 2147483647Optional
created_atstring · date-timeRead-onlyRequired
updated_atstring · date-timeRead-onlyRequired
cart_integration_idstring · nullableOptional
tagsany · nullableRead-onlyRequired
statusstring · enumOptional
  • active - Active
  • draft - Draft
  • archived - Archived
Possible values:
attached_to_shelvesintegerRead-onlyRequiredDefault: 0
is_lockedbooleanRead-onlyRequiredDefault: false
out_of_stockbooleanRead-onlyRequired
categoryone of · nullableOptional
string · enumOptional
  • makeup_remover - Make-up remover
  • cleanser - Cleanser
  • toner - Toner
  • exfoliator - Exfoliator
  • masks_patches - Masks & Patches
  • treatment - Treatment
  • eye_care - Eye care
  • moisturizer - Moisturizer
  • sunscreen - Sunscreen
Possible values:
or
undefined · enumOptionalPossible values:
how_often_to_applyone of · nullableOptional
string · enumOptional
  • daily - Daily
  • weekly - Weekly
  • monthly - Monthly
  • as_needed - As needed
Possible values:
or
undefined · enumOptionalPossible values:
tagging_modestring · enumOptional
  • manual - Manual
  • auto - Auto
Possible values:
tagging_statusstring · enumRequired
  • pending - Pending
  • processing - Processing
  • success - Success
  • failure - Failure
Possible values:
tagging_status_updated_atstring · date-timeRead-onlyRequired

Timestamp when the tagging status was last updated

is_ready_to_sellbooleanRead-onlyRequiredDefault: false
is_featuredbooleanOptional
get/api/v1/companies/{company_id}/inventory_items/{id}/
GET /api/v1/companies/{company_id}/inventory_items/{id}/ HTTP/1.1
Host: saas.haut.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
200Success
{
  "id": 1,
  "company_id": "123e4567-e89b-12d3-a456-426614174000",
  "name": "text",
  "vendor_code": null,
  "description": null,
  "short_description": null,
  "image": null,
  "link": null,
  "price": null,
  "currency": "AED",
  "compare_at_price": null,
  "priority": 1,
  "created_at": "2026-01-01T00:00:00.000Z",
  "updated_at": "2026-01-01T00:00:00.000Z",
  "cart_integration_id": null,
  "tags": null,
  "status": "active",
  "attached_to_shelves": 0,
  "inventory_item_sets": [
    {
      "id": 1,
      "name": "text",
      "description": "text",
      "is_locked": false,
      "inventory_items_count": 0,
      "created_at": "2026-01-01T00:00:00.000Z",
      "updated_at": "2026-01-01T00:00:00.000Z"
    }
  ],
  "is_locked": false,
  "out_of_stock": true,
  "category": "makeup_remover",
  "skin_type": [
    "normal"
  ],
  "concerns": [
    "breakouts"
  ],
  "when_to_apply": [
    "am"
  ],
  "how_often_to_apply": "daily",
  "active_ingredients": [
    "aha"
  ],
  "other": [
    "vegan"
  ],
  "tagging_mode": "manual",
  "tagging_status": "pending",
  "tagging_status_updated_at": "2026-01-01T00:00:00.000Z",
  "is_ready_to_sell": false,
  "is_featured": true
}

Update a Product Item

Use this operation to change only the fields you send. Fields you leave out stay unchanged. For example, send only price and currency to change a product's price without replacing its name, image, or tags.

Update inventory item

patch

Update inventory item

Authorizations
AuthorizationstringRequired

Authenticate using SaaS Private token

Path parameters
company_idstring · uuidRequired
idintegerRequired

A unique integer value identifying this Inventory Item.

Body
namestring · min: 1Optional
vendor_codestring · nullableOptional
descriptionstring · nullableOptional
short_descriptionstring · nullableOptional
imagestring · nullableOptional
linkstring · nullableOptional
pricestring · nullableOptionalPattern: ^-?\d{0,8}(?:\.\d{0,2})?$
currencyone of · nullableOptional
string · enumOptional
  • AED - United Arab Emirates Dirham
  • AUD - Australian Dollar
  • BRL - Brazilian Real
  • CAD - Canadian Dollar
  • CHF - Swiss Franc
  • CNY - Chinese Yuan
  • DKK - Danish Krone
  • EUR - Euro
  • GBP - British Pound
  • HKD - Hong Kong Dollar
  • ILS - Israeli New Shekel
  • INR - Indian Rupee
  • IQD - Iraqi Dinar
  • JPY - Japanese Yen
  • KRW - South Korean Won
  • MXN - Mexican Peso
  • MYR - Malaysian Ringgit
  • NOK - Norwegian Krone
  • NZD - New Zealand Dollar
  • PLN - Polish Zloty
  • RUB - Russian Ruble
  • SAR - Saudi Riyal
  • SEK - Swedish Krona
  • SGD - Singapore Dollar
  • THB - Thai Baht
  • TRY - Turkish Lira
  • USD - US Dollar
  • ZAR - South African Rand
Possible values:
or
undefined · enumOptionalPossible values:
compare_at_pricestring · nullableOptionalPattern: ^-?\d{0,8}(?:\.\d{0,2})?$
priorityinteger · min: -2147483648 · max: 2147483647Optional
cart_integration_idstring · nullableOptional
statusstring · enumOptional
  • active - Active
  • draft - Draft
  • archived - Archived
Possible values:
categoryone of · nullableOptional
string · enumOptional
  • makeup_remover - Make-up remover
  • cleanser - Cleanser
  • toner - Toner
  • exfoliator - Exfoliator
  • masks_patches - Masks & Patches
  • treatment - Treatment
  • eye_care - Eye care
  • moisturizer - Moisturizer
  • sunscreen - Sunscreen
Possible values:
or
undefined · enumOptionalPossible values:
how_often_to_applyone of · nullableOptional
string · enumOptional
  • daily - Daily
  • weekly - Weekly
  • monthly - Monthly
  • as_needed - As needed
Possible values:
or
undefined · enumOptionalPossible values:
tagging_modestring · enumOptional
  • manual - Manual
  • auto - Auto
Possible values:
is_featuredbooleanOptional
Responses
200Success
application/json
idintegerRead-onlyRequired
company_idstring · uuidRead-onlyRequired
namestring · min: 1Optional
vendor_codestring · nullableOptional
descriptionstring · nullableOptional
short_descriptionstring · nullableOptional
imagestring · nullableOptional
linkstring · nullableOptional
pricestring · nullableOptionalPattern: ^-?\d{0,8}(?:\.\d{0,2})?$
currencyone of · nullableOptional
string · enumOptional
  • AED - United Arab Emirates Dirham
  • AUD - Australian Dollar
  • BRL - Brazilian Real
  • CAD - Canadian Dollar
  • CHF - Swiss Franc
  • CNY - Chinese Yuan
  • DKK - Danish Krone
  • EUR - Euro
  • GBP - British Pound
  • HKD - Hong Kong Dollar
  • ILS - Israeli New Shekel
  • INR - Indian Rupee
  • IQD - Iraqi Dinar
  • JPY - Japanese Yen
  • KRW - South Korean Won
  • MXN - Mexican Peso
  • MYR - Malaysian Ringgit
  • NOK - Norwegian Krone
  • NZD - New Zealand Dollar
  • PLN - Polish Zloty
  • RUB - Russian Ruble
  • SAR - Saudi Riyal
  • SEK - Swedish Krona
  • SGD - Singapore Dollar
  • THB - Thai Baht
  • TRY - Turkish Lira
  • USD - US Dollar
  • ZAR - South African Rand
Possible values:
or
undefined · enumOptionalPossible values:
compare_at_pricestring · nullableOptionalPattern: ^-?\d{0,8}(?:\.\d{0,2})?$
priorityinteger · min: -2147483648 · max: 2147483647Optional
created_atstring · date-timeRead-onlyRequired
updated_atstring · date-timeRead-onlyRequired
cart_integration_idstring · nullableOptional
tagsany · nullableRead-onlyRequired
statusstring · enumOptional
  • active - Active
  • draft - Draft
  • archived - Archived
Possible values:
attached_to_shelvesintegerRead-onlyRequiredDefault: 0
is_lockedbooleanRead-onlyRequiredDefault: false
out_of_stockbooleanRead-onlyRequired
categoryone of · nullableOptional
string · enumOptional
  • makeup_remover - Make-up remover
  • cleanser - Cleanser
  • toner - Toner
  • exfoliator - Exfoliator
  • masks_patches - Masks & Patches
  • treatment - Treatment
  • eye_care - Eye care
  • moisturizer - Moisturizer
  • sunscreen - Sunscreen
Possible values:
or
undefined · enumOptionalPossible values:
how_often_to_applyone of · nullableOptional
string · enumOptional
  • daily - Daily
  • weekly - Weekly
  • monthly - Monthly
  • as_needed - As needed
Possible values:
or
undefined · enumOptionalPossible values:
tagging_modestring · enumOptional
  • manual - Manual
  • auto - Auto
Possible values:
tagging_statusstring · enumRequired
  • pending - Pending
  • processing - Processing
  • success - Success
  • failure - Failure
Possible values:
tagging_status_updated_atstring · date-timeRead-onlyRequired

Timestamp when the tagging status was last updated

is_ready_to_sellbooleanRead-onlyRequiredDefault: false
is_featuredbooleanOptional
patch/api/v1/companies/{company_id}/inventory_items/{id}/
PATCH /api/v1/companies/{company_id}/inventory_items/{id}/ HTTP/1.1
Host: saas.haut.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 433

{
  "name": "text",
  "vendor_code": null,
  "description": null,
  "short_description": null,
  "image": null,
  "link": null,
  "price": null,
  "currency": "AED",
  "compare_at_price": null,
  "priority": 1,
  "cart_integration_id": null,
  "status": "active",
  "category": "makeup_remover",
  "skin_type": [
    "normal"
  ],
  "concerns": [
    "breakouts"
  ],
  "when_to_apply": [
    "am"
  ],
  "how_often_to_apply": "daily",
  "active_ingredients": [
    "aha"
  ],
  "other": [
    "vegan"
  ],
  "tagging_mode": "manual",
  "is_featured": true
}
{
  "id": 1,
  "company_id": "123e4567-e89b-12d3-a456-426614174000",
  "name": "text",
  "vendor_code": null,
  "description": null,
  "short_description": null,
  "image": null,
  "link": null,
  "price": null,
  "currency": "AED",
  "compare_at_price": null,
  "priority": 1,
  "created_at": "2026-01-01T00:00:00.000Z",
  "updated_at": "2026-01-01T00:00:00.000Z",
  "cart_integration_id": null,
  "tags": null,
  "status": "active",
  "attached_to_shelves": 0,
  "inventory_item_sets": [
    {
      "id": 1,
      "name": "text",
      "description": "text",
      "is_locked": false,
      "inventory_items_count": 0,
      "created_at": "2026-01-01T00:00:00.000Z",
      "updated_at": "2026-01-01T00:00:00.000Z"
    }
  ],
  "is_locked": false,
  "out_of_stock": true,
  "category": "makeup_remover",
  "skin_type": [
    "normal"
  ],
  "concerns": [
    "breakouts"
  ],
  "when_to_apply": [
    "am"
  ],
  "how_often_to_apply": "daily",
  "active_ingredients": [
    "aha"
  ],
  "other": [
    "vegan"
  ],
  "tagging_mode": "manual",
  "tagging_status": "pending",
  "tagging_status_updated_at": "2026-01-01T00:00:00.000Z",
  "is_ready_to_sell": false,
  "is_featured": true
}

Delete one Product Item

Use this operation when one product should no longer appear in the inventory.

Delete inventory item

delete

Delete inventory item

Authorizations
AuthorizationstringRequired

Authenticate using SaaS Private token

Path parameters
company_idstring · uuidRequired
idintegerRequired

A unique integer value identifying this Inventory Item.

Responses
204

No response body

No content

delete/api/v1/companies/{company_id}/inventory_items/{id}/
DELETE /api/v1/companies/{company_id}/inventory_items/{id}/ HTTP/1.1
Host: saas.haut.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
204

No response body

No content

Delete several Product Items

Use this operation to delete several products in one request. Send their IDs in the ids array.

post
Authorizations
AuthorizationstringRequired

Authenticate using SaaS Private token

Path parameters
company_idstring · uuidRequired
Query parameters
forcebooleanOptionalDefault: false
Body
idsinteger[]Required
Responses
200Success
application/json
idintegerRead-onlyRequired
company_idstring · uuidRead-onlyRequired
namestring · min: 1Optional
vendor_codestring · nullableOptional
descriptionstring · nullableOptional
short_descriptionstring · nullableOptional
imagestring · nullableOptional
linkstring · nullableOptional
pricestring · nullableOptionalPattern: ^-?\d{0,8}(?:\.\d{0,2})?$
currencyone of · nullableOptional
string · enumOptional
  • AED - United Arab Emirates Dirham
  • AUD - Australian Dollar
  • BRL - Brazilian Real
  • CAD - Canadian Dollar
  • CHF - Swiss Franc
  • CNY - Chinese Yuan
  • DKK - Danish Krone
  • EUR - Euro
  • GBP - British Pound
  • HKD - Hong Kong Dollar
  • ILS - Israeli New Shekel
  • INR - Indian Rupee
  • IQD - Iraqi Dinar
  • JPY - Japanese Yen
  • KRW - South Korean Won
  • MXN - Mexican Peso
  • MYR - Malaysian Ringgit
  • NOK - Norwegian Krone
  • NZD - New Zealand Dollar
  • PLN - Polish Zloty
  • RUB - Russian Ruble
  • SAR - Saudi Riyal
  • SEK - Swedish Krona
  • SGD - Singapore Dollar
  • THB - Thai Baht
  • TRY - Turkish Lira
  • USD - US Dollar
  • ZAR - South African Rand
Possible values:
or
undefined · enumOptionalPossible values:
compare_at_pricestring · nullableOptionalPattern: ^-?\d{0,8}(?:\.\d{0,2})?$
priorityinteger · min: -2147483648 · max: 2147483647Optional
created_atstring · date-timeRead-onlyRequired
updated_atstring · date-timeRead-onlyRequired
cart_integration_idstring · nullableOptional
tagsany · nullableRead-onlyRequired
statusstring · enumOptional
  • active - Active
  • draft - Draft
  • archived - Archived
Possible values:
attached_to_shelvesintegerRead-onlyRequiredDefault: 0
is_lockedbooleanRead-onlyRequiredDefault: false
out_of_stockbooleanRead-onlyRequired
categoryone of · nullableOptional
string · enumOptional
  • makeup_remover - Make-up remover
  • cleanser - Cleanser
  • toner - Toner
  • exfoliator - Exfoliator
  • masks_patches - Masks & Patches
  • treatment - Treatment
  • eye_care - Eye care
  • moisturizer - Moisturizer
  • sunscreen - Sunscreen
Possible values:
or
undefined · enumOptionalPossible values:
how_often_to_applyone of · nullableOptional
string · enumOptional
  • daily - Daily
  • weekly - Weekly
  • monthly - Monthly
  • as_needed - As needed
Possible values:
or
undefined · enumOptionalPossible values:
tagging_modestring · enumOptional
  • manual - Manual
  • auto - Auto
Possible values:
tagging_statusstring · enumRequired
  • pending - Pending
  • processing - Processing
  • success - Success
  • failure - Failure
Possible values:
tagging_status_updated_atstring · date-timeRead-onlyRequired

Timestamp when the tagging status was last updated

is_ready_to_sellbooleanRead-onlyRequiredDefault: false
is_featuredbooleanOptional
post/api/v1/companies/{company_id}/inventory_items/bulk_delete/
POST /api/v1/companies/{company_id}/inventory_items/bulk_delete/ HTTP/1.1
Host: saas.haut.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 11

{
  "ids": [
    1
  ]
}
{
  "id": 1,
  "company_id": "123e4567-e89b-12d3-a456-426614174000",
  "name": "text",
  "vendor_code": null,
  "description": null,
  "short_description": null,
  "image": null,
  "link": null,
  "price": null,
  "currency": "AED",
  "compare_at_price": null,
  "priority": 1,
  "created_at": "2026-01-01T00:00:00.000Z",
  "updated_at": "2026-01-01T00:00:00.000Z",
  "cart_integration_id": null,
  "tags": null,
  "status": "active",
  "attached_to_shelves": 0,
  "inventory_item_sets": [
    {
      "id": 1,
      "name": "text",
      "description": "text",
      "is_locked": false,
      "inventory_items_count": 0,
      "created_at": "2026-01-01T00:00:00.000Z",
      "updated_at": "2026-01-01T00:00:00.000Z"
    }
  ],
  "is_locked": false,
  "out_of_stock": true,
  "category": "makeup_remover",
  "skin_type": [
    "normal"
  ],
  "concerns": [
    "breakouts"
  ],
  "when_to_apply": [
    "am"
  ],
  "how_often_to_apply": "daily",
  "active_ingredients": [
    "aha"
  ],
  "other": [
    "vegan"
  ],
  "tagging_mode": "manual",
  "tagging_status": "pending",
  "tagging_status_updated_at": "2026-01-01T00:00:00.000Z",
  "is_ready_to_sell": false,
  "is_featured": true
}

Duplicate Product Items

Use this operation to copy one or more existing Product Items and add the copies to a target Product Shelf. Send the source IDs in inventory_item_ids and the destination shelf ID in target_inventory_item_set_id.

Bulk duplicate inventory items

post

Bulk duplicate the selected InventoryItems.

Authorizations
AuthorizationstringRequired

Authenticate using SaaS Private token

Path parameters
company_idstring · uuidRequired
Query parameters
idinteger[]Optional

Multiple values may be separated by commas.

priorityintegerOptional
sourcestringOptional

Source

inventory_item_set_idnumberOptional

Inventory item set ID

is_ready_to_sellbooleanOptional

Is ready to sell

is_featuredbooleanOptional

Is featured

orderingstringOptional

Which field to use when ordering the results.

qstringOptional

A search term.

pageintegerOptional

A page number within the paginated result set.

page_sizeintegerOptional

Number of results to return per page.

Body

Serializer for validating the request payload for bulk duplicating inventory items.

inventory_item_idsinteger[]Required

List of InventoryItem IDs to duplicate.

target_inventory_item_set_idintegerRequired

ID of the target InventoryItemSet to attach the duplicated items to.

Responses
201Success
application/json
countintegerRequiredExample: 123
nextstring · uri · nullableOptionalExample: http://api.example.org/accounts/?page=4
previousstring · uri · nullableOptionalExample: http://api.example.org/accounts/?page=2
post/api/v1/companies/{company_id}/inventory_items/bulk_duplicate/
POST /api/v1/companies/{company_id}/inventory_items/bulk_duplicate/ HTTP/1.1
Host: saas.haut.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 59

{
  "inventory_item_ids": [
    1
  ],
  "target_inventory_item_set_id": 1
}
{
  "count": 123,
  "next": "http://api.example.org/accounts/?page=4",
  "previous": "http://api.example.org/accounts/?page=2",
  "results": [
    {
      "id": 1,
      "company_id": "123e4567-e89b-12d3-a456-426614174000",
      "name": "text",
      "vendor_code": null,
      "description": null,
      "short_description": null,
      "image": null,
      "link": null,
      "price": null,
      "currency": "AED",
      "compare_at_price": null,
      "priority": 1,
      "created_at": "2026-01-01T00:00:00.000Z",
      "updated_at": "2026-01-01T00:00:00.000Z",
      "cart_integration_id": null,
      "tags": null,
      "status": "active",
      "attached_to_shelves": 0,
      "inventory_item_sets": [
        {
          "id": 1,
          "name": "text",
          "description": "text",
          "is_locked": false,
          "inventory_items_count": 0,
          "created_at": "2026-01-01T00:00:00.000Z",
          "updated_at": "2026-01-01T00:00:00.000Z"
        }
      ],
      "is_locked": false,
      "out_of_stock": true,
      "category": "makeup_remover",
      "skin_type": [
        "normal"
      ],
      "concerns": [
        "breakouts"
      ],
      "when_to_apply": [
        "am"
      ],
      "how_often_to_apply": "daily",
      "active_ingredients": [
        "aha"
      ],
      "other": [
        "vegan"
      ],
      "tagging_mode": "manual",
      "tagging_status": "pending",
      "tagging_status_updated_at": "2026-01-01T00:00:00.000Z",
      "is_ready_to_sell": false,
      "is_featured": true
    }
  ]
}

Update tags for several Product Items

Use this operation when the same recommendation tags should be changed on multiple products. Send the products in inventory_item_ids and the changes in tags.

For tag-difference fields, true adds a value, false removes it, and null leaves it unchanged. Review the request schema in the API block for the available tag groups and values.

Bulk update tags

post

Bulk updating tags on InventoryItem instances.

Authorizations
AuthorizationstringRequired

Authenticate using SaaS Private token

Path parameters
company_idstring · uuidRequired
Query parameters
idinteger[]Optional

Multiple values may be separated by commas.

priorityintegerOptional
sourcestringOptional

Source

inventory_item_set_idnumberOptional

Inventory item set ID

is_ready_to_sellbooleanOptional

Is ready to sell

is_featuredbooleanOptional

Is featured

orderingstringOptional

Which field to use when ordering the results.

qstringOptional

A search term.

pageintegerOptional

A page number within the paginated result set.

page_sizeintegerOptional

Number of results to return per page.

Body

Serializer for validating the request payload for bulk updating tags.

inventory_item_idsinteger[]Required

List of InventoryItem IDs to update.

Responses
200Success
application/json
countintegerRequiredExample: 123
nextstring · uri · nullableOptionalExample: http://api.example.org/accounts/?page=4
previousstring · uri · nullableOptionalExample: http://api.example.org/accounts/?page=2
post/api/v1/companies/{company_id}/inventory_items/bulk_update_tags/
POST /api/v1/companies/{company_id}/inventory_items/bulk_update_tags/ HTTP/1.1
Host: saas.haut.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 1215

{
  "inventory_item_ids": [
    1
  ],
  "tags": {
    "category": "makeup_remover",
    "skin_type": {
      "normal": null,
      "dry": null,
      "oily": null,
      "sensitive": null,
      "combination": null
    },
    "concerns": {
      "breakouts": null,
      "pigmented_spots": null,
      "uneven_skin_tone": null,
      "post_acne": null,
      "redness": null,
      "wrinkles": null,
      "fine_lines": null,
      "sagging": null,
      "under_eye_lines": null,
      "dark_circles": null,
      "under_eye_puffiness": null,
      "pores": null,
      "aging": null
    },
    "when_to_apply": {
      "am": null,
      "pm": null
    },
    "how_often_to_apply": "daily",
    "active_ingredients": {
      "aha": null,
      "alpha_arbutin": null,
      "antioxidants": null,
      "azelaic_acid": null,
      "bha": null,
      "ceramides": null,
      "coenzyme_q10": null,
      "copper_peptides": null,
      "direct_acids": null,
      "enzymes": null,
      "hyaluronic_acid": null,
      "hydrators": null,
      "lactic_acid": null,
      "niacinamide": null,
      "oils": null,
      "peptides": null,
      "retinoids": null,
      "salicylic_acid": null,
      "spf_15": null,
      "spf_30": null,
      "spf_50": null,
      "squalane": null,
      "uv_a_filter": null,
      "uv_b_filter": null,
      "vitamin_c": null,
      "vitamin_e": null,
      "vitamin_k": null
    },
    "other": {
      "vegan": null,
      "cruelty_free": null,
      "alcohol_free": null,
      "oil_free": null,
      "silicone_free": null,
      "gluten_free": null,
      "fragrance_free": null,
      "halal": null,
      "kosher": null,
      "non_comedogenic": null,
      "locally_manufactured": null,
      "for_woman": null,
      "for_man": null
    }
  }
}
{
  "count": 123,
  "next": "http://api.example.org/accounts/?page=4",
  "previous": "http://api.example.org/accounts/?page=2",
  "results": [
    {
      "id": 1,
      "company_id": "123e4567-e89b-12d3-a456-426614174000",
      "name": "text",
      "vendor_code": null,
      "description": null,
      "short_description": null,
      "image": null,
      "link": null,
      "price": null,
      "currency": "AED",
      "compare_at_price": null,
      "priority": 1,
      "created_at": "2026-01-01T00:00:00.000Z",
      "updated_at": "2026-01-01T00:00:00.000Z",
      "cart_integration_id": null,
      "tags": null,
      "status": "active",
      "attached_to_shelves": 0,
      "inventory_item_sets": [
        {
          "id": 1,
          "name": "text",
          "description": "text",
          "is_locked": false,
          "inventory_items_count": 0,
          "created_at": "2026-01-01T00:00:00.000Z",
          "updated_at": "2026-01-01T00:00:00.000Z"
        }
      ],
      "is_locked": false,
      "out_of_stock": true,
      "category": "makeup_remover",
      "skin_type": [
        "normal"
      ],
      "concerns": [
        "breakouts"
      ],
      "when_to_apply": [
        "am"
      ],
      "how_often_to_apply": "daily",
      "active_ingredients": [
        "aha"
      ],
      "other": [
        "vegan"
      ],
      "tagging_mode": "manual",
      "tagging_status": "pending",
      "tagging_status_updated_at": "2026-01-01T00:00:00.000Z",
      "is_ready_to_sell": false,
      "is_featured": true
    }
  ]
}

Run automatic tagging again

Use this operation to restart automatic tagging for one Product Item. This is useful after changing the product information or when you want Haut.AI to recalculate its recommendation tags.

Re-tag inventory item

post

Re-trigger the auto-tagging process for the selected InventoryItem.

Authorizations
AuthorizationstringRequired

Authenticate using SaaS Private token

Path parameters
company_idstring · uuidRequired
idintegerRequired

A unique integer value identifying this Inventory Item.

Responses
200Success
application/json
Other propertiesanyOptional
post/api/v1/companies/{company_id}/inventory_items/{id}/retag/
POST /api/v1/companies/{company_id}/inventory_items/{id}/retag/ HTTP/1.1
Host: saas.haut.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
200Success
{
  "detail": "Re-tagging has been scheduled."
}

Next step

After creating products, create a Product Shelf and add products to it.


Book a demo external-linkPlatform overview on haut.ai

Last updated