Creates an item for a business location, optionally sharing it across locations and placing it on menus.
Once the item exists the call always answers 201: a sharing or placement failure does not fail the request, it is reported in sharingWarnings or menuPlacementWarnings on the returned item. Do not retry a 201 response that carries warnings — retrying creates a duplicate item, and menu placement is not idempotent. sharingType, sharedLocations and menuPlacements on the response always reflect the state actually achieved, so a client can diff them against what it requested. If menuPlacementWarnings is non-empty, menuPlacements may be incomplete — re-fetch the item to confirm its actual placements.
Body
Required
-
The name of the item.
Minimum length is
1, maximum length is180. -
The name used in the docket for the item.
Maximum length is
64. -
A stock keeping unit.
Minimum length is
1, maximum length is32. -
Indicates whether or not the item is archived from the menu.
-
A list of barcodes associated with the item.
Minimum length of each is
1, maximum length of each is64. -
The unique identifier for the accounting group. Must be an existing
accountingGroupId. -
The cost price of the item.
-
The default price of the item.
-
Values are
AMOUNT,PERCENT,POSITIVE_OPEN_PRICE, orNEGATIVE_OPEN_PRICE. Default value isAMOUNT. -
How the created item is shared across locations. For a business with a single location any sharing input is rejected with
400. For a Locations Manager business, sharing is only accepted from the business main location. Businesses without a Locations Manager may share from any location, but their sharing always spans every location andbusinessLocationIdsis not supported.businessLocationIdsnames sibling locations only: it must not contain the item's ownbusinessLocationId, which always receives the item implicitly. Omit it to share with every sibling location; on a Locations Manager business an empty array is rejected forSHARED/GLOBAL. Elsewhere the field is not supported, so an empty array is simply equivalent to omitting it.
Responses
-
Item created. Check
sharingWarningsandmenuPlacementWarningsto confirm the requested sharing and menu placements were fully applied. -
The request was rejected and no item was created.
A request that fails schema validation returns
message"Constraint violation"with the offending fields listed inapiSubExceptions, and noerrorCode. Every other rejection carries anerrorCodeinstead, and an emptyapiSubExceptions. PossibleerrorCodevalues:error.business-objects.accounting-groups.not-found—accountingGroupIddoes not exist at this business location.screens_not_found— ascreenIdinmenuPlacementsdoes not exist at the item'sbusinessLocationId, or is not a v2 screen.ikentoo.error.item_is_linked_to_shared_menu— the item is placed on a shared menu from a regular location, but that menu does not allow local edits.ikentoo.error.item-sharing-incompatible-with-menu-sharing— the item is placed on a shared menu from the main location but is not shared with every location of that menu.detailslists the uncovered locations.ikentoo.error.item-sharing-single-location-business—sharingwas supplied for a business with a single location.ikentoo.error.item-sharing-target-locations-require-shared-or-global—businessLocationIdswas supplied withsharingTypeLOCAL.ikentoo.error.item-sharing-v2-invalid-target-location-ids— abusinessLocationIdsentry is not a sibling location of the item's business, or is the item's own location.ikentoo.error.item-sharing-business-location-ids-empty—businessLocationIdswas an empty array forSHARED/GLOBALon a Locations Manager business. Omit the field to share with every location. On a business without a Locations Manager an empty array is equivalent to omitting the field, since targeted sharing is not supported there at all.ikentoo.error.item-sharing-targeted-nonlm-conflict—businessLocationIdswas supplied for a business without a Locations Manager.ikentoo.error.item-sharing-not-allowed-from-nonlm-locations— a Locations Manager business tried to share from a location other than its main location.ikentoo.error.item-sharing-global-price-list-conflict—GLOBALsharing while price lists are enabled.
-
The item conflicts with one that already exists at this business location, or in a location it would be shared with, and no item was created. Possible
errorCodevalues:ikentoo.error.name.in-use— an item with thisnamealready exists, either at this business location or in a location the item would be shared with.ikentoo.error.sku.in-use— an item with thisskualready exists.
curl \
--request POST 'https://api.trial.lsk.lightspeed.app/items/integration/v2/business-locations/{businessLocationId}/items' \
--header "Authorization: Bearer $ACCESS_TOKEN" \
--header "Content-Type: application/json" \
--data '{
"name": "Burger",
"docketName": "The Burger",
"sku": "UGG-BB-PUR-06",
"active": true,
"barcodes": [
"10011101100"
],
"accountingGroupId": 462478248241,
"costPrice": 5.0,
"defaultPrice": 10,
"priceMode": "PERCENT",
"sharing": {
"sharingType": "GLOBAL",
"businessLocationIds": [
42
]
},
"menuPlacements": [
{
"screenId": 42
}
]
}'
{
"name": "Burger",
"docketName": "The Burger",
"sku": "UGG-BB-PUR-06",
"active": true,
"barcodes": [
"10011101100"
],
"accountingGroupId": 462478248241,
"costPrice": 5.0,
"defaultPrice": 10,
"priceMode": "PERCENT",
"sharing": {
"sharingType": "GLOBAL",
"businessLocationIds": [
42
]
},
"menuPlacements": [
{
"screenId": 42
}
]
}
{
"id": 3012455645,
"name": "Burger",
"docketName": "The Burger",
"sku": "UGG-BB-PUR-06",
"active": true,
"barcodes": [
"10011101100"
],
"accountingGroup": {
"id": 40570261078058,
"name": "Alcoholic beverages"
},
"statisticGroups": [
{
"category": "default",
"value": "Food"
}
],
"costPrice": 5.0,
"prices": [
{
"amount": 10.0,
"name": "Tuesday Special"
}
],
"sharingType": "GLOBAL",
"sharedLocations": [
12345,
12346
],
"priceMode": "PERCENT",
"inventorySource": "PURCHASED",
"disabled": false,
"contentDimension": "VOLUME",
"contentUom": "kg",
"contentValue": 1,
"itemType": "ITEM",
"menuPlacements": [
{
"buttonId": 55,
"buttonName": "Ch. Margaux",
"buttonColor": "green",
"buttonTheme": "FULL",
"menuId": 101,
"menuName": "Wine List",
"screenId": 42,
"screenName": "Red Bordeaux",
"position": 3,
"businessLocationId": 12345,
"screenPath": [
{
"screenId": 41,
"name": "Wine"
}
]
}
],
"sharingWarnings": [
{
"status": "BAD_REQUEST",
"timestamp": "2026-05-04T09:42:00Z",
"message": "string",
"errorCode": "ikentoo.error.name.in-use",
"details": "My Item",
"apiSubExceptions": [
{
"field": "string",
"rejectedValue": "string",
"message": "string"
}
]
}
],
"menuPlacementWarnings": [
{
"status": "BAD_REQUEST",
"timestamp": "2026-05-04T09:42:00Z",
"message": "string",
"errorCode": "ikentoo.error.name.in-use",
"details": "My Item",
"apiSubExceptions": [
{
"field": "string",
"rejectedValue": "string",
"message": "string"
}
]
}
]
}
{
"status": "BAD_REQUEST",
"timestamp": "2026-05-04T09:42:00Z",
"message": "string",
"errorCode": "ikentoo.error.name.in-use",
"details": "My Item",
"apiSubExceptions": [
{
"field": "string",
"rejectedValue": "string",
"message": "string"
}
]
}
{
"status": "BAD_REQUEST",
"timestamp": "2026-05-04T09:42:00Z",
"message": "string",
"errorCode": "ikentoo.error.name.in-use",
"details": "My Item",
"apiSubExceptions": [
{
"field": "string",
"rejectedValue": "string",
"message": "string"
}
]
}