> ## Documentation Index
> Fetch the complete documentation index at: https://docs.openhands.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Load Settings

> Load user settings.

Retrieves the settings for the authenticated user, including LLM configuration,
provider tokens, and other user preferences.

Returns:
    GETSettingsModel: The user settings with token data

Raises:
    404: Settings not found
    401: Invalid token



## OpenAPI

````yaml /openapi/openhands-cloud.json get /api/v1/settings
openapi: 3.1.0
info:
  title: OpenHands
  description: 'OpenHands: Code Less, Make More'
  version: 0.0.1
servers: []
security: []
paths:
  /api/v1/settings:
    get:
      tags:
        - Settings
      summary: Load Settings
      description: >-
        Load user settings.


        Retrieves the settings for the authenticated user, including LLM
        configuration,

        provider tokens, and other user preferences.


        Returns:
            GETSettingsModel: The user settings with token data

        Raises:
            404: Settings not found
            401: Invalid token
      operationId: load_settings_api_v1_settings_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GETSettingsModel'
        '401':
          description: Invalid token
          content:
            application/json:
              schema:
                additionalProperties: true
                type: object
                title: Response 401 Load Settings Api V1 Settings Get
        '404':
          description: Settings not found
          content:
            application/json:
              schema:
                additionalProperties: true
                type: object
                title: Response 404 Load Settings Api V1 Settings Get
      security:
        - APIKeyHeader: []
components:
  schemas:
    GETSettingsModel:
      properties:
        language:
          anyOf:
            - type: string
            - type: 'null'
          title: Language
        user_version:
          anyOf:
            - type: integer
            - type: 'null'
          title: User Version
        remote_runtime_resource_factor:
          anyOf:
            - type: integer
            - type: 'null'
          title: Remote Runtime Resource Factor
        secrets_store:
          title: Secrets Store
        enable_sound_notifications:
          type: boolean
          title: Enable Sound Notifications
          default: false
        enable_proactive_conversation_starters:
          type: boolean
          title: Enable Proactive Conversation Starters
          default: true
        user_consents_to_analytics:
          anyOf:
            - type: boolean
            - type: 'null'
          title: User Consents To Analytics
        sandbox_base_container_image:
          anyOf:
            - type: string
            - type: 'null'
          title: Sandbox Base Container Image
        sandbox_runtime_container_image:
          anyOf:
            - type: string
            - type: 'null'
          title: Sandbox Runtime Container Image
        disabled_skills:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Disabled Skills
        search_api_key:
          anyOf:
            - type: string
              format: password
              writeOnly: true
            - type: 'null'
          title: Search Api Key
        sandbox_api_key:
          anyOf:
            - type: string
              format: password
              writeOnly: true
            - type: 'null'
          title: Sandbox Api Key
        max_budget_per_task:
          anyOf:
            - type: number
            - type: 'null'
          title: Max Budget Per Task
        email:
          anyOf:
            - type: string
            - type: 'null'
          title: Email
        email_verified:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Email Verified
        git_user_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Git User Name
        git_user_email:
          anyOf:
            - type: string
            - type: 'null'
          title: Git User Email
        title_llm_profile:
          anyOf:
            - type: string
            - type: 'null'
          title: Title Llm Profile
        git_full_clone:
          type: boolean
          title: Git Full Clone
          default: false
        v1_enabled:
          type: boolean
          title: V1 Enabled
          default: true
        agent_settings:
          additionalProperties: true
          type: object
          title: Agent Settings
        conversation_settings:
          $ref: '#/components/schemas/ConversationSettings'
        sandbox_grouping_strategy:
          $ref: '#/components/schemas/SandboxGroupingStrategy'
          default: NO_GROUPING
        default_sandbox_spec_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Default Sandbox Spec Id
        llm_profiles:
          $ref: '#/components/schemas/LLMProfiles'
          description: >-
            Saved LLM profiles and the currently active profile name. See
            ``LLMProfiles`` for the profile-management API.
        active_agent_profile_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Active Agent Profile Id
        active_agent_profile_revision:
          anyOf:
            - type: integer
            - type: 'null'
          title: Active Agent Profile Revision
        registered_marketplaces:
          items:
            $ref: >-
              #/components/schemas/openhands__app_server__settings__settings_models__MarketplaceRegistration
          type: array
          title: Registered Marketplaces
          description: >-
            List of marketplace registrations for plugin resolution.
            Marketplaces with auto_load=True will have their plugins loaded
            automatically at conversation start. See MarketplaceRegistration for
            details.
        inherited_marketplaces:
          items:
            $ref: >-
              #/components/schemas/openhands__app_server__settings__settings_models__MarketplaceRegistration
          type: array
          title: Inherited Marketplaces
          description: >-
            Marketplaces inherited from instance or organization level. These
            are read-only and cannot be modified by the user. Computed at
            runtime: Instance defaults + Org defaults.
        provider_tokens_set:
          anyOf:
            - additionalProperties:
                anyOf:
                  - type: string
                  - type: 'null'
              propertyNames:
                $ref: '#/components/schemas/ProviderType'
              type: object
            - type: 'null'
          title: Provider Tokens Set
        llm_api_key_set:
          type: boolean
          title: Llm Api Key Set
        search_api_key_set:
          type: boolean
          title: Search Api Key Set
          default: false
      type: object
      required:
        - llm_api_key_set
      title: GETSettingsModel
      description: Settings with additional token data for the frontend
    ConversationSettings:
      properties:
        schema_version:
          type: integer
          minimum: 1
          title: Schema Version
          default: 1
        max_iterations:
          type: integer
          minimum: 1
          title: Max Iterations
          description: >-
            Maximum number of iterations the conversation will run before
            stopping.
          default: 500
          openhands_settings:
            depends_on: []
            label: Max iterations
            prominence: major
        confirmation_mode:
          type: boolean
          title: Confirmation Mode
          description: Require user confirmation before executing risky actions.
          default: false
          openhands_settings:
            depends_on: []
            label: Confirmation mode
            prominence: critical
          openhands_settings_section:
            key: verification
            label: Verification
        security_analyzer:
          anyOf:
            - type: string
              enum:
                - llm
                - none
            - type: 'null'
          title: Security Analyzer
          description: Security analyzer that evaluates actions before execution.
          default: llm
          openhands_settings:
            depends_on:
              - confirmation_mode
            label: Security analyzer
            prominence: major
          openhands_settings_section:
            key: verification
            label: Verification
      type: object
      title: ConversationSettings
    SandboxGroupingStrategy:
      type: string
      enum:
        - NO_GROUPING
        - GROUP_BY_NEWEST
        - LEAST_RECENTLY_USED
        - FEWEST_CONVERSATIONS
        - ADD_TO_ANY
      title: SandboxGroupingStrategy
      description: Strategy for grouping conversations within sandboxes.
    LLMProfiles:
      properties:
        profiles:
          additionalProperties: true
          type: object
          title: Profiles
        active:
          anyOf:
            - type: string
            - type: 'null'
          title: Active
      type: object
      title: LLMProfiles
      description: >-
        Container for saved LLM configurations.


        Stores a named collection of ``LLM`` configurations plus the name of the

        currently active one (if any). All profile-management logic lives here;

        ``Settings`` holds a single ``LLMProfiles`` instance and delegates to
        it.


        Invariants (enforced on validate + assignment):

        - ``active`` is either ``None`` or a key of ``profiles``.

        - Individual profiles that fail to parse (schema drift) are dropped with
          a warning rather than failing the whole ``Settings`` load.
    openhands__app_server__settings__settings_models__MarketplaceRegistration:
      properties:
        name:
          type: string
          title: Name
          description: Identifier for this marketplace registration
        source:
          type: string
          title: Source
          description: 'Marketplace source: ''github:owner/repo'', git URL, or local path'
        ref:
          anyOf:
            - type: string
            - type: 'null'
          title: Ref
          description: Optional branch, tag, or commit (only for git sources)
        repo_path:
          anyOf:
            - type: string
            - type: 'null'
          title: Repo Path
          description: >-
            Subdirectory path within the git repository containing the
            marketplace (e.g., 'marketplaces/internal' for monorepos). Only
            relevant for git sources, not local paths.
        auto_load:
          type: boolean
          title: Auto Load
          description: >-
            Auto-load behavior for this marketplace. True = load all plugins at
            conversation start. False = registered for resolution but not
            auto-loaded.
          default: false
        scope:
          anyOf:
            - $ref: '#/components/schemas/MarketplaceScope'
            - type: 'null'
          description: >-
            Scope of this marketplace registration. Set automatically by backend
            based on storage layer: "instance" for system defaults, "org" for
            organization-level, "personal" for user-level. Frontend should NOT
            send this field in save requests.
      type: object
      required:
        - name
        - source
      title: MarketplaceRegistration
      description: >-
        Registration for a plugin marketplace.


        Represents a marketplace that can be registered for plugin resolution.

        Marketplaces can be auto-loaded (plugins loaded at conversation start)

        or registered only (available for explicit plugin references).


        Wire-compatible with
        ``openhands.sdk.marketplace.MarketplaceRegistration``

        (the model the agent-server ``/api/skills`` endpoint consumes): dumping
        this

        model with ``exclude={'scope'}`` yields exactly the SDK model's fields

        (``name``/``source``/``ref``/``repo_path``/``auto_load``), and our
        ``bool``

        ``auto_load`` and stricter field validators are a subset of what the SDK

        accepts, so any value we produce validates upstream.


        This is intentionally kept as a separate model rather than importing the
        SDK

        one, because it carries a backend-only ``scope`` (set per storage layer
        for

        API responses/UI, stripped at the wire boundary and re-derived during

        composition) and enforces input validation the SDK model does not
        (source /

        ``repo_path`` traversal guards, name format).


        Examples:
            >>> # Auto-load all plugins from a marketplace
            >>> MarketplaceRegistration(
            ...     name="public",
            ...     source="github:OpenHands/skills",
            ...     auto_load=True
            ... )

            >>> # Register marketplace without auto-loading
            >>> MarketplaceRegistration(
            ...     name="experimental",
            ...     source="github:acme/experimental"
            ... )

            >>> # Marketplace in monorepo subdirectory
            >>> MarketplaceRegistration(
            ...     name="team",
            ...     source="github:acme/monorepo",
            ...     repo_path="marketplaces/internal",
            ...     auto_load=True
            ... )
    MarketplaceScope:
      type: string
      enum:
        - instance
        - org
        - personal
      title: MarketplaceScope
      description: Scope of a marketplace registration.
  securitySchemes:
    APIKeyHeader:
      type: apiKey
      in: header
      name: X-Access-Token

````