If request.llm is supplied, it is saved as the profile’s config.
Otherwise the current agent_settings.llm is snapshotted. Existing
profiles with the same name are overwritten.
Runs inside a per-user lock to prevent lost updates between concurrent
profile writes. Returns 409 if the user is already at the profile
cap (:data:MAX_PROFILES_PER_USER).
If llm is provided, it is used as the profile config; otherwise the
current agent_settings.llm is saved. The llm field is typed as
:class:StrictLLM, which forbids unknown keys — so a typo like
{"llm": {"custom_header": "x"}} returns 422 instead of being silently
dropped.
Security note: when llm.api_key is included in the request body,
it is transmitted in plaintext over the wire and present in any request
log or error trace that captures request bodies. SecretStr masks it
in Pydantic reprs, but callers and operators should still avoid logging
raw request bodies on this endpoint.
The base LLM model has extra='ignore', so typos and renamed keys
silently disappear. For API input we want to fail loud, otherwise users
can POST {"llm": {"custom_header": "x"}} and get a 201 with the
field quietly dropped.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"OpenHands Docs","colors":{"primary":"#99873c","light":"#ffe165","dark":"#ffe165"},"logo":{"light":"https://mintcdn.com/allhandsai/DjhqLcIy_hW6pRTg/logo/light.png?fit=max\u0026auto=format\u0026n=DjhqLcIy_hW6pRTg\u0026q=85\u0026s=49b636402b03f7279ca5e1afefeec1d2","dark":"https://mintcdn.com/allhandsai/DjhqLcIy_hW6pRTg/logo/dark.png?fit=max\u0026auto=format\u0026n=DjhqLcIy_hW6pRTg\u0026q=85\u0026s=e0c4017631cebc3a289798438e2c0d7a"},"favicon":"https://mintcdn.com/allhandsai/DjhqLcIy_hW6pRTg/openhands/logo-square.png?fit=max\u0026auto=format\u0026n=DjhqLcIy_hW6pRTg\u0026q=85\u0026s=6ef1bab575660ae6e2d44fcc57bc675f","appearance":{"default":"light"},"background":{"color":{"light":"#f7f3ee","dark":"#0B0D0E"}},"navbar":{"links":[],"primary":{"type":"github","href":"https://github.com/OpenHands/OpenHands"}},"footer":{"socials":{"slack":"https://openhands.dev/joinslack","github":"https://github.com/OpenHands"},"links":[{"header":"Links","items":[{"label":"Company","href":"https://openhands.dev/"},{"label":"Blog","href":"https://openhands.dev/blog"},{"label":"Cloud","href":"https://app.all-hands.dev"},{"label":"Enterprise","href":"https://openhands.dev/enterprise"}]}]},"seo":{"indexing":"navigable"},"integrations":{"gtm":{"tagId":"GTM-M9S7V5BQ"}},"contextual":{"options":["copy","view","download-spec","chatgpt","claude"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"allhandsai","hasAudioNarration":false,"actualSubdomain":"allhandsai","customDomains":["docs.openhands.dev"],"gitSource":{"type":"github","owner":"openhands","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af637bd58c1bbe7022a7b66","clientVersion":"0.0.4117","searchFilterCounts":[{"language":"default","tag":"Cloud","count":196},{"language":"default","tag":"Cloud API","count":187},{"language":"default","tag":"REST API Reference","count":185},{"language":"default","tag":"SDK","count":128},{"language":"default","tag":"Guides","count":105},{"language":"default","tag":"API Reference","count":95},{"language":"default","tag":"Enterprise","count":73},{"language":"default","tag":"Agent Canvas","count":64},{"language":"default","tag":"Home","count":58},{"language":"default","tag":"Remote Agent Server","count":55}]},"assistantConfig":{"deflection":{"enabled":true,"email":"contact@openhands.dev","showHelpButton":true}},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"#banner *{color:rgb(67, 66, 64)}"}],"page":{"pagePath":"openhands/usage/cloud/api-reference/settings/save-profile","slug":"/openhands/usage/cloud/api-reference/settings/save-profile","pageMetadata":{"title":"Save Profile","description":"Save an LLM configuration as a named profile.\n\nIf ``request.llm`` is supplied, it is saved as the profile's config.\nOtherwise the current ``agent_settings.llm`` is snapshotted. Existing\nprofiles with the same name are overwritten.\n\nRuns inside a per-user lock to prevent lost updates between concurrent\nprofile writes. Returns 409 if the user is already at the profile\ncap (:data:`MAX_PROFILES_PER_USER`).","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /api/v1/settings/profiles/{name}","href":"/openhands/usage/cloud/api-reference/settings/save-profile","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Save an LLM configuration as a named profile.\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"If \", _jsx(_components.code, {\n children: \"request.llm\"\n }), \" is supplied, it is saved as the profile’s config.\\nOtherwise the current \", _jsx(_components.code, {\n children: \"agent_settings.llm\"\n }), \" is snapshotted. Existing\\nprofiles with the same name are overwritten.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Runs inside a per-user lock to prevent lost updates between concurrent\\nprofile writes. Returns 409 if the user is already at the profile\\ncap (:data:\", _jsx(_components.code, {\n children: \"MAX_PROFILES_PER_USER\"\n }), \").\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Save Profile","description":"Save an LLM configuration as a named profile.\n\nIf ``request.llm`` is supplied, it is saved as the profile's config.\nOtherwise the current ``agent_settings.llm`` is snapshotted. Existing\nprofiles with the same name are overwritten.\n\nRuns inside a per-user lock to prevent lost updates between concurrent\nprofile writes. Returns 409 if the user is already at the profile\ncap (:data:`MAX_PROFILES_PER_USER`).","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /api/v1/settings/profiles/{name}","href":"/openhands/usage/cloud/api-reference/settings/save-profile","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/allhandsai/dddab338317a519d/openhands/reo-init.js","/_mintlify/custom/allhandsai/ae719f15d762e1fe/openhands/posthog-init.js","/_mintlify/custom/allhandsai/b35f7f3c3c83fb4c/openhands/canvas-handoff.js","/_mintlify/custom/allhandsai/771d6371c43b73b7/openhands/linkedin-copy-tracking.js","/_mintlify/custom/allhandsai/46724455a27ebfc6/openhands/copy-click-tracking.js"],"openApiReferenceData":{"operation":{"tags":["Settings"],"summary":"Save Profile","description":"Save an LLM configuration as a named profile.\n\nIf ``request.llm`` is supplied, it is saved as the profile's config.\nOtherwise the current ``agent_settings.llm`` is snapshotted. Existing\nprofiles with the same name are overwritten.\n\nRuns inside a per-user lock to prevent lost updates between concurrent\nprofile writes. Returns 409 if the user is already at the profile\ncap (:data:`MAX_PROFILES_PER_USER`).","operationId":"save_profile_api_v1_settings_profiles__name__post","security":["ad7847aa-34dc-4e4c-a049-89934cd1da89"],"parameters":["a0cb825c-0093-463b-a9a3-550129b0658a"],"requestBody":"3c0756a0-4611-4835-a772-2be343eeb44b","responses":{"201":"e92aca82-61f4-4658-a3fb-fb6b437a3508","422":"f4992cc1-9928-488c-99a7-81f0bdf26727"},"method":"post","type":"path","servers":[],"path":"/api/v1/settings/profiles/{name}","baseUrlOptions":[],"title":"Save Profile","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"a0cb825c-0093-463b-a9a3-550129b0658a":{"name":"name","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[A-Za-z0-9._-]{1,64}$","title":"Name","isRequired":true,"uniqueKey":"","typeLabel":"string"}}},"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object","title":"SaveProfileRequest","description":"Request body for saving a profile.\n\nIf ``llm`` is provided, it is used as the profile config; otherwise the\ncurrent ``agent_settings.llm`` is saved. The ``llm`` field is typed as\n:class:`StrictLLM`, which forbids unknown keys — so a typo like\n``{\"llm\": {\"custom_header\": \"x\"}}`` returns 422 instead of being silently\ndropped.\n\n**Security note:** when ``llm.api_key`` is included in the request body,\nit is transmitted in plaintext over the wire and present in any request\nlog or error trace that captures request bodies. ``SecretStr`` masks it\nin Pydantic reprs, but callers and operators should still avoid logging\nraw request bodies on this endpoint.","properties":{"include_secrets":{"type":"boolean","title":"Include Secrets","default":true,"uniqueKey":"oneOf.0.include_secrets","typeLabel":"boolean"},"llm":{"oneOf":[{"type":"object","title":"StrictLLM","description":"LLM variant that rejects unknown fields.\n\nThe base ``LLM`` model has ``extra='ignore'``, so typos and renamed keys\nsilently disappear. For API input we want to fail loud, otherwise users\ncan POST ``{\"llm\": {\"custom_header\": \"x\"}}`` and get a 201 with the\nfield quietly dropped.","properties":{"model":{"type":"string","title":"Model","description":"Model name.","default":"gpt-5.5","openhands_settings":{"depends_on":[],"prominence":"critical"},"uniqueKey":"oneOf.0.llm.oneOf.0.model","typeLabel":"string"},"api_key":{"oneOf":[{"type":"string","title":"Api Key","description":"API key.","uniqueKey":"oneOf.0.llm.oneOf.0.api_key.oneOf.0","typeLabel":"string"},{"type":"string","title":"Api Key","description":"API key.","format":"password","uniqueKey":"oneOf.0.llm.oneOf.0.api_key.oneOf.1","typeLabel":"string\u003cpassword>"},{"type":"null","title":"Api Key","description":"API key.","uniqueKey":"oneOf.0.llm.oneOf.0.api_key.oneOf.2","typeLabel":"null"}],"uniqueKey":"oneOf.0.llm.oneOf.0.api_key","typeLabel":"string | string\u003cpassword> | null"},"auth_type":{"type":"string","enum":["api_key","subscription"],"title":"Auth Type","description":"Authentication mode for the LLM.","default":"api_key","openhands_settings":{"depends_on":[],"label":"Authentication","prominence":"critical"},"uniqueKey":"oneOf.0.llm.oneOf.0.auth_type","typeLabel":"enum\u003cstring>"},"subscription_vendor":{"oneOf":[{"type":"string","title":"Subscription Vendor","description":"Subscription provider for subscription-backed LLM access.","const":"openai","uniqueKey":"oneOf.0.llm.oneOf.0.subscription_vendor.oneOf.0","typeLabel":"string"},{"type":"null","title":"Subscription Vendor","description":"Subscription provider for subscription-backed LLM access.","uniqueKey":"oneOf.0.llm.oneOf.0.subscription_vendor.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.llm.oneOf.0.subscription_vendor","typeLabel":"string | null"},"base_url":{"oneOf":[{"type":"string","title":"Base Url","description":"Custom base URL.","uniqueKey":"oneOf.0.llm.oneOf.0.base_url.oneOf.0","typeLabel":"string"},{"type":"null","title":"Base Url","description":"Custom base URL.","uniqueKey":"oneOf.0.llm.oneOf.0.base_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.llm.oneOf.0.base_url","typeLabel":"string | null"},"api_version":{"oneOf":[{"type":"string","title":"Api Version","description":"API version (e.g., Azure).","uniqueKey":"oneOf.0.llm.oneOf.0.api_version.oneOf.0","typeLabel":"string"},{"type":"null","title":"Api Version","description":"API version (e.g., Azure).","uniqueKey":"oneOf.0.llm.oneOf.0.api_version.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.llm.oneOf.0.api_version","typeLabel":"string | null"},"aws_access_key_id":{"oneOf":[{"type":"string","title":"Aws Access Key Id","uniqueKey":"oneOf.0.llm.oneOf.0.aws_access_key_id.oneOf.0","typeLabel":"string"},{"type":"string","title":"Aws Access Key Id","format":"password","uniqueKey":"oneOf.0.llm.oneOf.0.aws_access_key_id.oneOf.1","typeLabel":"string\u003cpassword>"},{"type":"null","title":"Aws Access Key Id","uniqueKey":"oneOf.0.llm.oneOf.0.aws_access_key_id.oneOf.2","typeLabel":"null"}],"uniqueKey":"oneOf.0.llm.oneOf.0.aws_access_key_id","typeLabel":"string | string\u003cpassword> | null"},"aws_secret_access_key":{"oneOf":[{"type":"string","title":"Aws Secret Access Key","uniqueKey":"oneOf.0.llm.oneOf.0.aws_secret_access_key.oneOf.0","typeLabel":"string"},{"type":"string","title":"Aws Secret Access Key","format":"password","uniqueKey":"oneOf.0.llm.oneOf.0.aws_secret_access_key.oneOf.1","typeLabel":"string\u003cpassword>"},{"type":"null","title":"Aws Secret Access Key","uniqueKey":"oneOf.0.llm.oneOf.0.aws_secret_access_key.oneOf.2","typeLabel":"null"}],"uniqueKey":"oneOf.0.llm.oneOf.0.aws_secret_access_key","typeLabel":"string | string\u003cpassword> | null"},"aws_session_token":{"oneOf":[{"type":"string","title":"Aws Session Token","uniqueKey":"oneOf.0.llm.oneOf.0.aws_session_token.oneOf.0","typeLabel":"string"},{"type":"string","title":"Aws Session Token","format":"password","uniqueKey":"oneOf.0.llm.oneOf.0.aws_session_token.oneOf.1","typeLabel":"string\u003cpassword>"},{"type":"null","title":"Aws Session Token","uniqueKey":"oneOf.0.llm.oneOf.0.aws_session_token.oneOf.2","typeLabel":"null"}],"uniqueKey":"oneOf.0.llm.oneOf.0.aws_session_token","typeLabel":"string | string\u003cpassword> | null"},"aws_region_name":{"oneOf":[{"type":"string","title":"Aws Region Name","uniqueKey":"oneOf.0.llm.oneOf.0.aws_region_name.oneOf.0","typeLabel":"string"},{"type":"null","title":"Aws Region Name","uniqueKey":"oneOf.0.llm.oneOf.0.aws_region_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.llm.oneOf.0.aws_region_name","typeLabel":"string | null"},"aws_profile_name":{"oneOf":[{"type":"string","title":"Aws Profile Name","uniqueKey":"oneOf.0.llm.oneOf.0.aws_profile_name.oneOf.0","typeLabel":"string"},{"type":"null","title":"Aws Profile Name","uniqueKey":"oneOf.0.llm.oneOf.0.aws_profile_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.llm.oneOf.0.aws_profile_name","typeLabel":"string | null"},"aws_role_name":{"oneOf":[{"type":"string","title":"Aws Role Name","uniqueKey":"oneOf.0.llm.oneOf.0.aws_role_name.oneOf.0","typeLabel":"string"},{"type":"null","title":"Aws Role Name","uniqueKey":"oneOf.0.llm.oneOf.0.aws_role_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.llm.oneOf.0.aws_role_name","typeLabel":"string | null"},"aws_session_name":{"oneOf":[{"type":"string","title":"Aws Session Name","uniqueKey":"oneOf.0.llm.oneOf.0.aws_session_name.oneOf.0","typeLabel":"string"},{"type":"null","title":"Aws Session Name","uniqueKey":"oneOf.0.llm.oneOf.0.aws_session_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.llm.oneOf.0.aws_session_name","typeLabel":"string | null"},"aws_bedrock_runtime_endpoint":{"oneOf":[{"type":"string","title":"Aws Bedrock Runtime Endpoint","uniqueKey":"oneOf.0.llm.oneOf.0.aws_bedrock_runtime_endpoint.oneOf.0","typeLabel":"string"},{"type":"null","title":"Aws Bedrock Runtime Endpoint","uniqueKey":"oneOf.0.llm.oneOf.0.aws_bedrock_runtime_endpoint.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.llm.oneOf.0.aws_bedrock_runtime_endpoint","typeLabel":"string | null"},"openrouter_site_url":{"type":"string","title":"Openrouter Site Url","default":"https://docs.all-hands.dev/","openhands_settings":{"depends_on":[],"prominence":"minor"},"uniqueKey":"oneOf.0.llm.oneOf.0.openrouter_site_url","typeLabel":"string"},"openrouter_app_name":{"type":"string","title":"Openrouter App Name","default":"OpenHands","openhands_settings":{"depends_on":[],"prominence":"minor"},"uniqueKey":"oneOf.0.llm.oneOf.0.openrouter_app_name","typeLabel":"string"},"num_retries":{"type":"integer","minimum":0,"title":"Num Retries","default":5,"openhands_settings":{"depends_on":[],"prominence":"minor"},"uniqueKey":"oneOf.0.llm.oneOf.0.num_retries","typeLabel":"integer"},"retry_multiplier":{"type":"number","minimum":0,"title":"Retry Multiplier","default":8,"openhands_settings":{"depends_on":[],"prominence":"minor"},"uniqueKey":"oneOf.0.llm.oneOf.0.retry_multiplier","typeLabel":"number"},"retry_min_wait":{"type":"integer","minimum":0,"title":"Retry Min Wait","default":8,"openhands_settings":{"depends_on":[],"prominence":"minor"},"uniqueKey":"oneOf.0.llm.oneOf.0.retry_min_wait","typeLabel":"integer"},"retry_max_wait":{"type":"integer","minimum":0,"title":"Retry Max Wait","default":64,"openhands_settings":{"depends_on":[],"prominence":"minor"},"uniqueKey":"oneOf.0.llm.oneOf.0.retry_max_wait","typeLabel":"integer"},"timeout":{"oneOf":[{"type":"integer","title":"Timeout","description":"HTTP timeout in seconds. Default is 300s (5 minutes). Set to None to disable timeout (not recommended for production).","default":300,"minimum":0,"uniqueKey":"oneOf.0.llm.oneOf.0.timeout.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Timeout","description":"HTTP timeout in seconds. Default is 300s (5 minutes). Set to None to disable timeout (not recommended for production).","default":300,"uniqueKey":"oneOf.0.llm.oneOf.0.timeout.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.llm.oneOf.0.timeout","typeLabel":"integer | null"},"max_message_chars":{"type":"integer","minimum":1,"title":"Max Message Chars","description":"Approx max chars in each event/content sent to the LLM.","default":30000,"openhands_settings":{"depends_on":[],"prominence":"minor"},"uniqueKey":"oneOf.0.llm.oneOf.0.max_message_chars","typeLabel":"integer"},"temperature":{"oneOf":[{"type":"number","title":"Temperature","description":"Sampling temperature for response generation. Defaults to None (uses provider default temperature). Set to 0.0 for deterministic outputs, or higher values (0.7-1.0) for more creative responses.","minimum":0,"uniqueKey":"oneOf.0.llm.oneOf.0.temperature.oneOf.0","typeLabel":"number"},{"type":"null","title":"Temperature","description":"Sampling temperature for response generation. Defaults to None (uses provider default temperature). Set to 0.0 for deterministic outputs, or higher values (0.7-1.0) for more creative responses.","uniqueKey":"oneOf.0.llm.oneOf.0.temperature.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.llm.oneOf.0.temperature","typeLabel":"number | null"},"top_p":{"oneOf":[{"type":"number","title":"Top P","description":"Nucleus sampling parameter. Defaults to None (uses provider default). Set to a value between 0 and 1 to control diversity of outputs.","maximum":1,"minimum":0,"uniqueKey":"oneOf.0.llm.oneOf.0.top_p.oneOf.0","typeLabel":"number"},{"type":"null","title":"Top P","description":"Nucleus sampling parameter. Defaults to None (uses provider default). Set to a value between 0 and 1 to control diversity of outputs.","uniqueKey":"oneOf.0.llm.oneOf.0.top_p.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.llm.oneOf.0.top_p","typeLabel":"number | null"},"top_k":{"oneOf":[{"type":"number","title":"Top K","minimum":0,"uniqueKey":"oneOf.0.llm.oneOf.0.top_k.oneOf.0","typeLabel":"number"},{"type":"null","title":"Top K","uniqueKey":"oneOf.0.llm.oneOf.0.top_k.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.llm.oneOf.0.top_k","typeLabel":"number | null"},"max_input_tokens":{"oneOf":[{"type":"integer","title":"Max Input Tokens","description":"The maximum number of input tokens. Note that this is currently unused, and the value at runtime is actually the total tokens in OpenAI (e.g. 128,000 tokens for GPT-4).","minimum":1,"uniqueKey":"oneOf.0.llm.oneOf.0.max_input_tokens.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Max Input Tokens","description":"The maximum number of input tokens. Note that this is currently unused, and the value at runtime is actually the total tokens in OpenAI (e.g. 128,000 tokens for GPT-4).","uniqueKey":"oneOf.0.llm.oneOf.0.max_input_tokens.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.llm.oneOf.0.max_input_tokens","typeLabel":"integer | null"},"max_output_tokens":{"oneOf":[{"type":"integer","title":"Max Output Tokens","description":"The maximum number of output tokens. This is sent to the LLM.","minimum":1,"uniqueKey":"oneOf.0.llm.oneOf.0.max_output_tokens.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Max Output Tokens","description":"The maximum number of output tokens. This is sent to the LLM.","uniqueKey":"oneOf.0.llm.oneOf.0.max_output_tokens.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.llm.oneOf.0.max_output_tokens","typeLabel":"integer | null"},"model_canonical_name":{"oneOf":[{"type":"string","title":"Model Canonical Name","description":"Optional canonical model name for feature registry lookups. The OpenHands SDK maintains a model feature registry that maps model names to capabilities (e.g., vision support, prompt caching, responses API support). When using proxied or aliased model identifiers, set this field to the canonical model name (e.g., 'openai/gpt-4o') to ensure correct capability detection. If not provided, the 'model' field will be used for capability lookups.","uniqueKey":"oneOf.0.llm.oneOf.0.model_canonical_name.oneOf.0","typeLabel":"string"},{"type":"null","title":"Model Canonical Name","description":"Optional canonical model name for feature registry lookups. The OpenHands SDK maintains a model feature registry that maps model names to capabilities (e.g., vision support, prompt caching, responses API support). When using proxied or aliased model identifiers, set this field to the canonical model name (e.g., 'openai/gpt-4o') to ensure correct capability detection. If not provided, the 'model' field will be used for capability lookups.","uniqueKey":"oneOf.0.llm.oneOf.0.model_canonical_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.llm.oneOf.0.model_canonical_name","typeLabel":"string | null"},"api_mode":{"type":"string","enum":["auto","chat","responses"],"title":"Api Mode","description":"LLM API endpoint mode. 'auto' resolves from model metadata and SDK fallbacks; use 'chat' or 'responses' to override endpoint selection for proxy aliases and newly released models.","default":"auto","openhands_settings":{"depends_on":[],"prominence":"minor"},"uniqueKey":"oneOf.0.llm.oneOf.0.api_mode","typeLabel":"enum\u003cstring>"},"capability_overrides":{"additionalProperties":{"oneOf":[{"type":"boolean","uniqueKey":"oneOf.0.llm.oneOf.0.capability_overrides.additionalProperties.oneOf.0","typeLabel":"boolean"},{"type":"string","uniqueKey":"oneOf.0.llm.oneOf.0.capability_overrides.additionalProperties.oneOf.1","typeLabel":"string"}],"uniqueKey":"oneOf.0.llm.oneOf.0.capability_overrides.additionalProperties","typeLabel":"boolean | string"},"type":"object","title":"Capability Overrides","description":"Explicit model capability overrides. Supported keys include supports_reasoning_effort, thinking_mode (adaptive, manual, none, or unknown), supports_sampling_params, supports_prompt_cache, supports_stop_words, supports_responses_api, supports_vision, and supports_prompt_cache_retention. Overrides take precedence over LiteLLM metadata and SDK fallbacks.","openhands_settings":{"depends_on":[],"prominence":"minor"},"uniqueKey":"oneOf.0.llm.oneOf.0.capability_overrides","typeLabel":"Capability Overrides · object"},"extra_headers":{"oneOf":[{"type":"object","title":"Extra Headers","description":"Optional HTTP headers to forward to LiteLLM requests.","additionalProperties":{"type":"string","uniqueKey":"oneOf.0.llm.oneOf.0.extra_headers.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"oneOf.0.llm.oneOf.0.extra_headers.oneOf.0","typeLabel":"Extra Headers · object"},{"type":"null","title":"Extra Headers","description":"Optional HTTP headers to forward to LiteLLM requests.","uniqueKey":"oneOf.0.llm.oneOf.0.extra_headers.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.llm.oneOf.0.extra_headers","typeLabel":"Extra Headers · object | null"},"input_cost_per_token":{"oneOf":[{"type":"number","title":"Input Cost Per Token","description":"The cost per input token. This will available in logs for user.","minimum":0,"uniqueKey":"oneOf.0.llm.oneOf.0.input_cost_per_token.oneOf.0","typeLabel":"number"},{"type":"null","title":"Input Cost Per Token","description":"The cost per input token. This will available in logs for user.","uniqueKey":"oneOf.0.llm.oneOf.0.input_cost_per_token.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.llm.oneOf.0.input_cost_per_token","typeLabel":"number | null"},"output_cost_per_token":{"oneOf":[{"type":"number","title":"Output Cost Per Token","description":"The cost per output token. This will available in logs for user.","minimum":0,"uniqueKey":"oneOf.0.llm.oneOf.0.output_cost_per_token.oneOf.0","typeLabel":"number"},{"type":"null","title":"Output Cost Per Token","description":"The cost per output token. This will available in logs for user.","uniqueKey":"oneOf.0.llm.oneOf.0.output_cost_per_token.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.llm.oneOf.0.output_cost_per_token","typeLabel":"number | null"},"ollama_base_url":{"oneOf":[{"type":"string","title":"Ollama Base Url","uniqueKey":"oneOf.0.llm.oneOf.0.ollama_base_url.oneOf.0","typeLabel":"string"},{"type":"null","title":"Ollama Base Url","uniqueKey":"oneOf.0.llm.oneOf.0.ollama_base_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.llm.oneOf.0.ollama_base_url","typeLabel":"string | null"},"stream":{"type":"boolean","title":"Stream","description":"Enable streaming responses from the LLM. When enabled, the provided `on_token` callback in .completions and .responses will be invoked for each chunk of tokens.","default":false,"openhands_settings":{"depends_on":[],"prominence":"minor"},"uniqueKey":"oneOf.0.llm.oneOf.0.stream","typeLabel":"boolean"},"drop_params":{"type":"boolean","title":"Drop Params","default":true,"openhands_settings":{"depends_on":[],"prominence":"minor"},"uniqueKey":"oneOf.0.llm.oneOf.0.drop_params","typeLabel":"boolean"},"modify_params":{"type":"boolean","title":"Modify Params","description":"Modify params allows litellm to do transformations like adding a default message, when a message is empty.","default":true,"openhands_settings":{"depends_on":[],"prominence":"minor"},"uniqueKey":"oneOf.0.llm.oneOf.0.modify_params","typeLabel":"boolean"},"disable_vision":{"oneOf":[{"type":"boolean","title":"Disable Vision","description":"If model is vision capable, this option allows to disable image processing (useful for cost reduction).","uniqueKey":"oneOf.0.llm.oneOf.0.disable_vision.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Disable Vision","description":"If model is vision capable, this option allows to disable image processing (useful for cost reduction).","uniqueKey":"oneOf.0.llm.oneOf.0.disable_vision.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.llm.oneOf.0.disable_vision","typeLabel":"boolean | null"},"disable_stop_word":{"oneOf":[{"type":"boolean","title":"Disable Stop Word","description":"Disable using of stop word.","default":false,"uniqueKey":"oneOf.0.llm.oneOf.0.disable_stop_word.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Disable Stop Word","description":"Disable using of stop word.","default":false,"uniqueKey":"oneOf.0.llm.oneOf.0.disable_stop_word.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.llm.oneOf.0.disable_stop_word","typeLabel":"boolean | null"},"caching_prompt":{"type":"boolean","title":"Caching Prompt","description":"Enable caching of prompts.","default":true,"openhands_settings":{"depends_on":[],"prominence":"minor"},"uniqueKey":"oneOf.0.llm.oneOf.0.caching_prompt","typeLabel":"boolean"},"log_completions":{"type":"boolean","title":"Log Completions","description":"Enable logging of completions.","default":false,"openhands_settings":{"depends_on":[],"prominence":"minor"},"uniqueKey":"oneOf.0.llm.oneOf.0.log_completions","typeLabel":"boolean"},"log_completions_folder":{"type":"string","title":"Log Completions Folder","description":"The folder to log LLM completions to. Required if log_completions is True.","default":"logs/completions","openhands_settings":{"depends_on":[],"prominence":"minor"},"uniqueKey":"oneOf.0.llm.oneOf.0.log_completions_folder","typeLabel":"string"},"custom_tokenizer":{"oneOf":[{"type":"string","title":"Custom Tokenizer","description":"A custom tokenizer to use for token counting.","uniqueKey":"oneOf.0.llm.oneOf.0.custom_tokenizer.oneOf.0","typeLabel":"string"},{"type":"null","title":"Custom Tokenizer","description":"A custom tokenizer to use for token counting.","uniqueKey":"oneOf.0.llm.oneOf.0.custom_tokenizer.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.llm.oneOf.0.custom_tokenizer","typeLabel":"string | null"},"native_tool_calling":{"type":"boolean","title":"Native Tool Calling","description":"Whether to use native tool calling.","default":true,"openhands_settings":{"depends_on":[],"prominence":"minor"},"uniqueKey":"oneOf.0.llm.oneOf.0.native_tool_calling","typeLabel":"boolean"},"force_string_serializer":{"oneOf":[{"type":"boolean","title":"Force String Serializer","description":"Force using string content serializer when sending to LLM API. If None (default), auto-detect based on model. Useful for providers that do not support list content, like HuggingFace and Groq.","uniqueKey":"oneOf.0.llm.oneOf.0.force_string_serializer.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Force String Serializer","description":"Force using string content serializer when sending to LLM API. If None (default), auto-detect based on model. Useful for providers that do not support list content, like HuggingFace and Groq.","uniqueKey":"oneOf.0.llm.oneOf.0.force_string_serializer.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.llm.oneOf.0.force_string_serializer","typeLabel":"boolean | null"},"inline_image_urls":{"oneOf":[{"type":"boolean","title":"Inline Image Urls","description":"If True, fetch any http(s) image URL in outgoing messages and inline it as a base64 ``data:`` URL before sending. If None (default), auto-detect based on model (some APIs such as Moonshot's public Kimi endpoint reject URL-formatted images and require base64). Set this explicitly when the model is reached through a proxy alias that hides the underlying provider (e.g. ``litellm_proxy/\u003ccustom-alias>``). Note: inlining only runs when ``vision_is_active()`` is True, so the alias must still be recognised as vision-capable by the SDK feature registry or proxy model metadata.","uniqueKey":"oneOf.0.llm.oneOf.0.inline_image_urls.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Inline Image Urls","description":"If True, fetch any http(s) image URL in outgoing messages and inline it as a base64 ``data:`` URL before sending. If None (default), auto-detect based on model (some APIs such as Moonshot's public Kimi endpoint reject URL-formatted images and require base64). Set this explicitly when the model is reached through a proxy alias that hides the underlying provider (e.g. ``litellm_proxy/\u003ccustom-alias>``). Note: inlining only runs when ``vision_is_active()`` is True, so the alias must still be recognised as vision-capable by the SDK feature registry or proxy model metadata.","uniqueKey":"oneOf.0.llm.oneOf.0.inline_image_urls.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.llm.oneOf.0.inline_image_urls","typeLabel":"boolean | null"},"reasoning_effort":{"oneOf":[{"type":"string","title":"Reasoning Effort","description":"Provider-neutral reasoning effort. Common values include 'none', 'minimal', 'low', 'medium', 'high', 'xhigh', and 'max'. The SDK accepts future provider values and lets LiteLLM translate them.","default":"high","enum":["low","medium","high","xhigh","none"],"uniqueKey":"oneOf.0.llm.oneOf.0.reasoning_effort.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","title":"Reasoning Effort","description":"Provider-neutral reasoning effort. Common values include 'none', 'minimal', 'low', 'medium', 'high', 'xhigh', and 'max'. The SDK accepts future provider values and lets LiteLLM translate them.","default":"high","uniqueKey":"oneOf.0.llm.oneOf.0.reasoning_effort.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.llm.oneOf.0.reasoning_effort","typeLabel":"enum\u003cstring> | null"},"reasoning_summary":{"oneOf":[{"type":"string","title":"Reasoning Summary","description":"The level of detail for reasoning summaries. This is a string that can be one of 'auto', 'concise', or 'detailed'. Requires verified OpenAI organization. Only sent when explicitly set.","enum":["auto","concise","detailed"],"uniqueKey":"oneOf.0.llm.oneOf.0.reasoning_summary.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","title":"Reasoning Summary","description":"The level of detail for reasoning summaries. This is a string that can be one of 'auto', 'concise', or 'detailed'. Requires verified OpenAI organization. Only sent when explicitly set.","uniqueKey":"oneOf.0.llm.oneOf.0.reasoning_summary.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.llm.oneOf.0.reasoning_summary","typeLabel":"enum\u003cstring> | null"},"enable_encrypted_reasoning":{"type":"boolean","title":"Enable Encrypted Reasoning","description":"If True, ask for ['reasoning.encrypted_content'] in Responses API include.","default":true,"openhands_settings":{"depends_on":[],"prominence":"minor"},"uniqueKey":"oneOf.0.llm.oneOf.0.enable_encrypted_reasoning","typeLabel":"boolean"},"prompt_cache_retention":{"oneOf":[{"type":"string","title":"Prompt Cache Retention","description":"Retention policy for prompt cache. Only sent for supported models (GPT-5+ and GPT-4.1, excluding Azure deployments); explicitly stripped for all others.","default":"24h","uniqueKey":"oneOf.0.llm.oneOf.0.prompt_cache_retention.oneOf.0","typeLabel":"string"},{"type":"null","title":"Prompt Cache Retention","description":"Retention policy for prompt cache. Only sent for supported models (GPT-5+ and GPT-4.1, excluding Azure deployments); explicitly stripped for all others.","default":"24h","uniqueKey":"oneOf.0.llm.oneOf.0.prompt_cache_retention.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.llm.oneOf.0.prompt_cache_retention","typeLabel":"string | null"},"extended_thinking_budget":{"oneOf":[{"type":"integer","title":"Extended Thinking Budget","description":"Legacy token budget for models confirmed to use manual Anthropic extended thinking. Ignored for adaptive-thinking models. Prefer reasoning_effort for new integrations.","default":200000,"uniqueKey":"oneOf.0.llm.oneOf.0.extended_thinking_budget.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Extended Thinking Budget","description":"Legacy token budget for models confirmed to use manual Anthropic extended thinking. Ignored for adaptive-thinking models. Prefer reasoning_effort for new integrations.","default":200000,"uniqueKey":"oneOf.0.llm.oneOf.0.extended_thinking_budget.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.llm.oneOf.0.extended_thinking_budget","typeLabel":"integer | null"},"seed":{"oneOf":[{"type":"integer","title":"Seed","description":"The seed to use for random number generation.","uniqueKey":"oneOf.0.llm.oneOf.0.seed.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Seed","description":"The seed to use for random number generation.","uniqueKey":"oneOf.0.llm.oneOf.0.seed.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.llm.oneOf.0.seed","typeLabel":"integer | null"},"usage_id":{"type":"string","title":"Usage Id","description":"Unique usage identifier for the LLM. Used for registry lookups, telemetry, and spend tracking.","default":"default","openhands_settings":{"depends_on":[],"prominence":"minor"},"uniqueKey":"oneOf.0.llm.oneOf.0.usage_id","typeLabel":"string"},"litellm_extra_body":{"additionalProperties":true,"type":"object","title":"Litellm Extra Body","description":"Additional key-value pairs to pass to litellm's extra_body parameter. This is useful for custom inference endpoints that need additional parameters for configuration, routing, or advanced features. NOTE: Not all LLM providers support extra_body parameters. Some providers (e.g., OpenAI) may reject requests with unrecognized options. This is commonly supported by: - LiteLLM proxy servers (routing metadata, tracing) - vLLM endpoints (return_token_ids, etc.) - Custom inference clusters Examples: - Proxy routing: {'trace_version': '1.0.0', 'tags': ['agent:my-agent']} - vLLM features: {'return_token_ids': True}","openhands_settings":{"depends_on":[],"prominence":"minor"},"uniqueKey":"oneOf.0.llm.oneOf.0.litellm_extra_body","typeLabel":"Litellm Extra Body · object"},"fallback_strategy":{"oneOf":[{"type":"object","title":"FallbackStrategy","description":"Optional fallback strategy for trying alternate LLMs on transient failure. Construct with FallbackStrategy(fallback_llms=[...]).Excluded from serialization; must be reconfigured after load.","required":["fallback_llms"],"properties":{"fallback_llms":{"items":{"type":"string","uniqueKey":"oneOf.0.llm.oneOf.0.fallback_strategy.oneOf.0.fallback_llms.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Fallback Llms","description":"Ordered list of LLM profile names to try on transient failure.","isRequired":true,"uniqueKey":"oneOf.0.llm.oneOf.0.fallback_strategy.oneOf.0.fallback_llms","typeLabel":"string[]"},"profile_store_dir":{"oneOf":[{"type":"string","title":"Profile Store Dir","description":"Path to directory containing profiles. If not specified, defaults to `.openhands/profiles`.","uniqueKey":"oneOf.0.llm.oneOf.0.fallback_strategy.oneOf.0.profile_store_dir.oneOf.0","typeLabel":"string"},{"type":"string","title":"Profile Store Dir","description":"Path to directory containing profiles. If not specified, defaults to `.openhands/profiles`.","format":"path","uniqueKey":"oneOf.0.llm.oneOf.0.fallback_strategy.oneOf.0.profile_store_dir.oneOf.1","typeLabel":"string\u003cpath>"},{"type":"null","title":"Profile Store Dir","description":"Path to directory containing profiles. If not specified, defaults to `.openhands/profiles`.","uniqueKey":"oneOf.0.llm.oneOf.0.fallback_strategy.oneOf.0.profile_store_dir.oneOf.2","typeLabel":"null"}],"uniqueKey":"oneOf.0.llm.oneOf.0.fallback_strategy.oneOf.0.profile_store_dir","typeLabel":"string | string\u003cpath> | null"}},"uniqueKey":"oneOf.0.llm.oneOf.0.fallback_strategy.oneOf.0","typeLabel":"FallbackStrategy · object"},{"type":"null","description":"Optional fallback strategy for trying alternate LLMs on transient failure. Construct with FallbackStrategy(fallback_llms=[...]).Excluded from serialization; must be reconfigured after load.","uniqueKey":"oneOf.0.llm.oneOf.0.fallback_strategy.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.llm.oneOf.0.fallback_strategy","typeLabel":"FallbackStrategy · object | null"}},"additionalProperties":false,"uniqueKey":"oneOf.0.llm.oneOf.0","typeLabel":"StrictLLM · object"},{"type":"null","uniqueKey":"oneOf.0.llm.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.llm","typeLabel":"StrictLLM · object | null"},"preserve_existing_api_key":{"type":"boolean","title":"Preserve Existing Api Key","default":false,"uniqueKey":"oneOf.0.preserve_existing_api_key","typeLabel":"boolean"}},"uniqueKey":"oneOf.0","typeLabel":"SaveProfileRequest · object"},{"type":"null","title":"Request","uniqueKey":"oneOf.1","typeLabel":"null"}],"uniqueKey":"","typeLabel":"SaveProfileRequest · object | null"},"examples":{"Example":{"title":"Example","value":{"include_secrets":true,"llm":{"model":"gpt-5.5","api_key":"\u003cstring>","auth_type":"api_key","subscription_vendor":"openai","base_url":"\u003cstring>","api_version":"\u003cstring>","aws_access_key_id":"\u003cstring>","aws_secret_access_key":"\u003cstring>","aws_session_token":"\u003cstring>","aws_region_name":"\u003cstring>","aws_profile_name":"\u003cstring>","aws_role_name":"\u003cstring>","aws_session_name":"\u003cstring>","aws_bedrock_runtime_endpoint":"\u003cstring>","openrouter_site_url":"https://docs.all-hands.dev/","openrouter_app_name":"OpenHands","num_retries":5,"retry_multiplier":8,"retry_min_wait":8,"retry_max_wait":64,"timeout":300,"max_message_chars":30000,"temperature":1,"top_p":0.5,"top_k":1,"max_input_tokens":2,"max_output_tokens":2,"model_canonical_name":"\u003cstring>","api_mode":"auto","capability_overrides":{},"extra_headers":{},"input_cost_per_token":1,"output_cost_per_token":1,"ollama_base_url":"\u003cstring>","stream":false,"drop_params":true,"modify_params":true,"disable_vision":true,"disable_stop_word":false,"caching_prompt":true,"log_completions":false,"log_completions_folder":"logs/completions","custom_tokenizer":"\u003cstring>","native_tool_calling":true,"force_string_serializer":true,"inline_image_urls":true,"reasoning_effort":"high","enable_encrypted_reasoning":true,"prompt_cache_retention":"24h","extended_thinking_budget":200000,"seed":123,"usage_id":"default","litellm_extra_body":{},"fallback_strategy":{"fallback_llms":["\u003cstring>"],"profile_store_dir":"\u003cstring>"}},"preserve_existing_api_key":false}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"e92aca82-61f4-4658-a3fb-fb6b437a3508":{"description":"Successful Response","content":{"application/json":{"schema":{"properties":{"name":{"type":"string","title":"Name","isRequired":true,"uniqueKey":"name","typeLabel":"string"},"message":{"type":"string","title":"Message","isRequired":true,"uniqueKey":"message","typeLabel":"string"}},"type":"object","required":["name","message"],"title":"ProfileMutationResponse","description":"Response body for save/delete operations.","uniqueKey":"","typeLabel":"ProfileMutationResponse · object"},"examples":{"Example":{"title":"Example","value":{"name":"\u003cstring>","message":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"f4992cc1-9928-488c-99a7-81f0bdf26727":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"oneOf":[{"type":"string","uniqueKey":"detail.items.[INDEX].loc.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"integer","uniqueKey":"detail.items.[INDEX].loc.items.[INDEX].oneOf.1","typeLabel":"integer"}],"uniqueKey":"detail.items.[INDEX].loc.items.[INDEX]","typeLabel":"string | integer"},"type":"array","title":"Location","isRequired":true,"uniqueKey":"detail.items.[INDEX].loc","typeLabel":"(string | integer)[]"},"msg":{"type":"string","title":"Message","isRequired":true,"uniqueKey":"detail.items.[INDEX].msg","typeLabel":"string"},"type":{"type":"string","title":"Error Type","isRequired":true,"uniqueKey":"detail.items.[INDEX].type","typeLabel":"string"},"input":{"oneOf":[{"title":"Input"}],"uniqueKey":"detail.items.[INDEX].input","typeLabel":"any"},"ctx":{"type":"object","title":"Context","uniqueKey":"detail.items.[INDEX].ctx","typeLabel":"Context · object"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError","uniqueKey":"detail.items.[INDEX]","typeLabel":"ValidationError · object"},"type":"array","title":"Detail","uniqueKey":"detail","typeLabel":"ValidationError · object[]"}},"type":"object","title":"HTTPValidationError","uniqueKey":"","typeLabel":"HTTPValidationError · object"},"examples":{"Example":{"title":"Example","value":{"detail":[{"loc":["\u003cstring>"],"msg":"\u003cstring>","type":"\u003cstring>","input":"\u003cunknown>","ctx":{}}]}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"ad7847aa-34dc-4e4c-a049-89934cd1da89":{"APIKeyHeader":{"type":"apiKey","in":"header","name":"X-Access-Token","scopes":[]}}},"servers":{},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"X-Access-Token","scopes":[]},"schema":{"title":"X-Access-Token","type":"string","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"APIKeyHeader","name":"X-Access-Token"}],"title":"APIKeyHeader"}]},"originalFileLocation":"openapi/openhands-cloud.json"},"subdomain":"allhandsai","siteName":"OpenHands Docs","title":"Save Profile - OpenHands Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-08-13T18:51:54.510Z","originalFileLocation":"openhands/usage/cloud/api-reference/settings/save-profile.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"light\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Save an LLM configuration as a named profile. If request.llm is supplied, it is saved as the profile\u0026#x27;s config. Otherwise the current agent_settings.llm is snapshotted. Existing profiles with the same name are overwritten. Runs inside a per-user lock to prevent lost updates between concurrent profile writes. Returns 409 if the user is already at the profile cap (:data:MAX_PROFILES_PER_USER).\">\u003cmeta data-mint-head name=\"application-name\" content=\"OpenHands Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/allhandsai/NJyVpY-OoVetrcKF/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/allhandsai/NJyVpY-OoVetrcKF/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/allhandsai/NJyVpY-OoVetrcKF/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/allhandsai/NJyVpY-OoVetrcKF/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/allhandsai/NJyVpY-OoVetrcKF/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/allhandsai/NJyVpY-OoVetrcKF/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/allhandsai/NJyVpY-OoVetrcKF/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/allhandsai/NJyVpY-OoVetrcKF/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/allhandsai/NJyVpY-OoVetrcKF/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Save Profile - OpenHands Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Save an LLM configuration as a named profile. If request.llm is supplied, it is saved as the profile\u0026#x27;s config. Otherwise the current agent_settings.llm is snapshotted. Existing profiles with the same name are overwritten. Runs inside a per-user lock to prevent lost updates between concurrent profile writes. Returns 409 if the user is already at the profile cap (:data:MAX_PROFILES_PER_USER).\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"OpenHands Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.openhands.dev/openhands/usage/cloud/api-reference/settings/save-profile\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://allhandsai.mintlify.site/_mintlify/api/og/v2?division=Settings\u0026amp;title=Save+Profile\u0026amp;description=Save+an+LLM+configuration+as+a+named+profile.%0A%0AIf+%60%60request.llm%60%60+is+supplied%2C+it+is+saved+as+the+profile%27s+config.%0AOtherwise+the+current+%60%60agent_settings.llm%60%60\u0026amp;theme=2eb43b0b1453a2072ec6e8c0\u0026amp;signature=72f5707892d593724d56b943b824de2119f449393f346b2f910a74dbe5df2373\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Save Profile - OpenHands Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Save an LLM configuration as a named profile. If request.llm is supplied, it is saved as the profile\u0026#x27;s config. Otherwise the current agent_settings.llm is snapshotted. Existing profiles with the same name are overwritten. Runs inside a per-user lock to prevent lost updates between concurrent profile writes. Returns 409 if the user is already at the profile cap (:data:MAX_PROFILES_PER_USER).\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://allhandsai.mintlify.site/_mintlify/api/og/v2?division=Settings\u0026amp;title=Save+Profile\u0026amp;description=Save+an+LLM+configuration+as+a+named+profile.%0A%0AIf+%60%60request.llm%60%60+is+supplied%2C+it+is+saved+as+the+profile%27s+config.%0AOtherwise+the+current+%60%60agent_settings.llm%60%60\u0026amp;theme=2eb43b0b1453a2072ec6e8c0\u0026amp;signature=72f5707892d593724d56b943b824de2119f449393f346b2f910a74dbe5df2373\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/allhandsai/NJyVpY-OoVetrcKF/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"OpenHands Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#99873c\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.openhands.dev/openhands/usage/cloud/api-reference/settings/save-profile\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/openhands/usage/cloud/api-reference/settings/save-profile.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.openhands.dev/#organization\",\"name\":\"OpenHands Docs\",\"url\":\"https://docs.openhands.dev\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/allhandsai/DjhqLcIy_hW6pRTg/logo/light.png?fit=max\u0026auto=format\u0026n=DjhqLcIy_hW6pRTg\u0026q=85\u0026s=49b636402b03f7279ca5e1afefeec1d2\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.openhands.dev#website\",\"name\":\"OpenHands Docs\",\"url\":\"https://docs.openhands.dev\",\"publisher\":{\"@id\":\"https://docs.openhands.dev/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.openhands.dev/openhands/usage/cloud/api-reference/settings/save-profile#webpage\",\"url\":\"https://docs.openhands.dev/openhands/usage/cloud/api-reference/settings/save-profile\",\"name\":\"Save Profile\",\"description\":\"Save an LLM configuration as a named profile. If request.llm is supplied, it is saved as the profile's config. Otherwise the current agent_settings.llm is snapshotted. Existing profiles with the same name are overwritten. Runs inside a per-user lock to prevent lost updates between concurrent profile writes. Returns 409 if the user is already at the profile cap (:data:MAX_PROFILES_PER_USER).\",\"dateModified\":\"2026-08-13T18:51:54.510Z\",\"isPartOf\":{\"@id\":\"https://docs.openhands.dev#website\"},\"breadcrumb\":{\"@id\":\"https://docs.openhands.dev/openhands/usage/cloud/api-reference/settings/save-profile#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.openhands.dev/openhands/usage/cloud/api-reference/settings/save-profile#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Cloud API\",\"item\":\"https://docs.openhands.dev/openhands/usage/cloud/cloud-api\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"REST API Reference\",\"item\":\"https://docs.openhands.dev/openhands/usage/cloud/api-reference/events/search-events\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Settings\",\"item\":\"https://docs.openhands.dev/openhands/usage/cloud/api-reference/settings/load-settings\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Save Profile\",\"item\":\"https://docs.openhands.dev/openhands/usage/cloud/api-reference/settings/save-profile\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.openhands.dev/openhands/usage/cloud/api-reference/settings/save-profile#apireference\",\"headline\":\"Save Profile\",\"name\":\"Save Profile\",\"description\":\"Save an LLM configuration as a named profile. If request.llm is supplied, it is saved as the profile's config. Otherwise the current agent_settings.llm is snapshotted. Existing profiles with the same name are overwritten. Runs inside a per-user lock to prevent lost updates between concurrent profile writes. Returns 409 if the user is already at the profile cap (:data:MAX_PROFILES_PER_USER).\",\"url\":\"https://docs.openhands.dev/openhands/usage/cloud/api-reference/settings/save-profile\",\"mainEntityOfPage\":{\"@id\":\"https://docs.openhands.dev/openhands/usage/cloud/api-reference/settings/save-profile#webpage\"},\"dateModified\":\"2026-08-13T18:51:54.510Z\",\"publisher\":{\"@id\":\"https://docs.openhands.dev/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.openhands.dev#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"OpenHands Docs\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"OpenHands Docs\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/openhands/usage/cloud/api-reference/settings/save-profile.md","siteName":"OpenHands Docs","nav":{"global":null,"tabs":[{"tab":"Home","pages":[{"title":"Home","href":"/overview/introduction"}]},{"tab":"Agent Canvas","pages":[{"title":"Agent Canvas","href":"/openhands/usage/agent-canvas/overview"}]},{"tab":"SDK","pages":[{"title":"SDK","href":"/sdk"}]},{"tab":"Cloud","pages":[{"group":"OpenHands Cloud","pages":[{"title":"Getting Started","href":"/openhands/usage/cloud/openhands-cloud"},{"title":"Cloud UI","href":"/openhands/usage/cloud/cloud-ui"}]},{"group":"Settings","pages":[{"title":"API Keys Settings","href":"/openhands/usage/settings/api-keys-settings"}]},{"group":"Integrations","pages":[{"title":"Integrations Settings","href":"/openhands/usage/settings/integrations-settings"},{"title":"GitHub Integration","href":"/openhands/usage/cloud/github-installation"},{"title":"GitLab Integration","href":"/openhands/usage/cloud/gitlab-installation"},{"title":"Bitbucket Integration","href":"/openhands/usage/cloud/bitbucket-installation"},{"title":"Slack Integration","href":"/openhands/usage/cloud/slack-installation"},{"title":"Jira Cloud Integration","href":"/openhands/usage/cloud/project-management/jira-integration"}]},{"group":"Cloud API","pages":[{"title":"Cloud API Overview","href":"/openhands/usage/cloud/cloud-api"},{"title":"Plugin Launcher","href":"/openhands/usage/cloud/plugin-launcher"},{"group":"REST API Reference","expanded":false,"pages":[{"group":"Events","pages":[{"title":"Search Events","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/v1/conversation/{conversation_id}/events/search","href":"/openhands/usage/cloud/api-reference/events/search-events"},{"title":"Count Events","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/v1/conversation/{conversation_id}/events/count","href":"/openhands/usage/cloud/api-reference/events/count-events"},{"title":"Batch Get Events","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/v1/conversation/{conversation_id}/events","href":"/openhands/usage/cloud/api-reference/events/batch-get-events"}]},{"group":"Conversations","pages":[{"title":"Search App Conversations","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/v1/app-conversations/search","href":"/openhands/usage/cloud/api-reference/conversations/search-app-conversations"},{"title":"Count App Conversations","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/v1/app-conversations/count","href":"/openhands/usage/cloud/api-reference/conversations/count-app-conversations"},{"title":"Batch Get App Conversations","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/v1/app-conversations","href":"/openhands/usage/cloud/api-reference/conversations/batch-get-app-conversations"},{"title":"Start App Conversation","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /api/v1/app-conversations","href":"/openhands/usage/cloud/api-reference/conversations/start-app-conversation"},{"title":"Delete App Conversation","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json delete /api/v1/app-conversations/{conversation_id}","href":"/openhands/usage/cloud/api-reference/conversations/delete-app-conversation"},{"title":"Update App Conversation","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json patch /api/v1/app-conversations/{conversation_id}","href":"/openhands/usage/cloud/api-reference/conversations/update-app-conversation"},{"title":"Send Message To Conversation","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /api/v1/app-conversations/{conversation_id}/send-message","href":"/openhands/usage/cloud/api-reference/conversations/send-message-to-conversation"},{"title":"Switch Conversation Profile","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /api/v1/app-conversations/{conversation_id}/switch_profile","href":"/openhands/usage/cloud/api-reference/conversations/switch-conversation-profile"},{"title":"Switch Conversation Acp Model","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /api/v1/app-conversations/{conversation_id}/switch_acp_model","href":"/openhands/usage/cloud/api-reference/conversations/switch-conversation-acp-model"},{"title":"Stream App Conversation Start","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /api/v1/app-conversations/stream-start","href":"/openhands/usage/cloud/api-reference/conversations/stream-app-conversation-start"},{"title":"Search App Conversation Start Tasks","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/v1/app-conversations/start-tasks/search","href":"/openhands/usage/cloud/api-reference/conversations/search-app-conversation-start-tasks"},{"title":"Count App Conversation Start Tasks","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/v1/app-conversations/start-tasks/count","href":"/openhands/usage/cloud/api-reference/conversations/count-app-conversation-start-tasks"},{"title":"Batch Get App Conversation Start Tasks","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/v1/app-conversations/start-tasks","href":"/openhands/usage/cloud/api-reference/conversations/batch-get-app-conversation-start-tasks"},{"title":"Read Conversation File","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/v1/app-conversations/{conversation_id}/file","href":"/openhands/usage/cloud/api-reference/conversations/read-conversation-file"},{"title":"Get Conversation Git Changes","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/v1/app-conversations/{conversation_id}/git/changes","href":"/openhands/usage/cloud/api-reference/conversations/get-conversation-git-changes"},{"title":"Get Conversation Git Diff","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/v1/app-conversations/{conversation_id}/git/diff","href":"/openhands/usage/cloud/api-reference/conversations/get-conversation-git-diff"},{"title":"Get Conversation Skills","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/v1/app-conversations/{conversation_id}/skills","href":"/openhands/usage/cloud/api-reference/conversations/get-conversation-skills"},{"title":"Get Conversation Hooks","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/v1/app-conversations/{conversation_id}/hooks","href":"/openhands/usage/cloud/api-reference/conversations/get-conversation-hooks"},{"title":"Export Conversation","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/v1/app-conversations/{conversation_id}/download","href":"/openhands/usage/cloud/api-reference/conversations/export-conversation"}]},{"group":"Pending Messages","pages":[{"title":"Queue Pending Message","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /api/v1/conversations/{conversation_id}/pending-messages","href":"/openhands/usage/cloud/api-reference/pending-messages/queue-pending-message"}]},{"group":"Sandbox","pages":[{"title":"Search Sandboxes","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/v1/sandboxes/search","href":"/openhands/usage/cloud/api-reference/sandbox/search-sandboxes"},{"title":"Batch Get Sandboxes","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/v1/sandboxes","href":"/openhands/usage/cloud/api-reference/sandbox/batch-get-sandboxes"},{"title":"Start Sandbox","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /api/v1/sandboxes","href":"/openhands/usage/cloud/api-reference/sandbox/start-sandbox"},{"title":"Pause Sandbox","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /api/v1/sandboxes/{sandbox_id}/pause","href":"/openhands/usage/cloud/api-reference/sandbox/pause-sandbox"},{"title":"Resume Sandbox","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /api/v1/sandboxes/{sandbox_id}/resume","href":"/openhands/usage/cloud/api-reference/sandbox/resume-sandbox"},{"title":"Delete Sandbox","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json delete /api/v1/sandboxes/{id}","href":"/openhands/usage/cloud/api-reference/sandbox/delete-sandbox"},{"title":"List Secret Names","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/v1/sandboxes/{sandbox_id}/settings/secrets","href":"/openhands/usage/cloud/api-reference/sandbox/list-secret-names"},{"title":"Get Secret Value","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/v1/sandboxes/{sandbox_id}/settings/secrets/{secret_name}","href":"/openhands/usage/cloud/api-reference/sandbox/get-secret-value"},{"title":"Search Sandbox Specs","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/v1/sandbox-specs/search","href":"/openhands/usage/cloud/api-reference/sandbox/search-sandbox-specs"},{"title":"Batch Get Sandbox Specs","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/v1/sandbox-specs","href":"/openhands/usage/cloud/api-reference/sandbox/batch-get-sandbox-specs"}]},{"group":"Settings","pages":[{"title":"Load Settings","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/v1/settings","href":"/openhands/usage/cloud/api-reference/settings/load-settings"},{"title":"Store Settings","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /api/v1/settings","href":"/openhands/usage/cloud/api-reference/settings/store-settings"},{"title":"Load Settings Schema","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/v1/settings/agent-schema","href":"/openhands/usage/cloud/api-reference/settings/load-settings-schema"},{"title":"Load Conversation Settings Schema","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/v1/settings/conversation-schema","href":"/openhands/usage/cloud/api-reference/settings/load-conversation-settings-schema"},{"title":"List Profiles","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/v1/settings/profiles","href":"/openhands/usage/cloud/api-reference/settings/list-profiles"},{"title":"Get Profile","description":"Get a specific profile's configuration.\n\nReturns the full LLM config with ``api_key`` nulled out; the sibling\n``api_key_set`` flag reports whether a key is stored.","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/v1/settings/profiles/{name}","href":"/openhands/usage/cloud/api-reference/settings/get-profile"},{"title":"Save Profile","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /api/v1/settings/profiles/{name}","href":"/openhands/usage/cloud/api-reference/settings/save-profile"},{"title":"Delete Profile","description":"Delete a saved profile.\n\nIdempotent: returns success even if the profile didn't exist.","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json delete /api/v1/settings/profiles/{name}","href":"/openhands/usage/cloud/api-reference/settings/delete-profile"},{"title":"Activate Profile","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /api/v1/settings/profiles/{name}/activate","href":"/openhands/usage/cloud/api-reference/settings/activate-profile"},{"title":"Rename Profile","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /api/v1/settings/profiles/{name}/rename","href":"/openhands/usage/cloud/api-reference/settings/rename-profile"}]},{"group":"Secrets","pages":[{"title":"Store Provider Tokens","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /api/v1/secrets/git-providers","href":"/openhands/usage/cloud/api-reference/secrets/store-provider-tokens"},{"title":"Unset Provider Tokens","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json delete /api/v1/secrets/git-providers","href":"/openhands/usage/cloud/api-reference/secrets/unset-provider-tokens"},{"title":"Search Custom Secrets","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/v1/secrets/search","href":"/openhands/usage/cloud/api-reference/secrets/search-custom-secrets"},{"title":"Create Custom Secret","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /api/v1/secrets","href":"/openhands/usage/cloud/api-reference/secrets/create-custom-secret"},{"title":"Update Custom Secret","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json put /api/v1/secrets/{secret_id}","href":"/openhands/usage/cloud/api-reference/secrets/update-custom-secret"},{"title":"Delete Custom Secret","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json delete /api/v1/secrets/{secret_id}","href":"/openhands/usage/cloud/api-reference/secrets/delete-custom-secret"}]},{"group":"User","pages":[{"title":"Get Current User Git Info","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/v1/users/git-info","href":"/openhands/usage/cloud/api-reference/user/get-current-user-git-info"},{"title":"Get Current User Saas","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/v1/users/me","href":"/openhands/usage/cloud/api-reference/user/get-current-user-saas"},{"title":"Get Current User Git Organizations","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/v1/users/git-organizations","href":"/openhands/usage/cloud/api-reference/user/get-current-user-git-organizations"}]},{"group":"Skills","pages":[{"title":"Search Skills","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/v1/skills/search","href":"/openhands/usage/cloud/api-reference/skills/search-skills"},{"title":"Get Marketplace Skills","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /api/v1/skills/marketplace-skills","href":"/openhands/usage/cloud/api-reference/skills/get-marketplace-skills"}]},{"group":"Webhooks","pages":[{"title":"On Conversation Update","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /api/v1/webhooks/conversations","href":"/openhands/usage/cloud/api-reference/webhooks/on-conversation-update"},{"title":"On Event","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /api/v1/webhooks/events/{conversation_id}","href":"/openhands/usage/cloud/api-reference/webhooks/on-event"},{"title":"Get Secret","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/v1/webhooks/secrets","href":"/openhands/usage/cloud/api-reference/webhooks/get-secret"}]},{"group":"Config","pages":[{"title":"Get Web Client Config","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/v1/web-client/config","href":"/openhands/usage/cloud/api-reference/config/get-web-client-config"},{"title":"Search Models","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/v1/config/models/search","href":"/openhands/usage/cloud/api-reference/config/search-models"},{"title":"Search Providers","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/v1/config/providers/search","href":"/openhands/usage/cloud/api-reference/config/search-providers"}]},{"group":"Git","pages":[{"title":"Search User Installations","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/v1/git/installations/search","href":"/openhands/usage/cloud/api-reference/git/search-user-installations"},{"title":"Search Repositories","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/v1/git/repositories/search","href":"/openhands/usage/cloud/api-reference/git/search-repositories"},{"title":"Search Branches","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/v1/git/branches/search","href":"/openhands/usage/cloud/api-reference/git/search-branches"},{"title":"Search Suggested Tasks","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/v1/git/suggested-tasks/search","href":"/openhands/usage/cloud/api-reference/git/search-suggested-tasks"}]},{"group":"Status","pages":[{"title":"Alive","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /alive","href":"/openhands/usage/cloud/api-reference/status/alive"},{"title":"Health","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /health","href":"/openhands/usage/cloud/api-reference/status/health"},{"title":"Get Server Info","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /server_info","href":"/openhands/usage/cloud/api-reference/status/get-server-info"}]},{"group":"API Reference","pages":[{"title":"Is Ready","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /ready","href":"/openhands/usage/cloud/api-reference/is-ready"},{"title":"Is Saas","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /saas","href":"/openhands/usage/cloud/api-reference/is-saas"},{"title":"Authenticate","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /api/authenticate","href":"/openhands/usage/cloud/api-reference/authenticate"},{"title":"Accept Tos","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /api/accept_tos","href":"/openhands/usage/cloud/api-reference/accept-tos"},{"title":"Onboarding Status","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/onboarding_status","href":"/openhands/usage/cloud/api-reference/onboarding-status"},{"title":"Complete Onboarding","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /api/complete_onboarding","href":"/openhands/usage/cloud/api-reference/complete-onboarding"},{"title":"Logout","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /api/logout","href":"/openhands/usage/cloud/api-reference/logout"},{"title":"Refresh Tokens","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/refresh-tokens","href":"/openhands/usage/cloud/api-reference/refresh-tokens"},{"title":"Keycloak Callback","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /oauth/keycloak/callback","href":"/openhands/usage/cloud/api-reference/keycloak-callback"},{"title":"Keycloak Offline Callback","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /oauth/keycloak/offline/callback","href":"/openhands/usage/cloud/api-reference/keycloak-offline-callback"},{"title":"Github Dummy Callback","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /oauth/github/callback","href":"/openhands/usage/cloud/api-reference/github-dummy-callback"},{"title":"Device Authorization","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /oauth/device/authorize","href":"/openhands/usage/cloud/api-reference/device-authorization"},{"title":"Device Token","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /oauth/device/token","href":"/openhands/usage/cloud/api-reference/device-token"},{"title":"Device Verification Authenticated","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /oauth/device/verify-authenticated","href":"/openhands/usage/cloud/api-reference/device-verification-authenticated"},{"title":"Get User App Settings","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/users/app","href":"/openhands/usage/cloud/api-reference/get-user-app-settings"},{"title":"Update User App Settings","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /api/users/app","href":"/openhands/usage/cloud/api-reference/update-user-app-settings"},{"title":"Github Events","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /integration/github/events","href":"/openhands/usage/cloud/api-reference/github-events"},{"title":"Gitlab Events","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /integration/gitlab/events","href":"/openhands/usage/cloud/api-reference/gitlab-events"},{"title":"Get Gitlab Resources","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /integration/gitlab/resources","href":"/openhands/usage/cloud/api-reference/get-gitlab-resources"},{"title":"Reinstall Gitlab Webhook","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /integration/gitlab/reinstall-webhook","href":"/openhands/usage/cloud/api-reference/reinstall-gitlab-webhook"},{"title":"Bitbucket Events","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /integration/bitbucket/events","href":"/openhands/usage/cloud/api-reference/bitbucket-events"},{"title":"List Pending Invitations","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/organizations/{org_id}/members/invite","href":"/openhands/usage/cloud/api-reference/list-pending-invitations"},{"title":"Create Invitation","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /api/organizations/{org_id}/members/invite","href":"/openhands/usage/cloud/api-reference/create-invitation"},{"title":"Revoke Invitation","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json delete /api/organizations/{org_id}/members/invite/{invitation_id}","href":"/openhands/usage/cloud/api-reference/revoke-invitation"},{"title":"Accept Invitation Redirect","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/organizations/members/invite/accept","href":"/openhands/usage/cloud/api-reference/accept-invitation-redirect"},{"title":"Accept Invitation","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /api/organizations/members/invite/accept","href":"/openhands/usage/cloud/api-reference/accept-invitation"},{"title":"Install","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /slack/install","href":"/openhands/usage/cloud/api-reference/install"},{"title":"Install Callback","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /slack/install-callback","href":"/openhands/usage/cloud/api-reference/install-callback"},{"title":"Keycloak Callback","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /slack/keycloak-callback","href":"/openhands/usage/cloud/api-reference/keycloak-callback-1"},{"title":"On Event","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /slack/on-event","href":"/openhands/usage/cloud/api-reference/on-event"},{"title":"On Options Load","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /slack/on-options-load","href":"/openhands/usage/cloud/api-reference/on-options-load"},{"title":"On Form Interaction","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /slack/on-form-interaction","href":"/openhands/usage/cloud/api-reference/on-form-interaction"},{"title":"Jira Events","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /integration/jira/events","href":"/openhands/usage/cloud/api-reference/jira-events"},{"title":"Create Jira Workspace","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /integration/jira/workspaces","href":"/openhands/usage/cloud/api-reference/create-jira-workspace"},{"title":"Get Current Workspace Link","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /integration/jira/workspaces/link","href":"/openhands/usage/cloud/api-reference/get-current-workspace-link"},{"title":"Create Workspace Link","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /integration/jira/workspaces/link","href":"/openhands/usage/cloud/api-reference/create-workspace-link"},{"title":"Jira Callback","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /integration/jira/callback","href":"/openhands/usage/cloud/api-reference/jira-callback"},{"title":"Unlink Workspace","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /integration/jira/workspaces/unlink","href":"/openhands/usage/cloud/api-reference/unlink-workspace"},{"title":"Validate Workspace Integration","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /integration/jira/workspaces/validate/{workspace_name}","href":"/openhands/usage/cloud/api-reference/validate-workspace-integration"},{"title":"Update Email","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /api/email","href":"/openhands/usage/cloud/api-reference/update-email"},{"title":"Resend Email Verification","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json put /api/email/resend","href":"/openhands/usage/cloud/api-reference/resend-email-verification"},{"title":"Verified Email","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/email/verified","href":"/openhands/usage/cloud/api-reference/verified-email"}]},{"group":"Billing","pages":[{"title":"Get Credits","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/billing/credits","href":"/openhands/usage/cloud/api-reference/billing/get-credits"},{"title":"Get Subscription Access","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/billing/subscription-access","href":"/openhands/usage/cloud/api-reference/billing/get-subscription-access"},{"title":"Has Payment Method","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /api/billing/has-payment-method","href":"/openhands/usage/cloud/api-reference/billing/has-payment-method"},{"title":"Create Customer Setup Session","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /api/billing/create-customer-setup-session","href":"/openhands/usage/cloud/api-reference/billing/create-customer-setup-session"},{"title":"Create Checkout Session","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /api/billing/create-checkout-session","href":"/openhands/usage/cloud/api-reference/billing/create-checkout-session"},{"title":"Success Callback","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/billing/success","href":"/openhands/usage/cloud/api-reference/billing/success-callback"},{"title":"Cancel Callback","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/billing/cancel","href":"/openhands/usage/cloud/api-reference/billing/cancel-callback"}]},{"group":"Sharing","pages":[{"title":"Batch Get Shared Conversations","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/shared-conversations","href":"/openhands/usage/cloud/api-reference/sharing/batch-get-shared-conversations"},{"title":"Search Shared Events","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/shared-events/search","href":"/openhands/usage/cloud/api-reference/sharing/search-shared-events"},{"title":"Count Shared Events","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/shared-events/count","href":"/openhands/usage/cloud/api-reference/sharing/count-shared-events"},{"title":"Batch Get Shared Events","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/shared-events","href":"/openhands/usage/cloud/api-reference/sharing/batch-get-shared-events"},{"title":"Get Shared Event","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/shared-events/{conversation_id}/{event_id}","href":"/openhands/usage/cloud/api-reference/sharing/get-shared-event"}]},{"group":"Keys","pages":[{"title":"Check Byor Permitted","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/keys/llm/byor/permitted","href":"/openhands/usage/cloud/api-reference/keys/check-byor-permitted"},{"title":"List Api Keys","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/keys","href":"/openhands/usage/cloud/api-reference/keys/list-api-keys"},{"title":"Create Api Key","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /api/keys","href":"/openhands/usage/cloud/api-reference/keys/create-api-key"},{"title":"Delete Api Key","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json delete /api/keys/{key_id}","href":"/openhands/usage/cloud/api-reference/keys/delete-api-key"},{"title":"Get Current Api Key","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/keys/current","href":"/openhands/usage/cloud/api-reference/keys/get-current-api-key"},{"title":"Refresh Managed Llm Api Key","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /api/keys/llm/managed/refresh","href":"/openhands/usage/cloud/api-reference/keys/refresh-managed-llm-api-key"},{"title":"Get Llm Api Key For Byor","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/keys/llm/byor","href":"/openhands/usage/cloud/api-reference/keys/get-llm-api-key-for-byor"},{"title":"Refresh Llm Api Key For Byor","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /api/keys/llm/byor/refresh","href":"/openhands/usage/cloud/api-reference/keys/refresh-llm-api-key-for-byor"}]},{"group":"Service","pages":[{"title":"Service Health","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/service/health","href":"/openhands/usage/cloud/api-reference/service/service-health"},{"title":"Get Or Create Api Key For User","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /api/service/users/{user_id}/orgs/{org_id}/api-keys","href":"/openhands/usage/cloud/api-reference/service/get-or-create-api-key-for-user"},{"title":"Delete User Api Key","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json delete /api/service/users/{user_id}/orgs/{org_id}/api-keys/{key_name}","href":"/openhands/usage/cloud/api-reference/service/delete-user-api-key"}]},{"group":"Orgs","pages":[{"title":"List User Orgs","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/organizations","href":"/openhands/usage/cloud/api-reference/orgs/list-user-orgs"},{"title":"Create Org","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /api/organizations","href":"/openhands/usage/cloud/api-reference/orgs/create-org"},{"title":"Get Org Defaults Settings","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/organizations/{org_id}/settings","href":"/openhands/usage/cloud/api-reference/orgs/get-org-defaults-settings"},{"title":"Update Org Defaults Settings","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json patch /api/organizations/{org_id}/settings","href":"/openhands/usage/cloud/api-reference/orgs/update-org-defaults-settings"},{"title":"Get Legacy Org Defaults Settings","deprecated":true,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/organizations/llm","href":"/openhands/usage/cloud/api-reference/orgs/get-legacy-org-defaults-settings"},{"title":"Update Legacy Org Defaults Settings","deprecated":true,"version":null,"openapi":"/openapi/openhands-cloud.json post /api/organizations/llm","href":"/openhands/usage/cloud/api-reference/orgs/update-legacy-org-defaults-settings"},{"title":"Get Org App Settings","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/organizations/app","href":"/openhands/usage/cloud/api-reference/orgs/get-org-app-settings"},{"title":"Update Org App Settings","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /api/organizations/app","href":"/openhands/usage/cloud/api-reference/orgs/update-org-app-settings"},{"title":"Get Org","deprecated":true,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/organizations/{org_id}","href":"/openhands/usage/cloud/api-reference/orgs/get-org"},{"title":"Delete Org","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json delete /api/organizations/{org_id}","href":"/openhands/usage/cloud/api-reference/orgs/delete-org"},{"title":"Update Org","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json patch /api/organizations/{org_id}","href":"/openhands/usage/cloud/api-reference/orgs/update-org"},{"title":"Get Me","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/organizations/{org_id}/me","href":"/openhands/usage/cloud/api-reference/orgs/get-me"},{"title":"Get Org Members","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/organizations/{org_id}/members","href":"/openhands/usage/cloud/api-reference/orgs/get-org-members"},{"title":"Get Org Members Count","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/organizations/{org_id}/members/count","href":"/openhands/usage/cloud/api-reference/orgs/get-org-members-count"},{"title":"Get Org Members Financial","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/organizations/{org_id}/members/financial","href":"/openhands/usage/cloud/api-reference/orgs/get-org-members-financial"},{"title":"Get Org Budget Settings","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/organizations/{org_id}/budgets","href":"/openhands/usage/cloud/api-reference/orgs/get-org-budget-settings"},{"title":"Update Org Budget Settings","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json patch /api/organizations/{org_id}/budgets","href":"/openhands/usage/cloud/api-reference/orgs/update-org-budget-settings"},{"title":"Upsert Org Budget Override","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json put /api/organizations/{org_id}/budgets/overrides/{user_id}","href":"/openhands/usage/cloud/api-reference/orgs/upsert-org-budget-override"},{"title":"Delete Org Budget Override","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json delete /api/organizations/{org_id}/budgets/overrides/{user_id}","href":"/openhands/usage/cloud/api-reference/orgs/delete-org-budget-override"},{"title":"Remove Org Member","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json delete /api/organizations/{org_id}/members/{user_id}","href":"/openhands/usage/cloud/api-reference/orgs/remove-org-member"},{"title":"Update Org Member","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json patch /api/organizations/{org_id}/members/{user_id}","href":"/openhands/usage/cloud/api-reference/orgs/update-org-member"},{"title":"Switch Org","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /api/organizations/{org_id}/switch","href":"/openhands/usage/cloud/api-reference/orgs/switch-org"},{"title":"Get Git Claims","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/organizations/{org_id}/git-claims","href":"/openhands/usage/cloud/api-reference/orgs/get-git-claims"},{"title":"Claim Git Organization","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /api/organizations/{org_id}/git-claims","href":"/openhands/usage/cloud/api-reference/orgs/claim-git-organization"},{"title":"Disconnect Git Organization","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json delete /api/organizations/{org_id}/git-claims/{claim_id}","href":"/openhands/usage/cloud/api-reference/orgs/disconnect-git-organization"},{"title":"List Org Conversations","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/organizations/{org_id}/conversations","href":"/openhands/usage/cloud/api-reference/orgs/list-org-conversations"},{"title":"Get Org Conversation Stats","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/organizations/{org_id}/conversations/stats","href":"/openhands/usage/cloud/api-reference/orgs/get-org-conversation-stats"},{"title":"Get Org Conversation Usage Stats","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/organizations/{org_id}/conversations/usage-stats","href":"/openhands/usage/cloud/api-reference/orgs/get-org-conversation-usage-stats"},{"title":"Get Org Conversation User Usage Stats","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/organizations/{org_id}/conversations/user-usage","href":"/openhands/usage/cloud/api-reference/orgs/get-org-conversation-user-usage-stats"},{"title":"Export Org Conversations Csv","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/organizations/{org_id}/conversations/export","href":"/openhands/usage/cloud/api-reference/orgs/export-org-conversations-csv"},{"title":"Get Org Conversation","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/organizations/{org_id}/conversations/{conversation_id}","href":"/openhands/usage/cloud/api-reference/orgs/get-org-conversation"},{"title":"Stop Org Conversation","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /api/organizations/{org_id}/conversations/{conversation_id}/stop","href":"/openhands/usage/cloud/api-reference/orgs/stop-org-conversation"}]},{"group":"Admin","pages":[{"title":"List Super Admins","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/admin/super-admins","href":"/openhands/usage/cloud/api-reference/admin/list-super-admins"},{"title":"Grant Super Admin","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /api/admin/super-admins","href":"/openhands/usage/cloud/api-reference/admin/grant-super-admin"},{"title":"Revoke Super Admin","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json delete /api/admin/super-admins/{user_id}","href":"/openhands/usage/cloud/api-reference/admin/revoke-super-admin"}]},{"group":"Organization Profiles","pages":[{"title":"List Profiles","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/organizations/{org_id}/profiles","href":"/openhands/usage/cloud/api-reference/organization-profiles/list-profiles"},{"title":"Get Profile","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/organizations/{org_id}/profiles/{name}","href":"/openhands/usage/cloud/api-reference/organization-profiles/get-profile"},{"title":"Save Profile","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /api/organizations/{org_id}/profiles/{name}","href":"/openhands/usage/cloud/api-reference/organization-profiles/save-profile"},{"title":"Delete Profile","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json delete /api/organizations/{org_id}/profiles/{name}","href":"/openhands/usage/cloud/api-reference/organization-profiles/delete-profile"},{"title":"Activate Profile","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /api/organizations/{org_id}/profiles/{name}/activate","href":"/openhands/usage/cloud/api-reference/organization-profiles/activate-profile"},{"title":"Rename Profile","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /api/organizations/{org_id}/profiles/{name}/rename","href":"/openhands/usage/cloud/api-reference/organization-profiles/rename-profile"}]},{"group":"Agent Profiles","pages":[{"title":"List Agent Profiles","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/agent-profiles","href":"/openhands/usage/cloud/api-reference/agent-profiles/list-agent-profiles"},{"title":"Get Agent Profile","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/agent-profiles/{name}","href":"/openhands/usage/cloud/api-reference/agent-profiles/get-agent-profile"},{"title":"Save Agent Profile","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /api/agent-profiles/{name}","href":"/openhands/usage/cloud/api-reference/agent-profiles/save-agent-profile"},{"title":"Delete Agent Profile","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json delete /api/agent-profiles/{name}","href":"/openhands/usage/cloud/api-reference/agent-profiles/delete-agent-profile"},{"title":"Rename Agent Profile","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /api/agent-profiles/{name}/rename","href":"/openhands/usage/cloud/api-reference/agent-profiles/rename-agent-profile"},{"title":"Activate Agent Profile","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /api/agent-profiles/{profile_id}/activate","href":"/openhands/usage/cloud/api-reference/agent-profiles/activate-agent-profile"},{"title":"Materialize Agent Profile","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /api/agent-profiles/{name}/materialize","href":"/openhands/usage/cloud/api-reference/agent-profiles/materialize-agent-profile"}]},{"group":"Verified Models","pages":[{"title":"Search Verified Models","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json get /api/admin/verified-models","href":"/openhands/usage/cloud/api-reference/verified-models/search-verified-models"},{"title":"Create Verified Model","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /api/admin/verified-models","href":"/openhands/usage/cloud/api-reference/verified-models/create-verified-model"},{"title":"Update Verified Model","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json put /api/admin/verified-models/{provider}/{model_name}","href":"/openhands/usage/cloud/api-reference/verified-models/update-verified-model"},{"title":"Delete Verified Model","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json delete /api/admin/verified-models/{provider}/{model_name}","href":"/openhands/usage/cloud/api-reference/verified-models/delete-verified-model"}]},{"group":"Analytics","pages":[{"title":"Track Frontend Event","deprecated":null,"version":null,"openapi":"/openapi/openhands-cloud.json post /api/analytics/events","href":"/openhands/usage/cloud/api-reference/analytics/track-frontend-event"}]}]}]}]},{"tab":"Enterprise","pages":[{"title":"Enterprise","href":"/enterprise"}]},{"tab":"Enterprise Cookbook","pages":[{"title":"Enterprise Cookbook","href":"/cookbook"}]}]},"basePath":"","title":"Save Profile - OpenHands Docs","buildId":"dpl_41S5Z2jG9QnfDRwN1KZrLdBwj7DM","deploymentId":"dpl_41S5Z2jG9QnfDRwN1KZrLdBwj7DM","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DDP9JXtj.js","utils-8yQyvEtx.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-CBCFR8Sn.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-rQaXkUHa.js","snippetPresets-J5KpBTgV.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-BVxVH4Cj.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BxdQ2vIi.js","shallow-BjV2tFiD.js","getApiPlaygroundDisplay-C_55tL4O.js","CodeSnippet-C0JpiCOC.js","CodeSnippets-w9Ps7djG.js","Page-DTNSD-0M.js","getPastedJson-BDfB-H8d.js","icon-g-kUkkO9.js","MethodPill-v4l6fq0h.js","DuplicateIcon-CvLo-CfU.js","createIcon-165clrrV.js","DynamicMarkdown-D3RQ-fEj.js","SectionHeading-vvo-3yLf.js","axios-vUo_bRtp.js","Markdown-CMT1uFWQ.js","clsx-C8f2yC9R.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CI2D8R2Y.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-k78Wrw_e.js"]}