# Set Recipe Ingredients

{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}

④ of 5 | Requires: ③ createRecipe | Next: ⑤ addRecipeServing

Save the full ingredient list for a recipe in one commit — add, edit, delete, and reorder are all expressed as the complete ordered list you send. Each item is a structured form or resolution row; there is no free-text parsing on this path.

The list is discriminated by ``source``:
  • ``form`` — a structured search → pick → quantity row. Omit ``id`` for a new row (the server mints one) or send an existing ``irow_...`` id to edit/reorder it.
  • ``resolution`` — an existing row born from the resolve workflow. It must carry an existing ``irow_...`` id; immutable lineage is inherited server-side and cannot be supplied by the client.

``ingredients_entry_method`` must equal the recipe's locked entry method. A recipe locked to ``form`` rejects any ``resolution`` row.

``position`` is taken verbatim, so drag-reorder is a resend with the new positions. An empty ``items`` list deletes all ingredients.

On success, recipe-level nutrition (L1) and any existing per-serving panels (L2) are recomputed atomically in the same commit.

Next: ⑤ addRecipeServing — add a serving size to generate the final nutrition facts label.
