Skip to content
Hoody.com

Manage saved application recipes — reusable named selector templates that can be searched or run with optional overrides. Use these endpoints to create, inspect, update, and delete recipes, then resolve them into ranked candidate sets or execute them directly.

All requests are scoped to a container and addressed through the container-scoped run service host.


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

This endpoint takes no parameters.

Terminal window
curl -sS -X GET \
'https://abc123-xyz789-run-1.us-east-1.containers.hoody.icu/api/v1/run/recipes'

Retrieve a single saved recipe by name.

NameInTypeRequiredDescription
namepathstringYesRecipe name
Terminal window
curl -sS -X GET \
'https://abc123-xyz789-run-1.us-east-1.containers.hoody.icu/api/v1/run/recipes/firefox'

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 of the recipe
selector_templateobjectNoPartial selector template used to resolve candidates
allowed_overridesarrayNoList of selector fields the caller is permitted to override. Default: []
Terminal window
curl -sS -X POST \
'https://abc123-xyz789-run-1.us-east-1.containers.hoody.icu/api/v1/run/recipes' \
-H 'content-type: application/json' \
-d '{
"name": "firefox",
"description": "Launch Firefox from nixpkgs",
"selector_template": {
"app": "firefox",
"os": "linux",
"kind": "gui",
"source": ["nix"],
"arch": "amd64"
},
"allowed_overrides": ["arch", "channel"]
}'

Partially update an existing recipe.

NameInTypeRequiredDescription
namepathstringYesRecipe name

This endpoint accepts a partial recipe update object.

Terminal window
curl -sS -X PATCH \
'https://abc123-xyz789-run-1.us-east-1.containers.hoody.icu/api/v1/run/recipes/firefox' \
-H 'content-type: application/json' \
-d '{
"description": "Launch Firefox from nixpkgs (stable channel)",
"allowed_overrides": ["arch", "channel", "version"]
}'

Remove a saved recipe by name.

NameInTypeRequiredDescription
namepathstringYesRecipe name
Terminal window
curl -sS -X DELETE \
'https://abc123-xyz789-run-1.us-east-1.containers.hoody.icu/api/v1/run/recipes/firefox'

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

NameInTypeRequiredDescription
namepathstringYesRecipe name
FieldTypeRequiredDescription
overridesobjectNoPartial selector template containing only the fields the recipe permits overriding. Values outside allowed_overrides are rejected.
Terminal window
curl -sS -X POST \
'https://abc123-xyz789-run-1.us-east-1.containers.hoody.icu/api/v1/run/recipes/firefox/run' \
-H 'content-type: application/json' \
-d '{
"overrides": {
"channel": "unstable",
"arch": "arm64",
"pick": "first"
}
}'

Resolve a recipe to a candidate set after applying allowed overrides, without selecting a single candidate. Use the returned set_id together with pick=id for race-free selection on a subsequent run.

NameInTypeRequiredDescription
namepathstringYesRecipe name
FieldTypeRequiredDescription
overridesobjectNoPartial selector template containing only the fields the recipe permits overriding. Values outside allowed_overrides are rejected.
Terminal window
curl -sS -X POST \
'https://abc123-xyz789-run-1.us-east-1.containers.hoody.icu/api/v1/run/recipes/firefox/search' \
-H 'content-type: application/json' \
-d '{
"overrides": {
"arch": "arm64"
}
}'