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 Cristopher

What it does

EndpointPriceWhat you get
POST /v1/scale$0.01A 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.01Trim and cook-loss ranges for an ingredient, and cost per portion from the price you paid.
POST /v1/diagnose$0.02The likely cause of a cooking fault, with the chef's fix.
POST /v1/substitute$0.01What 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.01How 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/samplefreeThe focaccia scaling example, answered live.
GET /v1/coveragefreeLists 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:

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