BETTERMENU
Studio

List Ingredient Resolutions

Returns all server-side ingredient resolution sessions for this recipe, newest first. Each resolution includes the full row data with search candidates and conversion steps.

Only reflects the server-side resolve → confirm workflow (startIngredientResolution → confirmIngredients). Returns an empty list when no resolution sessions exist — this is correct and expected when ingredients were set via setRecipeIngredients, which bypasses the resolution pipeline entirely.

GET
/studio/recipes/{recipe_id}/ingredient-resolutions

Path Parameters

recipe_id*Recipe Id

Response Body

application/json

application/json

curl -X GET "https://api.bettermenu.live/studio/recipes/string/ingredient-resolutions"
{
  "data": [
    {
      "resolution_id": "string",
      "previous_resolution_id": "string",
      "recipe_id": "string",
      "created_at": "2019-08-24T14:15:22Z",
      "summary": {
        "total": 0,
        "resolved": 0,
        "unresolved": 0,
        "ready_to_confirm": true
      },
      "rows": [
        {
          "row_id": "string",
          "position": 0,
          "original_text": "string",
          "parsed": {
            "position": 0,
            "original_text": "string",
            "quantity": "string",
            "quantity_text": "string",
            "unit": "string",
            "ingredient_name": "string",
            "preparation": "string",
            "quantity_range": [
              "string",
              "string"
            ],
            "error": {
              "message": "string",
              "field": "string"
            }
          },
          "search": {
            "ingredient_id": "string",
            "ingredient_name": "string",
            "provenance": "system_matched",
            "candidates": [
              {
                "ingredient_id": "string",
                "name": "string",
                "item_type": "ingredient",
                "category": "string",
                "preparation": "string",
                "food_form": "string",
                "relevance_score": 0,
                "nutrient_count": 0,
                "portion_count": 0,
                "food_portions": [
                  {
                    "id": "string",
                    "amount": "string",
                    "unit_name": "string",
                    "modifier": "string",
                    "gram_weight": "string"
                  }
                ],
                "nutrients": [
                  {
                    "id": "n_qr2jbh18w4hmo",
                    "name": "protein",
                    "amount": "string",
                    "unit": "g"
                  }
                ]
              }
            ]
          },
          "unit_conversion": {
            "quantity_grams": "string",
            "provenance": "identity",
            "conversion_class": "string",
            "steps": [
              {
                "input_quantity": "string",
                "input_unit": "string",
                "output_quantity": "string",
                "output_unit": "string",
                "source": "identity",
                "conversion_class": "string",
                "reasoning": "string"
              }
            ]
          }
        }
      ]
    }
  ],
  "meta": {
    "version": "string",
    "request_id": "string",
    "timestamp": "string"
  }
}
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}