---
title: "Filter recipes by classification, ingredients, cooking time, total-time presets and per-serving nutrition."
method: GET
path: "/recipes"
tags: ["recipes"]
---

# Filter recipes by classification, ingredients, cooking time, total-time presets and per-serving nutrition.

`GET /recipes`

## Request

- Base URL: `https://api.tinyplates.dev`
- URL: `https://api.tinyplates.dev/recipes`
- Auth: none required

Requires a business plan. Paginated list of recipes, newest first. Filter by `cuisine`, `course`, `category`, `diet`, `equipment` (all listed equipment), `ingredient` (a canonical ingredient id such as "chicken-thigh"), `ingredients` (all required names or IDs), `language`, `maxCookMinutes`, `maxTotalMinutes`, `time`, `maxCalories`, `maxSodium`, `minFiber`, `minProtein`, `nutrition` (presets: high-fiber, high-protein, low-calorie, low-sodium) and `without` (allergen features a recipe must not contain, such as "milk,peanuts"; informational, not medical advice). The nutrition filters read the per-serving figures a recipe was published with; a recipe without them does not match. Allowed values for the closed vocabularies come from /vocabularies.

## Query parameters

- `category` string
- `course` string
- `cuisine` string
- `diet` string
- `equipment` string
- `excludeIngredients` string
- `ingredient` string
- `ingredients` string
- `language` string
- `limit` string
- `maxCalories` string
- `maxCookMinutes` string
- `maxSodium` string
- `maxTotalMinutes` string
- `minFiber` string
- `minProtein` string
- `nutrition` string
- `offset` string
- `time` string
- `without` string

## Response `200`

Success

- object
  - `pagination` Pagination, required: Offset pagination. `limit` is capped at 100.
    - `limit` number, required
    - `offset` number, required
    - `total` number, required
  - `recipes` Recipe[], required
    - `id` string, required
    - `author` Author
      - `name` string, required: a non empty string
      - `url` string: a string matching the pattern ^https?:\/\/\S+$
    - `description` string: a non empty string
    - `dietary` Dietary: Diet 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.
      - `dairyFree` boolean
      - `glutenFree` boolean
      - `pescatarian` boolean
      - `vegan` boolean
      - `vegetarian` boolean
    - `instructions` RecipeInstruction[], required
      - `duration` Duration
        - `seconds` integer, required: an integer
      - `equipment` Slug[]
      - `group` string: a non empty string
      - `ingredients` string[]
      - `step` integer, required: a positive number
      - `techniques` Slug[]
      - `temperature` Temperature
        - `unit` 'C' | 'F', required
        - `value` number, required
      - `text` string, required: a non empty string
    - `language` string, required: a string matching the pattern ^[a-z]{2}$
    - `media` RecipeMedia[], required
      - union
        - ImageMedia
          - `alt` string: a non empty string
          - `caption` string: a non empty string
          - `id` string, required: a string with no leading or trailing whitespace
          - `license` string: a non empty string
          - `sourceUrl` string: a string matching the pattern ^https?:\/\/\S+$
          - `step` integer: a positive number
          - `height` integer: a positive number
          - `role` 'gallery' | 'hero' | 'step' | 'thumbnail', required
          - `type` 'image', required
          - `url` string, required: a string matching the pattern ^https?:\/\/\S+$
          - `variants` ImageVariant[]
            - `height` integer: a positive number
            - `url` string, required: a string matching the pattern ^https?:\/\/\S+$
            - `width` integer: a positive number
          - `width` integer: a positive number
        - VideoMedia
          - `alt` string: a non empty string
          - `caption` string: a non empty string
          - `id` string, required: a string with no leading or trailing whitespace
          - `license` string: a non empty string
          - `sourceUrl` string: a string matching the pattern ^https?:\/\/\S+$
          - `step` integer: a positive number
          - `duration` Duration
            - `seconds` integer, required: an integer
          - `embedUrl` string: a string matching the pattern ^https?:\/\/\S+$
          - `provider` string: a non empty string
          - `role` 'gallery' | 'step', required
          - `thumbnailUrl` string: a string matching the pattern ^https?:\/\/\S+$
          - `type` 'video', required
          - `url` string, required: a string matching the pattern ^https?:\/\/\S+$
          - `videoId` string: a non empty string
    - `notes` NonEmptyTrimmedString[]
    - `nutrition` Nutrition
      - `basis` object, required
        - `description` string: a non empty string
        - `servings` number: a positive number
        - `type` '100g' | 'recipe' | 'serving', required
      - `calories` NutrientValue
        - `unit` 'IU' | 'g' | 'kcal' | 'mg' | 'µg', required
        - `value` number, required: a non-negative number
      - `carbohydrates` NutrientValue
        - `unit` 'IU' | 'g' | 'kcal' | 'mg' | 'µg', required
        - `value` number, required: a non-negative number
      - `cholesterol` NutrientValue
        - `unit` 'IU' | 'g' | 'kcal' | 'mg' | 'µg', required
        - `value` number, required: a non-negative number
      - `fat` NutrientValue
        - `unit` 'IU' | 'g' | 'kcal' | 'mg' | 'µg', required
        - `value` number, required: a non-negative number
      - `fiber` NutrientValue
        - `unit` 'IU' | 'g' | 'kcal' | 'mg' | 'µg', required
        - `value` number, required: a non-negative number
      - `micronutrients` object
      - `protein` NutrientValue
        - `unit` 'IU' | 'g' | 'kcal' | 'mg' | 'µg', required
        - `value` number, required: a non-negative number
      - `saturatedFat` NutrientValue
        - `unit` 'IU' | 'g' | 'kcal' | 'mg' | 'µg', required
        - `value` number, required: a non-negative number
      - `sodium` NutrientValue
        - `unit` 'IU' | 'g' | 'kcal' | 'mg' | 'µg', required
        - `value` number, required: a non-negative number
      - `source` 'calculated' | 'provided', required
      - `sugar` NutrientValue
        - `unit` 'IU' | 'g' | 'kcal' | 'mg' | 'µg', required
        - `value` number, required: a non-negative number
    - `rating` Rating
      - `best` number: a positive number
      - `count` integer, required: an integer
      - `reviewCount` integer: an integer
      - `value` number, required: a non-negative number
      - `worst` number: a non-negative number
    - `servings` Servings
      - `max` number: a positive number
      - `original` string, required: a non empty string
      - `quantity` number: a positive number
      - `unit` string: a non empty string
    - `times` RecipeTimes, required
      - `cook` Duration
        - `seconds` integer, required: an integer
      - `inactive` Duration
        - `seconds` integer, required: an integer
      - `prep` Duration
        - `seconds` integer, required: an integer
      - `total` Duration
        - `seconds` integer, required: an integer
    - `title` string, required: a non empty string
    - `allergens` RecipeAllergens
      - `celery` boolean, required: Whether the recipe contains this regulated allergen.
      - `crustaceans` boolean, required: Whether the recipe contains this regulated allergen.
      - `eggs` boolean, required: Whether the recipe contains this regulated allergen.
      - `fish` boolean, required: Whether the recipe contains this regulated allergen.
      - `gluten-cereals` boolean, required: Whether the recipe contains this regulated allergen.
      - `lupin` boolean, required: Whether the recipe contains this regulated allergen.
      - `milk` boolean, required: Whether the recipe contains this regulated allergen.
      - `molluscs` boolean, required: Whether the recipe contains this regulated allergen.
      - `mustard` boolean, required: Whether the recipe contains this regulated allergen.
      - `nuts-eu` boolean, required: Whether the recipe contains this regulated allergen.
      - `peanuts` boolean, required: Whether the recipe contains this regulated allergen.
      - `sesame` boolean, required: Whether the recipe contains this regulated allergen.
      - `soy` boolean, required: Whether the recipe contains this regulated allergen.
      - `sulphites` boolean, required: Whether the recipe contains this regulated allergen.
      - `tree-nuts-us` boolean, required: Whether the recipe contains this regulated allergen.
      - `wheat` boolean, required: Whether the recipe contains this regulated allergen.
      - `disclaimer` 'Informational only; not medical advice. Verify ingredients and product labels before serving someone with an allergy.', required
    - `categories` string[], required
    - `courses` string[], required
    - `createdAt` string, required: a string to be decoded into a Date
    - `cuisines` string[], required
    - `equipment` string[]
    - `groups` string[], required: The distinct `group` values of the ingredients and then the steps, in the order they first appear. Empty when the recipe has no sections.
    - `ingredients` RecipeIngredient[], required
      - `display` string, required: a non empty string
      - `group` string: a non empty string
      - `localName` string: a non empty string
      - `localPreparation` string: a non empty string
      - `ingredientId` string: a string matching the pattern ^[a-z0-9]+(-[a-z0-9]+)*$
      - `name` string, required: a non empty string
      - `note` string: a non empty string
      - `optional` boolean, required
      - `original` string, required: a non empty string
      - `preparation` string: a non empty string
      - `quantity` Quantity
        - `max` number: a non-negative number
        - `unit` 'g' | 'kg' | 'lb' | 'oz' | 'cl' | 'cup' | 'dl' | 'fl-oz' | 'gallon' | 'l' | 'ml' | 'pint' | 'quart' | 'tbsp' | 'tsp' | 'bag' | 'bottle' | 'box' | 'bunch' | 'can' | 'clove' | 'cube' | 'dash' | 'drop' | 'ear' | 'handful' | 'head' | 'jar' | 'knob' | 'leaf' | 'package' | 'packet' | 'piece' | 'pinch' | 'portion' | 'pot' | 'scoop' | 'sheet' | 'shot' | 'slice' | 'sprig' | 'stalk' | 'stick' | 'tub' | 'cm' | 'inch'
        - `value` number, required: a non-negative number
      - `size` string: a non empty string
    - `tags` string[], required
    - `techniques` string[]
    - `text` RecipeText, required: The recipe as lines of text: each ingredient's `display` line and each step's `text`, in order. A convenience for rendering; everything here is also in the structured fields.
      - `ingredients` string[], required
      - `instructions` string[], required
    - `updatedAt` string, required: a string to be decoded into a Date
    - `url` string, required

## Other responses

- `400`: The request did not match the expected schema
- `401`: ApiKeyDisabledError
- `403`: BusinessPlanRequiredError
- `429`: DailyAllowanceExceededError
- `500`: InternalError

---

[API](https://skmtc.dev/tinyplates/apis/tiny-plates-api.md) · [All operations](https://skmtc.dev/tinyplates/apis/tiny-plates-api/llms.txt) · [OpenAPI document](https://skmtc.dev/tinyplates/apis/tiny-plates-api/revisions/514440dcbb5d?raw)
