Foodashi API

The complete recipe API for modern food applications. Search by flavor, nutrient, or ingredient with vector-powered semantic search.

Open Test Kitchen
Base URL api.foodashi.com
Format JSON
cURL JavaScript Python
# Get your first recipes
curl -X GET "https://api.foodashi.com/api/recipes?cuisine=italian&limit=5" \
  -H "X-Api-Key: YOUR_API_KEY"

Authentication

All API requests require authentication via the X-Api-Key header. You can register a new API key at our developer portal.

Security Best Practices

Your API keys carry many privileges, so be sure to keep them secure! Do not share your secret API keys in publicly accessible areas such as GitHub, client-side code, or blog posts.

Authentication Header
X-Api-Key: rcpt_indie_xK9d8sL2mN...

Tier Access

Endpoints are gated by your subscription tier. If you call an endpoint above your plan, you'll receive a 403 response with upgrade details.

Hobby
Indie
Pro
View pricing
403 Upgrade Required Response
{
  "error": "Upgrade required",
  "message": "This endpoint requires the pro plan or higher. Your current plan: hobby.",
  "current_tier": "hobby",
  "required_tier": "pro",
  "upgrade_url": "https://foodashi.com/pricing"
}

Plans & Rate Limits

Rate limits and endpoint access are tiered by subscription plan. Monthly quotas reset on your billing anchor date.

Plan Price Monthly Requests RPM API Keys
Hobby Free 10,000 30 1
Indie $25/mo · $250/yr 150,000 600 3
Pro $90/mo · $900/yr 1,000,000 3,000 10
Enterprise Custom 10,000,000+ 10,000+ Unlimited

Yearly billing = 10× monthly (two months free). Overage: $0.50/1K on Indie, $0.30/1K on Pro.

What each tier unlocks

Hobby

22 endpoints — core browsing & reference.

  • • Recipe browse (by cuisine, diet, meal-type, time, difficulty)
  • • Ingredient search & food groups
  • • Nutrient & daily-value reference
  • • Utilities (convert, allergens, diets, cuisines)

Indie

+ all Hobby

45 endpoints — search & matching.

  • • Full-text search & autocomplete
  • • Bulk lookup & similar recipes
  • • Browse by cooking method / equipment / occasion / season
  • • Recipes by ingredients (what's in my fridge)
  • • Recipe nutrition / allergens / beverages / scale
  • • Ingredient details, substitutes, portions, conversions
  • • Meal plan templates & basic shopping lists

Pro

+ AI

All 70+ endpoints — everything + AI.

  • AI meal plan generation + customization
  • Food photo recognition (Vision): dish + ingredient detection
  • Recipe analysis from text or URL
  • Semantic vector search (ingredients)
  • NutriMetric scoring + FDA/EU nutrition labels
  • AI beverage pairing (sommelier)
  • • Recipe compare + taste / sustainability / medical profiles
  • • AI-optimized shopping lists
Calling an endpoint above your tier returns 403 with required_tier and upgrade_url fields so your app can handle upgrades gracefully.

Error Handling

Status Meaning
200 Success
400 Bad Request - Invalid parameters
401 Unauthorized - Missing or invalid API key
403 Forbidden - Quota exceeded or restricted endpoint
404 Not Found - Endpoint doesn't exist
500 Server Error - Something went wrong on our end
Error Response
{
  "error": "Monthly Quota Exceeded.
Upgrade your plan."
}
GET /api/recipes Hobby+ 1 call

Get Recipes

Retrieve a list of recipes with powerful filtering options. Supports pagination, dietary filters, cuisine selection, and detailed metadata filtering.

Query Parameters

Parameter Type Description
page integer Page number for pagination, 1-based (default: 1). Ignored when random=true.
limit integer Results per page (default: 20, max: 100).
random boolean Return a shuffled sample instead of stable pagination. Aliases: sort=random, shuffle=true. See browse conventions.
cuisine string
Filter by cuisine. Title-case match (case-insensitive accepted).
🌍 Browse all 78 supported cuisines
🥡 East / Southeast Asia
JapaneseChineseKoreanThaiVietnameseIndonesianMalaysianFilipinoSingaporeanBurmeseCambodianLaotian
🍛 South / Central Asia
IndianPakistaniSri LankanBangladeshiNepaleseTibetanAfghan
🥙 Middle East
TurkishLebanesePersianSyrianIraqiIsraeliSaudi ArabianYemeni
🌶️ North Africa
MoroccanTunisianEgyptian
🥖 Europe
ItalianFrenchSpanishGreekPortugueseGermanBritishIrishPolishRussianUkrainianHungarianGeorgianAustrianBelgianCzech
❄️ Nordic
DanishSwedishNorwegianFinnishIcelandic
🌎 Americas
AmericanMexicanBrazilianPeruvianArgentineColombianVenezuelanChileanBolivianEcuadorian
🏝️ Caribbean
CubanJamaicanHaitianDominicanPuerto RicanTrinidadianBarbadian
🌺 Pacific
HawaiianAustralian
🥘 Sub-Saharan Africa
EthiopianNigerianSouth AfricanGhanaianSenegaleseTanzanianKenyan
🌐 Catch-all
Global
diet string Filter by dietary tag (e.g., "Vegetarian", "Keto")
exclude_alg string Comma-separated list of allergens to exclude. Case-sensitive, must be exact EU 14 allergen names: Gluten, Crustaceans, Eggs, Fish, Peanuts, Soybeans, Dairy, Tree Nuts, Celery, Mustard, Sesame, Sulfites, Lupin, Molluscs. Invalid names return 400 (no silent ignore).
meal_type string
Filter by when/how it's eaten. Recipes carry 1-5 values (multi-value array); matches if any value matches.
Browse all 16 meal_type values
🕐 Time of day
BreakfastBrunchLunchDinnerLate Night
🍽️ Course position
AppetizerSideMain CourseDessert
☕ Between-meal & context
SnackTea TimeAperitifDrinkStreet Food
🧂 Non-meal accessory
CondimentComponent
dish_type string
Filter by structural identity — what the dish IS in form. Recipes carry 1-3 values (multi-value array); matches if any value matches.
🍽️ Browse all 107 dish_type values
💧 Liquid
SoupStewCurryPorridge
🌯 Hand-held
SandwichWrapBurgerHot DogSpring Roll
🍝 Pasta & Noodle
PastaNoodle DishStuffed Pasta
🍚 Rice
Rice DishFried RiceSushi
🌾 Grain
Grain Dish
🥗 Salad & Raw
SaladSlawCevicheTartare
🔥 Cooking method
Stir-FryGrilled DishRoastBraised DishSteamed DishBarbecueSkewerFried Dish
🍳 Fritter family
FritterCutletCroquette
🥘 Baked savory
CasseroleGratinQuicheSavory PieSoufflé
🥟 Filled dough
DumplingEmpanadaHand Pie
🍕 Pizza & Flatbread
PizzaCalzoneStuffed Flatbread
🍞 Bread
BreadFlatbreadCornbread
🥞 Pancake
PancakeCrepeWaffle
🥚 Egg
OmeletScrambled EggsEgg Dish
🫘 Legume
Bean DishLentil DishTofu Dish
🥕 Vegetable
Vegetable DishStuffed Vegetable
🧀 Cheese
FondueCheese Plate
🧂 Cured & Sausage
SausageCharcuterieCured FishJerky
🥩 Meat
SteakRoast MeatRibsMeatballGround Meat Dish
🐠 Seafood
Fish FilletWhole FishShellfish
🍰 Sweet families
CakeCheesecakeCookieSweet PiePastryPuddingCustardFrozenConfectionJellyAssembledCrumble
🥛 Yogurt
Yogurt Dish
🥄 Sauce & Condiment
SauceDressingMarinadeDipSpreadSpice Paste
🥒 Pickle & Preserve
PickleJamCompote
🥤 Beverage (use with meal_type=Drink)
SmoothieMilkshakeJuiceCocktailMocktailTeaCoffeeHot ChocolateFermented Beverage
🥨 Pantry & Snack
CrackerGranolaEnergy BarPopcorn
🍱 Plate format
Mixed PlateBowl
difficulty string Filter by difficulty ("Easy", "Medium", "Hard")
equipment string Filter by required equipment (e.g., "Blender", "Air Fryer")
tag string Filter by specific custom tags (e.g., "Authentic", "Spicy")
time integer Maximum cook time in minutes
total_time integer Maximum total time (prep + cook) in minutes
min_nutrimetric integer Minimum NutriMetric score (0-100)
cost_tier string Filter by estimated cost ("cheap", "moderate", "expensive")
search string Text search in recipe titles
cURL JavaScript Python
curl -X GET "https://api.foodashi.com/api/recipes?cuisine=Mexican&exclude_alg=Peanuts&limit=2" \
  -H "X-Api-Key: YOUR_API_KEY"

Example Response

200 OK
{
  "data": [
    {
      "id": "a1b2c3d4-...",
      "title": "Spaghetti Carbonara",
      "cuisine": "Italian",
      "meal_types": ["Dinner", "Main Course"],
      "dish_types": ["Pasta"],
      "difficulty": "Medium",
      "total_time_minutes": 30,
      "servings": 4,
      "image_url": "https://...",
      "dietary_tags": ["Nut-Free"],
      "tags": ["pasta", "comfort-food"]
    }
  ],
  "pagination": { "page": 0, "limit": 10, "total": 86 }
}
GET /api/recipes/details Hobby+ 1 call

Recipe Details

Get complete details for a single recipe including full ingredients, step-by-step instructions, nutrition info, taste profile, and storage metadata.

Query Parameters

Parameter Type Description
id Required integerRequired The recipe ID
cURL JavaScript Python
curl -X GET "https://api.foodashi.com/api/recipes/details?id=5423" \
  -H "X-Api-Key: YOUR_API_KEY"

Example Response

200 OK
{
  "id": "a1b2c3d4-...",
  "title": "Truffle Risotto",
  "description": "Creamy arborio rice with...",
  "cuisine": "Italian",
  "ingredients": [
    { "name": "Arborio Rice", "amount": "300g" },
    { "name": "Truffle Oil", "amount": "2 tbsp" }
  ],
  "instructions": ["Toast rice in butter...", "Add broth gradually..."],
  "nutrition": {
    "calories": 420,
    "protein_g": 12,
    "fat_g": 18,
    "carbs_g": 52
  },
  "nutrimetric": {
    "grade": "B",
    "score": 72,
    "label": "Good",
    "version": "nutrimetric-1.0"
  }
}
GET /api/random Hobby+ 1 call

Random Recipe

Returns a single random recipe, great for "Surprise Me" features.

ParameterTypeDescription
tagsstringOptional tag filter (e.g. "dinner")
Example
curl -X GET "https://api.foodashi.com/api/random?tags=dinner" \
  -H "X-Api-Key: YOUR_API_KEY"

Browse conventions (read once, applies everywhere)

Every /api/recipes/by-* endpoint — plus /api/recipes, /api/recipes/filter, /api/ingredients/by-food-group, and /api/ingredients/:id/recipes — supports the same set of query conventions. Learn these once, use them everywhere.

Pagination (default behaviour)

ParameterTypeDescription
pageintegerPage number, 1-based (default: 1).
limitintegerResults per page (default: 20, max: 100). For ingredient endpoints max is 50.

Default ordering: newest-published first. Every response includes a pagination object with page, limit, total, and total_pages.

Random mode — new 2026-05-10

When you want a fresh sample on every request (e.g. "surprise me" / "explore" UI), pass any of:

ParameterValueNotes
randomtrueMost common form.
sortrandomAlternative spelling (consistent with the sort param on /api/recipes/filter).
shuffletrueAlternative spelling.

All three forms are accepted — pick whichever fits your code style. Under the hood we fetch a wider window (up to 10× the limit, capped at 500) of matching recipes, Fisher-Yates shuffle in memory, and return the first limit. Pagination is meaningless in random mode — each request is its own independent shuffle.

Example
curl -X GET "https://api.foodashi.com/api/recipes/by-cuisine?cuisine=Italian&random=true&limit=5" \
  -H "X-Api-Key: YOUR_API_KEY"

# Same call again returns 5 DIFFERENT Italian recipes
curl -X GET "https://api.foodashi.com/api/recipes/by-cuisine?cuisine=Italian&random=true&limit=5" \
  -H "X-Api-Key: YOUR_API_KEY"

Year-Round is a wildcard for season queries

A recipe explicitly tagged Year-Round is good in every season — so it surfaces in any specific-season query (Spring/Summer/Fall/Winter). The recipe’s seasons array doesn’t need to contain "Spring" for it to appear when you query ?season=Spring; if it contains Year-Round, it qualifies.

  • ?season=Spring → matches recipes whose seasons[] overlaps [Spring, Year-Round]
  • ?season=Summer → matches [Summer, Year-Round]
  • ?season=Fall → matches [Fall, Year-Round] — alias: ?season=Autumn
  • ?season=Winter → matches [Winter, Year-Round]
  • ?season=Year-Round → strict: only recipes explicitly tagged Year-Round

This semantic applies to both /api/recipes/by-season and /api/recipes/filter?season=….

String matching — case & plural tolerance

Ingredient-based endpoints (/api/recipes/by-ingredients, /api/ingredients/:id/recipes text fallback) normalise input before matching:

  • Case-insensitive: red onion = Red Onion = RED ONION
  • Whitespace collapsed: red  onion (double space) = red onion
  • Plural-tolerant: onion = onions, tomato = tomatoes, cherry = cherries
  • Substring match: chicken matches "chicken breast", "ground chicken", etc. Use longer phrases for specificity.
  • Typo-intolerant: red onon returns 0 — call /api/ingredients/autocomplete first if you need fuzzy/typo handling.
GET /api/recipes/by-cuisine Hobby+ 1 call

Browse by Cuisine

Browse recipes filtered by cuisine type. Returns lightweight recipe cards with pagination.

ParameterTypeDescription
cuisine RequiredstringRequiredCuisine name (e.g., "Italian", "Mexican", "Japanese")
pageintegerPage number (default: 1)
limitintegerResults per page (default: 20, max: 100)
cURL JavaScript Python
curl -X GET "https://api.foodashi.com/api/recipes/by-cuisine?cuisine=Italian&limit=10" \
  -H "X-Api-Key: YOUR_API_KEY"
GET /api/recipes/by-region Hobby+ 1 call

Browse by Region

Group recipes by sub-continental region (e.g. Southeast Asia covers Thai + Vietnamese + Malaysian + Indonesian + Filipino in one call). Perfect for regional food landing pages.

ParameterTypeDescription
regionRequiredstringOne of: East Asia, Southeast Asia, South Asia, Central Asia, Middle East, North Africa, Sub-Saharan Africa, Southern Europe, Western Europe, Northern Europe, Eastern Europe, North America, Latin America, Caribbean, Oceania, Global
pageintegerPage number (default: 1)
limitintegerResults per page (default: 20, max: 100)
cURL JavaScript Python
curl -X GET "https://api.foodashi.com/api/recipes/by-region?region=Southeast%20Asia&limit=20" \
  -H "X-Api-Key: YOUR_API_KEY"

Response shape: { recipes: [...], filter: { region }, pagination: { page, limit, total } }

GET /api/recipes/by-continent Hobby+ 1 call

Browse by Continent

Broadest geographic filter. Useful for top-level navigation like “Asian cuisine” or “European cuisine”.

ParameterTypeDescription
continentRequiredstringOne of: Asia, Europe, Africa, Americas, Oceania, Global
pageintegerPage number (default: 1)
limitintegerResults per page (default: 20, max: 100)
cURL JavaScript Python
curl -X GET "https://api.foodashi.com/api/recipes/by-continent?continent=Asia&limit=30" \
  -H "X-Api-Key: YOUR_API_KEY"
GET /api/recipes/by-country Hobby+ 1 call

Browse by Country

Filter recipes by a specific country using its ISO-3166-1 alpha-2 code (e.g. JP for Japan, IT for Italy, MX for Mexico). Perfect for country-flag navigation UIs.

ParameterTypeDescription
countryRequiredstringISO-3166-1 alpha-2 country code (case-insensitive). Example: JP, IT, BR, MX, IN, MY.
pageintegerPage number (default: 1)
limitintegerResults per page (default: 20, max: 100)
cURL JavaScript Python
curl -X GET "https://api.foodashi.com/api/recipes/by-country?country=JP&limit=25" \
  -H "X-Api-Key: YOUR_API_KEY"

Response includes filter.cuisines_in_country — the list of cuisines mapped to that country, so you can display them as sub-filters in your UI.

GET /api/recipes/filter Indie+ 1 call

Multi-Filter Search

The power user’s endpoint. Combine any subset of the 28 filters below in a single call — location, diet, time, cost, equipment, tags, nutrition, sort. All filters are optional and AND-combined. Empty filter values are ignored.

Power example: "Spring salads under 30 min that are vegan and serve 4+"
?season=Spring&dish_type=Salad&max_time_minutes=30&diet=Vegan&min_servings=4

For valid values of each param, jump to the Reference: Valid values section.

Filters — Location

ParameterTypeDescription
cuisinestringExact cuisine name. See 73 valid cuisines. Example: Italian, Thai, Sri Lankan.
regionstringSub-continental region. See 14 valid regions. Example: Southeast Asia, Southern Europe.
continentstringAfrica, Americas, Asia, Europe, or Oceania.
countrystringISO-3166-1 alpha-2 code. Maps to all cuisines for that country. Example: JP, IT, MX.

Filters — Type, Style & Difficulty

ParameterTypeDescription
meal_typestringWHEN it’s eaten. See 16 valid meal types. Example: Breakfast, Dinner, Snack.
dish_typestringWHAT it structurally is. See 107 valid dish types. Example: Salad, Soup, Curry, Pasta, Cake. Different from meal_type — a Salad can be a Lunch, a Side, or a Main.
difficultystringEasy, Medium, or Hard.

Filters — Diet, Tags & Allergens

ParameterTypeDescription
dietstringOne dietary tag the recipe must satisfy. See 11 dietary tags. Example: Vegan, Gluten-Free.
tagstringSingle free-form tag the recipe must have. Example: weeknight-dinner, comfort-food.
include_tagsCSVComma-separated tags — recipe must contain all of them. Example: comfort-food,weeknight-dinner.
exclude_tagsCSVComma-separated tags — recipe must contain none of them.
exclude_allergensCSVEU-14 allergens to filter out. See 14 valid allergens. Example: Eggs,Dairy,Nuts.

Filters — Time, Servings & Cost

ParameterTypeDescription
max_time_minutesintegerMax total time (prep + cook + rest), in minutes.
min_time_minutesintegerMin total time. Combine with max_time_minutes for a range.
min_servingsintegerMinimum servings (useful for batch cooking).
max_servingsintegerMaximum servings.
cost_level_maxinteger1 (cheap), 2 (medium), or 3 (expensive).

Filters — Technique & Context

ParameterTypeDescription
cooking_methodstringSingle technique. See 59 valid methods. Example: baked, grilled, steamed, stir-fried.
equipmentstringSingle piece of equipment the recipe uses. Example: wok, cast iron skillet, oven, slow cooker.
occasionstringSee 7 valid occasions. Example: Weeknight, Holiday, Barbecue.
seasonstringSpring, Summer, Fall (or alias Autumn), Winter, or Year-Round. Year-Round acts as a wildcard — year-round recipes appear in every specific-season query. See browse conventions.

Filters — Nutrition & Quality

ParameterTypeDescription
max_caloriesnumberMax kcal per serving.
min_protein_gnumberMin grams of protein per serving.
min_fiber_gnumberMin grams of fiber per serving.
max_sodium_mgnumberMax milligrams of sodium per serving.
nutrimetric_min_gradestringFoodashi NutriMetric grade gate. A, B, C, D, or E. Value passes if recipe’s grade is ≥ requested grade (A is best).
has_imagebooleantrue = only recipes with images; false = only without.

Sort & Pagination

ParameterTypeDescription
sortstringrecent (default, newest first), time_asc (fastest first), time_desc, nutrimetric (best score first), or random.
randombooleanShuffle results — see browse conventions.
limitintegerResults per page (default: 20, max: 100).
pageintegerPage number (default: 1).

Examples

Quick weeknight dinners (under 30 min, max difficulty medium)

cURL JavaScript Python
curl -X GET "https://api.foodashi.com/api/recipes/filter?meal_type=Dinner&max_time_minutes=30&difficulty=Easy&sort=time_asc&limit=50" \
  -H "X-Api-Key: YOUR_API_KEY"

Healthy high-protein vegan meals (Grade B+, min 25g protein)

cURL JavaScript
curl -X GET "https://api.foodashi.com/api/recipes/filter?diet=Vegan&min_protein_g=25&nutrimetric_min_grade=B&sort=nutrimetric&limit=30" \
  -H "X-Api-Key: YOUR_API_KEY"

Mediterranean cuisine, no eggs or nuts, with image, Grade A nutrition

cURL
curl -X GET "https://api.foodashi.com/api/recipes/filter?region=Southern%20Europe&exclude_allergens=Eggs,Nuts&has_image=true&nutrimetric_min_grade=A&limit=100" \
  -H "X-Api-Key: YOUR_API_KEY"

Response Shape

200 OK
{
  "recipes": [
    { "id", "title", "cuisine", "region", "country_code",
      "image_url", "total_time_minutes", "difficulty",
      "dietary_tags", "servings", "tags", ... }
  ],
  "filters_applied": { // Echoed back so you can verify your query was parsed correctly
    "cuisine": "Italian",
    "max_time_minutes": 30,
    "sort": "time_asc"
  },
  "pagination": { "page": 1, "limit": 50, "total": 342, "has_more": true }
}

Performance tips

  • • All filters resolve to indexed columns — even combining 10 filters returns in <200ms.
  • • Use include_tags sparingly; it performs a GIN array-contains scan. Max 10 tags.
  • limit=100 is the ceiling. For >100 results, paginate with page=2, etc.
  • filters_applied in the response tells you which parameters the server actually honoured — useful for debugging typos.

Reference: Valid values

Every filter param above expects an exact value from one of the catalogues below. Case-sensitive unless noted. Copy-paste straight into your query string.

dish_type — 107 valid values

Pass to dish_type=. Describes what the dish structurally is — different from meal_type (when it's eaten). A "Salad" can be a Lunch, a Side, or a Main.

Liquid & Stews
SoupStewCurryPorridge
Hand-held
SandwichWrapBurgerHot DogSpring Roll
Pasta & Noodles
PastaNoodle DishStuffed Pasta
Rice
Rice DishFried RiceSushiGrain Dish
Salad & Raw
SaladSlawCevicheTartare
Cooking-method dishes
Stir-FryGrilled DishRoastBraised DishSteamed DishBarbecueSkewerFried Dish
Fritter family
FritterCutletCroquette
Baked savory
CasseroleGratinQuicheSavory PieSoufflé
Filled dough
DumplingEmpanadaHand Pie
Pizza, Flatbread & Bread
PizzaCalzoneStuffed FlatbreadBreadFlatbreadCornbread
Pancake
PancakeCrepeWaffle
Egg dishes
OmeletScrambled EggsEgg Dish
Legume & Vegetable
Bean DishLentil DishTofu DishVegetable DishStuffed Vegetable
Cheese & Cured
FondueCheese PlateSausageCharcuterieCured FishJerky
Meat & Seafood
SteakRoast MeatRibsMeatballGround Meat DishFish FilletWhole FishShellfish
Sweets
CakeCheesecakeCookieSweet PiePastryPuddingCustardFrozenConfectionJellyAssembledCrumble
Sauces & Condiments
SauceDressingMarinadeDipSpreadSpice PasteYogurt Dish
Pickle & Preserve
PickleJamCompote
Beverages
SmoothieMilkshakeJuiceCocktailMocktailTeaCoffeeHot ChocolateFermented Beverage
Snack format & Plate
CrackerGranolaEnergy BarPopcornMixed PlateBowl

meal_type — 16 valid values

Pass to meal_type=. Describes WHEN it's eaten or its role at the table. Different recipes can share a dish_type but have different meal_types (a Salad can be Lunch, Side, or Main).

Time-of-day
BreakfastBrunchLunchDinnerLate Night
Course within a meal
AppetizerSideMain CourseDessert
Between-meal & context
SnackTea TimeAperitifDrinkStreet Food
Accessory roles
CondimentComponent

cuisine — 73 valid values

Pass to cuisine=. Case-sensitive exact match.

Europe
AustrianBelgianBritishCzechDanishFinnishFrenchGeorgianGermanGreekHungarianIcelandicIrishItalianNorwegianPolishPortugueseRussianSpanishSwedishUkrainian
East Asia
ChineseJapaneseKoreanTibetan
Southeast Asia
BurmeseCambodianFilipinoIndonesianLaotianMalaysianSingaporeanThaiVietnamese
South Asia
BangladeshiIndianNepalesePakistaniSri Lankan
Middle East & North Africa
EgyptianIraqiIsraeliLebaneseMoroccanPersianSaudi ArabianSyrianTunisianTurkish
Sub-Saharan Africa
EthiopianGhanaianKenyanNigerianSenegaleseSouth AfricanTanzanian
Americas (North)
AmericanHawaiianMexican
Americas (Latin & Caribbean)
ArgentineBarbadianBolivianBrazilianChileanColombianCubanDominicanEcuadorianJamaicanPeruvianPuerto RicanTrinidadianVenezuelan
Oceania
Australian

region — 14 valid values

Pass to region=. Sub-continental grouping.

CaribbeanEast AsiaEastern EuropeLatin AmericaMiddle EastNorth AfricaNorth AmericaNorthern EuropeOceaniaSouth AsiaSoutheast AsiaSouthern EuropeSub-Saharan AfricaWestern Europe

continent — 5 valid values

AfricaAmericasAsiaEuropeOceania

diet — 11 dietary tags

Pass to diet=. Recipe must satisfy this dietary constraint. Note: include_tags / exclude_tags use a different (free-form) tag namespace; this diet param is the curated dietary-restriction list.

VeganVegetarianPescatarianGluten-FreeDairy-FreeEgg-FreeNut-FreeSoy-FreeLow-FODMAPPaleoWhole30

exclude_allergens — EU-14 list

Pass a CSV like exclude_allergens=Eggs,Dairy,Nuts. Mapped to EU Regulation 1169/2011 — recipes containing any listed allergen are filtered out.

GlutenCrustaceansEggsFishPeanutsSoybeansDairyTree NutsCeleryMustardSesameSulfitesLupinMolluscs

cooking_method — 59 valid values

Pass to cooking_method=. Lowercase. Single value (intersect with other filters for AND).

bakedblanchedblendedboiledbraisedbriningbrowningcaramelizingchillingcookedcoolingcrystallizingcuringdeep fryingdeep-frieddry-frieddum-cookingfermentedfermentingfriedgriddle-cookinggriddlinggrilledgrindingkneadingmarinatedmarinatingmashingmeltingmixingno-cookoven dryingpan-friedpar-fryingpickledpicklingpoachedproofingrawreducingrisingroastedsauteedscorchingsearedsettingsimmeredsmokedsoakingsteamedstir-friedtemperingtoastedtoastingtossingwater-bathwhippedwhisking

occasion — 7 valid values

Pass to occasion=. Title-case.

EverydayWeeknightFamily MealMeal PrepBarbecuePartyHoliday

season — 5 valid values

Pass to season=. Case-insensitive. Autumn is accepted as an alias for Fall. Year-Round acts as a wildcard — year-round recipes appear in every specific-season query.

SpringSummerFallWinterYear-Round

equipment — 300+ values (free-form)

Pass to equipment=. The catalog has 300+ distinct equipment names — pass any specific one for an exact match. Common values:

wokovenblenderfood processorgrillgrill pancast iron skilletdutch ovenslow cookerrice cookermortar and pestlestand mixerhand mixersteamertagineclaypotdeep fryermicrowavewaffle ironrolling pinmandoline

country — ISO 3166-1 alpha-2 codes

Pass an ISO country code to country=. Foodashi maps it to all cuisines with that flag (e.g. US covers American, Hawaiian, Cajun, Creole). Common examples:

JPITFRMXCNINTHVNGRESPTBRARUSGBDEKRTR
GET /api/recipes/by-diet Hobby+ 1 call

Browse by Diet

Filter recipes by dietary tag. Searches within the recipe's dietary_tags array.

ParameterTypeDescription
diet RequiredstringRequiredDietary tag (e.g., "Vegan", "Keto", "Gluten-Free")
pageintegerPage number (default: 1)
limitintegerResults per page (default: 20, max: 100)
Example
curl -X GET "https://api.foodashi.com/api/recipes/by-diet?diet=Vegan&limit=10" \
  -H "X-Api-Key: YOUR_API_KEY"
GET /api/recipes/by-meal-type Hobby+ 1 call

Browse by Meal Type

Filter recipes by meal type such as Breakfast, Lunch, Dinner, Snack, or Dessert.

ParameterTypeDescription
type RequiredstringRequiredMeal type (e.g., "Breakfast", "Dinner", "Dessert")
pageintegerPage number (default: 1)
limitintegerResults per page (default: 20, max: 100)
Example
curl -X GET "https://api.foodashi.com/api/recipes/by-meal-type?type=Breakfast" \
  -H "X-Api-Key: YOUR_API_KEY"
GET /api/recipes/by-time Hobby+ 1 call

Browse by Time

Find quick recipes by specifying a maximum total cook time in minutes.

ParameterTypeDescription
maxMinutesintegerRequiredMaximum total time in minutes (e.g., 30)
pageintegerPage number (default: 1)
limitintegerResults per page (default: 20, max: 100)
Example
curl -X GET "https://api.foodashi.com/api/recipes/by-time?maxMinutes=30" \
  -H "X-Api-Key: YOUR_API_KEY"
GET /api/recipes/by-difficulty Hobby+ 1 call

Browse by Difficulty

Filter recipes by difficulty level: Easy, Medium, or Hard.

ParameterTypeDescription
difficulty RequiredstringRequiredDifficulty level: "Easy", "Medium", or "Hard"
pageintegerPage number (default: 1)
limitintegerResults per page (default: 20, max: 100)
Example
curl -X GET "https://api.foodashi.com/api/recipes/by-difficulty?difficulty=Easy" \
  -H "X-Api-Key: YOUR_API_KEY"
GET /api/recipes/count Hobby+ 1 call

Recipe Count

Get the total number of published recipes. Supports optional filters to count subsets.

ParameterTypeDescription
cuisinestringFilter by cuisine
dietstringFilter by dietary tag
difficultystringFilter by difficulty
Example
curl -X GET "https://api.foodashi.com/api/recipes/count?cuisine=Italian" \
  -H "X-Api-Key: YOUR_API_KEY"
GET /api/recipes/cuisines Hobby+ 1 call

List Cuisines

Get all cuisines that have published recipes, with recipe counts for each.

Example
curl -X GET "https://api.foodashi.com/api/recipes/cuisines" \
  -H "X-Api-Key: YOUR_API_KEY"
GET /api/recipes/tags Hobby+ 1 call

List Tags

Get all recipe tags with counts. Useful for building tag clouds or filter UIs.

Example
curl -X GET "https://api.foodashi.com/api/recipes/tags" \
  -H "X-Api-Key: YOUR_API_KEY"
GET /api/recipes/diets Hobby+ 1 call

List Dietary Tags

Get all dietary tags with recipe counts. Useful for dietary filter UIs.

Example
curl -X GET "https://api.foodashi.com/api/recipes/diets" \
  -H "X-Api-Key: YOUR_API_KEY"
GET /api/autocomplete Indie+ 1 call

Autocomplete

Extremely fast search for UI search bars. Returns lightweight titles matching the query.

ParameterTypeDescription
querystringRequiredSearch text (min 2 chars)
limitintegerMax results (default 5, max 10)
Example
curl -X GET "https://api.foodashi.com/api/autocomplete?query=chick" \
  -H "X-Api-Key: YOUR_API_KEY"
GET /api/bulk-lookup Indie+ 2 calls

Bulk Lookup

Fetch details for multiple recipes in a single API call. Essential for "Favorites" lists.

ParameterTypeDescription
idsstringRequiredComma-separated list of IDs (e.g. 101,102)
Example
curl -X GET "https://api.foodashi.com/api/bulk-lookup?ids=501,892,120" \
  -H "X-Api-Key: YOUR_API_KEY"
GET /api/similar Indie+ 1 call

Similar Recipes

Uses Vector embeddings to find recipes that are semantically similar to the provided ID. Perfect for "You might also like" features.

ParameterTypeDescription
idintegerRequiredSource Recipe ID
limitintegerMax results (default 3)
Example
curl -X GET "https://api.foodashi.com/api/similar?id=5291" \
  -H "X-Api-Key: YOUR_API_KEY"
GET /api/recipes/by-cooking-method Indie+ 1 call

Browse by Cooking Method

Find recipes by cooking technique such as grilling, baking, stir-frying, or slow cooking.

ParameterTypeDescription
methodstringRequiredCooking method (e.g., "grilling", "baking", "stir-frying")
pageintegerPage number (default: 1)
limitintegerResults per page (default: 20, max: 100)
Example
curl -X GET "https://api.foodashi.com/api/recipes/by-cooking-method?method=grilling" \
  -H "X-Api-Key: YOUR_API_KEY"
GET /api/recipes/by-equipment Indie+ 1 call

Browse by Equipment

Find recipes that use specific kitchen equipment like air fryer, slow cooker, or wok.

ParameterTypeDescription
equipmentstringRequiredEquipment name (e.g., "oven", "air fryer", "slow cooker")
pageintegerPage number (default: 1)
limitintegerResults per page (default: 20, max: 100)
Example
curl -X GET "https://api.foodashi.com/api/recipes/by-equipment?equipment=air+fryer" \
  -H "X-Api-Key: YOUR_API_KEY"
GET /api/recipes/by-occasion Indie+ 1 call

Browse by Occasion

Find recipes perfect for holidays and events like Christmas, Thanksgiving, BBQ parties, or date night.

ParameterTypeDescription
occasionstringRequiredOccasion name (e.g., "Christmas", "BBQ", "Date Night")
pageintegerPage number (default: 1)
limitintegerResults per page (default: 20, max: 100)
Example
curl -X GET "https://api.foodashi.com/api/recipes/by-occasion?occasion=Christmas" \
  -H "X-Api-Key: YOUR_API_KEY"
GET /api/recipes/by-season Indie+ 1 call

Browse by Season

Find seasonal recipes for a given time of year. Returns recipes whose seasons array contains the requested season OR Year-Round — so year-round dishes surface in every season filter. See browse conventions for full details.

ParameterTypeDescription
seasonstringRequiredOne of: Spring, Summer, Fall (or alias Autumn), Winter, Year-Round. Case-insensitive.
randombooleanShuffle results — see browse conventions. Aliases: sort=random, shuffle=true.
pageintegerPage number (default: 1).
limitintegerResults per page (default: 20, max: 100).
Example — stable pagination
curl -X GET "https://api.foodashi.com/api/recipes/by-season?season=Spring&limit=20" \
  -H "X-Api-Key: YOUR_API_KEY"
Example — random sample
curl -X GET "https://api.foodashi.com/api/recipes/by-season?season=Spring&random=true&limit=10" \
  -H "X-Api-Key: YOUR_API_KEY"

# Each request returns a different 10 — fresh shuffle every time.
GET /api/recipes/by-nutrients Pro+ 1 call

Browse by Nutrients

Filter recipes by nutrient ranges. Find high-protein, low-calorie, or custom macro recipes.

ParameterTypeDescription
minCaloriesnumberMinimum calories per serving
maxCaloriesnumberMaximum calories per serving
minProteinnumberMinimum protein (g) per serving
maxProteinnumberMaximum protein (g) per serving
minCarbsnumberMinimum carbs (g) per serving
maxCarbsnumberMaximum carbs (g) per serving
minFatnumberMinimum fat (g) per serving
maxFatnumberMaximum fat (g) per serving
pageintegerPage number (default: 1)
limitintegerResults per page (default: 20, max: 100)
Example
curl -X GET "https://api.foodashi.com/api/recipes/by-nutrients?minProtein=25&maxCalories=500" \
  -H "X-Api-Key: YOUR_API_KEY"
GET /api/recipes/by-ingredients Indie+ 2 calls

Browse by Ingredients

Find recipes that contain (or avoid) specific ingredients. Just send ingredient names — no need to look up UUIDs first. Powers "what’s in my fridge", allergen-avoidance, and pantry-based recipe discovery.

When to use this vs /api/ingredients/:id/recipes

Use this endpoint when you have an ingredient name (typical case — user types into a search box). Use /api/ingredients/:id/recipes only when you already have a specific canonical UUID from the autocomplete endpoint and want recipes that link to that exact entry.

ParameterTypeDescription
includestringRequired*Comma-separated ingredient names to include. Each term is matched independently. Multi-term acts as AND — recipes must contain all listed terms. Examples: chicken, chicken,rice, red onion,garlic.
excludestringComma-separated ingredient names to exclude. Recipes containing any excluded term are filtered out. Example: nuts,dairy.
randombooleanShuffle results — see browse conventions.
pageintegerPage number (default: 1).
limitintegerResults per page (default: 20, max: 100).

* At least one of include or exclude is required.

Matching rules — no surprises

  • Case-insensitive: Red Onion, red onion, RED ONION all match identically.
  • Whitespace-normalized: red  onion (extra spaces) matches the same as red onion.
  • Plural-tolerant: onion = onions, tomato = tomatoes, cherry = cherries. No need to guess what form the catalogue uses.
  • Substring match: chicken matches "chicken breast", "ground chicken", "chicken thigh", etc. To be more specific, use a longer phrase like chicken breast.
  • Typo-intolerant: red onon returns 0. For fuzzy/typo matching, hit /api/ingredients/autocomplete first and pass the corrected name.
  • Resolver-aware: even when the catalogue stores a recipe’s ingredient as generic ("Onions, raw") rather than the specific variant ("Red Onions"), this endpoint still finds recipes that mention red onion in their original ingredient text. You get the result you expect without having to know about internal canonical IDs.
Example 1 — single ingredient
curl -X GET "https://api.foodashi.com/api/recipes/by-ingredients?include=red%20onion&limit=10" \
  -H "X-Api-Key: YOUR_API_KEY"
Example 2 — intersection (must contain BOTH)
curl -X GET "https://api.foodashi.com/api/recipes/by-ingredients?include=chicken,rice&limit=20" \
  -H "X-Api-Key: YOUR_API_KEY"
Example 3 — pantry-aware (include + exclude)
curl -X GET "https://api.foodashi.com/api/recipes/by-ingredients?include=chicken,rice&exclude=nuts,dairy" \
  -H "X-Api-Key: YOUR_API_KEY"
Example Response (truncated)
{
  "recipes": [
    {
      "id": "03905874-4035-4754-9418-13c687d7f429",
      "title": "আলু ভর্তা",
      "title_english": "Mashed Potato Bhorta",
      "image_url": "https://.../recipe-...-1776634763681.png",
      "cuisine": "Bangladeshi",
      "cuisine_code": "BD",
      "total_time_minutes": 22,
      "difficulty": "Easy",
      "servings": 4,
      "dietary_tags": ["Vegan", "Gluten-Free", "Nut-Free", "Soy-Free"],
      "tags": ["comfort-food", "dinner", "side-dish"],
      "published_at": "2026-05-06T11:33:35.731+00:00"
    }
  ],
  "filter": {
    "include": ["red onion"],
    "exclude": []
  },
  "pagination": {
    "page": 1,
    "limit": 10,
    "total": 10,
    "total_pages": 1
  }
}

Error responses

StatusBodyWhen
400{"error":"At least one of include or exclude parameter required"}Neither include nor exclude provided.
400{"error":"Maximum 10 ingredients per include/exclude list"}Too many comma-separated terms.
200{"recipes":[],"pagination":{"total":0,...}}No matches. Empty result, not an error.
GET /api/recipes/:id/nutrition Indie+ 2 calls

Recipe Nutrition

Get a full nutrition breakdown for a recipe, computed live from its ingredients. Includes macros, vitamins, and minerals per serving.

ParameterTypeDescription
:iduuidRequiredRecipe UUID
Example
curl -X GET "https://api.foodashi.com/api/recipes/{id}/nutrition" \
  -H "X-Api-Key: YOUR_API_KEY"
GET /api/recipes/:id/allergens Indie+ 1 call

Recipe Allergens

EU-compliant allergen declaration with all 14 regulated allergens, hidden allergen sources, and cross-contamination warnings.

Example
curl -X GET "https://api.foodashi.com/api/recipes/{id}/allergens" \
  -H "X-Api-Key: YOUR_API_KEY"
GET /api/recipes/:id/beverages Indie+ 1 call

Beverage Pairing

AI-generated beverage pairing suggestions including wine, beer, cocktails, and non-alcoholic options.

Example
curl -X GET "https://api.foodashi.com/api/recipes/{id}/beverages" \
  -H "X-Api-Key: YOUR_API_KEY"
GET /api/recipes/:id/scale Indie+ 1 call

Scale Servings

Recalculate all ingredient quantities for a different number of servings.

ParameterTypeDescription
:iduuidRequiredRecipe UUID
servingsintegerRequiredTarget number of servings (1-100)
Example
curl -X GET "https://api.foodashi.com/api/recipes/{id}/scale?servings=8" \
  -H "X-Api-Key: YOUR_API_KEY"
GET /api/recipes/:id/taste Pro+ 1 call

Taste Profile

6-axis taste profile rated 0-10: sweetness, saltiness, sourness, bitterness, savoriness, and spiciness.

Example
curl -X GET "https://api.foodashi.com/api/recipes/{id}/taste" \
  -H "X-Api-Key: YOUR_API_KEY"
GET /api/recipes/:id/sustainability Pro+ 1 call

Sustainability

Environmental impact data including Eco-Score (A-E), carbon footprint estimate, and sustainability tips.

Example
curl -X GET "https://api.foodashi.com/api/recipes/{id}/sustainability" \
  -H "X-Api-Key: YOUR_API_KEY"
GET /api/recipes/:id/medical Pro+ 1 call

Medical Cautions

Medical caution flags for conditions like diabetes, hypertension, gout, and kidney disease.

Example
curl -X GET "https://api.foodashi.com/api/recipes/{id}/medical" \
  -H "X-Api-Key: YOUR_API_KEY"
GET /api/recipes/compare Pro+ 1 call

Compare Recipes

Side-by-side nutritional comparison of 2-5 recipes.

ParameterTypeDescription
idsstringRequiredComma-separated recipe UUIDs (2-5 IDs)
Example
curl -X GET "https://api.foodashi.com/api/recipes/compare?ids=uuid1,uuid2" \
  -H "X-Api-Key: YOUR_API_KEY"

Ingredients API — which endpoint do I use?

Foodashi exposes several ingredient endpoints. Pick by use case:

I want to…EndpointWhy
Find recipes that use a specific ingredient (typed by user) /api/recipes/by-ingredients?include=<name> Single call. Handles case, plural, whitespace, generic-vs-variant collapse. Default choice for search bars.
Power a typeahead/autocomplete UI /api/ingredients/autocomplete?q=<prefix> Fast prefix + substring search. Quality-ranked. Returns UUIDs for follow-up calls.
Get nutrition/details for a specific ingredient /api/ingredients/:id Full nutrition breakdown + portions. Requires UUID from autocomplete.
Get recipes that link to one exact canonical UUID /api/ingredients/:id/recipes Use only when you already have the UUID. For name lookup, see the top row.
Find ingredients in a food group (Produce, Dairy, …) /api/ingredients/by-food-group?group=<name> Browse by category.
Convert units (cups ↔ grams) for an ingredient /api/ingredients/:id/convert Uses ingredient-specific portion weights.

3-minute quick start

curl "https://api.foodashi.com/api/recipes/by-ingredients?include=red%20onion&limit=10" \
  -H "X-Api-Key: YOUR_API_KEY"

That’s it. One call, name → recipes. No UUID dance required.

GET /api/ingredients/autocomplete Hobby+ 1 call

Ingredient Autocomplete

Fast prefix & substring autocomplete for ingredient search bars. Returns canonical name, UUID, food group, category, and type. Quality-ranked so the most authoritative match comes first.

Tip

You usually don’t need to call autocomplete + then a recipe lookup. /api/recipes/by-ingredients?include=<name> handles the name → recipe lookup in a single call with built-in case & plural tolerance. Use autocomplete only when you need to surface a typeahead UI to the user.

ParameterTypeDescription
qstringRequiredSearch query (min 2 chars).
limitintegerMax results (default: 10, max: 20).
Example
curl -X GET "https://api.foodashi.com/api/ingredients/autocomplete?q=red%20onion" \
  -H "X-Api-Key: YOUR_API_KEY"
Example Response
{
  "results": [
    {
      "id": "d642a69d-3c98-4c55-83a5-f231cde9eebd",
      "name": "Red Onion",
      "food_group": "11",
      "category": "Produce",
      "ingredient_type": "raw"
    },
    {
      "id": "f67dbb93-479b-4ea1-8a50-d6dc2cc33771",
      "name": "Red Onions",
      "food_group": "11",
      "category": "Produce",
      "ingredient_type": "raw"
    }
  ],
  "query": "red onion",
  "count": 2
}
GET /api/ingredients/food-groups Hobby+ 1 call

List Food Groups

Get all food groups with ingredient counts. Useful for building category navigation.

Example
curl -X GET "https://api.foodashi.com/api/ingredients/food-groups" \
  -H "X-Api-Key: YOUR_API_KEY"
GET /api/ingredients/:id Indie+ 1 call

Ingredient Details

Get detailed nutrition information for a specific ingredient including macros, vitamins, minerals, and available portion sizes.

ParameterTypeDescription
:iduuidRequiredIngredient UUID from search results
Example Response
{
  "id": "abc123-def456...",
  "name": "Chicken breast, raw",
  "food_group": "Poultry Products",
  "nutrition_per_100g": {
    "calories": 165,
    "protein": 31,
    "fat": 3.6,
    "carbohydrates": 0
  },
  "portions": [
    { "unit": "breast", "grams": 174 }
  ]
}
GET /api/ingredients/:id/convert Indie+ 1 call

Unit Conversion

Convert between different units for a specific ingredient using real portion data.

ParameterTypeDescription
:iduuidRequiredIngredient UUID
amountnumberRequiredAmount to convert
from_unitstringRequiredSource unit (e.g., "cup", "tbsp")
to_unitstringRequiredTarget unit (e.g., "g", "ml")
Example
curl -X GET "https://api.foodashi.com/api/ingredients/{id}/convert?amount=2&from_unit=cup&to_unit=g" \
  -H "X-Api-Key: YOUR_API_KEY"
GET /api/ingredients/:id/substitutes Indie+ 1 call

Ingredient Substitutes

Find nutritionally similar substitutes for an ingredient based on food group and macro profile.

ParameterTypeDescription
:iduuidRequiredIngredient UUID from search results
Example
curl -X GET "https://api.foodashi.com/api/ingredients/{id}/substitutes" \
  -H "X-Api-Key: YOUR_API_KEY"
GET /api/ingredients/:id/recipes Indie+ 1 call

Recipes Using Ingredient (by UUID)

Find all published recipes that use the canonical ingredient identified by UUID. The UUID typically comes from /api/ingredients/autocomplete or /api/ingredients/search.

For a name-based lookup, prefer /api/recipes/by-ingredients

This endpoint matches by exact canonical UUID. If you have an ingredient name (e.g. "red onion"), call /api/recipes/by-ingredients?include=red%20onion instead — it handles case, plural, whitespace, and resolves variants automatically.

ParameterTypeDescription
:iduuidRequiredIngredient canonical UUID (from autocomplete or search).
randombooleanShuffle the matched recipes — see browse conventions.
pageintegerPage number (default: 1).
limitintegerResults per page (default: 20, max: 50).

Smart text fallback (2026-05-10)

If 0 recipes link to the exact canonical UUID, this endpoint automatically falls back to a text search using the canonical’s display name. So you get consistent results even when the ingredient resolver collapsed a variant (e.g. recipes mentioning "red onion" linking to generic "Onions, raw"). Hidden from the API consumer — you just see the right recipes.

Example
curl -X GET "https://api.foodashi.com/api/ingredients/d642a69d-3c98-4c55-83a5-f231cde9eebd/recipes?limit=10" \
  -H "X-Api-Key: YOUR_API_KEY"
Example Response
{
  "ingredient_id": "d642a69d-3c98-4c55-83a5-f231cde9eebd",
  "recipes": [
    {
      "id": "eb0b3a12-8394-45ac-aa4c-d42f13e09ce5",
      "title": "වම්බටු මෝජු",
      "title_english": "Sri Lankan Eggplant Moju",
      "image_url": "https://.../recipe-...-1776635175073.png",
      "cuisine": "Sri Lankan",
      "total_time_minutes": 66,
      "difficulty": "Medium",
      "servings": 6,
      "dietary_tags": ["Vegan", "Gluten-Free"]
    }
  ],
  "pagination": { "page": 1, "limit": 10, "total": 10, "total_pages": 1 }
}

Behavior notes

  • • If 0 direct matches exist on the canonical link, the endpoint falls back to a text search using the canonical’s display name. You don’t need to know whether the recipe linked to the generic or specific variant — the result set is consistent.
  • • Returns 400 if :id is not a valid UUID.
  • • Returns 200 with empty recipes array when no matches (not a 404).
GET /api/ingredients/:id/allergens Indie+ 1 call

Ingredient Allergen Check

Check which EU-14 allergens an ingredient contains or may contain.

Example
curl -X GET "https://api.foodashi.com/api/ingredients/{id}/allergens" \
  -H "X-Api-Key: YOUR_API_KEY"
GET /api/ingredients/by-food-group Indie+ 1 call

Browse by Food Group

Browse ingredients within a food group. Accepts either a friendly category name ("Produce", "Dairy", "Bakery", "Pantry") or a USDA numeric food-group code ("11" for Vegetables). Case-insensitive for names.

ParameterTypeDescription
groupstringRequiredCategory name (e.g. Produce, Dairy) OR USDA numeric code (e.g. 11). Discover available groups via /api/ingredients/food-groups.
randombooleanShuffle — see browse conventions.
pageintegerPage number (default: 1).
limitintegerResults per page (default: 20, max: 100).
Example — by category name
curl -X GET "https://api.foodashi.com/api/ingredients/by-food-group?group=Produce&limit=20" \
  -H "X-Api-Key: YOUR_API_KEY"
Example — by USDA code
curl -X GET "https://api.foodashi.com/api/ingredients/by-food-group?group=11&limit=20" \
  -H "X-Api-Key: YOUR_API_KEY"
GET /api/ingredients/:id/portions Indie+ 1 call

Ingredient Portions

Get all available portion sizes for an ingredient with gram weight equivalents.

Example
curl -X GET "https://api.foodashi.com/api/ingredients/{id}/portions" \
  -H "X-Api-Key: YOUR_API_KEY"
GET /api/ingredient-substitute Hobby+ 1 call

Quick Ingredient Substitute

Lightweight ingredient-name substitute lookup (no UUID needed). Pass an ingredient name as a query parameter; receive common substitutes from a curated lookup table. For nutritionally-accurate substitutes use /api/ingredients/:id/substitutes instead.

ParameterTypeDescription
ingredient or name or q RequiredstringIngredient name (e.g. "butter", "egg", "buttermilk"). Case-insensitive; partial matches accepted. All three parameter names are accepted — use whichever fits your code style.
Examples — all three forms work
curl -X GET "https://api.foodashi.com/api/ingredient-substitute?ingredient=butter" -H "X-Api-Key: KEY"
curl -X GET "https://api.foodashi.com/api/ingredient-substitute?name=butter"       -H "X-Api-Key: KEY"
curl -X GET "https://api.foodashi.com/api/ingredient-substitute?q=butter"          -H "X-Api-Key: KEY"
POST /api/recipes/analyze Pro+ 5 calls

Analyze Existing Recipe (by ID)

Run deep analysis on a specific recipe in our database — returns its full classification (meal_types, dish_types, occasions), nutrition breakdown, allergen detection, dietary tag confidence, and NutriMetric score. Use this to enrich recipe metadata in your app without re-running the full /api/analyze/text endpoint.

Body FieldTypeDescription
recipe_id RequireduuidRecipe UUID from /api/recipes or /api/search.
Example
curl -X POST "https://api.foodashi.com/api/recipes/analyze" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"recipe_id": "a1b2c3d4-e5f6-..."}'
POST /api/ingredients/batch Pro+ 5 calls

Batch Ingredient Lookup

Look up multiple ingredients at once. Much faster than individual searches for recipes.

Request Body
{
  "ingredients": ["chicken", "rice", "tomato"]
}
Example
curl -X POST "https://api.foodashi.com/api/ingredients/batch" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"ingredients": ["chicken", "rice", "tomato"]}'
GET /api/ingredients/by-nutrient Pro+ 1 call

Ingredients by Nutrient

Find ingredients high or low in a specific nutrient. Great for meal planning and dietary goals.

ParameterTypeDescription
nutrientstringRequiredNutrient name (e.g., "protein", "iron", "vitamin_c")
minnumberMinimum amount per 100g
maxnumberMaximum amount per 100g
limitintegerResults per page (default: 20, max: 100)
Example
curl -X GET "https://api.foodashi.com/api/ingredients/by-nutrient?nutrient=protein&min=20" \
  -H "X-Api-Key: YOUR_API_KEY"
GET /api/ingredients/compare Pro+ 2 calls

Compare Ingredients

Side-by-side nutritional comparison of 2-5 ingredients per 100g.

ParameterTypeDescription
idsstringRequiredComma-separated ingredient UUIDs (2-5 IDs)
Example
curl -X GET "https://api.foodashi.com/api/ingredients/compare?ids=uuid1,uuid2" \
  -H "X-Api-Key: YOUR_API_KEY"
GET /api/nutrition/nutrients Hobby+ 1 call

Nutrient List

Get all tracked nutrients with their units and categories (macros, vitamins, minerals, etc.).

Example
curl -X GET "https://api.foodashi.com/api/nutrition/nutrients" \
  -H "X-Api-Key: YOUR_API_KEY"
GET /api/nutrition/daily-values Hobby+ 1 call

Daily Reference Values

FDA and EU daily reference intakes (DRI/RDI) for 30+ nutrients based on a 2,000 calorie diet.

Example
curl -X GET "https://api.foodashi.com/api/nutrition/daily-values" \
  -H "X-Api-Key: YOUR_API_KEY"
POST /api/nutrition/label Pro+ 3 calls

Nutrition Label

Generate FDA or EU format nutrition label data from custom ingredient lists. Returns structured label data with %DV calculations.

Body FieldTypeDescription
nutrition_per_servingobjectRequiredPre-computed per-serving nutrients. Keys: calories, total_fat_g, saturated_fat_g, trans_fat_g, cholesterol_mg, sodium_mg, total_carbohydrate_g, dietary_fiber_g, total_sugars_g, added_sugars_g, protein_g
serving_sizestringHuman-readable serving size, e.g. "2/3 cup (55g)"
servings_per_containerintegerServings per container/recipe
formatstring"fda" or "eu" (default: "fda")
Example
curl -X POST "https://api.foodashi.com/api/nutrition/label" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"nutrition_per_serving":{"calories":250,"total_fat_g":12,"saturated_fat_g":3,"cholesterol_mg":30,"sodium_mg":470,"total_carbohydrate_g":31,"dietary_fiber_g":2,"total_sugars_g":5,"added_sugars_g":2,"protein_g":18},"serving_size":"2/3 cup (55g)","servings_per_container":8,"format":"fda"}'
POST /api/nutrition/nutrimetric Pro+ 3 calls

NutriMetric Calculator

Calculate NutriMetric nutrition quality score (A–F grade, 0-100 scale) for custom nutrition data. Uses 4 scoring pillars: protein density, calorie density, fat balance, and sodium. Category-aware for beverages, soups, desserts, and more.

Body FieldTypeDescription
nutrition_per_100gobjectRequiredNutrients per 100g. Required: energy_kcal, protein_g, fat_g, carbohydrate_g, sodium_mg (sodium in mg). Bonus (improve score): fiber_g, saturated_fat_g, sugars_total_g. Legacy aliases accepted (calories, protein, total_fat, carbohydrate/carbs, sodium).
categorystring"main", "beverage", "soup", "salad", "dessert", or "snack" (auto-detected from nutrient profile if omitted)
Example
curl -X POST "https://api.foodashi.com/api/nutrition/nutrimetric" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"nutrition_per_100g":{"energy_kcal":190,"protein_g":12,"fat_g":8,"carbohydrate_g":15,"sodium_mg":400,"fiber_g":2,"saturated_fat_g":3,"sugars_total_g":5},"category":"main"}'
GET /api/convert Hobby+ 1 call

Unit Converter

General-purpose unit conversion with ingredient-specific density adjustments. Supports 30+ units including cups, tablespoons, ounces, and more.

ParameterTypeDescription
amountnumberRequiredAmount to convert
fromstringRequiredSource unit (e.g., "cup", "tbsp", "oz")
tostringTarget unit (default: "g")
ingredientstringIngredient for density-adjusted conversion (e.g., "flour", "sugar")
Example
curl -X GET "https://api.foodashi.com/api/convert?amount=1&from=cup&to=g&ingredient=flour" \
  -H "X-Api-Key: YOUR_API_KEY"
GET /api/allergens Hobby+ 1 call

Allergen List

Complete list of EU 14 regulated allergens plus extended allergens, with EU regulation metadata.

Example
curl -X GET "https://api.foodashi.com/api/allergens" \
  -H "X-Api-Key: YOUR_API_KEY"
GET /api/diets Hobby+ 1 call

Diet List

All 50+ canonical dietary tags grouped by category: lifestyle, low-carb, allergen-free, religious, nutritional, and regional.

Example
curl -X GET "https://api.foodashi.com/api/diets" \
  -H "X-Api-Key: YOUR_API_KEY"
GET /api/cuisines Hobby+ 1 call

Cuisine List

All 77 world cuisines grouped by region: East/Southeast Asia, South & Central Asia, Middle East, North Africa, Europe, Nordic, North America, South America, Caribbean, Pacific, and Sub-Saharan Africa.

Example
curl -X GET "https://api.foodashi.com/api/cuisines" \
  -H "X-Api-Key: YOUR_API_KEY"
POST /api/analyze/text Pro+ 30 calls

Analyze Recipe Text

Extract a recipe from raw text using AI, then run the full nutrition pipeline: 8 nutrients with %DV, EU 14 allergens, dietary tags, and NutriMetric scoring.

Request Body

FieldTypeDescription
text RequiredRequiredstringRaw recipe text (blog post, pasted instructions, typed). Min 20 characters.
servingsintegerOverride detected servings count.

Response Highlights

  • recipe — Extracted title, servings, ingredients with amounts/units/preparation
  • nutrition — per_serving, per_100g, per_recipe with 8 nutrients + %DV
  • allergens / may_contain — EU 14 allergen detection with sources
  • dietary_tags — 50+ tags (Vegan, Keto, Halal, etc.)
  • nutrimetric — Proprietary nutrition grade (A–F, A best)
cURL
curl -X POST "https://api.foodashi.com/api/analyze/text" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text": "Chicken Parmesan\n\n2 chicken breasts\n1 cup breadcrumbs\n1 cup marinara\n1 cup mozzarella\n\n1. Bread chicken. 2. Fry. 3. Top with sauce and cheese. 4. Bake 375F 20 min."}'
POST /api/analyze/url Pro+ 35 calls

Analyze Recipe URL

Fetch a recipe from any URL, extract it with AI, then run the full nutrition + allergen + NutriMetric pipeline. Works with most recipe blogs and cooking sites.

Request Body

FieldTypeDescription
url RequiredRequiredstringFull URL to a recipe page (http/https).
servingsintegerOverride detected servings count.
cURL
curl -X POST "https://api.foodashi.com/api/analyze/url" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://cooking.nytimes.com/recipes/1015819-chocolate-chip-cookies"}'
POST /api/recognize/image Pro+ 20 calls

Recognize Dish from Photo

Upload a food photo (base64 or URL) and get dish identification with confidence score, estimated ingredients with gram weights, estimated nutrition, and matching recipes from our database.

Request Body

FieldTypeDescription
image RequiredstringBase64-encoded image (supports data URI). Max 4MB. Provide image OR image_url.
image_urlstringURL to fetch the image from (JPEG, PNG, WebP, GIF).
include_recipesbooleanInclude matching recipes from database (default: true).
max_resultsintegerMax recipe matches to return (default: 5, max: 10).
cURL
curl -X POST "https://api.foodashi.com/api/recognize/image" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"image_url": "https://example.com/pizza-photo.jpg", "max_results": 3}'
POST /api/recognize/ingredients Pro+ 25 calls

Recognize Ingredients from Photo

Snap a photo of your fridge, pantry, or counter and get every ingredient identified with estimated quantities, canonical DB matches (for precise nutrition lookup), storage suggestions, and recipe ideas.

Request Body

FieldTypeDescription
image RequiredstringBase64-encoded image. Provide image OR image_url.
image_urlstringURL to fetch the image from (JPEG, PNG, WebP, GIF).
include_recipesbooleanInclude recipe suggestions using detected ingredients (default: true).
max_resultsintegerMax recipe suggestions (default: 5, max: 10).
cURL
curl -X POST "https://api.foodashi.com/api/recognize/ingredients" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"image_url": "https://example.com/fridge-contents.jpg"}'
POST /api/pairing/beverages Pro+ 15 calls

AI Sommelier — Beverage Pairing

Get expert beverage pairings from an AI Master Sommelier. Supports wine, beer, cocktails, spirits, and culturally-specific non-alcoholic beverages. Accepts dish names, ingredient lists, food photos, or recipe IDs.

Request Body (provide exactly one)

FieldTypeDescription
dishstringDish name (e.g., "Pad Thai", "Feijoada").
ingredientsstring[]Ingredient list — AI identifies the likely dish first.
imagestringBase64-encoded food photo. Provide image OR image_url.
image_urlstringURL to a food photo (JPEG, PNG, WebP, GIF).
recipe_idstringUUID of a published recipe in the database.

Optional Preferences

FieldTypeDescription
preferences.no_alcoholbooleanOnly return non-alcoholic beverages.
preferences.budgetstring"low", "medium", or "high" — affects price range of suggestions.
preferences.stylestring"casual" or "fine-dining" — affects formality of recommendations.

Response

Returns 5 beverage categories with specific names, reasoning, and serving details.

FieldDescription
pairings.wine[]Specific varietals with region, price range, serving temp, and alternatives.
pairings.beer[]Beer styles with category, price range, serving temp, and alternatives.
pairings.cocktails[]Culturally-relevant cocktails with base spirit and brief recipe.
pairings.spirits[]Neat pours or simple serves with serving suggestion.
pairings.non_alcoholic[]Culturally-specific beverages (Lassi, Horchata, etc.) with brief recipe.
sommelier_noteOverarching pairing philosophy for the dish.
confidence0.0–1.0 confidence score for the pairing.
cURL
curl -X POST "https://api.foodashi.com/api/pairing/beverages" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"dish": "Feijoada"}'
cURL (with preferences)
curl -X POST "https://api.foodashi.com/api/pairing/beverages" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"dish": "Biryani", "preferences": {"no_alcohol": true, "style": "fine-dining"}}'
POST /api/meal-plan/generate Pro+ 75 calls

Generate Meal Plan

AI-powered meal plan generator. Specify calorie targets, macro ratios, dietary restrictions, allergen exclusions, and cuisine preferences. Returns a day-by-day plan with real DB recipes (full nutrition) plus AI-generated suggestions where needed. Includes daily/weekly nutrition totals and a shopping-list-compatible format.

Request Body

FieldTypeDescription
daysintegerPlan duration, 1-14 (default: 7).
goalstringmaintain, lose_weight, gain_weight, or build_muscle.
calories_per_dayintegerOverride calorie target (auto-set by goal if omitted).
dietary_restrictionsstring[]Array of dietary tags: ["Dairy-Free", "Gluten-Free"]
allergen_exclusionsstring[]EU 14 allergens to exclude: ["Peanuts", "Tree Nuts"]
cuisine_preferencesstring[]Preferred cuisines: ["Japanese", "Italian"]
meals_per_daystring[]Meal types: ["breakfast","lunch","dinner"] (also: snack, brunch).
servingsintegerServings per meal (default: 2).
cURL
curl -X POST "https://api.foodashi.com/api/meal-plan/generate" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "days": 7,
    "goal": "lose_weight",
    "calories_per_day": 1600,
    "dietary_restrictions": ["Dairy-Free"],
    "meals_per_day": ["breakfast", "lunch", "dinner"],
    "servings": 2
  }'
POST /api/meal-plan/customize Pro+ 40 calls

Customize Meal Plan

Modify an existing meal plan: swap a specific meal with a chosen recipe, regenerate all meals for a day, or regenerate a single meal. Pass the plan object from the generate endpoint.

Request Body

FieldTypeDescription
planRequiredobjectThe plan object from /api/meal-plan/generate response.
actionRequiredstringswap, regenerate_day, or regenerate_meal.
day_indexRequiredinteger0-based day index to modify.
meal_indexinteger0-based meal index (required for swap and regenerate_meal).
swap_recipe_iduuidRecipe ID to swap in (required for swap action).
reasonstringOptional context for AI regeneration.
cURL (swap action)
curl -X POST "https://api.foodashi.com/api/meal-plan/customize" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"plan": {...}, "action": "swap", "day_index": 0, "meal_index": 2, "swap_recipe_id": "uuid"}'
GET /api/meal-plan/templates Indie+ 1 call

Meal Plan Templates

Browse 8 pre-built meal plan templates covering common goals: Balanced Weight Loss, Muscle Building, Mediterranean Heart Health, Plant-Based Week, Keto, Family Friendly, Quick Meals, and Clean Bulk.

Query Parameters

ParameterTypeDescription
goalstringFilter by goal: lose_weight, maintain, gain_weight, build_muscle.
cURL
curl -X GET "https://api.foodashi.com/api/meal-plan/templates?goal=lose_weight" \
  -H "X-Api-Key: YOUR_API_KEY"
POST /api/shopping-list/from-recipes Indie+ 2 calls

Shopping List from Recipes

Generate a consolidated shopping list from multiple recipe IDs. Ingredients are merged, de-duplicated, and organized by USDA food groups (Produce, Protein, Dairy, Grains, Pantry, Beverages, Other).

cURL
curl -X POST "https://api.foodashi.com/api/shopping-list/from-recipes" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"recipe_ids": ["uuid-1", "uuid-2"], "unit_system": "metric"}'
POST /api/shopping-list/from-meal-plan Pro+ 2 calls

Shopping List from Meal Plan

Generate a shopping list directly from a meal plan (the shopping_list_compatible field from /api/meal-plan/generate). Automatically extracts all recipe IDs and applies per-meal servings overrides.

cURL
curl -X POST "https://api.foodashi.com/api/shopping-list/from-meal-plan" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"meal_plan": {"days": [{"meals": [{"recipe_id": "uuid", "servings": 2}]}]}}'
POST /api/shopping-list/optimize Pro+ 30 calls

Optimize Shopping List

AI-powered shopping list optimization. Groups items by store aisle, suggests cheaper substitutions, estimates total cost, and provides storage tips.

cURL
curl -X POST "https://api.foodashi.com/api/shopping-list/optimize" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"shopping_list": {"categories": [...]}, "preferences": {"budget": "medium"}}'
POST /api/tips Indie+ 8 calls

Cooking & Prep Tips

AI-powered cooking and preparation tips for any ingredient or recipe name. Supports any language. Choose between cooking tips, prepping tips, or both. When a match is found in the database, tips are enriched with allergen, cuisine, and nutritional context for more specific advice.

Parameters

Parameter Type Required Description
name string Yes Ingredient or recipe name (any language, 1-200 chars)
type string Yes "ingredient" or "recipe"
tip_type string No "cooking", "prepping", or "both" (default: "both")
cURL
curl -X POST "https://api.foodashi.com/api/tips" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "chicken thigh", "type": "ingredient", "tip_type": "cooking"}'
Example Response
{
  "success": true,
  "data": {
    "name": "chicken thigh",
    "name_english": "Chicken Thigh",
    "type": "ingredient",
    "tip_type": "cooking",
    "tips": [
      {
        "category": "temperature",
        "title": "Optimal Internal Temperature",
        "tip": "Cook to 74°C (165°F) internal..."
      }
    ],
    "tip_count": 5,
    "db_enriched": true
  }
}
GET /stats

API Stats

Get aggregated statistics about the recipe database including counts by cuisine, dietary tags, allergens, equipment, and NutriMetric grades.

Example Response
{
  "total_recipes": 12847,
  "total_ingredients": 340000,
  "api_version": "3.0-pipeline",
  "status": "operational"
}

Response Schema

Example response from /api/recipes/details. Fields like nutrimetric, wine_pairing, eco_score, and medical_cautions are Pro+ only (null on Hobby).

{
  "id": "a1b2c3d4-e5f6-...",
  "title": "Caldo de Res",
  "title_english": "Mexican Beef Soup",
  "description": "A hearty Mexican beef soup...",
  "image_url": "https://...",
  "prep_time_minutes": 25,
  "cook_time_minutes": 90,
  "rest_time_minutes": 0,
  "total_time_minutes": 115,
  "servings": 4,
  "cuisine": "Mexican",
  "cuisine_code": "MX",
  "meal_types": ["Dinner", "Main Course"],
  "dish_types": ["Stew"],
  "difficulty": "Medium",
  "cost_level": 2,
  "protein_source": ["Beef"],
  "tags": ["authentic", "comfort-food"],
  "cooking_methods": ["Braising", "Simmering"],
  "occasions": ["Weeknight Dinner"],
  "seasons": ["Winter", "Fall"],
  "equipment": ["Dutch Oven", "Knife"],
  "dietary_tags": ["Gluten-Free"],
  "allergens": ["Celery"],
  "allergen_declaration": { "compliance": "EU-1169", "declaration": "Contains celery." },

  "nutrition": {
    "calories": 455,
    "protein_g": 35.2,
    "fat_g": 18.1,
    "saturated_fat_g": 5.2,
    "carbohydrate_g": 43.0,
    "fiber_g": 8.3,
    "sugars_total_g": 6.1,
    "sodium_mg": 850,
    "per_100g": { "calories": 98, "protein_g": 7.6, "fat_g": 3.9, "carbohydrate_g": 9.3, "sodium_mg": 183 }
  },

  "nutrimetric": {
    "grade": "B",
    "score": 68,
    "label": "Good",
    "version": "nutrimetric-1.0"
  },

  "taste_profile": {
    "spicy": 3,
    "salty": 5,
    "sweet": 2,
    "umami": 7,
    "bitter": 1,
    "sour": 2
  },

  "storage": {
    "refrigerator_days": 3,
    "freezer_friendly": true,
    "reheating_instructions": "Reheat on stovetop..."
  },

  "beverage_pairing": { "pairings": [ { "name": "Malbec", "category": "Red Wine", "alcoholic": true, "why": "Bold tannins stand up to the rich braise" } ] },

  "ingredients": [
    {
      "text": "450 g Beef chuck",
      "name": "Beef chuck",
      "quantity": "450",
      "unit": "g",
      "is_main": true,
      "preparation": "cubed",
      "optional": false,
      "gram_weight": 450
    }
  ],

  "steps": [
    {
      "step": 1,
      "text": "Sear the beef...",
      "duration_minutes": 8,
      "temperature": null,
      "tip": "Pat dry for better sear"
    }
  ]
}

Available Cuisines (78)

East Asia

🇯🇵 Japanese🇨🇳 Chinese🇰🇷 Korean

Southeast Asia

🇹🇭 Thai🇻🇳 Vietnamese🇮🇩 Indonesian🇲🇾 Malaysian🇵🇭 Filipino🇸🇬 Singaporean🇲🇲 Burmese🇰🇭 Cambodian🇱🇦 Laotian

South & Central Asia

🇮🇳 Indian🇵🇰 Pakistani🇱🇰 Sri Lankan🇧🇩 Bangladeshi🇳🇵 Nepalese🏔️ Tibetan🇦🇫 Afghan

Middle East

🇹🇷 Turkish🇱🇧 Lebanese🇮🇷 Persian🇸🇾 Syrian🇮🇶 Iraqi🇮🇱 Israeli🇸🇦 Saudi Arabian🇾🇪 Yemeni

North Africa

🇲🇦 Moroccan🇹🇳 Tunisian🇪🇬 Egyptian

Europe

🇮🇹 Italian🇫🇷 French🇪🇸 Spanish🇬🇷 Greek🇵🇹 Portuguese🇩🇪 German🇬🇧 British🇮🇪 Irish🇵🇱 Polish🇷🇺 Russian🇺🇦 Ukrainian🇭🇺 Hungarian🇬🇪 Georgian🇦🇹 Austrian🇧🇪 Belgian🇨🇿 Czech

Nordic

🇩🇰 Danish🇸🇪 Swedish🇳🇴 Norwegian🇫🇮 Finnish🇮🇸 Icelandic

North America

🇺🇸 American🇲🇽 Mexican

South America

🇧🇷 Brazilian🇵🇪 Peruvian🇦🇷 Argentine🇨🇴 Colombian🇻🇪 Venezuelan🇨🇱 Chilean🇧🇴 Bolivian🇪🇨 Ecuadorian

Caribbean

🇨🇺 Cuban🇯🇲 Jamaican🇭🇹 Haitian🇩🇴 Dominican🇵🇷 Puerto Rican🇹🇹 Trinidadian🇧🇧 Barbadian

Pacific

🌺 Hawaiian🇦🇺 Australian

Sub-Saharan Africa

🇪🇹 Ethiopian🇳🇬 Nigerian🇿🇦 South African🇬🇭 Ghanaian🇸🇳 Senegalese🇹🇿 Tanzanian🇰🇪 Kenyan

Meal Types

Breakfast Brunch Lunch Dinner Starter Salad Soup Side Snack Dessert

Dietary Tags (55)

Lifestyle

Vegetarian Vegan Pescatarian Flexitarian

Low-Carb

Paleo Whole30 Keto Low-Carb

Nutritional

High-Protein Low-Fat Low-Sodium Low-Sugar

Allergen-Free

Gluten-Free Dairy-Free Egg-Free Soy-Free Nut-Free Peanut-Free

Medical

FODMAP-Friendly Low-FODMAP Kidney-Friendly Diabetic-Friendly Heart-Healthy Anti-Inflammatory DASH Mind Diet GAPS AIP (Autoimmune Protocol) Low-Histamine

Other

Primal Sugar-Free Calorie-Conscious Balanced Mediterranean Raw Food Clean Eating Plant-Based Organic Grain-Free Fruitarian Alkaline Macrobiotic Lactose-Free Shellfish-Free Fish-Free Wheat-Free Sesame-Free Sulfites-Free Phenylketonuria (PKU) Gastroparesis GERD-Friendly Elimination Diet Quick & Easy Kid-Friendly Family-Friendly

Common Allergens (EU 14)

Track and filter recipes based on the 14 EU-regulated food allergens. Each recipe includes both confirmed allergens (detectedAllergens) and uncertain traces (mayContainAllergens).

🌾 Gluten
Common sources: wheat, rye, barley, oats, spelt, kamut
🦐 Crustaceans
Common sources: crab, lobster, shrimp, prawns
🥚 Eggs
Common sources: all egg products
🐟 Fish
Common sources: all fish species
🥜 Peanuts
Common sources: peanuts and peanut products
🫘 Soybeans
Common sources: soy and soy products
🥛 Dairy
Common sources: milk, cheese, butter, cream, lactose
🌰 Tree Nuts
Common sources: almonds, cashews, walnuts, pecans, pistachios
🥬 Celery
Common sources: celery and celeriac
🌭 Mustard
Common sources: mustard seeds and products
🫓 Sesame
Common sources: sesame seeds and oil
🍷 Sulphites
Common sources: sulphur dioxide and sulphites (>10mg/kg)
🫘 Lupin
Common sources: lupin seeds and flour
🐚 Molluscs
Common sources: squid, octopus, snails, clams, mussels

Kitchen Equipment (125)

Filter recipes by required kitchen equipment. Equipment is auto-detected from recipe instructions across all 78 world cuisines.

Pots & Pans

Pot Dutch Oven Skillet Sauté Pan Cast Iron Skillet Wok Griddle Crêpe Pan Paella Pan Roasting Pan Double Boiler Grill Grill Pan

Bakeware

Baking Sheet Baking Dish Cake Pan Loaf Pan Muffin Tin Pie Dish Springform Pan Bundt Pan Tart Pan Cooling Rack Pizza Stone Ramekin

Appliances

Oven Stovetop Microwave Blender Immersion Blender Food Processor Stand Mixer Hand Mixer Slow Cooker Pressure Cooker Air Fryer Rice Cooker Deep Fryer Toaster Oven Smoker Dehydrator Ice Cream Maker Sous Vide Waffle Iron Electric Kettle Bread Machine

Knives & Cutting

Knife Paring Knife Bread Knife Cleaver Cutting Board Kitchen Shears Mandoline Meat Mallet

Prep Tools

Mixing Bowl Whisk Spatula Wooden Spoon Rubber Spatula Tongs Ladle Slotted Spoon Rolling Pin Pastry Brush Piping Bag Bench Scraper Sieve Strainer Grater Peeler Zester Garlic Press Can Opener Mortar and Pestle Citrus Juicer Potato Masher Salad Spinner Meat Grinder Potato Ricer Cherry Pitter Apple Corer

Measuring

Measuring Cups Measuring Spoons Kitchen Scale Thermometer Timer

World Cuisine Specialty

East & Southeast Asian Bamboo Steamer Steamer Sushi Mat Takoyaki Pan Clay Pot Korean Stone Bowl Dumpling Press Spider Strainer Wok Ring
South Asian Tandoor Tawa Idli Maker Pressure Pan
Middle Eastern & North African Tagine Couscous Pot Pita Oven
Latin American Tortilla Press Molcajete Comal Empanada Press Churrera
European Pasta Machine Pizza Peel Fondue Pot Raclette Grill Crêpe Maker Spätzle Maker Pierogi Press
African Injera Griddle
General Specialty Skewers Mold Blowtorch Smoking Gun Fermentation Crock Spice Grinder Food Mill Chinois Fish Scaler Canning Jars

Changelog

What's new in the Foodashi API. We ship data-quality and capability improvements continuously.

v5.3 Latest June 2026
  • Improved More accurate nutrition: gram-weighted nutrient coverage and consistent per-serving math across the catalog.
  • Added Two-axis taxonomy on every recipe: dish_types[] (what a dish is) and meal_types[] (when it's eaten).
  • Improved Higher recipe authenticity — canonical-dish fidelity checks at generation and native dish names.
  • Improved Stronger EU-14 allergen and dietary-tag accuracy, with confirmed vs. may-contain flags.
v5.2 March 2026
  • Added AI Vision endpoints: Recognize Dish and Recognize Ingredients (Pro).
  • Added Beverage Pairing AI Sommelier endpoint.
  • Improved Variable endpoint costs (AI endpoints cost 3–25 credits) and clearer error messages with debug hints.
v5.1 February 2026
  • Added Meal Planning (Generate, Customize, Templates) and Shopping List generation.
  • Added NutriMetric scoring system (A–F nutrition grades).
  • Improved Overage billing for Indie/Pro tiers.
v5.0 January 2026
  • Added Vector-powered semantic search (Smart Search) and 70+ endpoints across 11 categories.
  • Improved Complete API rewrite on Cloudflare Workers (5× faster).
  • Added Tier-based access control (Hobby / Indie / Pro).