User profiles bundle a set of default selectors, source overrides, and policy constraints that get applied to subsequent app requests. Use the endpoints on this page to list existing profiles, create new ones, update their configuration, select the active profile, or delete profiles that are no longer needed.
Returns every configured user profile with its default preferences and source overrides. Use this to discover available profiles before selecting one or composing a new configuration.
This endpoint takes no parameters.
curl https://api.hoody.com/api/v1/run/profiles \
-H " Authorization: Bearer <token> "
const profiles = await client . app . profiles . list ();
"description" : " Default profile (inherits global sources) " ,
"source" : [ " nix " , " pkgx " ],
"sources_mode" : " inherit " ,
"require_verified" : true ,
Creates a new user profile with default preferences and optional source overrides. The name field is required and must be unique. Returns the updated list of all profiles on success.
This endpoint takes no parameters.
Send a ProfileConfig object describing the new profile.
Name Type Required Description namestring Yes Unique profile name descriptionstring No Human-readable profile description defaultsobject No Default selector values applied when the profile is active (see ProfileDefaults) sources_modestring No inherit starts from global sources, allowlist disables all sources firstsourcesarray No Per-source overrides (enable/disable/reprioritize). Default: [] policyobject No Policy constraints for the profile (see PolicyConfig)
curl -X POST https://api.hoody.com/api/v1/run/profiles \
-H " Authorization: Bearer <token> " \
-H " Content-Type: application/json " \
"description": "Linux GUI workstation",
"source": ["nix", "appimage"],
"sources_mode": "allowlist",
"require_verified": true,
await client . app . profiles . create ({
description: " Linux GUI workstation " ,
defaults: { os: " linux " , kind: " gui " , source: [ " nix " , " appimage " ], pick: " first " },
sources_mode: " allowlist " ,
policy: { require_verified: true , allow_redirect: true }
"description" : " Default profile (inherits global sources) " ,
"defaults" : { "os" : " linux " , "kind" : " any " , "pick" : " ask " },
"sources_mode" : " inherit " ,
"policy" : { "require_verified" : true , "allow_redirect" : true }
"description" : " Linux GUI workstation " ,
"defaults" : { "os" : " linux " , "kind" : " gui " , "source" : [ " nix " , " appimage " ], "pick" : " first " },
"sources_mode" : " allowlist " ,
"policy" : { "require_verified" : true , "allow_redirect" : true }
"error" : " missing profile name " ,
Error Code Title Description Resolution MISSING_PROFILE_NAMEMissing profile name The profile configuration did not include a non-empty name Set name before creating the profile
"error" : " profile already exists " ,
Error Code Title Description Resolution PROFILE_ALREADY_EXISTSProfile already exists A profile with the same name already exists Choose a unique profile name or update the existing profile instead
"error" : " configuration save failed " ,
Error Code Title Description Resolution CONFIG_SAVE_FAILEDConfiguration save failed The updated profile configuration could not be persisted Check storage health and retry
Sets the named profile as the currently active profile. Its defaults will be applied to all subsequent requests that do not explicitly override them.
Name In Type Required Description profilepath string Yes Profile name to select
curl -X POST https://api.hoody.com/api/v1/run/profiles/default/select \
-H " Authorization: Bearer <token> "
await client . app . profiles . select ( " default " );
"selected_profile" : " default "
"error" : " profile not found " ,
Error Code Title Description Resolution PROFILE_NOT_FOUNDProfile not found No profile exists with the requested name Call list and choose a valid profile name
"error" : " configuration save failed " ,
Error Code Title Description Resolution CONFIG_SAVE_FAILEDConfiguration save failed The updated profile selection could not be persisted Check storage health and retry
Partially updates a profile configuration. Only the fields included in the request body are modified; omitted fields retain their current values.
Name In Type Required Description profilepath string Yes Profile name
Send a JSON object containing the subset of ProfileConfig fields to update. The supported merge fields are description, defaults, sources_mode, and sources.
curl -X PATCH https://api.hoody.com/api/v1/run/profiles/workstation \
-H " Authorization: Bearer <token> " \
-H " Content-Type: application/json " \
"description": "Linux GUI workstation (revised)",
"defaults": { "limit": 30 }
await client . app . profiles . update ( " workstation " , {
description: " Linux GUI workstation (revised) " ,
"description" : " Linux GUI workstation (revised) " ,
"source" : [ " nix " , " appimage " ],
"sources_mode" : " allowlist " ,
"require_verified" : true ,
"error" : " profile not found " ,
Error Code Title Description Resolution PROFILE_NOT_FOUNDProfile not found No profile exists with the requested name Call list and choose a valid profile name
"error" : " configuration save failed " ,
Error Code Title Description Resolution CONFIG_SAVE_FAILEDConfiguration save failed The updated profile configuration could not be persisted Check storage health and retry
Removes a profile by name. If the deleted profile was the selected profile, the active selection is cleared.
Name In Type Required Description profilepath string Yes Profile name
curl -X DELETE https://api.hoody.com/api/v1/run/profiles/workstation \
-H " Authorization: Bearer <token> "
await client . app . profiles . delete ( " workstation " );
The profile was deleted successfully. No content is returned.
"error" : " profile not found " ,
Error Code Title Description Resolution PROFILE_NOT_FOUNDProfile not found No profile exists with the requested name Call list and choose a valid profile name
"error" : " configuration save failed " ,
Error Code Title Description Resolution CONFIG_SAVE_FAILEDConfiguration save failed The updated profile configuration could not be persisted Check storage health and retry