The App Profiles API manages user profiles that bundle default selectors and source overrides. Use these endpoints to list, create, update, delete, and select the active profile that subsequent app-run requests will inherit from.
List all configured user profiles with their default preferences and source overrides.
This endpoint takes no parameters.
"description" : " Default profile (inherits global sources) " ,
"sources_mode" : " inherit " ,
"require_verified" : true ,
"require_integrity" : true ,
"allow_delegated_execution" : false ,
"description" : " Trusted providers only " ,
"source" : [ " nix " , " pkgx " ],
"sources_mode" : " allowlist " ,
{ "source_id" : " nixpkgs " , "enabled" : true , "priority" : 100 },
{ "source_id" : " pkgx " , "enabled" : true , "priority" : 80 }
"require_verified" : true ,
"require_integrity" : true
curl -X GET " https://api.example.com/api/v1/run/profiles " \
-H " Authorization: Bearer <token> "
const profiles = await client . app . profiles . list ();
Create a new user profile with default preferences and optional source overrides.
This endpoint takes no parameters.
Field Type Required Description namestring Yes Unique profile name descriptionstring No Human-readable profile description defaultsobject No Default selector values applied to requests that do not explicitly set them sources_modestring No inherit to start from global sources, or allowlist to disable all sources except those listed in sourcessourcesarray No Per-source overrides. Default: [] policyobject No Policy configuration controlling verification, integrity, execution, redirects, and provider denylists
"description" : " Minimal profile for CLI tools " ,
"sources_mode" : " inherit " ,
"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
curl -X POST " https://api.example.com/api/v1/run/profiles " \
-H " Authorization: Bearer <token> " \
-H " Content-Type: application/json " \
"description": "Minimal profile for CLI tools",
const profiles = await client . app . profiles . create ( {
description: " Minimal profile for CLI tools " ,
defaults: { kind: " cli " , pick: " first " , limit: 5 }
Set the given 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
"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 listProfiles 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
curl -X POST " https://api.example.com/api/v1/run/profiles/default/select " \
-H " Authorization: Bearer <token> "
await client . app . profiles . select ({ profile: " default " });
Partially update a profile configuration. Supports merging description, defaults, sources_mode, and sources fields.
Name In Type Required Description profilepath string Yes Profile name
The request body is a partial object. Any combination of description, defaults, sources_mode, and sources may be included. Only the fields present in the body are merged into the existing profile; omitted fields are left unchanged.
"description" : " Default profile (inherits global sources) " ,
"sources_mode" : " inherit " ,
{ "source_id" : " nixpkgs " , "enabled" : true , "priority" : 100 }
"require_verified" : true ,
"require_integrity" : true ,
"allow_delegated_execution" : false ,
"error" : " profile not found " ,
Error Code Title Description Resolution PROFILE_NOT_FOUNDProfile not found No profile exists with the requested name Call listProfiles 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
curl -X PATCH " https://api.example.com/api/v1/run/profiles/default " \
-H " Authorization: Bearer <token> " \
-H " Content-Type: application/json " \
"description": "Default profile (inherits global sources)",
{ "source_id": "nixpkgs", "enabled": true, "priority": 100 }
const updated = await client . app . profiles . update ( {
description: " Default profile (inherits global sources) " ,
sources: [{ source_id: " nixpkgs " , enabled: true , priority: 100 }]
Remove a profile by name. If the deleted profile was the selected profile, the selection is cleared.
Name In Type Required Description profilepath string Yes Profile name
The profile was deleted successfully. No response body is returned.
"error" : " profile not found " ,
Error Code Title Description Resolution PROFILE_NOT_FOUNDProfile not found No profile exists with the requested name Call listProfiles 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
curl -X DELETE " https://api.example.com/api/v1/run/profiles/old-profile " \
-H " Authorization: Bearer <token> "
await client . app . profiles . delete ({ profile: " old-profile " });