Start Ingredient Resolution Session
Starts a new ingredient resolution session. Resolves ingredient items into matched food items and gram weights. Each item declares an action (add_ingredient, keep_ingredient, replace_ingredient, update_ingredient_text, update_ingredient_name, update_ingredient_quantity, update_ingredient_grams, or remove_ingredient). Returns resolved rows with search candidates and unit conversions. Check summary.ready_to_confirm — if true, call confirmIngredientResolutionSession. No Version is committed.
Path Parameters
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
curl -X POST "https://loading/studio/recipes/string/ingredient-resolutions" \ -H "Content-Type: application/json" \ -d '{ "items": [ { "action": "add_ingredient", "text": "1 cup all-purpose flour" }, { "action": "add_ingredient", "text": "2 tbsp olive oil" } ] }'{
"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"
}
}{
"type": "https://api.bettermenu.com/errors/recipe_not_found",
"title": "Recipe Not Found",
"status": 400,
"detail": "Recipe rcpe_abc123 does not exist",
"code": "recipe_not_found",
"retryable": true,
"instance": "/api/v1/recipes/rcpe_abc123",
"trace_id": "req_xyz789",
"errors": [
{}
],
"invalid_ids": [
"f_abc123",
"f_xyz789"
]
}{
"type": "https://api.bettermenu.com/errors/recipe_not_found",
"title": "Recipe Not Found",
"status": 400,
"detail": "Recipe rcpe_abc123 does not exist",
"code": "recipe_not_found",
"retryable": true,
"instance": "/api/v1/recipes/rcpe_abc123",
"trace_id": "req_xyz789",
"errors": [
{}
],
"invalid_ids": [
"f_abc123",
"f_xyz789"
]
}