generated: '2026-07-15' method: generated source: openapi/spoonacular-openapi.yml description: Recommended x-agentic-access execution contracts, classified heuristically from the OpenAPI. A governance starting point for exposing this API to AI agents — review and bind audience per deployment. See research/curity/agentic-governance/. summary: operations: 99 by_action_class: connected: 75 acting: 24 by_consequence: read: 75 write: 24 human_in_the_loop_required: 0 operations: - path: /recipes/complexSearch method: get operationId: searchRecipes x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /recipes/findByIngredients method: get operationId: searchRecipesByIngredients x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /recipes/findByNutrients method: get operationId: searchRecipesByNutrients x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /recipes/{id}/information method: get operationId: getRecipeInformation x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /recipes/informationBulk method: get operationId: getRecipeInformationBulk x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /recipes/{id}/similar method: get operationId: getSimilarRecipes x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /recipes/random method: get operationId: getRandomRecipes x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /recipes/autocomplete method: get operationId: autocompleteRecipeSearch x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /recipes/{id}/tasteWidget.json method: get operationId: getRecipeTasteByID x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /recipes/{id}/tasteWidget.png method: get operationId: recipeTasteByIDImage x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /recipes/{id}/equipmentWidget.json method: get operationId: getRecipeEquipmentByID x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /recipes/{id}/equipmentWidget.png method: get operationId: equipmentByIDImage x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /recipes/{id}/priceBreakdownWidget.json method: get operationId: getRecipePriceBreakdownByID x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /recipes/{id}/priceBreakdownWidget.png method: get operationId: priceBreakdownByIDImage x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /recipes/{id}/ingredientWidget.json method: get operationId: getRecipeIngredientsByID x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /recipes/{id}/ingredientWidget.png method: get operationId: ingredientsByIDImage x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /recipes/{id}/nutritionWidget.json method: get operationId: getRecipeNutritionWidgetByID x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /recipes/{id}/nutritionWidget.png method: get operationId: recipeNutritionByIDImage x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /recipes/{id}/nutritionLabel method: get operationId: recipeNutritionLabelWidget x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /recipes/{id}/nutritionLabel.png method: get operationId: recipeNutritionLabelImage x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /recipes/{id}/analyzedInstructions method: get operationId: getAnalyzedRecipeInstructions x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /recipes/extract method: get operationId: extractRecipeFromWebsite x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /recipes/{id}/ingredientWidget method: get operationId: visualizeRecipeIngredientsByID x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /recipes/{id}/tasteWidget method: get operationId: visualizeRecipeTasteByID x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /recipes/{id}/equipmentWidget method: get operationId: visualizeRecipeEquipmentByID x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /recipes/{id}/priceBreakdownWidget method: get operationId: visualizeRecipePriceBreakdownByID x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /recipes/visualizeTaste method: post operationId: visualizeRecipeTaste x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /recipes/visualizeNutrition method: post operationId: visualizeRecipeNutrition x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /recipes/visualizePriceEstimator method: post operationId: visualizePriceBreakdown x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /recipes/visualizeEquipment method: post operationId: visualizeEquipment x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /recipes/analyze method: post operationId: analyzeRecipe x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /recipes/{id}/summary method: get operationId: summarizeRecipe x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /recipes/{id}/card method: get operationId: createRecipeCardGet x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /recipes/visualizeRecipe method: post operationId: createRecipeCard x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /recipes/analyzeInstructions method: post operationId: analyzeRecipeInstructions x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /recipes/cuisine method: post operationId: classifyCuisine x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /recipes/queries/analyze method: get operationId: analyzeARecipeSearchQuery x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /recipes/convert method: get operationId: convertAmounts x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /recipes/parseIngredients method: post operationId: parseIngredients x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /recipes/{id}/nutritionWidget method: get operationId: visualizeRecipeNutritionByID x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /recipes/visualizeIngredients method: post operationId: visualizeIngredients x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /recipes/guessNutrition method: get operationId: guessNutritionByDishName x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /food/ingredients/{id}/information method: get operationId: getIngredientInformation x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /food/ingredients/{id}/amount method: get operationId: computeIngredientAmount x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /food/ingredients/glycemicLoad method: post operationId: computeGlycemicLoad x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /food/ingredients/autocomplete method: get operationId: autocompleteIngredientSearch x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /food/ingredients/search method: get operationId: ingredientSearch x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /food/ingredients/substitutes method: get operationId: getIngredientSubstitutes x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /food/ingredients/{id}/substitutes method: get operationId: getIngredientSubstitutesByID x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /food/products/search method: get operationId: searchGroceryProducts x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /food/products/upc/{upc} method: get operationId: searchGroceryProductsByUPC x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /food/customFoods/search method: get operationId: searchCustomFoods x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /food/products/{id} method: get operationId: getProductInformation x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /food/products/upc/{upc}/comparable method: get operationId: getComparableProducts x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /food/products/suggest method: get operationId: autocompleteProductSearch x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /food/products/{id}/nutritionWidget method: get operationId: visualizeProductNutritionByID x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /food/products/{id}/nutritionWidget.png method: get operationId: productNutritionByIDImage x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /food/products/{id}/nutritionLabel method: get operationId: productNutritionLabelWidget x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /food/products/{id}/nutritionLabel.png method: get operationId: productNutritionLabelImage x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /food/products/classify method: post operationId: classifyGroceryProduct x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /food/products/classifyBatch method: post operationId: classifyGroceryProductBulk x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /food/ingredients/map method: post operationId: mapIngredientsToGroceryProducts x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /food/menuItems/suggest method: get operationId: autocompleteMenuItemSearch x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /food/menuItems/search method: get operationId: searchMenuItems x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /food/menuItems/{id} method: get operationId: getMenuItemInformation x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /food/menuItems/{id}/nutritionWidget method: get operationId: visualizeMenuItemNutritionByID x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /food/menuItems/{id}/nutritionWidget.png method: get operationId: menuItemNutritionByIDImage x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /food/menuItems/{id}/nutritionLabel method: get operationId: menuItemNutritionLabelWidget x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /food/menuItems/{id}/nutritionLabel.png method: get operationId: menuItemNutritionLabelImage x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /mealplanner/generate method: get operationId: generateMealPlan x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /mealplanner/{username}/week/{start_date} method: get operationId: getMealPlanWeek x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /mealplanner/{username}/day/{date} method: delete operationId: clearMealPlanDay x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /mealplanner/{username}/items method: post operationId: addToMealPlan x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /mealplanner/{username}/items/{id} method: delete operationId: deleteFromMealPlan x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /mealplanner/{username}/templates method: get operationId: getMealPlanTemplates x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /mealplanner/{username}/templates method: post operationId: addMealPlanTemplate x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /mealplanner/{username}/templates/{id} method: get operationId: getMealPlanTemplate x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /mealplanner/{username}/templates/{id} method: delete operationId: deleteMealPlanTemplate x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /mealplanner/{username}/shopping-list method: get operationId: getShoppingList x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /mealplanner/{username}/shopping-list/{start_date}/{end_date} method: post operationId: generateShoppingList x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /users/connect method: post operationId: connectUser x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /mealplanner/{username}/shopping-list/items method: post operationId: addToShoppingList x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /mealplanner/{username}/shopping-list/items/{id} method: delete operationId: deleteFromShoppingList x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /food/restaurants/search method: get operationId: searchRestaurants x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /food/wine/dishes method: get operationId: getDishPairingForWine x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /food/wine/pairing method: get operationId: getWinePairing x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /food/wine/description method: get operationId: getWineDescription x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /food/wine/recommendation method: get operationId: getWineRecommendation x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /food/images/classify method: get operationId: imageClassificationByURL x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /food/images/analyze method: get operationId: imageAnalysisByURL x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /recipes/quickAnswer method: get operationId: quickAnswer x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /food/detect method: post operationId: detectFoodInText x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /food/site/search method: get operationId: searchSiteContent x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /food/search method: get operationId: searchAllFood x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /food/videos/search method: get operationId: searchFoodVideos x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /food/jokes/random method: get operationId: getARandomFoodJoke x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /food/trivia/random method: get operationId: getRandomFoodTrivia x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /food/converse method: get operationId: talkToChatbot x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /food/converse/suggest method: get operationId: getConversationSuggests x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none