Kitchen Pass Chef API
Why is my bread dense? How much brisket for 120? What can I use instead of buttermilk? A head chef's verified answers, for AI agents, paid per answer.
Chef-verified by CristopherWhat it does
| Endpoint | Price | What you get |
|---|---|---|
POST /v1/scale | $0.01 | A recipe scaled between portion counts: seasoning that starts lower when scaling up, fixed ratios and technique tips, each line with the chef's reason. |
POST /v1/yield-cost | $0.01 | Trim and cook-loss ranges for an ingredient, and cost per portion from the price you paid. |
POST /v1/diagnose | $0.02 | The likely cause of a cooking fault, with the chef's fix. |
POST /v1/substitute | $0.01 | What to use instead of an ingredient, with the chef's verdict on each swap (yes, depends, or no). |
POST /v1/how-much-to-buy | $0.01 | How much of an ingredient to buy for a number of portions, rounded up, with cost per portion and food-cost % from your prices. |
GET /v1/sample | free | The focaccia scaling example, answered live. |
GET /v1/coverage | free | Lists what's answered: the dishes and symptoms, swaps, ingredients and scaling classes, by name. |
Prices are in USDC on Base, paid per request with x402. Only a successful (200) answer is charged. Unreadable input (400), unknown items (404), oversized requests (413) and food-safety refusals (422) are free.
What "Chef-verified" means
Every answer is built from yes/no questions that head chef Cristopher has answered and checked himself, and the live API uses only the ones he has verified. The label "Chef-verified by Cristopher" appears only when every source behind an answer is one he has verified.
Where none of his answers decides a line, it scales straight as an engine default and the whole answer is labelled "not chef-verified". That happens to the salt in a recipe given in cups, or with a tin or block of unknown size (the engine can't tell a cake from a custard without weights), and in kinds of recipe he hasn't answered for yet, such as batters and scones. Give the recipe by weight to get his rule.
Each response lists the questions it used (provenance.rowsUsed) and the data version, so an agent can tell exactly where an answer came from. Prices are never stored: you send your own.
Try it free
curl https://kitchen-pass.netlify.app/v1/sample
Call it
1. Ask without paying. You get a 402 with the terms in the PAYMENT-REQUIRED header, and no answer:
curl -i -X POST https://kitchen-pass.netlify.app/v1/diagnose \
-H 'content-type: application/json' \
-d '{"dish":"hollandaise","symptom":"split"}'
2. Pay with any x402 v2 client. With @x402/fetch:
import { x402Client } from "@x402/core/client";
import { registerExactEvmScheme } from "@x402/evm/exact/client";
import { wrapFetchWithPayment } from "@x402/fetch";
import { privateKeyToAccount } from "viem/accounts";
const client = new x402Client();
registerExactEvmScheme(client, { signer: privateKeyToAccount(process.env.PAYER_KEY as `0x${string}`) });
const payFetch = wrapFetchWithPayment(fetch, client);
const res = await payFetch("https://kitchen-pass.netlify.app/v1/diagnose", {
method: "POST",
headers: { "content-type": "application/json" },
body: JSON.stringify({ dish: "hollandaise", symptom: "split" }),
});
console.log(res.status, await res.json());
The client signs a USDC transfer authorisation; the money moves only once the answer is ready. The x402 client refuses any single payment over $1 by default. Payment problems (a bad signature, the wrong amount, a reused payment) return 402 with a reason, never 400, and aren't charged. One payment buys one answer. Requests must be in English.
Food safety: not answered
Kitchen Pass does not answer questions about:
- allergens
- preserving and shelf life
- curing
- fermentation safety
- safe cooking, holding and reheating temperatures, and whether it's cooked through
- food for pregnant women, babies, the elderly or anyone with weak immunity
- naturally toxic or contaminated foods (raw kidney beans, green potatoes, foraged mushrooms, mercury)
- spoilage: meat that's green, sticky or grey inside, fizzy food, domed tins
These are never answered. When the guard recognises the wording they get a free 422 pointing to Food Standards Australia New Zealand, your local food-safety regulator or a qualified food-safety professional; the guard recognises words, not meaning, so wording it doesn't know gets a free 404 unless it matches a listed question exactly. Kitchen Pass does not guess.
If a payment can't be confirmed
Rarely, the payment processor can't confirm a payment in time. Kitchen Pass then checks the blockchain itself for the exact transfer to its address: if the payment went through, you get your answer. If it still can't tell, the answer is withheld and you get a 502 with a reference. If that payment does land, it is refunded by hand to the paying address.
For agents and directories
- OpenAPI: /openapi.json · /openapi.yaml
- Each paid route's
402carries an x402 Bazaar discovery declaration. - /.well-known/x402 (community format, for compatibility)