What's New?
- API Requests for Ingredient Sellable Portions — Requests are available to create, update, retrieve and delete ingredient sellable portions.
These endpoints are not enabled by default. To request access, contact Fourth Support and ask for the Sellable Ingredient Portions API endpoints to be enabled for your integration.
Release date: 15th September 2026
API Requests for Ingredient Sellable Portions
Three new endpoints have been added to the RME API to support Sellable Ingredient Portions:
POST /ingredientsellableportionsGET /ingredientsellableportionsDELETE /ingredientsellableportions
These allow integration partners to add, update, retrieve, and delete portion data for sellable ingredients.
POST /ingredientsellableportions
Adds or updates one or more Sellable Ingredient Portions. A single request can contain multiple portion objects, each applying to a different ingredient.
Key behaviour:
- The target ingredient must have Sellable Ingredient set to true. Requests against a non-sellable ingredient are rejected.
-
portionNamemust match an existing value from the RME portion list. This list is fixed and cannot be created or edited via the API. - If a portion with the same
portionNamealready exists for the ingredient, its values are updated rather than a duplicate being created. There is no separate create vs. update mode. - Only one linked recipe is allowed per portion. Supplying
linkedRecipeKeyreplaces any existing linked recipe for that portion. - Sellable portions are a property of the parent ingredient only. Portions cannot be set on alternate ingredients. See the Recipe & Menu Engineering Import API Guide for a full explanation of this model.
- For how the ingredient is identified from the payload, see Identifying the Ingredient below.
Example payload
json
[
{
"supplierName": "Alcohol",
"supplierCode": "B365",
"starChefKey": "0030702",
"portionName": "Standard",
"portionQuantity": 25,
"portionUnit": "ml",
"linkedRecipeKey": "0041205"
}
]Schema
| Field | Type | Required | Notes |
|---|---|---|---|
supplierName |
string (1–150 chars, nullable) | No | Name of the supplier |
supplierCode |
string (1–50 chars, nullable) | No | Supplier-provided unique ingredient identifier |
starChefKey |
integer, nullable | No | Fourth's unique identifier for the ingredient (Product Key in the UI) |
portionName |
string (1–150 chars) | Yes | Must match an existing RME portion list value |
portionQuantity |
number | Yes | Quantity of the portion |
portionUnit |
string (1–50 chars) | Yes | Must match an existing RME Unit of Measure |
linkedRecipeKey |
integer, nullable | No | StarChef key of the linked recipe; replaces any existing link |
GET /ingredientsellableportions
Returns sellable ingredient portions. Results can be filtered using the query parameters below.
Query parameters
| Parameter | Type | Description |
|---|---|---|
lastModifiedAfter |
date-time (yyyy-mm-dd) | Returns only records modified on or after the given date |
groupGuid |
string | Returns only records the specified Group can access. Group GUIDs are available via the Recipe & Menu Engineering Export API. |
productId |
string | Returns portions for the ingredient with a matching StarChefKey |
guid |
string | Returns portions for the ingredient with a matching IngredientGuid |
setType |
string | Filters by ingredient set type: Trial, Archive, Live. Not all customers use set types. |
Sample response
[
{
"supplierName": "Alcohol",
"supplierCode": "B365",
"starChefKey": "0030702",
"portionName": "Standard",
"portionQuantity": 25,
"portionUnit": "ml",
"linkedRecipeKey": "0041205"
}
]Schema is identical to the POST payload above.
DELETE /ingredientsellableportions
Deletes one or more Sellable Ingredient Portions. A single request can contain multiple portion objects, each targeting a different ingredient/portion combination.
Key behaviour
- To identify the portion to delete, provide either the parent ingredient's
starChefKey, or itssupplierName+supplierCode, together with theportionNameof the portion being deleted. - For how the ingredient is identified from the payload, see Identifying the Ingredient below.
Example payload
[
{
"starChefKey": "0030702",
"supplierName": "Alcohol",
"supplierCode": "B365",
"portionName": "Standard"
}
]Schema
| Field | Type | Required | Notes |
|---|---|---|---|
starChefKey |
integer, nullable | No | Unique Fourth identifier for the ingredient (Product Key in the UI) |
supplierName |
string (1–150 chars, nullable) | No | Supplier name for the ingredient |
supplierCode |
string (1–50 chars, nullable) | No | Supplier product code for the ingredient |
portionName |
string (1–150 chars) | Yes | The portion name to delete; combined with the parent ingredient identifier, it identifies the portion for deletion. |
Identifying the Ingredient
Across all RME POST and DELETE endpoints, ingredients are uniquely identified as follows:
- If
starChefKeyis present in the payload, it is used as the unique ingredient identifier, andsupplierName/supplierCodeare ignored. - If
starChefKeyis not present, the combined value ofsupplierName+supplierCodeis used instead.
Full detail is available in the Recipe & Menu Engineering Import API Guide.
Comments
Please sign in to leave a comment.