Skip to content
Skip to Content
Docs
Studio

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.

PATCH
/studio/custom-ingredients/{custom_ingredient_id}/metadata

Path Parameters

custom_ingredient_id*Custom Ingredient Id

Header Parameters

If-Match*string

The 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.

Request Body

application/json
  1. 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.

Response Body

Successful Response

application/json
  1. 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.

Example Request
curl -X PATCH 'https://api.bettermenu.live/studio/custom-ingredients/string/metadata' \  -H 'If-Match: string' \  -H 'Content-Type: application/json' \  -d '{}'
Example Response
{  "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"}

Recipe in, FDA-format Nutrition Facts out, with every version kept.

Start freeNo card needed.