Patch Recipe Metadata
Partially update recipe metadata — rename, change country, or change demographic.
Send only the fields you want to change; omitted fields stay unchanged.
Side effect: Changing country or demographic triggers automatic
nutrition recomputation. The updated nutrition figures are available
immediately after the update completes.
The new name must be unique within the organization. All changes are logged in the audit trail.
The response carries version_id — the sealed Version ULID — which
callers pass back as If-Match on the next mutation for optimistic
concurrency. A mismatch returns 412 with the current version_id
so the client can refetch and retry.
recipe_id*Recipe IdIf-Match*stringThe recipe's current version_id: the one the last change to this recipe returned, or the one reading the recipe returns (get_recipe). A stale value is refused with the current version_id; read the recipe again and retry.
application/json- body
Update recipe metadata fields (name, country, demographic).
Send only the fields you want to change — omitted fields are left unchanged.
Side effect: Changing country or demographic clears computed
nutrition data (nutrition, nutritional analysis, and any serving
nutrition). Recalculate nutrition after the update.
The demographic must be valid for the recipe's regulatory authority
(current or updated). US_FDA supports: adults_and_children_over_4,
infants_through_12_months, children_1_3_years,
pregnant_and_lactating_women.
name?|New recipe name. Must be unique within the organization.
country?|Update the country. Clears computed nutrition — recalculate after changing. Currently only US (→ US_FDA) is supported.
demographic?|Update the demographic group for %DV calculations. Must be valid for the recipe's regulatory authority. Clears computed nutrition — recalculate after changing.
rationale?|Reason for the change (stored in audit trail)
Successful Response
application/json- response
Response for get recipe endpoint.
data*Recipe with presence summary and computed action permissions.
meta*Response metadata.
version_id?|Version committed for this mutation; pass on the next request as If-Match for optimistic concurrency. Present only on versions declaring the recipe_versioning capability.
curl -X PATCH 'https://api.bettermenu.live/studio/recipes/string' \ -H 'If-Match: string' \ -H 'Content-Type: application/json' \ -d '{ "name": "Updated Recipe Name"}'{ "data": { "id": "string", "name": "string", "country": "US", "regulatory_authority": "US_FDA", "demographic": "adults_and_children_over_4", "status": "active", "created_at": "string", "updated_at": "string", "summary": { "ingredient_count": 0, "has_nutrition": true, "is_nutrition_current": true, "serving_count": 0, "has_nutrition_facts": true }, "actions": { "can_modify": true, "can_archive": true, "can_delete": true } }, "meta": { "version": "string", "request_id": "string", "timestamp": "string" }, "version_id": "string"}