Skip to content
Hoody.com

Use the Profiles endpoints to manage named application profiles within a Hoody Run container. A profile bundles default preferences (operating system, app kind, source filter, candidate selection mode, terminal session, and so on) with optional source overrides and a sourcing policy. One profile can be selected as the active default; its defaults are then applied to subsequent requests that do not explicitly override them.

The endpoints below let you list existing profiles, create new ones, partially update them, switch the active profile, and delete profiles by name.


Return every configured profile along with its default preferences and source overrides.

This endpoint takes no parameters.

Terminal window
curl -X GET "https://{projectId}-{containerId}-run-1.{server}.containers.hoody.com/api/v1/run/profiles" \
-H "Authorization: Bearer $HOODY_TOKEN"
[
{
"name": "default",
"description": "Default profile (inherits global sources)",
"defaults": {
"os": "any",
"kind": "any",
"source": ["any"],
"pick": "ask",
"limit": 20
},
"sources_mode": "inherit",
"sources": [],
"policy": {
"require_verified": false,
"require_integrity": false,
"deny_providers": [],
"deny_source_ids": []
}
},
{
"name": "workstation",
"description": "GUI-focused profile pinned to Linux package sources",
"defaults": {
"os": "linux",
"kind": "gui",
"source": ["nix", "appimage"],
"pick": "first"
},
"sources_mode": "allowlist",
"sources": [
{ "source_id": "nixpkgs", "enabled": true, "priority": 10 }
],
"policy": {
"require_verified": true,
"deny_providers": ["system"]
}
}
]

Create a new user profile with default preferences and optional source overrides. Returns the updated list of all profiles.

This endpoint takes no parameters.

A request body is required. See the run_ProfileConfig schema in the referenced schemas section for the supported fields. The name field is required.

Terminal window
curl -X POST "https://{projectId}-{containerId}-run-1.{server}.containers.hoody.com/api/v1/run/profiles" \
-H "Authorization: Bearer $HOODY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "workstation",
"description": "GUI-focused profile pinned to Linux package sources",
"defaults": {
"os": "linux",
"kind": "gui",
"source": ["nix", "appimage"],
"pick": "first"
},
"sources_mode": "allowlist",
"sources": [
{ "source_id": "nixpkgs", "enabled": true, "priority": 10 }
]
}'
[
{
"name": "default",
"description": "Default profile (inherits global sources)",
"defaults": { "os": "any", "kind": "any", "source": ["any"], "pick": "ask", "limit": 20 },
"sources_mode": "inherit",
"sources": [],
"policy": { "require_verified": false, "require_integrity": false, "deny_providers": [], "deny_source_ids": [] }
},
{
"name": "workstation",
"description": "GUI-focused profile pinned to Linux package sources",
"defaults": { "os": "linux", "kind": "gui", "source": ["nix", "appimage"], "pick": "first" },
"sources_mode": "allowlist",
"sources": [
{ "source_id": "nixpkgs", "enabled": true, "priority": 10 }
],
"policy": { "require_verified": false, "require_integrity": false, "deny_providers": [], "deny_source_ids": [] }
}
]

Partially update a profile configuration. Supports merging description, defaults, sources_mode, and sources fields.

NameInTypeRequiredDescription
profilepathstringYesProfile name

A request body is required. See the run_ProfileConfig schema in the referenced schemas section for the supported fields. Only include the fields you want to change.

Terminal window
curl -X PATCH "https://{projectId}-{containerId}-run-1.{server}.containers.hoody.com/api/v1/run/profiles/workstation" \
-H "Authorization: Bearer $HOODY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"description": "GUI-focused profile pinned to Linux package sources (verified only)",
"policy": {
"require_verified": true,
"deny_providers": ["system"]
}
}'
{
"name": "workstation",
"description": "GUI-focused profile pinned to Linux package sources (verified only)",
"defaults": { "os": "linux", "kind": "gui", "source": ["nix", "appimage"], "pick": "first" },
"sources_mode": "allowlist",
"sources": [
{ "source_id": "nixpkgs", "enabled": true, "priority": 10 }
],
"policy": {
"require_verified": true,
"require_integrity": false,
"deny_providers": ["system"],
"deny_source_ids": []
}
}

POST /api/v1/run/profiles/{profile}/select

Section titled “POST /api/v1/run/profiles/{profile}/select”

Set the named profile as the currently active profile. Its defaults will be applied to all subsequent requests that do not explicitly override them.

NameInTypeRequiredDescription
profilepathstringYesProfile name to select

This endpoint takes no request body.

Terminal window
curl -X POST "https://{projectId}-{containerId}-run-1.{server}.containers.hoody.com/api/v1/run/profiles/workstation/select" \
-H "Authorization: Bearer $HOODY_TOKEN"
{
"selected_profile": "workstation"
}

Remove a profile by name. If the deleted profile was the selected profile, the selection is cleared.

NameInTypeRequiredDescription
profilepathstringYesProfile name

This endpoint takes no request body.

Terminal window
curl -X DELETE "https://{projectId}-{containerId}-run-1.{server}.containers.hoody.com/api/v1/run/profiles/workstation" \
-H "Authorization: Bearer $HOODY_TOKEN"

The profile was deleted successfully. The response has no body.


The run_ProfileConfig schema referenced by the create and update endpoints is composed of the following nested objects. Use these as a reference when constructing request bodies; only the fields marked required must be present.

FieldTypeRequiredDescription
namestringYesUnique profile name
descriptionstringNoHuman-readable profile description
defaultsrun_ProfileDefaultsNoDefault selector values applied when the profile is active
sources_moderun_ProfileSourceModeNoHow the profile interacts with the global source list
sourcesarray of run_ProfileSourceOverrideNoPer-source overrides (enable/disable/reprioritize). Default: []
policyrun_PolicyConfigNoSourcing policy applied while this profile is active
FieldTypeRequiredDescription
osrun_OsNoTarget app runtime OS (not the host OS). One of linux, windows, any
kindrun_AppKindNoApplication kind filter. One of gui, cli, any
sourcearray of run_SourceKindNoDefault source filter. One of nix, pkgx, appimage, oci, registry, system, any. Default: []
pickrun_PickModeNoCandidate selection mode. One of ask, first, index, id
terminal_idintegerNoDefault terminal session ID. Range: 1 to 65535
displaystringNoDefault X11 DISPLAY number
limitintegerNoDefault maximum candidates to return. Range: 1 to 100
FieldTypeRequiredDescription
source_idstringYesID of the source to override
enabledbooleanNoOverride enabled state
priorityintegerNoOverride priority
FieldTypeRequiredDescription
require_verifiedbooleanNoRequire verified sources
require_integritybooleanNoRequire integrity-checked sources
deny_providersarray of run_SourceKindNoProviders to deny. Default: []
deny_source_idsarray of stringNoSpecific source IDs to deny. Default: []

Selection mode for candidates:

  • ask: return candidate list without selecting (default)
  • first: automatically select the highest-ranked candidate
  • index: select by 0-based index (requires pick_index)
  • id: select by candidate_id (requires candidate_id)

How a profile interacts with the global source list:

  • inherit: start from global sources, apply overrides
  • allowlist: disable all sources first, then enable only those listed in the profile’s sources array

Standard JSON error payload returned for validation, lookup, and persistence failures.

FieldTypeRequiredDescription
errorstringYesHuman-readable error message
codeintegerYesHTTP status code associated with the error
FieldTypeRequiredDescription
selected_profilestringYesName of the active profile