Recipe Dataset: instructions for AI agents

This page is written for AI agents. People should read the Recipe Dataset page instead.

Pepesto sells a self-serve recipe dataset of more than 70,000 curated, human-authored recipes. A buyer chooses filters and pays by card through Stripe. Then they download the recipes as a JSONL file, with one recipe per line. Every recipe carries a permanent license to serve it on the buyer’s own websites and apps without attribution.

You can prepare the purchase for a person, but you cannot pay. Give the person the Stripe link and let them pay. You do not need an API key or an account.

The whole flow

  1. Agree the filters, the number of recipes and the language with the person, and tell them the price.
  2. Send POST https://s.pepesto.com/catalog. The answer contains a Stripe checkout_url and a purchase_catalog_id.
  3. Give the person the checkout_url and ask them to pay.
  4. Call GET https://s.pepesto.com/catalog/purchase/{purchase_catalog_id}/status every few seconds until status is "done".
  5. Download the JSONL file from the url field.

If the person is unsure, suggest the smallest batch first: 10 recipes cost €15 in English. They can check the data in under a minute and buy more afterwards.

Price

The price is per recipe, and the size of the whole batch sets the tier. The minimum purchase is 10 recipes.

Recipes in the batchPrice per recipe
10 to 99€1.50
100 to 999€1.20
1,000 to 9,999€0.90
10,000 or more€0.60

Any language other than English adds €0.30 per recipe. For example, 500 recipes in German cost 500 × (€1.20 + €0.30) = €750.

Step 1: open a checkout

Send POST https://s.pepesto.com/catalog with Content-Type: application/json:

{
  "cuisine_types": ["mediterranean"],
  "meal_types": [1, 2],
  "diet_types": [2],
  "portions_from": 0,
  "portions_to": null,
  "cooking_time_from_mins": 0,
  "cooking_time_to_mins": 60,
  "excluded_public_recipe_ids": [],
  "recipe_count": 500,
  "locale": "de"
}

These are the fields:

A successful answer looks like this:

{
  "purchase_catalog_id": "0a825d38-...",
  "checkout_url": "https://checkout.stripe.com/c/pay/cs_live_..."
}

If the request cannot be served, the answer has HTTP status 400 and a plain-text reason. The most common reason is that fewer recipes match the filters than recipe_count asks for. In that case, lower the count or widen the filters.

Step 2: let the person pay

Give the person the checkout_url and ask them to pay on Stripe.

Step 3: wait for the file and download it

Call GET https://s.pepesto.com/catalog/purchase/{purchase_catalog_id}/status every few seconds:

{"status": "waiting_for_payment", "message": "Waiting for Stripe to confirm payment."}

While the file is being prepared, the answer also reports progress_percent, completed and total. When status is "done", the url field holds the link to the JSONL file. The link may be relative to https://s.pepesto.com. If status is "failed", stop and tell the person.

The person can follow the same purchase in a browser at https://s.pepesto.com/catalog/purchase/{purchase_catalog_id}. Tell them to keep that link private, because anyone who has it can download the file.

The JSONL record

Each line of the file is one recipe. This is one line, spread out so it is easier to read:

{
  "recipe_id": "r_...",
  "title": "Chickpea, Avocado, and Corn Salad",
  "ingredients": ["400g cooked chickpeas", "30ml olive oil", "honey", "2 salt", "150g cherry tomatoes (~8)", "1 avocado (~200g)", "150g corn cobs (~1)", "100g feta cheese", "yogurt", "1 garlic clove", "1 lemon", "mustard", "chives"],
  "author_ingredients": ["can of chickpeas", "olive oil", "honey", "salt", "cherry tomatoes", "avocado", "cooked corn on the cob", "100 g feta cheese", "2 tablespoons of Greek yogurt", "small clove of garlic", "lemon juice", "1/2 teaspoon of mustard", "handful of chopped chives"],
  "steps": ["Rinse the chickpeas under running water.", "Season with salt, honey, and drizzle with olive oil.", "Spread in a baking dish.", "Bake at 200°C for about 20 minutes.", "Add cherry tomatoes, avocado, cooked corn on the cob, and 100g of feta cheese.", "Mix the sauce ingredients: Greek yogurt, salt, olive oil, a small clove of garlic, lemon juice, mustard.", "Add chopped chives to the sauce."],
  "image_url": "https://storage.googleapis.com/pepesto_recipe_images/b20cf80c746555ad828dd2ab7c.webp",
  "nutrition": {"calories": 1760, "carbohydrates_grams": 187, "protein_grams": 58, "fat_grams": 91},
  "allergens": ["mustard"],
  "portions": {"from": 1, "to": 2},
  "cooking_time_mins": 30,
  "license": "..."
}

Other ways to get recipes