Skip to content

Manage and run application recipes — list, create, get, update, delete, search, and execute. Recipes are named selector templates that can be reused across multiple run or search operations with optional overrides.


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

This endpoint takes no parameters.

Terminal window
curl -X GET 'http://127.0.0.1:7682/api/v1/run/recipes'
[
{
"name": "dev-shell",
"description": "Default development environment",
"selector_template": {
"app": "node",
"os": "linux",
"kind": "cli",
"version": "20"
},
"allowed_overrides": ["version", "channel"]
},
{
"name": "browser",
"description": "Default web browser",
"selector_template": {
"app": "firefox",
"os": "linux",
"kind": "gui"
},
"allowed_overrides": []
}
]

Retrieve a single saved recipe by name.

NameInTypeRequiredDescription
namepathstringYesRecipe name
Terminal window
curl -X GET 'http://127.0.0.1:7682/api/v1/run/recipes/dev-shell'
{
"name": "dev-shell",
"description": "Default development environment",
"selector_template": {
"app": "node",
"os": "linux",
"kind": "cli",
"version": "20"
},
"allowed_overrides": ["version", "channel"]
}
{
"error": "Recipe not found",
"code": 404
}

Create a named selector template that can later be searched or run with optional overrides.

This endpoint takes no parameters.

FieldTypeRequiredDescription
namestringYesRecipe name
descriptionstringNoHuman-readable description
selector_templateobjectNoPartial selector template used to resolve candidates
allowed_overridesarrayNoList of selector template fields that may be overridden at run time (default: [])
{
"name": "dev-shell",
"description": "Default development environment",
"selector_template": {
"app": "node",
"os": "linux",
"kind": "cli",
"version": "20"
},
"allowed_overrides": ["version", "channel"]
}
Terminal window
curl -X POST 'http://127.0.0.1:7682/api/v1/run/recipes' \
-H 'content-type: application/json' \
-d '{
"name": "dev-shell",
"description": "Default development environment",
"selector_template": {
"app": "node",
"os": "linux",
"kind": "cli",
"version": "20"
},
"allowed_overrides": ["version", "channel"]
}'
[
{
"name": "dev-shell",
"description": "Default development environment",
"selector_template": {
"app": "node",
"os": "linux",
"kind": "cli",
"version": "20"
},
"allowed_overrides": ["version", "channel"]
}
]
{
"error": "Invalid recipe configuration",
"code": 400
}
{
"error": "Recipe already exists",
"code": 409
}

Resolve and optionally select a candidate from a saved recipe after applying allowed overrides.

NameInTypeRequiredDescription
namepathstringYesRecipe name
FieldTypeRequiredDescription
overridesobjectNoOptional selector template overrides. Only fields listed in the recipe’s allowed_overrides are applied.
{
"overrides": {
"version": "22"
}
}
Terminal window
curl -X POST 'http://127.0.0.1:7682/api/v1/run/recipes/dev-shell/run' \
-H 'content-type: application/json' \
-d '{
"overrides": {
"version": "22"
}
}'
{
"status": "dry-run",
"set_id": "a1b2c3d4e5f6",
"selected": {
"candidate_id": "nix-node-22",
"title": "Node.js 22 (nixpkgs)",
"description": "Node.js runtime via nixpkgs",
"version": "22.0.0",
"provider": "nix",
"source_id": "nixpkgs",
"score": 95,
"run_plan": {
"command": "nix run nixpkgs#nodejs"
}
},
"shell_command": "nix run nixpkgs#nodejs"
}
{
"error": "Override field 'version' is not in allowed_overrides",
"code": 400
}
{
"error": "Recipe not found",
"code": 404
}

Response: 503 — Required local tools are unavailable

Section titled “Response: 503 — Required local tools are unavailable”
{
"error": "Required local tools are unavailable",
"code": 503
}

Resolve a recipe to a candidate set after applying allowed overrides. Unlike the run endpoint, search does not select or execute a candidate — it returns the full ranked list for client-side selection.

NameInTypeRequiredDescription
namepathstringYesRecipe name
FieldTypeRequiredDescription
overridesobjectNoOptional selector template overrides. Only fields listed in the recipe’s allowed_overrides are applied.
{
"overrides": {
"version": "22"
}
}
Terminal window
curl -X POST 'http://127.0.0.1:7682/api/v1/run/recipes/dev-shell/search' \
-H 'content-type: application/json' \
-d '{
"overrides": {
"version": "22"
}
}'
{
"set_id": "a1b2c3d4e5f6",
"candidates": [
{
"candidate_id": "nix-node-22",
"title": "Node.js 22 (nixpkgs)",
"description": "Node.js runtime via nixpkgs",
"version": "22.0.0",
"provider": "nix",
"source_id": "nixpkgs",
"score": 95,
"reasons": ["exact version match", "high priority source"],
"run_plan": {
"command": "nix run nixpkgs#nodejs"
}
},
{
"candidate_id": "pkgx-node-22",
"title": "Node.js 22 (pkgx)",
"description": "Node.js runtime via pkgx",
"version": "22.1.0",
"provider": "pkgx",
"source_id": "pkgx",
"score": 80,
"reasons": ["exact version match"],
"run_plan": {
"command": "pkgx +node@22 node"
}
}
]
}
{
"error": "Override field 'version' is not in allowed_overrides",
"code": 400
}
{
"error": "Recipe not found",
"code": 404
}

Partially update an existing recipe.

NameInTypeRequiredDescription
namepathstringYesRecipe name

This endpoint accepts a partial recipe update. Any combination of recipe configuration fields may be supplied; only the provided fields are modified.

{
"description": "Updated development environment",
"allowed_overrides": ["version", "channel", "profile"]
}
Terminal window
curl -X PATCH 'http://127.0.0.1:7682/api/v1/run/recipes/dev-shell' \
-H 'content-type: application/json' \
-d '{
"description": "Updated development environment",
"allowed_overrides": ["version", "channel", "profile"]
}'

Response: 200 — Updated recipe configuration

Section titled “Response: 200 — Updated recipe configuration”
{
"name": "dev-shell",
"description": "Updated development environment",
"selector_template": {
"app": "node",
"os": "linux",
"kind": "cli",
"version": "20"
},
"allowed_overrides": ["version", "channel", "profile"]
}
{
"error": "Recipe not found",
"code": 404
}

Remove a saved recipe by name.

NameInTypeRequiredDescription
namepathstringYesRecipe name

This endpoint takes no request body.

Terminal window
curl -X DELETE 'http://127.0.0.1:7682/api/v1/run/recipes/dev-shell'

Response: 204 — Recipe deleted successfully

Section titled “Response: 204 — Recipe deleted successfully”

No content.

{
"error": "Recipe not found",
"code": 404
}