Confirm and save ingredients
Step 2 of the resolve → confirm workflow. Takes a resolution_id from a prior startIngredientResolution call. Validates all rows are resolved, then saves as recipe ingredients. Returns 404 if resolution not found, 409 if already confirmed, 422 if rows are unresolved or ingredient IDs are stale.
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
Request body for POST /recipes/{id}/ingredient-resolutions/confirm.
resolution_id*Resolution IdThe resolution_id to confirm and save as recipe ingredients.
Successful Response
application/json- response
Response for update ingredients endpoint.
data*Data payload for update ingredients response.
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 POST 'https://api.bettermenu.live/studio/recipes/string/ingredient-resolutions/confirm' \ -H 'If-Match: string' \ -H 'Content-Type: application/json' \ -d '{ "resolution_id": "ireslv_01H8X3K9Q2YV0J7M5R6N4P3T2W"}'{ "data": { "recipe_id": "string", "resolution_id": "string", "ingredients": [ { "id": "string", "position": 0, "selected_ingredient_id": "string", "selected_ingredient_name": "string", "display_name": "string", "metric_quantity_g": 0, "search_provenance": "system_matched", "unit_conversion_provenance": "identity", "source": "resolution", "original_text": "string", "parsed_quantity": 0, "parsed_unit": "string", "parsed_ingredient_name": "string", "portion_id": "string" } ], "ingredient_conversions": [ { "conversion_source": "string", "reasoning": "string", "portion_reference": { "portion_bmid": "string", "measure_unit_name": "string", "gram_weight": "string", "amount": "string" } } ], "ingredient_resolutions": [ { "original_text": "string", "parsed": { "quantity_text": "string", "quantity": 0, "unit": "string", "ingredient_name": "string" }, "converted": { "quantity": 0, "unit": "string", "steps": [ { "from_quantity": 0, "from_unit": "string", "to_quantity": 0, "to_unit": "string", "source": "string", "reasoning": "string" } ] }, "matches": { "query_text": "string", "candidates": [ { "ingredient_id": "string", "ingredient_name": "string" } ], "selected_match": { "ingredient_id": "string", "ingredient_name": "string" }, "match_confidence": 0, "search_strategy_used": "standard" } } ], "updated_at": "string" }, "meta": { "version": "string", "request_id": "string", "timestamp": "string" }, "version_id": "string"}