List recipes
Business plan only. Page through the whole database, newest first, filtered by cuisine, course, category, diet, ingredient, language or total time.
/recipesAPI keyBusiness planRequires a business plan. Returns recipes newest first. Every filter is optional and they combine, so `?cuisine=italian&diet=vegetarian&maxTotalMinutes=30` is a valid request. Values for `course`, `cuisine` and `diet` come from the closed vocabularies; `category` and `ingredient` take a slug. Equipment matching uses the structured equipment field; recipes with unknown equipment do not match.
Request
curl 'https://api.tinyplates.dev/recipes?limit=3' \
-H 'Authorization: Bearer rd_your_api_key'Sign in to run this request with your own key. Free, 50 requests a day and 300 a week.
Parameters
categoryslugA normalized category slug, such as "pasta" or "soup". Categories come from an open set — read them off the `categories` field of a recipe.
courseslugA course from the closed list.
10 allowed values
appetizerbreakfastbrunchdessertdinnerdrinklunchmain-courseside-dishsnackcuisineslugA cuisine from the closed list.
55 allowed values
africanamericanargentinianasianaustralianaustrianbelgianbrazilianbritishcajuncaribbeanchinesecubandanishdutcheastern-europeanegyptianethiopianfilipinofinnishfrenchgermangreekhungarianindianindonesianiranianirishisraeliitalianjamaicanjapanesekoreanlatin-americanlebanesemalaysianmediterraneanmexicanmiddle-easternmoroccannorwegianpakistaniperuvianpolishportugueserussianscandinaviansouthern-usspanishswedishswisstex-mexthaiturkishvietnamesedietslugOnly return recipes known to suit this diet, declared by the site or inferred from the required ingredients. A recipe with an unknown flag is excluded rather than guessed at.
5 allowed values
dairy-freegluten-freepescatarianveganvegetarianingredientslugA canonical ingredient id, such as "chicken-thigh". GET /ingredients lists them.
maxCookMinutesinteger1–10080Maximum cooking time in minutes, inclusive (1–10080). Uses cook time only; unknown cook time is excluded. Combine with maxTotalMinutes or time to bound the full process as well.
maxCaloriesinteger1–10000Maximum kilocalories per serving, inclusive (1–10000). Reads the nutrition the recipe was published with; a recipe without per-serving calories is excluded rather than guessed at.
minProteininteger1–1000Minimum grams of protein per serving, inclusive (1–1000). Reads the nutrition the recipe was published with; a recipe without per-serving protein is excluded rather than guessed at.
maxSodiuminteger1–100000Maximum milligrams of sodium per serving, inclusive (1–100000). Sodium published in grams is converted; a recipe without per-serving sodium is excluded.
minFiberinteger1–200Minimum grams of fiber per serving, inclusive (1–200). A recipe without per-serving fiber is excluded.
nutritionstringNutrition presets, comma-separated: high-fiber is at least 5 g of fiber, high-protein at least 20 g of protein, low-calorie at most 400 kcal, and low-sodium at most 140 mg of sodium — all per serving. A preset and an explicit amount for the same nutrient both apply, and the tighter of the two wins. Unknown presets return 400 with the accepted values.
timestringTotal-time preset: under-15 is strictly below 15 minutes, under-30 is strictly below 30 minutes, and weekend is at least 60 minutes. Unknown total time is excluded. Combines with maxTotalMinutes; weekend plus a maximum below 60 returns 400. Unknown presets return 400 with accepted values.
equipmentstringRequire every listed equipment name (1–20 comma-separated names, each at most 80 characters). Case and spaces normalize to slugs; duplicates are ignored. Examples: air fryer, slow cooker, Dutch oven, grill. Additional equipment is allowed. Unknown slugs return no matches; malformed or empty lists return 400. Filtering happens before pagination.
ingredientsstringRequire every ingredient in a comma-separated list (1–20 names or IDs, at most 80 characters each). Case and spaces normalize to slugs. Matches exact canonical IDs or whole canonical names; no substring, plural, or parent-ingredient inference. GET /ingredients provides IDs. Names without IDs can still match. Duplicates are ignored, unknown names yield no matches, and malformed lists return 400. Combines with ingredient and all other filters before pagination.
languagestringOnly return recipes written in this language, as a two-letter ISO 639-1 code.
excludeIngredientsstringExclude any listed ingredient (1–20 comma-separated names or IDs, at most 80 characters each). Case and spaces normalize; matching uses whole canonical names or IDs, including optional ingredients. No substring, synonym, plural or parent-ingredient inference. Unknown names exclude nothing. Use ingredient=chicken-thigh&excludeIngredients=mushroom to combine inclusion and exclusion. Results reflect recorded ingredients, not an allergen guarantee. Empty or malformed lists return 400.
limitintegerdefaults to201–100How many recipes to return.
maxTotalMinutesintegerat least 1Only return recipes whose total time is at most this many minutes. Recipes with no total time are excluded.
offsetintegerdefaults to0at least 0How many recipes to skip. Use it with `limit` to page.
withoutstringLeave out recipes that contain any listed allergen feature (comma-separated ids from /vocabularies). Only recipes whose `allergens` value is `false` for every listed feature are returned, and `pagination.total` counts only those. Informational, not medical advice. An unknown feature returns 400.
Response
paginationobject
paginationobjectlimitintegerHow many recipes this response holds. Capped at 100.
offsetintegerHow many were skipped.
totalintegerHow many match the filter in total.
Offset pagination.
recipes[]object[]
recipes[]object[]allergensobjectoptional
allergensobjectoptional<allergen>booleanOne key per allergen identifier from GET /vocabularies, such as "milk" or "gluten-cereals": true when the recipe contains it.
disclaimerstringThe required informational-use warning.
Whether the recipe contains each EU and US regulated allergen: one true or false for each of the 16 allergen identifiers, keyed by identifier, beside the disclaimer. Informational only; verify product labels before serving someone with an allergy.
authorobjectoptionalWho wrote the recipe, and a link to them when the site published one.
categoriesstring[]Normalized category slugs from an open set, such as "pasta" or "soup". The value the `category` filter takes.
coursesstring[]Course slugs from the closed list. The value the `course` filter takes.
createdAtstringWhen the recipe first entered the database. ISO 8601.
cuisinesstring[]Cuisine slugs from the closed list. The value the `cuisine` filter takes.
descriptionstringoptionalThe recipe’s own summary.
dietaryobjectoptionalDietary flags, declared by the site or inferred from the required ingredients. A declared flag wins; a missing flag is unknown, and false is a known no. An inferred `glutenFree` or `dairyFree` can disagree with `allergens` by design: the diet reads the required ingredients, so a dish is gluten-free once the optional pita is left out, while the allergen block counts every line and stays cautious.
equipmentstring[]optionalEquipment the recipe calls for, as words rather than slugs.
groupsstring[]The section headers of the recipe: the distinct `group` values of the ingredients and then the steps, in the order they first appear. Empty when the recipe has no sections.
idstringThe recipe id.
ingredients[]object[]
ingredients[]object[]displaystringThe line to render. Equal to the source line until the structure and the source part company — a converted unit, an amount enrichment filled in.
groupstringoptionalThe section header the line sat under, such as "For the sauce".
ingredientIdstringoptionalThe canonical ingredient id, such as "chicken-thigh". Absent until the recipe has been enriched, or when the name could not be resolved. This is the value the `ingredient` filter of GET /recipes takes.
localNamestringoptionalThe ingredient as this recipe’s own language names it, when that differs from `name`.
localPreparationstringoptionalHow the ingredient is prepared, in the recipe’s own words, such as "finhackade" where `preparation` says "finely chopped". Absent on an English recipe, where `preparation` already is the reader’s, and on a line that says nothing of the kind. `display` is written with this one.
namestringThe canonical English name.
notestringoptionalAnything the parser understood but could not place, such as "(400 g)". Kept as the source wrote it, in the recipe’s language, and never translated.
optionalbooleanWhether the recipe marks this ingredient as optional.
originalstringThe source line, verbatim. Rewriting a recipe — scaling it, converting its units — leaves this alone.
preparationstringoptionalHow the ingredient is prepared, in English, such as "finely chopped". Read `localPreparation` for the words the recipe itself uses.
quantityobjectoptional
quantityobjectoptionalmaxnumberoptionalThe top of a range.
unitstringoptionalOne of the units listed by GET /vocabularies.
valuenumberThe amount itself.
The amount. A range such as "2-3 tomatoes" is a value of 2 with a max of 3. A value with no unit is a count of pieces.
sizestringoptionalA size qualifier, such as "large".
One ingredient line, parsed. `original` is the line the site published; `display` is the same line written back from these fields, in the recipe’s own language.
instructions[]object[]
instructions[]object[]durationobjectoptional
durationobjectoptionalsecondsintegerSeconds.
A length of time. Always seconds, never a formatted string.
equipmentstring[]optionalEquipment slugs the step calls for.
groupstringoptionalThe section the step sat under or, where the page named no section, the heading the step carried of its own.
ingredientsstring[]optionalCanonical ingredient ids the step uses.
stepintegerThe step number. Steps always run 1, 2, 3… in order.
techniquesstring[]optionalTechnique slugs the step uses, such as "saute".
temperatureobjectoptionalAn oven or pan temperature, with its unit as "C" or "F".
textstringThe step text.
One step. The text is authoritative; everything else on a step comes from enrichment and may be absent.
languagestringThe language the recipe is written in, as a two-letter ISO 639-1 code.
media[]object[]
media[]object[]altstringoptionalAlternative text.
captionstringoptionalA caption published with the item.
idstringUnique within the recipe.
rolestringWhere the item sits in the recipe.
stepintegeroptionalFor role "step", the step number the item illustrates.
typestring"image" or "video".
urlstringThe file itself.
variantsobject[]optionalThe same photo in other sizes or crops. Images only.
Images and videos. An image carries a `role` of hero, gallery, step or thumbnail; a video carries gallery or step. A recipe has at most one hero image.
notesstring[]optionalWhat the writer added beside the method: storage, make-ahead, substitutions. One entry per note, in the order the page wrote them.
nutritionobjectoptional
nutritionobjectoptionalbasisobjectWhat the numbers are per. `type` is "serving", "recipe" or "100g"; `servings` is the serving count the site worked the numbers out on, which is not always the serving count the recipe is written for; `description` is the serving size the site named, such as "1 cup".
caloriesobjectoptionalEnergy, with its unit.
carbohydratesobjectoptionalCarbohydrates.
fatobjectoptionalFat.
fiberobjectoptionalFibre.
micronutrientsobjectoptionalAnything else the source declared, keyed by nutrient slug.
proteinobjectoptionalProtein.
saturatedFatobjectoptionalSaturated fat.
sodiumobjectoptionalSodium.
sourcestring"provided": the site published these numbers itself, in the structured data the recipe was read from, so they are as current as the last read of that page.
sugarobjectoptionalSugar.
Nutrition as the site published it. `basis` says whether the numbers are per serving, per recipe or per 100 g. The API does not compute nutrition from the ingredients, so a recipe whose site publishes none has no nutrition object at all.
ratingobjectoptionalThe rating the source published, with how many people rated it.
servingsobjectoptionalHow much the recipe makes. "Serves 4-6" is a quantity of 4 with a max of 6; "Makes 24 cookies" is a quantity of 24 with a unit of "cookie".
tagsstring[]The source site’s own keywords, cleaned but not mapped to any vocabulary.
techniquesstring[]optionalTechniques the recipe uses, as words rather than slugs.
textobject
textobjectingredientsstring[]One line per ingredient.
instructionsstring[]One line per step.
The recipe as plain lines: every ingredient’s `display` and every step’s `text`, in order. A convenience for rendering; nothing here is missing from the structured fields.
timesobject
timesobjectcookobjectoptional
cookobjectoptionalsecondsintegerSeconds.
A length of time. Always seconds, never a formatted string.
inactiveobjectoptional
inactiveobjectoptionalsecondsintegerSeconds.
A length of time. Always seconds, never a formatted string.
prepobjectoptional
prepobjectoptionalsecondsintegerSeconds.
A length of time. Always seconds, never a formatted string.
totalobjectoptional
totalobjectoptionalsecondsintegerSeconds.
A length of time. Always seconds, never a formatted string.
Preparation, cooking, inactive and total time, each in seconds.
titlestringThe recipe title.
updatedAtstringWhen the recipe was last written. ISO 8601.
urlstringThe page the recipe was read from. One source URL is one recipe.
The matching recipes.
Example
{
"pagination": {
"limit": 2,
"offset": 0,
"total": 1930
},
"recipes": [
{
"allergens": {
"celery": false,
"crustaceans": false,
"eggs": false,
"fish": false,
"gluten-cereals": false,
"lupin": false,
"milk": true,
"molluscs": false,
"mustard": false,
"nuts-eu": false,
"peanuts": true,
"sesame": false,
"soy": false,
"sulphites": false,
"tree-nuts-us": false,
"wheat": false,
"disclaimer": "Informational only; not medical advice. Verify ingredients and product labels before serving someone with an allergy."
},
"id": "6a9820e58f8122ec891b68a3",
"author": {
"name": "Lindsay Ostrom",
"url": "https://pinchofyum.com/about"
},
"description": "This peanut butter dark chocolate hummus is a sweet alternative to traditional hummus. Perfect served on graham crackers as an afternoon snack!",
"instructions": [
{
"group": "Hummus",
"step": 1,
"text": "Blend everything through milk in a food processor."
},
{
"group": "Hummus",
"step": 2,
"text": "Add flour by the spoonful and blend until desired consistency is reached."
},
{
"step": 3,
"text": "Stir in dark chocolate."
},
{
"step": 4,
"text": "Chill before serving."
}
],
"language": "en",
"media": [
{
"id": "hero",
"role": "hero",
"type": "image",
"url": "https://pinchofyum.com/tachyon/2011/05/Peanut-Butter-Dark-Chocolate-Hummus.jpeg?fit=225%2C225",
"variants": [
{
"url": "https://pinchofyum.com/tachyon/2011/05/Peanut-Butter-Dark-Chocolate-Hummus.jpeg?fit=195%2C195"
},
{
"url": "https://pinchofyum.com/tachyon/2011/05/Peanut-Butter-Dark-Chocolate-Hummus.jpeg?fit=180%2C180"
},
{
"url": "https://pinchofyum.com/tachyon/2011/05/Peanut-Butter-Dark-Chocolate-Hummus.jpeg"
}
]
}
],
"notes": [
"Keeps in an airtight container in the fridge for up to five days.",
"Swap the peanut butter for almond butter to make it peanut free."
],
"nutrition": {
"basis": {
"description": "¼ cup",
"servings": 8,
"type": "serving"
},
"calories": {
"unit": "kcal",
"value": 201
},
"carbohydrates": {
"unit": "g",
"value": 29.4
},
"cholesterol": {
"unit": "mg",
"value": 0.8
},
"fat": {
"unit": "g",
"value": 7.4
},
"fiber": {
"unit": "g",
"value": 3.3
},
"micronutrients": {
"trans-fat": {
"unit": "g",
"value": 0
}
},
"protein": {
"unit": "g",
"value": 5.6
},
"saturatedFat": {
"unit": "g",
"value": 2.5
},
"sodium": {
"unit": "mg",
"value": 76
},
"source": "provided",
"sugar": {
"unit": "g",
"value": 16.9
}
},
"rating": {
"count": 1,
"reviewCount": 1,
"value": 5
},
"servings": {
"max": 8,
"original": "6-8",
"quantity": 6
},
"times": {
"cook": {
"seconds": 600
},
"prep": {
"seconds": 300
},
"total": {
"seconds": 900
}
},
"title": "Peanut Butter Dark Chocolate Hummus",
"categories": [],
"courses": [
"dessert"
],
"createdAt": "2026-09-02T13:13:09.089Z",
"cuisines": [
"american"
],
"groups": [
"Hummus"
],
"ingredients": [
{
"display": "1 can white beans or chickpeas, rinsed",
"name": "white beans or chickpeas",
"optional": false,
"original": "1 can white beans or chickpeas, rinsed",
"preparation": "rinsed",
"quantity": {
"unit": "can",
"value": 1
}
},
{
"display": "¼ cup peanut butter",
"name": "peanut butter",
"optional": false,
"original": "¼ cup peanut butter",
"quantity": {
"unit": "cup",
"value": 0.25
}
},
{
"display": "2 tbsp caramel sauce",
"name": "caramel sauce",
"optional": false,
"original": "2 tbsp caramel sauce",
"quantity": {
"unit": "tbsp",
"value": 2
}
},
{
"display": "2 tbsp maple syrup",
"name": "maple syrup",
"optional": false,
"original": "2 tbsp maple syrup",
"quantity": {
"unit": "tbsp",
"value": 2
}
},
{
"display": "¼ cup brown sugar",
"name": "brown sugar",
"optional": false,
"original": "¼ cup brown sugar",
"quantity": {
"unit": "cup",
"value": 0.25
}
},
{
"display": "pinch of cinnamon",
"name": "pinch of cinnamon",
"optional": false,
"original": "pinch of cinnamon"
},
{
"display": "¼ cup milk",
"name": "milk",
"optional": false,
"original": "¼ cup milk",
"quantity": {
"unit": "cup",
"value": 0.25
}
},
{
"display": "¼ cup flour",
"name": "flour",
"optional": false,
"original": "¼ cup flour",
"quantity": {
"unit": "cup",
"value": 0.25
}
},
{
"display": "chopped dark chocolate",
"name": "chopped dark chocolate",
"optional": false,
"original": "chopped dark chocolate"
}
],
"tags": [
"chocolate hummus",
"peanut butter hummus",
"peanut butter chocolate",
"hummus recipe",
"dessert hummus"
],
"text": {
"ingredients": [
"1 can white beans or chickpeas, rinsed",
"¼ cup peanut butter",
"2 tbsp caramel sauce",
"2 tbsp maple syrup",
"¼ cup brown sugar",
"pinch of cinnamon",
"¼ cup milk",
"¼ cup flour",
"chopped dark chocolate"
],
"instructions": [
"Blend everything through milk in a food processor.",
"Add flour by the spoonful and blend until desired consistency is reached.",
"Stir in dark chocolate.",
"Chill before serving."
]
},
"updatedAt": "2026-09-06T01:11:59.223Z",
"url": "https://pinchofyum.com/pb-dark-chocolate-hummus"
},
{
"id": "6a9820e58f8122ec891b68a4",
"description": "Slow-roasted cherry tomatoes are intensely sweet and tangy. Add them to salads, pastas, pizza and more.",
"instructions": [
{
"step": 1,
"text": "Preheat the oven to 275°F (135°C) and set an oven rack in the middle position. Line a baking sheet with wide heavy-duty aluminum foil."
},
{
"step": 2,
"text": "Directly on the lined baking sheet, using a rubber spatula, toss the tomatoes with the olive oil, vinegar, sugar, salt, pepper, and garlic. Roast for 2 hours, until the tomatoes are soft and beginning to burst. Serve hot or at room temperature."
}
],
"language": "en",
"media": [
{
"id": "hero",
"role": "hero",
"type": "image",
"url": "https://www.onceuponachef.com/images/2022/07/slow-roasted-cherry-tomatoes.jpg",
"variants": [
{
"url": "https://www.onceuponachef.com/images/2022/07/slow-roasted-cherry-tomatoes-500x500.jpg"
},
{
"url": "https://www.onceuponachef.com/images/2022/07/slow-roasted-cherry-tomatoes-500x375.jpg"
},
{
"url": "https://www.onceuponachef.com/images/2022/07/slow-roasted-cherry-tomatoes-480x270.jpg"
}
]
}
],
"nutrition": {
"basis": {
"type": "serving"
},
"calories": {
"unit": "kcal",
"value": 117
},
"carbohydrates": {
"unit": "g",
"value": 8
},
"fat": {
"unit": "g",
"value": 9
},
"fiber": {
"unit": "g",
"value": 2
},
"protein": {
"unit": "g",
"value": 1
},
"saturatedFat": {
"unit": "g",
"value": 1
},
"sodium": {
"unit": "mg",
"value": 388
},
"source": "provided",
"sugar": {
"unit": "g",
"value": 6
}
},
"rating": {
"count": 25,
"reviewCount": 8,
"value": 4.8
},
"servings": {
"original": "6",
"quantity": 6
},
"times": {
"cook": {
"seconds": 7200
},
"prep": {
"seconds": 600
},
"total": {
"seconds": 7800
}
},
"title": "Roasted Cherry Tomatoes",
"categories": [
"vegetables-and-sides"
],
"courses": [
"appetizer",
"side-dish"
],
"createdAt": "2026-09-02T13:13:09.118Z",
"cuisines": [
"italian"
],
"groups": [],
"ingredients": [
{
"display": "2 lb cherry tomatoes (3 pints)",
"name": "cherry tomatoes",
"note": "3 pints",
"optional": false,
"original": "2 lb cherry tomatoes (3 pints)",
"quantity": {
"unit": "lb",
"value": 2
}
},
{
"display": "¼ cup extra-virgin olive oil",
"name": "extra-virgin olive oil",
"optional": false,
"original": "¼ cup extra-virgin olive oil",
"quantity": {
"unit": "cup",
"value": 0.25
}
},
{
"display": "1½ tbsp balsamic vinegar",
"name": "balsamic vinegar",
"optional": false,
"original": "1½ tbsp balsamic vinegar",
"quantity": {
"unit": "tbsp",
"value": 1.5
}
},
{
"display": "2 tsp sugar",
"name": "sugar",
"optional": false,
"original": "2 tsp sugar",
"quantity": {
"unit": "tsp",
"value": 2
}
},
{
"display": "1 tsp salt",
"name": "salt",
"optional": false,
"original": "1 tsp salt",
"quantity": {
"unit": "tsp",
"value": 1
}
},
{
"display": "½ tsp freshly ground black pepper",
"name": "freshly ground black pepper",
"optional": false,
"original": "½ tsp freshly ground black pepper",
"quantity": {
"unit": "tsp",
"value": 0.5
}
},
{
"display": "2 clove garlic (minced)",
"name": "garlic",
"note": "minced",
"optional": false,
"original": "2 clove garlic (minced)",
"quantity": {
"unit": "clove",
"value": 2
}
}
],
"tags": [
"roasted cherry tomatoes"
],
"text": {
"ingredients": [
"2 lb cherry tomatoes (3 pints)",
"¼ cup extra-virgin olive oil",
"1½ tbsp balsamic vinegar",
"2 tsp sugar",
"1 tsp salt",
"½ tsp freshly ground black pepper",
"2 clove garlic (minced)"
],
"instructions": [
"Preheat the oven to 275°F (135°C) and set an oven rack in the middle position. Line a baking sheet with wide heavy-duty aluminum foil.",
"Directly on the lined baking sheet, using a rubber spatula, toss the tomatoes with the olive oil, vinegar, sugar, salt, pepper, and garlic. Roast for 2 hours, until the tomatoes are soft and beginning to burst. Serve hot or at room temperature."
]
},
"updatedAt": "2026-09-06T01:11:59.224Z",
"url": "https://www.onceuponachef.com/recipes/slow-roasted-cherry-tomatoes.html"
}
]
}Errors
- 400
Unknown cuisine "italien". The allowed values are listed by GET /vocabularies.
A parameter was not a value the API accepts. The message names the parameter, the value it was given and where the allowed values are listed.
- 400
The "without" parameter must be a comma-separated list of allergen features from GET /vocabularies, such as "milk,peanuts"; got "dairy".
A parameter was not a value the API accepts. The message names the parameter, the value it was given and where the allowed values are listed.
- 401
An API key is required. Pass it as an Authorization: Bearer header.
No key was sent. Every endpoint except the root, /health, /docs and /openapi.json requires one.
- 401
Invalid API key.
The key does not exist. Check for a truncated copy, or create a new one on your dashboard.
- 401
This API key has been disabled.
The key was revoked. Create a new one on your dashboard.
- 401
This API key has expired.
The key was created with an expiry that has passed. Create a new one.
- 429
Daily allowance of 50 requests used. It resets at midnight UTC. Paid plans include more; see https://www.tinyplates.dev/pricing.
The account has used its 50 requests for the day. The allowance is per account, so another key will not help. It resets at midnight UTC.
- 429
Weekly allowance of 300 requests used. It covers the last 7 days. Paid plans include more; see https://www.tinyplates.dev/pricing.
The account has used its 300 requests over the last 7 days, today included. The allowance is per account, so another key will not help. Room comes back as older days drop out of the window.
- 429
Daily limit of 5,000 requests on the Personal plan reached. It resets at midnight UTC. Contact us for a higher limit.
The account has used its plan's limit for the day. The message names the number and the plan, which differ between accounts. The limit is per account, so another key will not help. It resets at midnight UTC.
- 429
Weekly limit of 30,000 requests on the Business plan reached. It covers the last 7 days. Contact us for a higher limit.
The account has used the weekly limit set on it over the last 7 days, today included. The message names the number and the plan. Only accounts with a weekly limit can see this. Room comes back as older days drop out of the window.
- 403
Listing recipes requires a business plan. Use /search, /popular or /recipes/:id instead.
The key is valid, but listing recipes is only available on a business plan, which this account does not have. Look recipes up with /search, /popular or /recipes/:id.
- 500
Something went wrong. Please try again.
The API could not answer. The request was not your fault; retry it, and report it if it keeps happening.