Skip to content

The Recipes API manages named selector templates — called recipes — that bundle a selector template with an allow-list of overridable fields. Use these endpoints to list, create, fetch, update, delete, search, and execute saved recipes without re-sending the full selector on every run.

GET /api/v1/run/recipes

Returns all saved recipes that can be reused as named selector templates.

This endpoint takes no parameters.

Terminal window
curl -sS -X GET 'http://127.0.0.1:7682/api/v1/run/recipes'

GET /api/v1/run/recipes/{name}

Retrieves a single saved recipe by name.

NameInTypeRequiredDescription
namepathstringYesRecipe name
Terminal window
curl -sS -X GET 'http://127.0.0.1:7682/api/v1/run/recipes/firefox-stable'

POST /api/v1/run/recipes

Creates a new named selector template. The allowed_overrides array constrains which fields may be supplied at run time.

A RecipeConfig object describing the recipe.

FieldTypeRequiredDescription
namestringYesRecipe name (unique)
descriptionstringNoHuman-readable description
selector_templateobjectNoPartial selector template the recipe resolves against
allowed_overridesarray of stringNoFields the caller may override at run time. Default: []
{
"name": "firefox-stable",
"description": "Stable Firefox via nixpkgs",
"selector_template": {
"app": "firefox",
"os": "linux",
"kind": "gui",
"source": ["nix"],
"arch": "amd64"
},
"allowed_overrides": ["version", "channel"]
}
Terminal window
curl -sS -X POST 'http://127.0.0.1:7682/api/v1/run/recipes' \
-H 'content-type: application/json' \
-d '{
"name": "firefox-stable",
"description": "Stable Firefox via nixpkgs",
"selector_template": {
"app": "firefox",
"os": "linux",
"kind": "gui",
"source": ["nix"],
"arch": "amd64"
},
"allowed_overrides": ["version", "channel"]
}'

POST /api/v1/run/recipes/{name}/run

Resolves a saved recipe after applying allowed overrides, optionally selects a candidate, and returns a RunResponse that may include a shell command, terminal delegation result, or generated curl.

NameInTypeRequiredDescription
namepathstringYesRecipe name

A RecipeExecutionRequest containing optional overrides to apply on top of the saved selector template.

FieldTypeRequiredDescription
overridesobjectNoPartial selector template overrides permitted by the recipe’s allowed_overrides
{
"overrides": {
"version": "128.0.3"
}
}
Terminal window
curl -sS -X POST 'http://127.0.0.1:7682/api/v1/run/recipes/firefox-stable/run' \
-H 'content-type: application/json' \
-d '{
"overrides": {
"version": "128.0.3"
}
}'

POST /api/v1/run/recipes/{name}/search

Resolves a saved recipe to a candidate set after applying allowed overrides. Returns a set_id and ranked candidates for race-free selection.

NameInTypeRequiredDescription
namepathstringYesRecipe name

A RecipeExecutionRequest containing optional overrides permitted by the recipe.

FieldTypeRequiredDescription
overridesobjectNoPartial selector template overrides permitted by the recipe’s allowed_overrides
{
"overrides": {
"channel": "stable"
}
}
Terminal window
curl -sS -X POST 'http://127.0.0.1:7682/api/v1/run/recipes/firefox-stable/search' \
-H 'content-type: application/json' \
-d '{
"overrides": {
"channel": "stable"
}
}'

PATCH /api/v1/run/recipes/{name}

Partially updates an existing recipe.

NameInTypeRequiredDescription
namepathstringYesRecipe name

A partial recipe configuration. Only the fields you supply are modified; all others are left unchanged.

{
"description": "Updated description",
"allowed_overrides": ["version", "channel", "variant"]
}
Terminal window
curl -sS -X PATCH 'http://127.0.0.1:7682/api/v1/run/recipes/firefox-stable' \
-H 'content-type: application/json' \
-d '{
"description": "Updated description",
"allowed_overrides": ["version", "channel", "variant"]
}'

DELETE /api/v1/run/recipes/{name}

Removes a saved recipe by name.

NameInTypeRequiredDescription
namepathstringYesRecipe name
Terminal window
curl -sS -X DELETE 'http://127.0.0.1:7682/api/v1/run/recipes/firefox-stable'