Recipes

A recipe is an operation that makes several calls to your API in one step. It is a short JavaScript script with its own input schema, and it lives in the Recipes tab of the API. Once you accept a recipe, agents call it by key like any other operation.

How it works

A recipe's code is the body of an async function. It receives input, calls the API's operations through sdk, and returns the result.

const company = await sdk.crm.companiesCreate({ name: input.companyName })
const contact = await sdk.crm.contactsCreate({
  first_name: input.firstName,
  last_name: input.lastName,
  company_id: company.id,
})
return { companyId: company.id, contactId: contact.id }

The gateway runs the script when an agent calls the recipe. Each sdk call inside it goes through the same checks as a direct call to that operation.

The Recipes tab with four recipes the analysis proposed, each with Accept and Reject.The Recipes tab with four recipes the analysis proposed, each with Accept and Reject.

What the code can use

Name What it is
input The recipe's input.
sdk.<namespace>.<operation>(input) One operation of this API. The name is the operation key in camel case: companies.create is companiesCreate, deals.get-by-id is dealsGetById. It returns a promise of the operation's response.
sdk.env.<KEY> A variable of the gateway environment the recipe runs under, as a string. A key that is not defined fails the run. See Set gateway variables.
sdk.$http.request({ method, url, headers, body }) A raw HTTP request, allowed only to a URL that a previous sdk call returned. It resolves to { status, headers, body }.

A recipe calls operations of its own API only. fetch, require, import and process are not available. The editor completes sdk. and input. from the API's schemas and reports a call that matches no operation.

Where recipes come from

Source How
The analysis It proposes recipes when the code shows calls that belong together.
AI-Assisted You describe what the recipe does and Faustine drafts it. See Write your first recipe.
Import from client code Faustine reads an application that calls the API and proposes the sequences it finds. See Import recipes from client code.
Full-Dev Mode You write it in the Advanced editor. See The AI editor.

The last three are the options of New recipe in the Recipes tab.

Status

Status Meaning
Proposed A draft waiting for your decision. It is not an operation.
Accepted A composite operation of the API's draft. It is served after you publish the next version.
Rejected Kept in the list, without its saved versions, and not offered as an operation. You can accept it later.

To decide on a proposal, see Accept or reject a proposed recipe.

An accepted recipe is not exposed automatically. Each gateway chooses whether it serves the operation. See Choose which operations are exposed.

Kind and confirmation

A recipe has no kind or confirmation setting of its own. It is a write if any operation it calls is a write, and it requires confirmation if any of them does. To change either, change the operations it calls.

The recipe editor

Selecting a recipe opens its editor. It has three files:

File Content
Code The summary agents read, an optional description, and the script.
Input schema A JSON Schema for input. Agents see it as the operation's parameters.
Output schema What the recipe returns. Leave it empty if unknown.

And three side panels:

Panel Use
Faustine AI Ask for a change to the code in conversation.
Test Run the recipe against a connection and see the result, the console output and each step's call.
History Every saved version of the recipe. You can open an earlier version and restore it. Rejecting a recipe deletes its history.

Validate checks the code without running it. Save runs the same check first and does not store code that fails it.

What to know before you edit an accepted recipe

Consideration Description
Saving changes the draft Save on an accepted recipe stores it in the API's draft. Clients get the change when you publish the API.
Deleting takes effect on publish Deleting an accepted recipe removes its operation from the draft. Gateways keep serving it until you publish the next version.
Tests are real calls The Test panel calls your API through the connection you select.

Next steps

Last updated November 13, 2026