Patch Custom Ingredient Metadata
Partially update a custom ingredient's metadata. Send only the fields you want to change; omitted fields stay unchanged. Wires name — rename the ingredient — and approved_markets, a full-list replace of the markets this ingredient participates in, which controls whether it appears in searchIngredients / the browser typeahead for a given market. Allowed while the ingredient is draft or active; rejected once archived.
custom_ingredient_id*Custom Ingredient IdIf-Match*stringThe custom ingredient's current version_id: the one the last change to this custom ingredient returned, or the one reading it returns (get_custom_ingredient). A stale value is refused with the current version_id; read the custom ingredient again and retry.
application/json- body
Update custom ingredient metadata fields.
Send only the fields you want to change — omitted fields are left
unchanged. Covers name and approved_markets; the shape mirrors
UpdateRecipeMetadataRequest's merge-patch semantics so a future
metadata field is an additive field here, not a new endpoint.
name?|Rename the ingredient — replaces the existing name. Allowed in draft and active (mirrors approved_markets); rejected once archived. A name-only diff is non-label-affecting — it never nudges downstream recipes with an 'update available' signal.
approved_markets?array<>|The complete list of markets this ingredient is approved for — replaces any existing value. An empty list withdraws the ingredient from every market's search surface without archiving it.
Successful Response
application/json- response
Response for the update-custom-ingredient-metadata endpoint.
data*A custom ingredient's full data: identity, lifecycle status, serving/nutrition data, and descriptive attributes.
meta*Response metadata.
version_id?|Version committed for this update; pass on a future mutation as If-Match for optimistic concurrency.
curl -X PATCH 'https://api.bettermenu.live/studio/custom-ingredients/string/metadata' \ -H 'If-Match: string' \ -H 'Content-Type: application/json' \ -d '{}'{ "data": { "id": "stringstringstringstringst", "org_id": "stringstringstringstrings", "status": "draft", "name": "string", "entry_method": "form", "notes": "string", "reference_amount": "string", "reference_unit": "string", "household_measure": "string", "reference_quantity_g": "string", "density_g_per_ml": "string", "nutrients": [ { "id": "stringstringstringstringst", "unit": "string", "amount": "string", "market_nutrients": { "property1": { "bmid": "string", "nutrient_id": 1 }, "property2": { "bmid": "string", "nutrient_id": 1 } } } ], "approved_markets": [ "US" ], "brand": "string", "manufacturer": "string", "source_url": "string", "attributes": [ { "key": "string", "type": "string", "value": null, "searchable": false } ], "artifacts": [ { "key": "string", "kind": "string", "uploaded_at": "2019-08-24T14:15:22Z" } ], "ingredient_statement": "string", "created_at": "2019-08-24T14:15:22Z", "updated_at": "2019-08-24T14:15:22Z" }, "meta": { "version": "string", "request_id": "string", "timestamp": "string" }, "version_id": "string"}