{
"items": [
{
"external_item_id": "SKU-001",
"name": "All-purpose flour",
"type": "INGREDIENT",
"procurement_type": "PURCHASED",
"unit_group_code": "MASS",
"base_unit_code": "G",
"code": "FLOUR-KG",
"is_inventory_tracked": true,
"count_frequency": "WEEKLY"
}
],
"external_user_id": "user_setup_01"
}
{
"results": [
{
"external_item_id": "SKU-001",
"id": "itm_01j5k...",
"action": "created"
}
],
"summary": { "created": 1, "updated": 0, "unchanged": 0 }
}
Catalog Items
Sync items (bulk upsert)
Upserts up to 200 items in a single call using external_item_id as the match key. Items are created or updated; items not in the batch are left untouched.
PUT
/
api
/
v1
/
public
/
vendors
/
{vendorId}
/
catalog
/
items
{
"items": [
{
"external_item_id": "SKU-001",
"name": "All-purpose flour",
"type": "INGREDIENT",
"procurement_type": "PURCHASED",
"unit_group_code": "MASS",
"base_unit_code": "G",
"code": "FLOUR-KG",
"is_inventory_tracked": true,
"count_frequency": "WEEKLY"
}
],
"external_user_id": "user_setup_01"
}
{
"results": [
{
"external_item_id": "SKU-001",
"id": "itm_01j5k...",
"action": "created"
}
],
"summary": { "created": 1, "updated": 0, "unchanged": 0 }
}
string
required
BOH API key with
catalog:write scope.string
required
Vendor UUID.
object[]
required
Array of 1–200 item rows. Each row:
Show item row fields
Show item row fields
string
required
Unique key in your system (1–128 chars). Used as match key.
string
required
Display name (1–256 chars).
string
required
INGREDIENT, PACKAGING, SUPPLY, PREPARED_ITEM, or FINISHED_GOOD.string
required
PURCHASED, PRODUCED, or PURCHASED_AND_PRODUCED.string
required
Code of the unit group (resolved by BOH).
string
required
Code of the base unit within the group.
string
Short alphanumeric code.
boolean
Defaults to
true.string | null
DAILY, WEEKLY, MONTHLY, or null.string[]
Array of item tag codes to assign.
boolean
Set
true to archive this item via sync.object
Free-form extra data.
string
ID of the user performing this action in your system.
object[]
One entry per input row:
external_item_id, id, and action (created, updated, or unchanged).object
{ created, updated, unchanged } counts.{
"items": [
{
"external_item_id": "SKU-001",
"name": "All-purpose flour",
"type": "INGREDIENT",
"procurement_type": "PURCHASED",
"unit_group_code": "MASS",
"base_unit_code": "G",
"code": "FLOUR-KG",
"is_inventory_tracked": true,
"count_frequency": "WEEKLY"
}
],
"external_user_id": "user_setup_01"
}
{
"results": [
{
"external_item_id": "SKU-001",
"id": "itm_01j5k...",
"action": "created"
}
],
"summary": { "created": 1, "updated": 0, "unchanged": 0 }
}

