Skip to content
Hoody.com

The Recipes API lets you define, manage, and execute named selector templates that encapsulate how Hoody resolves a candidate set for an application. A recipe pairs a selector template with an allowed_overrides allowlist, and at execution time per-call overrides are merged into the template before resolution. Use these endpoints to list, fetch, create, update, delete, search, and run recipes.

All endpoints are served by the run service on a per-container hostname. A concrete example is 67e89abc123def456789abcd-890abcdef12345678901cdef-run-1.node-us.containers.hoody.com; in production substitute your own {projectId}, {containerId}, and {server} values into the template {projectId}-{containerId}-run-1.{server}.containers.hoody.com.

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

This endpoint takes no parameters.

Terminal window
curl -X GET "https://67e89abc123def456789abcd-890abcdef12345678901cdef-run-1.node-us.containers.hoody.com/api/v1/run/recipes" \
-H "Authorization: Bearer $HOODY_TOKEN"

Retrieve a single saved recipe by name.

NameInTypeRequiredDescription
namepathstringYesRecipe name
Terminal window
curl -X GET "https://67e89abc123def456789abcd-890abcdef12345678901cdef-run-1.node-us.containers.hoody.com/api/v1/run/recipes/firefox-stable" \
-H "Authorization: Bearer $HOODY_TOKEN"

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

This endpoint takes no parameters.

The request body is a JSON object that conforms to the Recipe configuration schema.

Terminal window
curl -X POST "https://67e89abc123def456789abcd-890abcdef12345678901cdef-run-1.node-us.containers.hoody.com/api/v1/run/recipes" \
-H "Authorization: Bearer $HOODY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "firefox-stable",
"description": "Resolve the latest stable Firefox via nixpkgs.",
"selector_template": {
"app": "firefox",
"os": "linux",
"kind": "gui",
"source": ["nix"],
"channel": "stable",
"pick": "first"
},
"allowed_overrides": ["version", "channel"]
}'

Partially update an existing recipe.

NameInTypeRequiredDescription
namepathstringYesRecipe name

The request body is a partial update of the recipe configuration.

Terminal window
curl -X PATCH "https://67e89abc123def456789abcd-890abcdef12345678901cdef-run-1.node-us.containers.hoody.com/api/v1/run/recipes/firefox-stable" \
-H "Authorization: Bearer $HOODY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"description": "Resolve the latest stable Firefox via nixpkgs (updated)."
}'

Remove a saved recipe by name.

NameInTypeRequiredDescription
namepathstringYesRecipe name

This endpoint accepts no body.

Terminal window
curl -X DELETE "https://67e89abc123def456789abcd-890abcdef12345678901cdef-run-1.node-us.containers.hoody.com/api/v1/run/recipes/firefox-stable" \
-H "Authorization: Bearer $HOODY_TOKEN"

Resolve and optionally select a candidate from a saved recipe after applying allowed overrides. Hoody-run never executes the resulting command; the response returns the exact shell command or curl invocation the caller should run.

NameInTypeRequiredDescription
namepathstringYesRecipe name

The request body is a Recipe execution request with optional overrides that are merged into the stored template.

Terminal window
curl -X POST "https://67e89abc123def456789abcd-890abcdef12345678901cdef-run-1.node-us.containers.hoody.com/api/v1/run/recipes/firefox-stable/run" \
-H "Authorization: Bearer $HOODY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"overrides": {
"channel": "stable",
"version": "128.0.3"
}
}'

Resolve a recipe to a candidate set after applying allowed overrides. The returned set_id can be passed back to the run endpoint with pick: "id" for race-free selection.

NameInTypeRequiredDescription
namepathstringYesRecipe name

The request body is a Recipe execution request with optional overrides that are merged into the stored template.

Terminal window
curl -X POST "https://67e89abc123def456789abcd-890abcdef12345678901cdef-run-1.node-us.containers.hoody.com/api/v1/run/recipes/firefox-stable/search" \
-H "Authorization: Bearer $HOODY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"overrides": {
"channel": "stable"
}
}'