Spoonacular · Agentic Access
Spoonacular Agentic Access
x-agentic-access
generated
Spoonacular exposes 99 API operations that an AI agent could call, of which 24 are state-changing ‘acting’ operations. This is a recommended x-agentic-access execution contract — the scope, audience, consequence tier, short-lived token constraints, and escalation each action should carry before it is handed to an autonomous agent.
By consequence: 75 read and 24 write.
Contracts are classified heuristically from the provider’s OpenAPI and refresh on every APIs.io network build; audience is bound per deployment. The model follows Curity’s Access Intelligence (apidays Munich 2026). Browse every provider’s agent contracts at agentic-access.apis.io.
RestaurantFood And DrinkRecipesNutritionMeal PlanningPublic APIs
Operations: 99
Acting: 24
Human-in-the-loop: 0
Method: generated
By consequence
read 75
write 24
Source
Agentic Access
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