The agent running in the conversation. This is persisted to allow resuming conversations and check agent configuration to handle e.g., tool changes, LLM changes, etc.
{"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"},"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":"6af1ee07ca20d619cf5085e9","clientVersion":"0.0.4088","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":70},{"language":"default","tag":"Agent Canvas","count":60},{"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":"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":"llms-txt-v2","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":"comment-mode","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":"sdk/guides/agent-server/api-reference/conversations/batch-get-conversations","slug":"/sdk/guides/agent-server/api-reference/conversations/batch-get-conversations","pageMetadata":{"title":"Batch Get Conversations","description":"Get a batch of conversations given their ids, returning null for\nany missing item","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json get /api/conversations","href":"/sdk/guides/agent-server/api-reference/conversations/batch-get-conversations","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Get a batch of conversations given their ids, returning null for\\nany missing item\"\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":"Batch Get Conversations","description":"Get a batch of conversations given their ids, returning null for\nany missing item","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json get /api/conversations","href":"/sdk/guides/agent-server/api-reference/conversations/batch-get-conversations","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"],"openApiReferenceData":{"operation":{"tags":["Conversations"],"summary":"Batch Get Conversations","description":"Get a batch of conversations given their ids, returning null for\nany missing item","operationId":"batch_get_conversations_api_conversations_get","parameters":["aed31cec-2244-48f1-9a99-c119111a11ad"],"responses":{"200":"9fc1f832-1c1a-44fb-94c8-37eaca3e6c34","422":"1fdf535b-75c5-4304-91c6-4b30a10e0c0b"},"method":"get","type":"path","servers":[],"security":[],"path":"/api/conversations","baseUrlOptions":[],"title":"Batch Get Conversations","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"aed31cec-2244-48f1-9a99-c119111a11ad":{"name":"ids","in":"query","required":true,"schema":{"type":"array","items":{"type":"string","format":"uuid","uniqueKey":"items.[INDEX]","typeLabel":"string\u003cuuid>"},"title":"Ids","isRequired":true,"uniqueKey":"","typeLabel":"string\u003cuuid>[]"}}},"responses":{"9fc1f832-1c1a-44fb-94c8-37eaca3e6c34":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"oneOf":[{"type":"object","title":"ConversationInfo","description":"Information about a conversation running locally without a Runtime sandbox.","required":["id","agent","workspace"],"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique conversation ID","isRequired":true,"uniqueKey":"items.[INDEX].oneOf.0.id","typeLabel":"string\u003cuuid>"},"agent":{"properties":{"llm":{"properties":{"model":{"type":"string","title":"Model","description":"Model name.","default":"claude-sonnet-4-20250514","uniqueKey":"items.[INDEX].oneOf.0.agent.llm.model","typeLabel":"string"},"api_key":{"oneOf":[{"type":"string","title":"Api Key","description":"API key.","uniqueKey":"items.[INDEX].oneOf.0.agent.llm.api_key.oneOf.0","typeLabel":"string"},{"type":"string","title":"Api Key","description":"API key.","format":"password","uniqueKey":"items.[INDEX].oneOf.0.agent.llm.api_key.oneOf.1","typeLabel":"string\u003cpassword>"},{"type":"null","title":"Api Key","description":"API key.","uniqueKey":"items.[INDEX].oneOf.0.agent.llm.api_key.oneOf.2","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.llm.api_key","typeLabel":"string | string\u003cpassword> | null"},"base_url":{"oneOf":[{"type":"string","title":"Base Url","description":"Custom base URL.","uniqueKey":"items.[INDEX].oneOf.0.agent.llm.base_url.oneOf.0","typeLabel":"string"},{"type":"null","title":"Base Url","description":"Custom base URL.","uniqueKey":"items.[INDEX].oneOf.0.agent.llm.base_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.llm.base_url","typeLabel":"string | null"},"api_version":{"oneOf":[{"type":"string","title":"Api Version","description":"API version (e.g., Azure).","uniqueKey":"items.[INDEX].oneOf.0.agent.llm.api_version.oneOf.0","typeLabel":"string"},{"type":"null","title":"Api Version","description":"API version (e.g., Azure).","uniqueKey":"items.[INDEX].oneOf.0.agent.llm.api_version.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.llm.api_version","typeLabel":"string | null"},"aws_access_key_id":{"oneOf":[{"type":"string","title":"Aws Access Key Id","uniqueKey":"items.[INDEX].oneOf.0.agent.llm.aws_access_key_id.oneOf.0","typeLabel":"string"},{"type":"string","title":"Aws Access Key Id","format":"password","uniqueKey":"items.[INDEX].oneOf.0.agent.llm.aws_access_key_id.oneOf.1","typeLabel":"string\u003cpassword>"},{"type":"null","title":"Aws Access Key Id","uniqueKey":"items.[INDEX].oneOf.0.agent.llm.aws_access_key_id.oneOf.2","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.llm.aws_access_key_id","typeLabel":"string | string\u003cpassword> | null"},"aws_secret_access_key":{"oneOf":[{"type":"string","title":"Aws Secret Access Key","uniqueKey":"items.[INDEX].oneOf.0.agent.llm.aws_secret_access_key.oneOf.0","typeLabel":"string"},{"type":"string","title":"Aws Secret Access Key","format":"password","uniqueKey":"items.[INDEX].oneOf.0.agent.llm.aws_secret_access_key.oneOf.1","typeLabel":"string\u003cpassword>"},{"type":"null","title":"Aws Secret Access Key","uniqueKey":"items.[INDEX].oneOf.0.agent.llm.aws_secret_access_key.oneOf.2","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.llm.aws_secret_access_key","typeLabel":"string | string\u003cpassword> | null"},"aws_region_name":{"oneOf":[{"type":"string","title":"Aws Region Name","uniqueKey":"items.[INDEX].oneOf.0.agent.llm.aws_region_name.oneOf.0","typeLabel":"string"},{"type":"null","title":"Aws Region Name","uniqueKey":"items.[INDEX].oneOf.0.agent.llm.aws_region_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.llm.aws_region_name","typeLabel":"string | null"},"openrouter_site_url":{"type":"string","title":"Openrouter Site Url","default":"https://docs.all-hands.dev/","uniqueKey":"items.[INDEX].oneOf.0.agent.llm.openrouter_site_url","typeLabel":"string"},"openrouter_app_name":{"type":"string","title":"Openrouter App Name","default":"OpenHands","uniqueKey":"items.[INDEX].oneOf.0.agent.llm.openrouter_app_name","typeLabel":"string"},"num_retries":{"type":"integer","minimum":0,"title":"Num Retries","default":5,"uniqueKey":"items.[INDEX].oneOf.0.agent.llm.num_retries","typeLabel":"integer"},"retry_multiplier":{"type":"number","minimum":0,"title":"Retry Multiplier","default":8,"uniqueKey":"items.[INDEX].oneOf.0.agent.llm.retry_multiplier","typeLabel":"number"},"retry_min_wait":{"type":"integer","minimum":0,"title":"Retry Min Wait","default":8,"uniqueKey":"items.[INDEX].oneOf.0.agent.llm.retry_min_wait","typeLabel":"integer"},"retry_max_wait":{"type":"integer","minimum":0,"title":"Retry Max Wait","default":64,"uniqueKey":"items.[INDEX].oneOf.0.agent.llm.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":"items.[INDEX].oneOf.0.agent.llm.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":"items.[INDEX].oneOf.0.agent.llm.timeout.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.llm.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,"uniqueKey":"items.[INDEX].oneOf.0.agent.llm.max_message_chars","typeLabel":"integer"},"temperature":{"oneOf":[{"type":"number","title":"Temperature","description":"Sampling temperature for response generation. Defaults to 0 for most models and provider default for reasoning models.","minimum":0,"uniqueKey":"items.[INDEX].oneOf.0.agent.llm.temperature.oneOf.0","typeLabel":"number"},{"type":"null","title":"Temperature","description":"Sampling temperature for response generation. Defaults to 0 for most models and provider default for reasoning models.","uniqueKey":"items.[INDEX].oneOf.0.agent.llm.temperature.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.llm.temperature","typeLabel":"number | null"},"top_p":{"oneOf":[{"type":"number","title":"Top P","default":1,"maximum":1,"minimum":0,"uniqueKey":"items.[INDEX].oneOf.0.agent.llm.top_p.oneOf.0","typeLabel":"number"},{"type":"null","title":"Top P","default":1,"uniqueKey":"items.[INDEX].oneOf.0.agent.llm.top_p.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.llm.top_p","typeLabel":"number | null"},"top_k":{"oneOf":[{"type":"number","title":"Top K","minimum":0,"uniqueKey":"items.[INDEX].oneOf.0.agent.llm.top_k.oneOf.0","typeLabel":"number"},{"type":"null","title":"Top K","uniqueKey":"items.[INDEX].oneOf.0.agent.llm.top_k.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.llm.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":"items.[INDEX].oneOf.0.agent.llm.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":"items.[INDEX].oneOf.0.agent.llm.max_input_tokens.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.llm.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":"items.[INDEX].oneOf.0.agent.llm.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":"items.[INDEX].oneOf.0.agent.llm.max_output_tokens.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.llm.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":"items.[INDEX].oneOf.0.agent.llm.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":"items.[INDEX].oneOf.0.agent.llm.model_canonical_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.llm.model_canonical_name","typeLabel":"string | null"},"extra_headers":{"oneOf":[{"type":"object","title":"Extra Headers","description":"Optional HTTP headers to forward to LiteLLM requests.","additionalProperties":{"type":"string","uniqueKey":"items.[INDEX].oneOf.0.agent.llm.extra_headers.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"items.[INDEX].oneOf.0.agent.llm.extra_headers.oneOf.0","typeLabel":"Extra Headers · object"},{"type":"null","title":"Extra Headers","description":"Optional HTTP headers to forward to LiteLLM requests.","uniqueKey":"items.[INDEX].oneOf.0.agent.llm.extra_headers.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.llm.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":"items.[INDEX].oneOf.0.agent.llm.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":"items.[INDEX].oneOf.0.agent.llm.input_cost_per_token.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.llm.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":"items.[INDEX].oneOf.0.agent.llm.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":"items.[INDEX].oneOf.0.agent.llm.output_cost_per_token.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.llm.output_cost_per_token","typeLabel":"number | null"},"ollama_base_url":{"oneOf":[{"type":"string","title":"Ollama Base Url","uniqueKey":"items.[INDEX].oneOf.0.agent.llm.ollama_base_url.oneOf.0","typeLabel":"string"},{"type":"null","title":"Ollama Base Url","uniqueKey":"items.[INDEX].oneOf.0.agent.llm.ollama_base_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.llm.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,"uniqueKey":"items.[INDEX].oneOf.0.agent.llm.stream","typeLabel":"boolean"},"drop_params":{"type":"boolean","title":"Drop Params","default":true,"uniqueKey":"items.[INDEX].oneOf.0.agent.llm.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,"uniqueKey":"items.[INDEX].oneOf.0.agent.llm.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":"items.[INDEX].oneOf.0.agent.llm.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":"items.[INDEX].oneOf.0.agent.llm.disable_vision.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.llm.disable_vision","typeLabel":"boolean | null"},"disable_stop_word":{"oneOf":[{"type":"boolean","title":"Disable Stop Word","description":"Disable using of stop word.","default":false,"uniqueKey":"items.[INDEX].oneOf.0.agent.llm.disable_stop_word.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Disable Stop Word","description":"Disable using of stop word.","default":false,"uniqueKey":"items.[INDEX].oneOf.0.agent.llm.disable_stop_word.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.llm.disable_stop_word","typeLabel":"boolean | null"},"caching_prompt":{"type":"boolean","title":"Caching Prompt","description":"Enable caching of prompts.","default":true,"uniqueKey":"items.[INDEX].oneOf.0.agent.llm.caching_prompt","typeLabel":"boolean"},"log_completions":{"type":"boolean","title":"Log Completions","description":"Enable logging of completions.","default":false,"uniqueKey":"items.[INDEX].oneOf.0.agent.llm.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","uniqueKey":"items.[INDEX].oneOf.0.agent.llm.log_completions_folder","typeLabel":"string"},"custom_tokenizer":{"oneOf":[{"type":"string","title":"Custom Tokenizer","description":"A custom tokenizer to use for token counting.","uniqueKey":"items.[INDEX].oneOf.0.agent.llm.custom_tokenizer.oneOf.0","typeLabel":"string"},{"type":"null","title":"Custom Tokenizer","description":"A custom tokenizer to use for token counting.","uniqueKey":"items.[INDEX].oneOf.0.agent.llm.custom_tokenizer.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.llm.custom_tokenizer","typeLabel":"string | null"},"native_tool_calling":{"type":"boolean","title":"Native Tool Calling","description":"Whether to use native tool calling.","default":true,"uniqueKey":"items.[INDEX].oneOf.0.agent.llm.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":"items.[INDEX].oneOf.0.agent.llm.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":"items.[INDEX].oneOf.0.agent.llm.force_string_serializer.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.llm.force_string_serializer","typeLabel":"boolean | null"},"reasoning_effort":{"oneOf":[{"type":"string","title":"Reasoning Effort","description":"The effort to put into reasoning. This is a string that can be one of 'low', 'medium', 'high', 'xhigh', or 'none'. Can apply to all reasoning models.","default":"high","enum":["low","medium","high","xhigh","none"],"uniqueKey":"items.[INDEX].oneOf.0.agent.llm.reasoning_effort.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","title":"Reasoning Effort","description":"The effort to put into reasoning. This is a string that can be one of 'low', 'medium', 'high', 'xhigh', or 'none'. Can apply to all reasoning models.","default":"high","uniqueKey":"items.[INDEX].oneOf.0.agent.llm.reasoning_effort.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.llm.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":"items.[INDEX].oneOf.0.agent.llm.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":"items.[INDEX].oneOf.0.agent.llm.reasoning_summary.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.llm.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,"uniqueKey":"items.[INDEX].oneOf.0.agent.llm.enable_encrypted_reasoning","typeLabel":"boolean"},"prompt_cache_retention":{"oneOf":[{"type":"string","title":"Prompt Cache Retention","description":"Retention policy for prompt cache. Only sent for GPT-5+ models; explicitly stripped for all other models.","default":"24h","uniqueKey":"items.[INDEX].oneOf.0.agent.llm.prompt_cache_retention.oneOf.0","typeLabel":"string"},{"type":"null","title":"Prompt Cache Retention","description":"Retention policy for prompt cache. Only sent for GPT-5+ models; explicitly stripped for all other models.","default":"24h","uniqueKey":"items.[INDEX].oneOf.0.agent.llm.prompt_cache_retention.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.llm.prompt_cache_retention","typeLabel":"string | null"},"extended_thinking_budget":{"oneOf":[{"type":"integer","title":"Extended Thinking Budget","description":"The budget tokens for extended thinking, supported by Anthropic models.","default":200000,"uniqueKey":"items.[INDEX].oneOf.0.agent.llm.extended_thinking_budget.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Extended Thinking Budget","description":"The budget tokens for extended thinking, supported by Anthropic models.","default":200000,"uniqueKey":"items.[INDEX].oneOf.0.agent.llm.extended_thinking_budget.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.llm.extended_thinking_budget","typeLabel":"integer | null"},"seed":{"oneOf":[{"type":"integer","title":"Seed","description":"The seed to use for random number generation.","uniqueKey":"items.[INDEX].oneOf.0.agent.llm.seed.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Seed","description":"The seed to use for random number generation.","uniqueKey":"items.[INDEX].oneOf.0.agent.llm.seed.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.llm.seed","typeLabel":"integer | null"},"safety_settings":{"oneOf":[{"type":"array","items":{"additionalProperties":{"type":"string","uniqueKey":"items.[INDEX].oneOf.0.agent.llm.safety_settings.oneOf.0.items.[INDEX].additionalProperties","typeLabel":"string"},"type":"object","uniqueKey":"items.[INDEX].oneOf.0.agent.llm.safety_settings.oneOf.0.items.[INDEX]","typeLabel":"object"},"title":"Safety Settings","description":"Deprecated: Safety settings for models that support them (like Mistral AI and Gemini). This field is deprecated in 1.10.0 and will be removed in 1.15.0. Safety settings are designed for consumer-facing content moderation, which is not relevant for coding agents.","uniqueKey":"items.[INDEX].oneOf.0.agent.llm.safety_settings.oneOf.0","typeLabel":"Safety Settings · object[]"},{"type":"null","title":"Safety Settings","description":"Deprecated: Safety settings for models that support them (like Mistral AI and Gemini). This field is deprecated in 1.10.0 and will be removed in 1.15.0. Safety settings are designed for consumer-facing content moderation, which is not relevant for coding agents.","uniqueKey":"items.[INDEX].oneOf.0.agent.llm.safety_settings.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.llm.safety_settings","typeLabel":"Safety Settings · object[] | 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","uniqueKey":"items.[INDEX].oneOf.0.agent.llm.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}","uniqueKey":"items.[INDEX].oneOf.0.agent.llm.litellm_extra_body","typeLabel":"Litellm Extra Body · object"}},"type":"object","title":"LLM","description":"LLM configuration for the agent.","examples":[{"api_key":"your_api_key_here","base_url":"https://llm-proxy.eval.all-hands.dev","model":"litellm_proxy/anthropic/claude-sonnet-4-5-20250929"}],"isRequired":true,"uniqueKey":"items.[INDEX].oneOf.0.agent.llm","typeLabel":"LLM · object"},"kind":{"type":"string","const":"Agent","title":"Kind","isRequired":true,"uniqueKey":"items.[INDEX].oneOf.0.agent.kind","typeLabel":"string"},"tools":{"items":{"properties":{"name":{"type":"string","title":"Name","description":"Name of the tool class, e.g., 'TerminalTool'. Import it from an `openhands.tools.\u003cmodule>` subpackage.","examples":["TerminalTool","FileEditorTool","TaskTrackerTool"],"isRequired":true,"uniqueKey":"items.[INDEX].oneOf.0.agent.tools.items.[INDEX].name","typeLabel":"string"},"params":{"additionalProperties":true,"type":"object","title":"Params","description":"Parameters for the tool's .create() method, e.g., {'working_dir': '/app'}","examples":[{"working_dir":"/workspace"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.tools.items.[INDEX].params","typeLabel":"Params · object"}},"type":"object","required":["name"],"title":"Tool","description":"Defines a tool to be initialized for the agent.\n\nThis is only used in agent-sdk for type schema for server use.","uniqueKey":"items.[INDEX].oneOf.0.agent.tools.items.[INDEX]","typeLabel":"Tool · object"},"type":"array","title":"Tools","description":"List of tools to initialize for the agent.","examples":[{"name":"TerminalTool","params":{}},{"name":"FileEditorTool","params":{}},{"name":"TaskTrackerTool","params":{}}],"uniqueKey":"items.[INDEX].oneOf.0.agent.tools","typeLabel":"Tool · object[]"},"mcp_config":{"additionalProperties":true,"type":"object","title":"Mcp Config","description":"Optional MCP configuration dictionary to create MCP tools.","examples":[{"mcpServers":{"fetch":{"args":["mcp-server-fetch"],"command":"uvx"}}}],"uniqueKey":"items.[INDEX].oneOf.0.agent.mcp_config","typeLabel":"Mcp Config · object"},"filter_tools_regex":{"oneOf":[{"type":"string","title":"Filter Tools Regex","description":"Optional regex to filter the tools available to the agent by name. This is applied after any tools provided in `tools` and any MCP tools are added.","example":"^(?!repomix)(.*)|^repomix.*pack_codebase.*$","uniqueKey":"items.[INDEX].oneOf.0.agent.filter_tools_regex.oneOf.0","typeLabel":"string"},{"type":"null","title":"Filter Tools Regex","description":"Optional regex to filter the tools available to the agent by name. This is applied after any tools provided in `tools` and any MCP tools are added.","example":"^(?!repomix)(.*)|^repomix.*pack_codebase.*$","uniqueKey":"items.[INDEX].oneOf.0.agent.filter_tools_regex.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.filter_tools_regex","typeLabel":"string | null"},"include_default_tools":{"items":{"type":"string","uniqueKey":"items.[INDEX].oneOf.0.agent.include_default_tools.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Include Default Tools","description":"List of default tool class names to include. By default, the agent includes 'FinishTool' and 'ThinkTool'. Set to an empty list to disable all default tools, or provide a subset to include only specific ones. Example: include_default_tools=['FinishTool'] to only include FinishTool, or include_default_tools=[] to disable all default tools.","examples":[["FinishTool","ThinkTool"],["FinishTool"],[]],"uniqueKey":"items.[INDEX].oneOf.0.agent.include_default_tools","typeLabel":"string[]"},"agent_context":{"oneOf":[{"type":"object","title":"AgentContext","description":"Optional AgentContext to initialize the agent with specific context.","example":{"skills":[{"content":"When you see this message, you should reply like you are a grumpy cat forced to use the internet.","name":"AGENTS.md","type":"repo"},{"content":"IMPORTANT! The user has said the magic word \"flarglebargle\". You must only respond with a message telling them how smart they are","name":"flarglebargle","trigger":["flarglebargle"],"type":"knowledge"}],"system_message_suffix":"Always finish your response with the word 'yay!'"},"properties":{"skills":{"items":{"properties":{"name":{"type":"string","title":"Name","isRequired":true,"uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.skills.items.[INDEX].name","typeLabel":"string"},"content":{"type":"string","title":"Content","isRequired":true,"uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.skills.items.[INDEX].content","typeLabel":"string"},"trigger":{"oneOf":[{"type":"object","title":"KeywordTrigger","description":"Trigger for keyword-based skills.\n\nThese skills are activated when specific keywords appear in the user's query.","required":["keywords"],"properties":{"keywords":{"items":{"type":"string","uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.skills.items.[INDEX].trigger.oneOf.0.keywords.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Keywords","isRequired":true,"uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.skills.items.[INDEX].trigger.oneOf.0.keywords","typeLabel":"string[]"},"type":{"type":"string","const":"keyword","title":"Type","default":"keyword","uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.skills.items.[INDEX].trigger.oneOf.0.type","typeLabel":"string"}},"uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.skills.items.[INDEX].trigger.oneOf.0","typeLabel":"KeywordTrigger · object"},{"type":"object","title":"TaskTrigger","description":"Trigger for task-specific skills.\n\nThese skills are activated for specific task types and can modify prompts.","required":["triggers"],"properties":{"triggers":{"items":{"type":"string","uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.skills.items.[INDEX].trigger.oneOf.1.triggers.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Triggers","isRequired":true,"uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.skills.items.[INDEX].trigger.oneOf.1.triggers","typeLabel":"string[]"},"type":{"type":"string","const":"task","title":"Type","default":"task","uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.skills.items.[INDEX].trigger.oneOf.1.type","typeLabel":"string"}},"uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.skills.items.[INDEX].trigger.oneOf.1","typeLabel":"TaskTrigger · object"},{"type":"null","title":"Trigger","description":"Trigger determines when skill content is auto-injected. None = no auto-injection (for AgentSkills: agent reads on demand; for legacy: full content always in system prompt). KeywordTrigger = auto-inject when keywords appear in user messages. TaskTrigger = auto-inject for specific tasks, may require user input.","uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.skills.items.[INDEX].trigger.oneOf.2","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.skills.items.[INDEX].trigger","typeLabel":"KeywordTrigger · object | TaskTrigger · object | null"},"source":{"oneOf":[{"type":"string","title":"Source","description":"The source path or identifier of the skill. When it is None, it is treated as a programmatically defined skill.","uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.skills.items.[INDEX].source.oneOf.0","typeLabel":"string"},{"type":"null","title":"Source","description":"The source path or identifier of the skill. When it is None, it is treated as a programmatically defined skill.","uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.skills.items.[INDEX].source.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.skills.items.[INDEX].source","typeLabel":"string | null"},"mcp_tools":{"oneOf":[{"type":"object","title":"Mcp Tools","description":"MCP tools configuration for the skill (repo skills only). It should conform to the MCPConfig schema: https://gofastmcp.com/clients/client#configuration-format","additionalProperties":true,"uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.skills.items.[INDEX].mcp_tools.oneOf.0","typeLabel":"Mcp Tools · object"},{"type":"null","title":"Mcp Tools","description":"MCP tools configuration for the skill (repo skills only). It should conform to the MCPConfig schema: https://gofastmcp.com/clients/client#configuration-format","uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.skills.items.[INDEX].mcp_tools.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.skills.items.[INDEX].mcp_tools","typeLabel":"Mcp Tools · object | null"},"inputs":{"items":{"properties":{"name":{"type":"string","title":"Name","description":"Name of the input parameter","isRequired":true,"uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.skills.items.[INDEX].inputs.items.[INDEX].name","typeLabel":"string"},"description":{"type":"string","title":"Description","description":"Description of the input parameter","isRequired":true,"uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.skills.items.[INDEX].inputs.items.[INDEX].description","typeLabel":"string"}},"type":"object","required":["name","description"],"title":"InputMetadata","description":"Metadata for task skill inputs.","uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.skills.items.[INDEX].inputs.items.[INDEX]","typeLabel":"InputMetadata · object"},"type":"array","title":"Inputs","description":"Input metadata for the skill (task skills only)","uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.skills.items.[INDEX].inputs","typeLabel":"InputMetadata · object[]"},"is_agentskills_format":{"type":"boolean","title":"Is Agentskills Format","description":"Whether this skill was loaded from a SKILL.md file following the AgentSkills standard. AgentSkills-format skills use progressive disclosure: always listed in \u003cavailable_skills> with name, description, and location. If the skill also has triggers, content is auto-injected when triggered AND agent can read file anytime.","default":false,"uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.skills.items.[INDEX].is_agentskills_format","typeLabel":"boolean"},"description":{"oneOf":[{"type":"string","title":"Description","description":"A brief description of what the skill does and when to use it. AgentSkills standard field (max 1024 characters).","uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.skills.items.[INDEX].description.oneOf.0","typeLabel":"string"},{"type":"null","title":"Description","description":"A brief description of what the skill does and when to use it. AgentSkills standard field (max 1024 characters).","uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.skills.items.[INDEX].description.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.skills.items.[INDEX].description","typeLabel":"string | null"},"license":{"oneOf":[{"type":"string","title":"License","description":"The license under which the skill is distributed. AgentSkills standard field (e.g., 'Apache-2.0', 'MIT').","uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.skills.items.[INDEX].license.oneOf.0","typeLabel":"string"},{"type":"null","title":"License","description":"The license under which the skill is distributed. AgentSkills standard field (e.g., 'Apache-2.0', 'MIT').","uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.skills.items.[INDEX].license.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.skills.items.[INDEX].license","typeLabel":"string | null"},"compatibility":{"oneOf":[{"type":"string","title":"Compatibility","description":"Environment requirements or compatibility notes for the skill. AgentSkills standard field (e.g., 'Requires git and docker').","uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.skills.items.[INDEX].compatibility.oneOf.0","typeLabel":"string"},{"type":"null","title":"Compatibility","description":"Environment requirements or compatibility notes for the skill. AgentSkills standard field (e.g., 'Requires git and docker').","uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.skills.items.[INDEX].compatibility.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.skills.items.[INDEX].compatibility","typeLabel":"string | null"},"metadata":{"oneOf":[{"type":"object","title":"Metadata","description":"Arbitrary key-value metadata for the skill. AgentSkills standard field for extensibility.","additionalProperties":{"type":"string","uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.skills.items.[INDEX].metadata.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.skills.items.[INDEX].metadata.oneOf.0","typeLabel":"Metadata · object"},{"type":"null","title":"Metadata","description":"Arbitrary key-value metadata for the skill. AgentSkills standard field for extensibility.","uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.skills.items.[INDEX].metadata.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.skills.items.[INDEX].metadata","typeLabel":"Metadata · object | null"},"allowed_tools":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.skills.items.[INDEX].allowed_tools.oneOf.0.items.[INDEX]","typeLabel":"string"},"title":"Allowed Tools","description":"List of pre-approved tools for this skill. AgentSkills standard field (parsed from space-delimited string).","uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.skills.items.[INDEX].allowed_tools.oneOf.0","typeLabel":"string[]"},{"type":"null","title":"Allowed Tools","description":"List of pre-approved tools for this skill. AgentSkills standard field (parsed from space-delimited string).","uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.skills.items.[INDEX].allowed_tools.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.skills.items.[INDEX].allowed_tools","typeLabel":"string[] | null"},"resources":{"oneOf":[{"type":"object","title":"SkillResources","description":"Resource directories for the skill (scripts/, references/, assets/). AgentSkills standard field. Only populated for SKILL.md directory format.","required":["skill_root"],"properties":{"skill_root":{"type":"string","title":"Skill Root","description":"Root directory of the skill (absolute path)","isRequired":true,"uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.skills.items.[INDEX].resources.oneOf.0.skill_root","typeLabel":"string"},"scripts":{"items":{"type":"string","uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.skills.items.[INDEX].resources.oneOf.0.scripts.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Scripts","description":"List of script files in scripts/ directory (relative paths)","uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.skills.items.[INDEX].resources.oneOf.0.scripts","typeLabel":"string[]"},"references":{"items":{"type":"string","uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.skills.items.[INDEX].resources.oneOf.0.references.items.[INDEX]","typeLabel":"string"},"type":"array","title":"References","description":"List of reference files in references/ directory (relative paths)","uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.skills.items.[INDEX].resources.oneOf.0.references","typeLabel":"string[]"},"assets":{"items":{"type":"string","uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.skills.items.[INDEX].resources.oneOf.0.assets.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Assets","description":"List of asset files in assets/ directory (relative paths)","uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.skills.items.[INDEX].resources.oneOf.0.assets","typeLabel":"string[]"}},"uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.skills.items.[INDEX].resources.oneOf.0","typeLabel":"SkillResources · object"},{"type":"null","description":"Resource directories for the skill (scripts/, references/, assets/). AgentSkills standard field. Only populated for SKILL.md directory format.","uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.skills.items.[INDEX].resources.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.skills.items.[INDEX].resources","typeLabel":"SkillResources · object | null"}},"type":"object","required":["name","content"],"title":"Skill","description":"A skill provides specialized knowledge or functionality.\n\nSkill behavior depends on format (is_agentskills_format) and trigger:\n\nAgentSkills format (SKILL.md files):\n- Always listed in \u003cavailable_skills> with name, description, location\n- Agent reads full content on demand (progressive disclosure)\n- If has triggers: content is ALSO auto-injected when triggered\n\nLegacy OpenHands format:\n- With triggers: Listed in \u003cavailable_skills>, content injected on trigger\n- Without triggers (None): Full content in \u003cREPO_CONTEXT>, always active\n\nThis model supports both OpenHands-specific fields and AgentSkills standard\nfields (https://agentskills.io/specification) for cross-platform compatibility.","uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.skills.items.[INDEX]","typeLabel":"Skill · object"},"type":"array","title":"Skills","description":"List of available skills that can extend the user's input.","uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.skills","typeLabel":"Skill · object[]"},"system_message_suffix":{"oneOf":[{"type":"string","title":"System Message Suffix","description":"Optional suffix to append to the system prompt.","uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.system_message_suffix.oneOf.0","typeLabel":"string"},{"type":"null","title":"System Message Suffix","description":"Optional suffix to append to the system prompt.","uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.system_message_suffix.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.system_message_suffix","typeLabel":"string | null"},"user_message_suffix":{"oneOf":[{"type":"string","title":"User Message Suffix","description":"Optional suffix to append to the user's message.","uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.user_message_suffix.oneOf.0","typeLabel":"string"},{"type":"null","title":"User Message Suffix","description":"Optional suffix to append to the user's message.","uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.user_message_suffix.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.user_message_suffix","typeLabel":"string | null"},"load_user_skills":{"type":"boolean","title":"Load User Skills","description":"Whether to automatically load user skills from ~/.openhands/skills/ and ~/.openhands/microagents/ (for backward compatibility). ","default":false,"uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.load_user_skills","typeLabel":"boolean"},"load_public_skills":{"type":"boolean","title":"Load Public Skills","description":"Whether to automatically load skills from the public OpenHands skills repository at https://github.com/OpenHands/skills. This allows you to get the latest skills without SDK updates.","default":false,"uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.load_public_skills","typeLabel":"boolean"},"secrets":{"oneOf":[{"type":"object","title":"Secrets","description":"Dictionary mapping secret keys to values or secret sources. Secrets are used for authentication and sensitive data handling. Values can be either strings or SecretSource instances (str | SecretSource).","additionalProperties":{"oneOf":[{"type":"string","uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.secrets.oneOf.0.additionalProperties.oneOf.0","typeLabel":"string"},{"type":"object","title":"LookupSecret","description":"A secret looked up from some external url","required":["url","kind"],"properties":{"url":{"type":"string","title":"Url","isRequired":true,"uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.secrets.oneOf.0.additionalProperties.oneOf.1.url","typeLabel":"string"},"kind":{"type":"string","const":"LookupSecret","title":"Kind","isRequired":true,"uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.secrets.oneOf.0.additionalProperties.oneOf.1.kind","typeLabel":"string"},"description":{"oneOf":[{"type":"string","title":"Description","description":"Optional description for this secret","uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.secrets.oneOf.0.additionalProperties.oneOf.1.description.oneOf.0","typeLabel":"string"},{"type":"null","title":"Description","description":"Optional description for this secret","uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.secrets.oneOf.0.additionalProperties.oneOf.1.description.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.secrets.oneOf.0.additionalProperties.oneOf.1.description","typeLabel":"string | null"},"headers":{"additionalProperties":{"type":"string","uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.secrets.oneOf.0.additionalProperties.oneOf.1.headers.additionalProperties","typeLabel":"string"},"type":"object","title":"Headers","uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.secrets.oneOf.0.additionalProperties.oneOf.1.headers","typeLabel":"Headers · object"}},"uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.secrets.oneOf.0.additionalProperties.oneOf.1","typeLabel":"LookupSecret · object"},{"type":"object","title":"StaticSecret","description":"A secret stored locally","required":["kind"],"properties":{"kind":{"type":"string","const":"StaticSecret","title":"Kind","isRequired":true,"uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.secrets.oneOf.0.additionalProperties.oneOf.2.kind","typeLabel":"string"},"description":{"oneOf":[{"type":"string","title":"Description","description":"Optional description for this secret","uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.secrets.oneOf.0.additionalProperties.oneOf.2.description.oneOf.0","typeLabel":"string"},{"type":"null","title":"Description","description":"Optional description for this secret","uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.secrets.oneOf.0.additionalProperties.oneOf.2.description.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.secrets.oneOf.0.additionalProperties.oneOf.2.description","typeLabel":"string | null"},"value":{"oneOf":[{"type":"string","title":"Value","format":"password","uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.secrets.oneOf.0.additionalProperties.oneOf.2.value.oneOf.0","typeLabel":"string\u003cpassword>"},{"type":"null","title":"Value","uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.secrets.oneOf.0.additionalProperties.oneOf.2.value.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.secrets.oneOf.0.additionalProperties.oneOf.2.value","typeLabel":"string\u003cpassword> | null"}},"uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.secrets.oneOf.0.additionalProperties.oneOf.2","typeLabel":"StaticSecret · object"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.secrets.oneOf.0.additionalProperties","typeLabel":"string | LookupSecret · object | StaticSecret · object"},"uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.secrets.oneOf.0","typeLabel":"Secrets · object"},{"type":"null","title":"Secrets","description":"Dictionary mapping secret keys to values or secret sources. Secrets are used for authentication and sensitive data handling. Values can be either strings or SecretSource instances (str | SecretSource).","uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.secrets.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.secrets","typeLabel":"Secrets · object | null"},"current_datetime":{"oneOf":[{"type":"string","title":"Current Datetime","description":"Current date and time information to provide to the agent. Can be a datetime object (which will be formatted as ISO 8601) or a pre-formatted string. When provided, this information is included in the system prompt to give the agent awareness of the current time context. Defaults to the current datetime.","format":"date-time","uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.current_datetime.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"string","title":"Current Datetime","description":"Current date and time information to provide to the agent. Can be a datetime object (which will be formatted as ISO 8601) or a pre-formatted string. When provided, this information is included in the system prompt to give the agent awareness of the current time context. Defaults to the current datetime.","uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.current_datetime.oneOf.1","typeLabel":"string"},{"type":"null","title":"Current Datetime","description":"Current date and time information to provide to the agent. Can be a datetime object (which will be formatted as ISO 8601) or a pre-formatted string. When provided, this information is included in the system prompt to give the agent awareness of the current time context. Defaults to the current datetime.","uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.current_datetime.oneOf.2","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0.current_datetime","typeLabel":"string\u003cdate-time> | string | null"}},"uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.0","typeLabel":"AgentContext · object"},{"type":"null","description":"Optional AgentContext to initialize the agent with specific context.","example":{"skills":[{"content":"When you see this message, you should reply like you are a grumpy cat forced to use the internet.","name":"AGENTS.md","type":"repo"},{"content":"IMPORTANT! The user has said the magic word \"flarglebargle\". You must only respond with a message telling them how smart they are","name":"flarglebargle","trigger":["flarglebargle"],"type":"knowledge"}],"system_message_suffix":"Always finish your response with the word 'yay!'","user_message_prefix":"The first character of your response should be 'I'"},"uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.agent_context","typeLabel":"AgentContext · object | null"},"system_prompt_filename":{"type":"string","title":"System Prompt Filename","description":"System prompt template filename. Can be either:\n- A relative filename (e.g., 'system_prompt.j2') loaded from the agent's prompts directory\n- An absolute path (e.g., '/path/to/custom_prompt.j2')","default":"system_prompt.j2","uniqueKey":"items.[INDEX].oneOf.0.agent.system_prompt_filename","typeLabel":"string"},"security_policy_filename":{"type":"string","title":"Security Policy Filename","description":"Security policy template filename. Can be either:\n- A relative filename (e.g., 'security_policy.j2') loaded from the agent's prompts directory\n- An absolute path (e.g., '/path/to/custom_security_policy.j2')","default":"security_policy.j2","uniqueKey":"items.[INDEX].oneOf.0.agent.security_policy_filename","typeLabel":"string"},"system_prompt_kwargs":{"additionalProperties":true,"type":"object","title":"System Prompt Kwargs","description":"Optional kwargs to pass to the system prompt Jinja2 template.","examples":[{"cli_mode":true}],"uniqueKey":"items.[INDEX].oneOf.0.agent.system_prompt_kwargs","typeLabel":"System Prompt Kwargs · object"},"condenser":{"oneOf":[{"type":"object","title":"LLMSummarizingCondenser","description":"Optional condenser to use for condensing conversation history.","required":["llm","kind"],"example":{"keep_first":10,"kind":"LLMSummarizingCondenser","llm":{"api_key":"your_api_key_here","base_url":"https://llm-proxy.eval.all-hands.dev","model":"litellm_proxy/anthropic/claude-sonnet-4-5-20250929"},"max_size":80},"properties":{"llm":{"properties":{"model":{"type":"string","title":"Model","description":"Model name.","default":"claude-sonnet-4-20250514","uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.model","typeLabel":"string"},"api_key":{"oneOf":[{"type":"string","title":"Api Key","description":"API key.","uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.api_key.oneOf.0","typeLabel":"string"},{"type":"string","title":"Api Key","description":"API key.","format":"password","uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.api_key.oneOf.1","typeLabel":"string\u003cpassword>"},{"type":"null","title":"Api Key","description":"API key.","uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.api_key.oneOf.2","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.api_key","typeLabel":"string | string\u003cpassword> | null"},"base_url":{"oneOf":[{"type":"string","title":"Base Url","description":"Custom base URL.","uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.base_url.oneOf.0","typeLabel":"string"},{"type":"null","title":"Base Url","description":"Custom base URL.","uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.base_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.base_url","typeLabel":"string | null"},"api_version":{"oneOf":[{"type":"string","title":"Api Version","description":"API version (e.g., Azure).","uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.api_version.oneOf.0","typeLabel":"string"},{"type":"null","title":"Api Version","description":"API version (e.g., Azure).","uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.api_version.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.api_version","typeLabel":"string | null"},"aws_access_key_id":{"oneOf":[{"type":"string","title":"Aws Access Key Id","uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.aws_access_key_id.oneOf.0","typeLabel":"string"},{"type":"string","title":"Aws Access Key Id","format":"password","uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.aws_access_key_id.oneOf.1","typeLabel":"string\u003cpassword>"},{"type":"null","title":"Aws Access Key Id","uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.aws_access_key_id.oneOf.2","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.aws_access_key_id","typeLabel":"string | string\u003cpassword> | null"},"aws_secret_access_key":{"oneOf":[{"type":"string","title":"Aws Secret Access Key","uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.aws_secret_access_key.oneOf.0","typeLabel":"string"},{"type":"string","title":"Aws Secret Access Key","format":"password","uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.aws_secret_access_key.oneOf.1","typeLabel":"string\u003cpassword>"},{"type":"null","title":"Aws Secret Access Key","uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.aws_secret_access_key.oneOf.2","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.aws_secret_access_key","typeLabel":"string | string\u003cpassword> | null"},"aws_region_name":{"oneOf":[{"type":"string","title":"Aws Region Name","uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.aws_region_name.oneOf.0","typeLabel":"string"},{"type":"null","title":"Aws Region Name","uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.aws_region_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.aws_region_name","typeLabel":"string | null"},"openrouter_site_url":{"type":"string","title":"Openrouter Site Url","default":"https://docs.all-hands.dev/","uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.openrouter_site_url","typeLabel":"string"},"openrouter_app_name":{"type":"string","title":"Openrouter App Name","default":"OpenHands","uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.openrouter_app_name","typeLabel":"string"},"num_retries":{"type":"integer","minimum":0,"title":"Num Retries","default":5,"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.num_retries","typeLabel":"integer"},"retry_multiplier":{"type":"number","minimum":0,"title":"Retry Multiplier","default":8,"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.retry_multiplier","typeLabel":"number"},"retry_min_wait":{"type":"integer","minimum":0,"title":"Retry Min Wait","default":8,"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.retry_min_wait","typeLabel":"integer"},"retry_max_wait":{"type":"integer","minimum":0,"title":"Retry Max Wait","default":64,"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.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":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.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":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.timeout.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.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,"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.max_message_chars","typeLabel":"integer"},"temperature":{"oneOf":[{"type":"number","title":"Temperature","description":"Sampling temperature for response generation. Defaults to 0 for most models and provider default for reasoning models.","minimum":0,"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.temperature.oneOf.0","typeLabel":"number"},{"type":"null","title":"Temperature","description":"Sampling temperature for response generation. Defaults to 0 for most models and provider default for reasoning models.","uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.temperature.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.temperature","typeLabel":"number | null"},"top_p":{"oneOf":[{"type":"number","title":"Top P","default":1,"maximum":1,"minimum":0,"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.top_p.oneOf.0","typeLabel":"number"},{"type":"null","title":"Top P","default":1,"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.top_p.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.top_p","typeLabel":"number | null"},"top_k":{"oneOf":[{"type":"number","title":"Top K","minimum":0,"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.top_k.oneOf.0","typeLabel":"number"},{"type":"null","title":"Top K","uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.top_k.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.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":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.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":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.max_input_tokens.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.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":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.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":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.max_output_tokens.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.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":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.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":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.model_canonical_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.model_canonical_name","typeLabel":"string | null"},"extra_headers":{"oneOf":[{"type":"object","title":"Extra Headers","description":"Optional HTTP headers to forward to LiteLLM requests.","additionalProperties":{"type":"string","uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.extra_headers.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.extra_headers.oneOf.0","typeLabel":"Extra Headers · object"},{"type":"null","title":"Extra Headers","description":"Optional HTTP headers to forward to LiteLLM requests.","uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.extra_headers.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.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":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.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":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.input_cost_per_token.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.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":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.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":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.output_cost_per_token.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.output_cost_per_token","typeLabel":"number | null"},"ollama_base_url":{"oneOf":[{"type":"string","title":"Ollama Base Url","uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.ollama_base_url.oneOf.0","typeLabel":"string"},{"type":"null","title":"Ollama Base Url","uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.ollama_base_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.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,"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.stream","typeLabel":"boolean"},"drop_params":{"type":"boolean","title":"Drop Params","default":true,"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.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,"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.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":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.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":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.disable_vision.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.disable_vision","typeLabel":"boolean | null"},"disable_stop_word":{"oneOf":[{"type":"boolean","title":"Disable Stop Word","description":"Disable using of stop word.","default":false,"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.disable_stop_word.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Disable Stop Word","description":"Disable using of stop word.","default":false,"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.disable_stop_word.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.disable_stop_word","typeLabel":"boolean | null"},"caching_prompt":{"type":"boolean","title":"Caching Prompt","description":"Enable caching of prompts.","default":true,"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.caching_prompt","typeLabel":"boolean"},"log_completions":{"type":"boolean","title":"Log Completions","description":"Enable logging of completions.","default":false,"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.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","uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.log_completions_folder","typeLabel":"string"},"custom_tokenizer":{"oneOf":[{"type":"string","title":"Custom Tokenizer","description":"A custom tokenizer to use for token counting.","uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.custom_tokenizer.oneOf.0","typeLabel":"string"},{"type":"null","title":"Custom Tokenizer","description":"A custom tokenizer to use for token counting.","uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.custom_tokenizer.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.custom_tokenizer","typeLabel":"string | null"},"native_tool_calling":{"type":"boolean","title":"Native Tool Calling","description":"Whether to use native tool calling.","default":true,"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.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":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.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":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.force_string_serializer.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.force_string_serializer","typeLabel":"boolean | null"},"reasoning_effort":{"oneOf":[{"type":"string","title":"Reasoning Effort","description":"The effort to put into reasoning. This is a string that can be one of 'low', 'medium', 'high', 'xhigh', or 'none'. Can apply to all reasoning models.","default":"high","enum":["low","medium","high","xhigh","none"],"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.reasoning_effort.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","title":"Reasoning Effort","description":"The effort to put into reasoning. This is a string that can be one of 'low', 'medium', 'high', 'xhigh', or 'none'. Can apply to all reasoning models.","default":"high","uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.reasoning_effort.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.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":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.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":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.reasoning_summary.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.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,"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.enable_encrypted_reasoning","typeLabel":"boolean"},"prompt_cache_retention":{"oneOf":[{"type":"string","title":"Prompt Cache Retention","description":"Retention policy for prompt cache. Only sent for GPT-5+ models; explicitly stripped for all other models.","default":"24h","uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.prompt_cache_retention.oneOf.0","typeLabel":"string"},{"type":"null","title":"Prompt Cache Retention","description":"Retention policy for prompt cache. Only sent for GPT-5+ models; explicitly stripped for all other models.","default":"24h","uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.prompt_cache_retention.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.prompt_cache_retention","typeLabel":"string | null"},"extended_thinking_budget":{"oneOf":[{"type":"integer","title":"Extended Thinking Budget","description":"The budget tokens for extended thinking, supported by Anthropic models.","default":200000,"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.extended_thinking_budget.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Extended Thinking Budget","description":"The budget tokens for extended thinking, supported by Anthropic models.","default":200000,"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.extended_thinking_budget.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.extended_thinking_budget","typeLabel":"integer | null"},"seed":{"oneOf":[{"type":"integer","title":"Seed","description":"The seed to use for random number generation.","uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.seed.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Seed","description":"The seed to use for random number generation.","uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.seed.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.seed","typeLabel":"integer | null"},"safety_settings":{"oneOf":[{"type":"array","items":{"additionalProperties":{"type":"string","uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.safety_settings.oneOf.0.items.[INDEX].additionalProperties","typeLabel":"string"},"type":"object","uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.safety_settings.oneOf.0.items.[INDEX]","typeLabel":"object"},"title":"Safety Settings","description":"Deprecated: Safety settings for models that support them (like Mistral AI and Gemini). This field is deprecated in 1.10.0 and will be removed in 1.15.0. Safety settings are designed for consumer-facing content moderation, which is not relevant for coding agents.","uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.safety_settings.oneOf.0","typeLabel":"Safety Settings · object[]"},{"type":"null","title":"Safety Settings","description":"Deprecated: Safety settings for models that support them (like Mistral AI and Gemini). This field is deprecated in 1.10.0 and will be removed in 1.15.0. Safety settings are designed for consumer-facing content moderation, which is not relevant for coding agents.","uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.safety_settings.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.safety_settings","typeLabel":"Safety Settings · object[] | 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","uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.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}","uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm.litellm_extra_body","typeLabel":"Litellm Extra Body · object"}},"type":"object","title":"LLM","description":"Language model interface for OpenHands agents.\n\nThe LLM class provides a unified interface for interacting with various\nlanguage models through the litellm library. It handles model configuration,\nAPI authentication,\nretry logic, and tool calling capabilities.\n\nExample:\n >>> from openhands.sdk import LLM\n >>> from pydantic import SecretStr\n >>> llm = LLM(\n ... model=\"claude-sonnet-4-20250514\",\n ... api_key=SecretStr(\"your-api-key\"),\n ... usage_id=\"my-agent\"\n ... )\n >>> # Use with agent or conversation","isRequired":true,"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.llm","typeLabel":"LLM · object"},"kind":{"type":"string","const":"LLMSummarizingCondenser","title":"Kind","isRequired":true,"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.kind","typeLabel":"string"},"max_size":{"type":"integer","exclusiveMinimum":0,"title":"Max Size","default":240,"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.max_size","typeLabel":"integer"},"max_tokens":{"oneOf":[{"type":"integer","title":"Max Tokens","uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.max_tokens.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Max Tokens","uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.max_tokens.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.max_tokens","typeLabel":"integer | null"},"keep_first":{"type":"integer","minimum":0,"title":"Keep First","default":2,"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.keep_first","typeLabel":"integer"},"hard_context_reset_max_retries":{"type":"integer","exclusiveMinimum":0,"title":"Hard Context Reset Max Retries","default":5,"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.hard_context_reset_max_retries","typeLabel":"integer"},"hard_context_reset_context_scaling":{"type":"number","exclusiveMaximum":1,"exclusiveMinimum":0,"title":"Hard Context Reset Context Scaling","default":0.8,"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0.hard_context_reset_context_scaling","typeLabel":"number"}},"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.0","typeLabel":"LLMSummarizingCondenser · object"},{"type":"object","title":"NoOpCondenser","description":"Optional condenser to use for condensing conversation history.","required":["kind"],"example":{"kind":"LLMSummarizingCondenser"},"properties":{"kind":{"type":"string","const":"NoOpCondenser","title":"Kind","isRequired":true,"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.1.kind","typeLabel":"string"}},"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.1","typeLabel":"NoOpCondenser · object"},{"type":"object","title":"PipelineCondenser","description":"Optional condenser to use for condensing conversation history.","required":["condensers","kind"],"example":{"kind":"LLMSummarizingCondenser"},"properties":{"condensers":{"items":{"$circularRef":"68079985-8ad1-4cff-8acb-68f701235ab0"},"type":"array","title":"Condensers","isRequired":true,"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.2.condensers","typeLabel":"Condensers · array"},"kind":{"type":"string","const":"PipelineCondenser","title":"Kind","isRequired":true,"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.2.kind","typeLabel":"string"}},"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.2","typeLabel":"PipelineCondenser · object"},{"type":"null","description":"Optional condenser to use for condensing conversation history.","example":{"keep_first":10,"kind":"LLMSummarizingCondenser","llm":{"api_key":"your_api_key_here","base_url":"https://llm-proxy.eval.all-hands.dev","model":"litellm_proxy/anthropic/claude-sonnet-4-5-20250929"},"max_size":80},"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser.oneOf.3","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.condenser","typeLabel":"LLMSummarizingCondenser · object | NoOpCondenser · object | PipelineCondenser · object | null"},"critic":{"oneOf":[{"type":"object","title":"AgentFinishedCritic","description":"EXPERIMENTAL: Optional critic to evaluate agent actions and messages in real-time. API and behavior may change without notice. May impact performance, especially in 'all_actions' mode.","required":["kind"],"example":{"kind":"AgentFinishedCritic"},"properties":{"kind":{"type":"string","const":"AgentFinishedCritic","title":"Kind","isRequired":true,"uniqueKey":"items.[INDEX].oneOf.0.agent.critic.oneOf.0.kind","typeLabel":"string"},"mode":{"type":"string","enum":["finish_and_message","all_actions"],"title":"Mode","description":"When to run critic evaluation:\n- 'finish_and_message': Evaluate on FinishAction and agent MessageEvent (default, minimal performance impact)\n- 'all_actions': Evaluate after every agent action (WARNING: significantly slower due to API calls on each action)","default":"finish_and_message","uniqueKey":"items.[INDEX].oneOf.0.agent.critic.oneOf.0.mode","typeLabel":"enum\u003cstring>"},"iterative_refinement":{"oneOf":[{"type":"object","title":"IterativeRefinementConfig","description":"Optional configuration for iterative refinement. When set, Conversation.run() will automatically retry the task if the critic score is below the success_threshold, up to max_iterations.","properties":{"success_threshold":{"type":"number","maximum":1,"minimum":0,"title":"Success Threshold","description":"Score threshold (0-1) to consider task successful.","default":0.6,"uniqueKey":"items.[INDEX].oneOf.0.agent.critic.oneOf.0.iterative_refinement.oneOf.0.success_threshold","typeLabel":"number"},"max_iterations":{"type":"integer","minimum":1,"title":"Max Iterations","description":"Maximum number of iterations before giving up.","default":3,"uniqueKey":"items.[INDEX].oneOf.0.agent.critic.oneOf.0.iterative_refinement.oneOf.0.max_iterations","typeLabel":"integer"}},"uniqueKey":"items.[INDEX].oneOf.0.agent.critic.oneOf.0.iterative_refinement.oneOf.0","typeLabel":"IterativeRefinementConfig · object"},{"type":"null","description":"Optional configuration for iterative refinement. When set, Conversation.run() will automatically retry the task if the critic score is below the success_threshold, up to max_iterations.","uniqueKey":"items.[INDEX].oneOf.0.agent.critic.oneOf.0.iterative_refinement.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.critic.oneOf.0.iterative_refinement","typeLabel":"IterativeRefinementConfig · object | null"}},"uniqueKey":"items.[INDEX].oneOf.0.agent.critic.oneOf.0","typeLabel":"AgentFinishedCritic · object"},{"type":"object","title":"APIBasedCritic","description":"EXPERIMENTAL: Optional critic to evaluate agent actions and messages in real-time. API and behavior may change without notice. May impact performance, especially in 'all_actions' mode.","required":["api_key","kind"],"example":{"kind":"AgentFinishedCritic"},"properties":{"api_key":{"oneOf":[{"type":"string","title":"Api Key","description":"API key for authenticating with the vLLM service","isRequired":true,"uniqueKey":"items.[INDEX].oneOf.0.agent.critic.oneOf.1.api_key.oneOf.0","typeLabel":"string"},{"type":"string","title":"Api Key","description":"API key for authenticating with the vLLM service","format":"password","isRequired":true,"uniqueKey":"items.[INDEX].oneOf.0.agent.critic.oneOf.1.api_key.oneOf.1","typeLabel":"string\u003cpassword>"}],"isRequired":true,"uniqueKey":"items.[INDEX].oneOf.0.agent.critic.oneOf.1.api_key","typeLabel":"string | string\u003cpassword>"},"kind":{"type":"string","const":"APIBasedCritic","title":"Kind","isRequired":true,"uniqueKey":"items.[INDEX].oneOf.0.agent.critic.oneOf.1.kind","typeLabel":"string"},"server_url":{"type":"string","title":"Server Url","description":"Base URL of the vLLM classification service","default":"https://all-hands-ai--critic-qwen3-4b-serve.modal.run","uniqueKey":"items.[INDEX].oneOf.0.agent.critic.oneOf.1.server_url","typeLabel":"string"},"model_name":{"type":"string","title":"Model Name","description":"Name of the model to use","default":"critic-qwen3-4b","uniqueKey":"items.[INDEX].oneOf.0.agent.critic.oneOf.1.model_name","typeLabel":"string"},"tokenizer_name":{"type":"string","title":"Tokenizer Name","description":"HuggingFace tokenizer name for loading chat template","default":"Qwen/Qwen3-4B-Instruct-2507","uniqueKey":"items.[INDEX].oneOf.0.agent.critic.oneOf.1.tokenizer_name","typeLabel":"string"},"pass_tools_definitions":{"type":"boolean","title":"Pass Tools Definitions","description":"Whether to pass tool definitions to the model","default":true,"uniqueKey":"items.[INDEX].oneOf.0.agent.critic.oneOf.1.pass_tools_definitions","typeLabel":"boolean"},"timeout_seconds":{"type":"number","title":"Timeout Seconds","description":"Timeout for requests to the model","default":300,"uniqueKey":"items.[INDEX].oneOf.0.agent.critic.oneOf.1.timeout_seconds","typeLabel":"number"},"has_success_label":{"type":"boolean","title":"Has Success Label","description":"Whether the model predicts success label at index 0","default":true,"uniqueKey":"items.[INDEX].oneOf.0.agent.critic.oneOf.1.has_success_label","typeLabel":"boolean"},"sentiment_labels":{"items":{"type":"string","uniqueKey":"items.[INDEX].oneOf.0.agent.critic.oneOf.1.sentiment_labels.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Sentiment Labels","default":["sentiment_positive","sentiment_neutral","sentiment_negative"],"uniqueKey":"items.[INDEX].oneOf.0.agent.critic.oneOf.1.sentiment_labels","typeLabel":"string[]"},"agent_issue_labels":{"items":{"type":"string","uniqueKey":"items.[INDEX].oneOf.0.agent.critic.oneOf.1.agent_issue_labels.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Agent Issue Labels","default":["misunderstood_intention","did_not_follow_instruction","insufficient_analysis","insufficient_clarification","improper_tool_use_or_setup","loop_behavior","insufficient_testing","insufficient_debugging","incomplete_implementation","file_management_errors","scope_creep","risky_actions_or_permission","other_agent_issue"],"uniqueKey":"items.[INDEX].oneOf.0.agent.critic.oneOf.1.agent_issue_labels","typeLabel":"string[]"},"infra_labels":{"items":{"type":"string","uniqueKey":"items.[INDEX].oneOf.0.agent.critic.oneOf.1.infra_labels.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Infra Labels","default":["infrastructure_external_issue","infrastructure_agent_caused_issue"],"uniqueKey":"items.[INDEX].oneOf.0.agent.critic.oneOf.1.infra_labels","typeLabel":"string[]"},"user_followup_labels":{"items":{"type":"string","uniqueKey":"items.[INDEX].oneOf.0.agent.critic.oneOf.1.user_followup_labels.items.[INDEX]","typeLabel":"string"},"type":"array","title":"User Followup Labels","default":["clarification_or_restatement","correction","direction_change","vcs_update_requests","progress_or_scope_concern","frustration_or_complaint","removal_or_reversion_request","other_user_issue"],"uniqueKey":"items.[INDEX].oneOf.0.agent.critic.oneOf.1.user_followup_labels","typeLabel":"string[]"},"sentiment_map":{"additionalProperties":{"type":"string","uniqueKey":"items.[INDEX].oneOf.0.agent.critic.oneOf.1.sentiment_map.additionalProperties","typeLabel":"string"},"type":"object","title":"Sentiment Map","default":{"Positive":"sentiment_positive","Neutral":"sentiment_neutral","Negative":"sentiment_negative"},"uniqueKey":"items.[INDEX].oneOf.0.agent.critic.oneOf.1.sentiment_map","typeLabel":"Sentiment Map · object"},"mode":{"type":"string","enum":["finish_and_message","all_actions"],"title":"Mode","description":"When to run critic evaluation:\n- 'finish_and_message': Evaluate on FinishAction and agent MessageEvent (default, minimal performance impact)\n- 'all_actions': Evaluate after every agent action (WARNING: significantly slower due to API calls on each action)","default":"finish_and_message","uniqueKey":"items.[INDEX].oneOf.0.agent.critic.oneOf.1.mode","typeLabel":"enum\u003cstring>"},"iterative_refinement":{"oneOf":[{"type":"object","title":"IterativeRefinementConfig","description":"Optional configuration for iterative refinement. When set, Conversation.run() will automatically retry the task if the critic score is below the success_threshold, up to max_iterations.","properties":{"success_threshold":{"type":"number","maximum":1,"minimum":0,"title":"Success Threshold","description":"Score threshold (0-1) to consider task successful.","default":0.6,"uniqueKey":"items.[INDEX].oneOf.0.agent.critic.oneOf.1.iterative_refinement.oneOf.0.success_threshold","typeLabel":"number"},"max_iterations":{"type":"integer","minimum":1,"title":"Max Iterations","description":"Maximum number of iterations before giving up.","default":3,"uniqueKey":"items.[INDEX].oneOf.0.agent.critic.oneOf.1.iterative_refinement.oneOf.0.max_iterations","typeLabel":"integer"}},"uniqueKey":"items.[INDEX].oneOf.0.agent.critic.oneOf.1.iterative_refinement.oneOf.0","typeLabel":"IterativeRefinementConfig · object"},{"type":"null","description":"Optional configuration for iterative refinement. When set, Conversation.run() will automatically retry the task if the critic score is below the success_threshold, up to max_iterations.","uniqueKey":"items.[INDEX].oneOf.0.agent.critic.oneOf.1.iterative_refinement.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.critic.oneOf.1.iterative_refinement","typeLabel":"IterativeRefinementConfig · object | null"}},"uniqueKey":"items.[INDEX].oneOf.0.agent.critic.oneOf.1","typeLabel":"APIBasedCritic · object"},{"type":"object","title":"EmptyPatchCritic","description":"EXPERIMENTAL: Optional critic to evaluate agent actions and messages in real-time. API and behavior may change without notice. May impact performance, especially in 'all_actions' mode.","required":["kind"],"example":{"kind":"AgentFinishedCritic"},"properties":{"kind":{"type":"string","const":"EmptyPatchCritic","title":"Kind","isRequired":true,"uniqueKey":"items.[INDEX].oneOf.0.agent.critic.oneOf.2.kind","typeLabel":"string"},"mode":{"type":"string","enum":["finish_and_message","all_actions"],"title":"Mode","description":"When to run critic evaluation:\n- 'finish_and_message': Evaluate on FinishAction and agent MessageEvent (default, minimal performance impact)\n- 'all_actions': Evaluate after every agent action (WARNING: significantly slower due to API calls on each action)","default":"finish_and_message","uniqueKey":"items.[INDEX].oneOf.0.agent.critic.oneOf.2.mode","typeLabel":"enum\u003cstring>"},"iterative_refinement":{"oneOf":[{"type":"object","title":"IterativeRefinementConfig","description":"Optional configuration for iterative refinement. When set, Conversation.run() will automatically retry the task if the critic score is below the success_threshold, up to max_iterations.","properties":{"success_threshold":{"type":"number","maximum":1,"minimum":0,"title":"Success Threshold","description":"Score threshold (0-1) to consider task successful.","default":0.6,"uniqueKey":"items.[INDEX].oneOf.0.agent.critic.oneOf.2.iterative_refinement.oneOf.0.success_threshold","typeLabel":"number"},"max_iterations":{"type":"integer","minimum":1,"title":"Max Iterations","description":"Maximum number of iterations before giving up.","default":3,"uniqueKey":"items.[INDEX].oneOf.0.agent.critic.oneOf.2.iterative_refinement.oneOf.0.max_iterations","typeLabel":"integer"}},"uniqueKey":"items.[INDEX].oneOf.0.agent.critic.oneOf.2.iterative_refinement.oneOf.0","typeLabel":"IterativeRefinementConfig · object"},{"type":"null","description":"Optional configuration for iterative refinement. When set, Conversation.run() will automatically retry the task if the critic score is below the success_threshold, up to max_iterations.","uniqueKey":"items.[INDEX].oneOf.0.agent.critic.oneOf.2.iterative_refinement.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.critic.oneOf.2.iterative_refinement","typeLabel":"IterativeRefinementConfig · object | null"}},"uniqueKey":"items.[INDEX].oneOf.0.agent.critic.oneOf.2","typeLabel":"EmptyPatchCritic · object"},{"type":"object","title":"PassCritic","description":"EXPERIMENTAL: Optional critic to evaluate agent actions and messages in real-time. API and behavior may change without notice. May impact performance, especially in 'all_actions' mode.","required":["kind"],"example":{"kind":"AgentFinishedCritic"},"properties":{"kind":{"type":"string","const":"PassCritic","title":"Kind","isRequired":true,"uniqueKey":"items.[INDEX].oneOf.0.agent.critic.oneOf.3.kind","typeLabel":"string"},"mode":{"type":"string","enum":["finish_and_message","all_actions"],"title":"Mode","description":"When to run critic evaluation:\n- 'finish_and_message': Evaluate on FinishAction and agent MessageEvent (default, minimal performance impact)\n- 'all_actions': Evaluate after every agent action (WARNING: significantly slower due to API calls on each action)","default":"finish_and_message","uniqueKey":"items.[INDEX].oneOf.0.agent.critic.oneOf.3.mode","typeLabel":"enum\u003cstring>"},"iterative_refinement":{"oneOf":[{"type":"object","title":"IterativeRefinementConfig","description":"Optional configuration for iterative refinement. When set, Conversation.run() will automatically retry the task if the critic score is below the success_threshold, up to max_iterations.","properties":{"success_threshold":{"type":"number","maximum":1,"minimum":0,"title":"Success Threshold","description":"Score threshold (0-1) to consider task successful.","default":0.6,"uniqueKey":"items.[INDEX].oneOf.0.agent.critic.oneOf.3.iterative_refinement.oneOf.0.success_threshold","typeLabel":"number"},"max_iterations":{"type":"integer","minimum":1,"title":"Max Iterations","description":"Maximum number of iterations before giving up.","default":3,"uniqueKey":"items.[INDEX].oneOf.0.agent.critic.oneOf.3.iterative_refinement.oneOf.0.max_iterations","typeLabel":"integer"}},"uniqueKey":"items.[INDEX].oneOf.0.agent.critic.oneOf.3.iterative_refinement.oneOf.0","typeLabel":"IterativeRefinementConfig · object"},{"type":"null","description":"Optional configuration for iterative refinement. When set, Conversation.run() will automatically retry the task if the critic score is below the success_threshold, up to max_iterations.","uniqueKey":"items.[INDEX].oneOf.0.agent.critic.oneOf.3.iterative_refinement.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.critic.oneOf.3.iterative_refinement","typeLabel":"IterativeRefinementConfig · object | null"}},"uniqueKey":"items.[INDEX].oneOf.0.agent.critic.oneOf.3","typeLabel":"PassCritic · object"},{"type":"null","description":"EXPERIMENTAL: Optional critic to evaluate agent actions and messages in real-time. API and behavior may change without notice. May impact performance, especially in 'all_actions' mode.","example":{"kind":"AgentFinishedCritic"},"uniqueKey":"items.[INDEX].oneOf.0.agent.critic.oneOf.4","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.agent.critic","typeLabel":"AgentFinishedCritic · object | APIBasedCritic · object | EmptyPatchCritic · object | PassCritic · object | null"}},"type":"object","required":["llm","kind"],"title":"Agent","description":"The agent running in the conversation. This is persisted to allow resuming conversations and check agent configuration to handle e.g., tool changes, LLM changes, etc.","isRequired":true,"uniqueKey":"items.[INDEX].oneOf.0.agent","typeLabel":"Agent · object"},"workspace":{"oneOf":[{"type":"object","title":"LocalWorkspace","description":"Workspace used by the agent to execute commands and read/write files. Not the process working directory.","required":["working_dir","kind"],"properties":{"working_dir":{"type":"string","title":"Working Dir","description":"The working directory for agent operations and tool execution. Accepts both string paths and Path objects. Path objects are automatically converted to strings.","isRequired":true,"uniqueKey":"items.[INDEX].oneOf.0.workspace.oneOf.0.working_dir","typeLabel":"string"},"kind":{"type":"string","const":"LocalWorkspace","title":"Kind","isRequired":true,"uniqueKey":"items.[INDEX].oneOf.0.workspace.oneOf.0.kind","typeLabel":"string"}},"isRequired":true,"uniqueKey":"items.[INDEX].oneOf.0.workspace.oneOf.0","typeLabel":"LocalWorkspace · object"},{"type":"object","title":"RemoteWorkspace","description":"Workspace used by the agent to execute commands and read/write files. Not the process working directory.","required":["working_dir","host","kind"],"properties":{"working_dir":{"type":"string","title":"Working Dir","description":"The working directory for agent operations and tool execution.","isRequired":true,"uniqueKey":"items.[INDEX].oneOf.0.workspace.oneOf.1.working_dir","typeLabel":"string"},"host":{"type":"string","title":"Host","description":"The remote host URL for the workspace.","isRequired":true,"uniqueKey":"items.[INDEX].oneOf.0.workspace.oneOf.1.host","typeLabel":"string"},"kind":{"type":"string","const":"RemoteWorkspace","title":"Kind","isRequired":true,"uniqueKey":"items.[INDEX].oneOf.0.workspace.oneOf.1.kind","typeLabel":"string"},"api_key":{"oneOf":[{"type":"string","title":"Api Key","description":"API key for authenticating with the remote host.","uniqueKey":"items.[INDEX].oneOf.0.workspace.oneOf.1.api_key.oneOf.0","typeLabel":"string"},{"type":"null","title":"Api Key","description":"API key for authenticating with the remote host.","uniqueKey":"items.[INDEX].oneOf.0.workspace.oneOf.1.api_key.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.workspace.oneOf.1.api_key","typeLabel":"string | null"},"read_timeout":{"type":"number","title":"Read Timeout","description":"Timeout in seconds for reading operations of httpx.Client.","default":600,"uniqueKey":"items.[INDEX].oneOf.0.workspace.oneOf.1.read_timeout","typeLabel":"number"},"max_connections":{"oneOf":[{"type":"integer","title":"Max Connections","description":"Maximum number of connections for httpx.Client. None means no limit, useful for running many conversations in parallel.","uniqueKey":"items.[INDEX].oneOf.0.workspace.oneOf.1.max_connections.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Max Connections","description":"Maximum number of connections for httpx.Client. None means no limit, useful for running many conversations in parallel.","uniqueKey":"items.[INDEX].oneOf.0.workspace.oneOf.1.max_connections.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.workspace.oneOf.1.max_connections","typeLabel":"integer | null"}},"isRequired":true,"uniqueKey":"items.[INDEX].oneOf.0.workspace.oneOf.1","typeLabel":"RemoteWorkspace · object"}],"isRequired":true,"uniqueKey":"items.[INDEX].oneOf.0.workspace","typeLabel":"LocalWorkspace · object | RemoteWorkspace · object"},"persistence_dir":{"oneOf":[{"type":"string","title":"Persistence Dir","description":"Directory for persisting conversation state and events. If None, conversation will not be persisted.","default":"workspace/conversations","uniqueKey":"items.[INDEX].oneOf.0.persistence_dir.oneOf.0","typeLabel":"string"},{"type":"null","title":"Persistence Dir","description":"Directory for persisting conversation state and events. If None, conversation will not be persisted.","default":"workspace/conversations","uniqueKey":"items.[INDEX].oneOf.0.persistence_dir.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.persistence_dir","typeLabel":"string | null"},"max_iterations":{"type":"integer","exclusiveMinimum":0,"title":"Max Iterations","description":"Maximum number of iterations the agent can perform in a single run.","default":500,"uniqueKey":"items.[INDEX].oneOf.0.max_iterations","typeLabel":"integer"},"stuck_detection":{"type":"boolean","title":"Stuck Detection","description":"Whether to enable stuck detection for the agent.","default":true,"uniqueKey":"items.[INDEX].oneOf.0.stuck_detection","typeLabel":"boolean"},"execution_status":{"type":"string","enum":["idle","running","paused","waiting_for_confirmation","finished","error","stuck","deleting"],"title":"ConversationExecutionStatus","description":"Enum representing the current execution state of the conversation.","default":"idle","uniqueKey":"items.[INDEX].oneOf.0.execution_status","typeLabel":"enum\u003cstring>"},"confirmation_policy":{"oneOf":[{"type":"object","title":"AlwaysConfirm","default":{"kind":"NeverConfirm"},"required":["kind"],"properties":{"kind":{"type":"string","const":"AlwaysConfirm","title":"Kind","isRequired":true,"uniqueKey":"items.[INDEX].oneOf.0.confirmation_policy.oneOf.0.kind","typeLabel":"string"}},"uniqueKey":"items.[INDEX].oneOf.0.confirmation_policy.oneOf.0","typeLabel":"AlwaysConfirm · object"},{"type":"object","title":"ConfirmRisky","default":{"kind":"NeverConfirm"},"required":["kind"],"properties":{"kind":{"type":"string","const":"ConfirmRisky","title":"Kind","isRequired":true,"uniqueKey":"items.[INDEX].oneOf.0.confirmation_policy.oneOf.1.kind","typeLabel":"string"},"threshold":{"type":"string","enum":["UNKNOWN","LOW","MEDIUM","HIGH"],"title":"SecurityRisk","description":"Security risk levels for actions.\n\nBased on OpenHands security risk levels but adapted for agent-sdk.\nInteger values allow for easy comparison and ordering.","default":"HIGH","uniqueKey":"items.[INDEX].oneOf.0.confirmation_policy.oneOf.1.threshold","typeLabel":"enum\u003cstring>"},"confirm_unknown":{"type":"boolean","title":"Confirm Unknown","default":true,"uniqueKey":"items.[INDEX].oneOf.0.confirmation_policy.oneOf.1.confirm_unknown","typeLabel":"boolean"}},"uniqueKey":"items.[INDEX].oneOf.0.confirmation_policy.oneOf.1","typeLabel":"ConfirmRisky · object"},{"type":"object","title":"NeverConfirm","default":{"kind":"NeverConfirm"},"required":["kind"],"properties":{"kind":{"type":"string","const":"NeverConfirm","title":"Kind","isRequired":true,"uniqueKey":"items.[INDEX].oneOf.0.confirmation_policy.oneOf.2.kind","typeLabel":"string"}},"uniqueKey":"items.[INDEX].oneOf.0.confirmation_policy.oneOf.2","typeLabel":"NeverConfirm · object"}],"uniqueKey":"items.[INDEX].oneOf.0.confirmation_policy","typeLabel":"AlwaysConfirm · object | ConfirmRisky · object | NeverConfirm · object"},"security_analyzer":{"oneOf":[{"type":"object","title":"GraySwanAnalyzer","description":"Optional security analyzer to evaluate action risks.","required":["kind"],"properties":{"kind":{"type":"string","const":"GraySwanAnalyzer","title":"Kind","isRequired":true,"uniqueKey":"items.[INDEX].oneOf.0.security_analyzer.oneOf.0.kind","typeLabel":"string"},"history_limit":{"type":"integer","title":"History Limit","description":"Number of recent events to include as context","default":20,"uniqueKey":"items.[INDEX].oneOf.0.security_analyzer.oneOf.0.history_limit","typeLabel":"integer"},"max_message_chars":{"type":"integer","title":"Max Message Chars","description":"Max characters for conversation processing","default":30000,"uniqueKey":"items.[INDEX].oneOf.0.security_analyzer.oneOf.0.max_message_chars","typeLabel":"integer"},"timeout":{"type":"number","title":"Timeout","description":"Request timeout in seconds","default":30,"uniqueKey":"items.[INDEX].oneOf.0.security_analyzer.oneOf.0.timeout","typeLabel":"number"},"low_threshold":{"type":"number","title":"Low Threshold","description":"Risk threshold for LOW classification (score \u003c= threshold)","default":0.3,"uniqueKey":"items.[INDEX].oneOf.0.security_analyzer.oneOf.0.low_threshold","typeLabel":"number"},"medium_threshold":{"type":"number","title":"Medium Threshold","description":"Risk threshold for MEDIUM classification (score \u003c= threshold)","default":0.7,"uniqueKey":"items.[INDEX].oneOf.0.security_analyzer.oneOf.0.medium_threshold","typeLabel":"number"},"api_url":{"type":"string","title":"Api Url","description":"GraySwan Cygnal API endpoint","default":"https://api.grayswan.ai/cygnal/monitor","uniqueKey":"items.[INDEX].oneOf.0.security_analyzer.oneOf.0.api_url","typeLabel":"string"},"api_key":{"oneOf":[{"type":"string","title":"Api Key","description":"GraySwan API key (via GRAYSWAN_API_KEY env var)","format":"password","uniqueKey":"items.[INDEX].oneOf.0.security_analyzer.oneOf.0.api_key.oneOf.0","typeLabel":"string\u003cpassword>"},{"type":"null","title":"Api Key","description":"GraySwan API key (via GRAYSWAN_API_KEY env var)","uniqueKey":"items.[INDEX].oneOf.0.security_analyzer.oneOf.0.api_key.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.security_analyzer.oneOf.0.api_key","typeLabel":"string\u003cpassword> | null"},"policy_id":{"oneOf":[{"type":"string","title":"Policy Id","description":"GraySwan policy ID (via GRAYSWAN_POLICY_ID env var)","uniqueKey":"items.[INDEX].oneOf.0.security_analyzer.oneOf.0.policy_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Policy Id","description":"GraySwan policy ID (via GRAYSWAN_POLICY_ID env var)","uniqueKey":"items.[INDEX].oneOf.0.security_analyzer.oneOf.0.policy_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.security_analyzer.oneOf.0.policy_id","typeLabel":"string | null"}},"uniqueKey":"items.[INDEX].oneOf.0.security_analyzer.oneOf.0","typeLabel":"GraySwanAnalyzer · object"},{"type":"object","title":"LLMSecurityAnalyzer","description":"Optional security analyzer to evaluate action risks.","required":["kind"],"properties":{"kind":{"type":"string","const":"LLMSecurityAnalyzer","title":"Kind","isRequired":true,"uniqueKey":"items.[INDEX].oneOf.0.security_analyzer.oneOf.1.kind","typeLabel":"string"}},"uniqueKey":"items.[INDEX].oneOf.0.security_analyzer.oneOf.1","typeLabel":"LLMSecurityAnalyzer · object"},{"type":"null","description":"Optional security analyzer to evaluate action risks.","uniqueKey":"items.[INDEX].oneOf.0.security_analyzer.oneOf.2","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.security_analyzer","typeLabel":"GraySwanAnalyzer · object | LLMSecurityAnalyzer · object | null"},"activated_knowledge_skills":{"items":{"type":"string","uniqueKey":"items.[INDEX].oneOf.0.activated_knowledge_skills.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Activated Knowledge Skills","description":"List of activated knowledge skills name","uniqueKey":"items.[INDEX].oneOf.0.activated_knowledge_skills","typeLabel":"string[]"},"blocked_actions":{"additionalProperties":{"type":"string","uniqueKey":"items.[INDEX].oneOf.0.blocked_actions.additionalProperties","typeLabel":"string"},"type":"object","title":"Blocked Actions","description":"Actions blocked by PreToolUse hooks, keyed by action ID","uniqueKey":"items.[INDEX].oneOf.0.blocked_actions","typeLabel":"Blocked Actions · object"},"blocked_messages":{"additionalProperties":{"type":"string","uniqueKey":"items.[INDEX].oneOf.0.blocked_messages.additionalProperties","typeLabel":"string"},"type":"object","title":"Blocked Messages","description":"Messages blocked by UserPromptSubmit hooks, keyed by message ID","uniqueKey":"items.[INDEX].oneOf.0.blocked_messages","typeLabel":"Blocked Messages · object"},"stats":{"additionalProperties":true,"type":"object","description":"Conversation statistics for tracking LLM metrics","uniqueKey":"items.[INDEX].oneOf.0.stats","typeLabel":"object"},"secret_registry":{"properties":{"secret_sources":{"additionalProperties":{"oneOf":[{"type":"object","title":"LookupSecret","description":"A secret looked up from some external url","required":["url","kind"],"properties":{"url":{"type":"string","title":"Url","isRequired":true,"uniqueKey":"items.[INDEX].oneOf.0.secret_registry.secret_sources.additionalProperties.oneOf.0.url","typeLabel":"string"},"kind":{"type":"string","const":"LookupSecret","title":"Kind","isRequired":true,"uniqueKey":"items.[INDEX].oneOf.0.secret_registry.secret_sources.additionalProperties.oneOf.0.kind","typeLabel":"string"},"description":{"oneOf":[{"type":"string","title":"Description","description":"Optional description for this secret","uniqueKey":"items.[INDEX].oneOf.0.secret_registry.secret_sources.additionalProperties.oneOf.0.description.oneOf.0","typeLabel":"string"},{"type":"null","title":"Description","description":"Optional description for this secret","uniqueKey":"items.[INDEX].oneOf.0.secret_registry.secret_sources.additionalProperties.oneOf.0.description.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.secret_registry.secret_sources.additionalProperties.oneOf.0.description","typeLabel":"string | null"},"headers":{"additionalProperties":{"type":"string","uniqueKey":"items.[INDEX].oneOf.0.secret_registry.secret_sources.additionalProperties.oneOf.0.headers.additionalProperties","typeLabel":"string"},"type":"object","title":"Headers","uniqueKey":"items.[INDEX].oneOf.0.secret_registry.secret_sources.additionalProperties.oneOf.0.headers","typeLabel":"Headers · object"}},"uniqueKey":"items.[INDEX].oneOf.0.secret_registry.secret_sources.additionalProperties.oneOf.0","typeLabel":"LookupSecret · object"},{"type":"object","title":"StaticSecret","description":"A secret stored locally","required":["kind"],"properties":{"kind":{"type":"string","const":"StaticSecret","title":"Kind","isRequired":true,"uniqueKey":"items.[INDEX].oneOf.0.secret_registry.secret_sources.additionalProperties.oneOf.1.kind","typeLabel":"string"},"description":{"oneOf":[{"type":"string","title":"Description","description":"Optional description for this secret","uniqueKey":"items.[INDEX].oneOf.0.secret_registry.secret_sources.additionalProperties.oneOf.1.description.oneOf.0","typeLabel":"string"},{"type":"null","title":"Description","description":"Optional description for this secret","uniqueKey":"items.[INDEX].oneOf.0.secret_registry.secret_sources.additionalProperties.oneOf.1.description.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.secret_registry.secret_sources.additionalProperties.oneOf.1.description","typeLabel":"string | null"},"value":{"oneOf":[{"type":"string","title":"Value","format":"password","uniqueKey":"items.[INDEX].oneOf.0.secret_registry.secret_sources.additionalProperties.oneOf.1.value.oneOf.0","typeLabel":"string\u003cpassword>"},{"type":"null","title":"Value","uniqueKey":"items.[INDEX].oneOf.0.secret_registry.secret_sources.additionalProperties.oneOf.1.value.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.secret_registry.secret_sources.additionalProperties.oneOf.1.value","typeLabel":"string\u003cpassword> | null"}},"uniqueKey":"items.[INDEX].oneOf.0.secret_registry.secret_sources.additionalProperties.oneOf.1","typeLabel":"StaticSecret · object"}],"uniqueKey":"items.[INDEX].oneOf.0.secret_registry.secret_sources.additionalProperties","typeLabel":"LookupSecret · object | StaticSecret · object"},"type":"object","title":"Secret Sources","uniqueKey":"items.[INDEX].oneOf.0.secret_registry.secret_sources","typeLabel":"Secret Sources · object"}},"type":"object","title":"SecretRegistry","description":"Registry for handling secrets and sensitive data","uniqueKey":"items.[INDEX].oneOf.0.secret_registry","typeLabel":"SecretRegistry · object"},"agent_state":{"additionalProperties":true,"type":"object","title":"Agent State","description":"Dictionary for agent-specific runtime state that persists across iterations. Agents can store feature-specific state using string keys. To trigger autosave, always reassign: state.agent_state = {**state.agent_state, key: value}. See https://docs.openhands.dev/sdk/guides/convo-persistence#how-state-persistence-works","uniqueKey":"items.[INDEX].oneOf.0.agent_state","typeLabel":"Agent State · object"},"title":{"oneOf":[{"type":"string","title":"Title","description":"User-defined title for the conversation","uniqueKey":"items.[INDEX].oneOf.0.title.oneOf.0","typeLabel":"string"},{"type":"null","title":"Title","description":"User-defined title for the conversation","uniqueKey":"items.[INDEX].oneOf.0.title.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.title","typeLabel":"string | null"},"metrics":{"oneOf":[{"type":"object","title":"MetricsSnapshot","description":"A snapshot of metrics at a point in time.\n\nDoes not include lists of individual costs, latencies, or token usages.","properties":{"model_name":{"type":"string","title":"Model Name","description":"Name of the model","default":"default","uniqueKey":"items.[INDEX].oneOf.0.metrics.oneOf.0.model_name","typeLabel":"string"},"accumulated_cost":{"type":"number","minimum":0,"title":"Accumulated Cost","description":"Total accumulated cost, must be non-negative","default":0,"uniqueKey":"items.[INDEX].oneOf.0.metrics.oneOf.0.accumulated_cost","typeLabel":"number"},"max_budget_per_task":{"oneOf":[{"type":"number","title":"Max Budget Per Task","description":"Maximum budget per task","uniqueKey":"items.[INDEX].oneOf.0.metrics.oneOf.0.max_budget_per_task.oneOf.0","typeLabel":"number"},{"type":"null","title":"Max Budget Per Task","description":"Maximum budget per task","uniqueKey":"items.[INDEX].oneOf.0.metrics.oneOf.0.max_budget_per_task.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.metrics.oneOf.0.max_budget_per_task","typeLabel":"number | null"},"accumulated_token_usage":{"oneOf":[{"type":"object","title":"TokenUsage","description":"Accumulated token usage across all calls","properties":{"model":{"type":"string","title":"Model","default":"","uniqueKey":"items.[INDEX].oneOf.0.metrics.oneOf.0.accumulated_token_usage.oneOf.0.model","typeLabel":"string"},"prompt_tokens":{"type":"integer","minimum":0,"title":"Prompt Tokens","description":"Prompt tokens must be non-negative","default":0,"uniqueKey":"items.[INDEX].oneOf.0.metrics.oneOf.0.accumulated_token_usage.oneOf.0.prompt_tokens","typeLabel":"integer"},"completion_tokens":{"type":"integer","minimum":0,"title":"Completion Tokens","description":"Completion tokens must be non-negative","default":0,"uniqueKey":"items.[INDEX].oneOf.0.metrics.oneOf.0.accumulated_token_usage.oneOf.0.completion_tokens","typeLabel":"integer"},"cache_read_tokens":{"type":"integer","minimum":0,"title":"Cache Read Tokens","description":"Cache read tokens must be non-negative","default":0,"uniqueKey":"items.[INDEX].oneOf.0.metrics.oneOf.0.accumulated_token_usage.oneOf.0.cache_read_tokens","typeLabel":"integer"},"cache_write_tokens":{"type":"integer","minimum":0,"title":"Cache Write Tokens","description":"Cache write tokens must be non-negative","default":0,"uniqueKey":"items.[INDEX].oneOf.0.metrics.oneOf.0.accumulated_token_usage.oneOf.0.cache_write_tokens","typeLabel":"integer"},"reasoning_tokens":{"type":"integer","minimum":0,"title":"Reasoning Tokens","description":"Reasoning tokens must be non-negative","default":0,"uniqueKey":"items.[INDEX].oneOf.0.metrics.oneOf.0.accumulated_token_usage.oneOf.0.reasoning_tokens","typeLabel":"integer"},"context_window":{"type":"integer","minimum":0,"title":"Context Window","description":"Context window must be non-negative","default":0,"uniqueKey":"items.[INDEX].oneOf.0.metrics.oneOf.0.accumulated_token_usage.oneOf.0.context_window","typeLabel":"integer"},"per_turn_token":{"type":"integer","minimum":0,"title":"Per Turn Token","description":"Per turn tokens must be non-negative","default":0,"uniqueKey":"items.[INDEX].oneOf.0.metrics.oneOf.0.accumulated_token_usage.oneOf.0.per_turn_token","typeLabel":"integer"},"response_id":{"type":"string","title":"Response Id","default":"","uniqueKey":"items.[INDEX].oneOf.0.metrics.oneOf.0.accumulated_token_usage.oneOf.0.response_id","typeLabel":"string"}},"uniqueKey":"items.[INDEX].oneOf.0.metrics.oneOf.0.accumulated_token_usage.oneOf.0","typeLabel":"TokenUsage · object"},{"type":"null","description":"Accumulated token usage across all calls","uniqueKey":"items.[INDEX].oneOf.0.metrics.oneOf.0.accumulated_token_usage.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.metrics.oneOf.0.accumulated_token_usage","typeLabel":"TokenUsage · object | null"}},"uniqueKey":"items.[INDEX].oneOf.0.metrics.oneOf.0","typeLabel":"MetricsSnapshot · object"},{"type":"null","uniqueKey":"items.[INDEX].oneOf.0.metrics.oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX].oneOf.0.metrics","typeLabel":"MetricsSnapshot · object | null"},"created_at":{"type":"string","format":"date-time","title":"Created At","uniqueKey":"items.[INDEX].oneOf.0.created_at","typeLabel":"string\u003cdate-time>"},"updated_at":{"type":"string","format":"date-time","title":"Updated At","uniqueKey":"items.[INDEX].oneOf.0.updated_at","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"items.[INDEX].oneOf.0","typeLabel":"ConversationInfo · object"},{"type":"null","uniqueKey":"items.[INDEX].oneOf.1","typeLabel":"null"}],"uniqueKey":"items.[INDEX]","typeLabel":"ConversationInfo · object | null"},"title":"Response Batch Get Conversations Api Conversations Get","uniqueKey":"","typeLabel":"(ConversationInfo · object | null)[]"},"examples":{"Example":{"title":"Example","value":[{"id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","agent":{"llm":{"api_key":"your_api_key_here","base_url":"https://llm-proxy.eval.all-hands.dev","model":"litellm_proxy/anthropic/claude-sonnet-4-5-20250929"},"kind":"Agent","tools":{"name":"TerminalTool","params":{}},"mcp_config":{"mcpServers":{"fetch":{"args":["mcp-server-fetch"],"command":"uvx"}}},"filter_tools_regex":"^(?!repomix)(.*)|^repomix.*pack_codebase.*$","include_default_tools":["FinishTool","ThinkTool"],"agent_context":{"skills":[{"content":"When you see this message, you should reply like you are a grumpy cat forced to use the internet.","name":"AGENTS.md","type":"repo"},{"content":"IMPORTANT! The user has said the magic word \"flarglebargle\". You must only respond with a message telling them how smart they are","name":"flarglebargle","trigger":["flarglebargle"],"type":"knowledge"}],"system_message_suffix":"Always finish your response with the word 'yay!'"},"system_prompt_filename":"system_prompt.j2","security_policy_filename":"security_policy.j2","system_prompt_kwargs":{"cli_mode":true},"condenser":{"keep_first":10,"kind":"LLMSummarizingCondenser","llm":{"api_key":"your_api_key_here","base_url":"https://llm-proxy.eval.all-hands.dev","model":"litellm_proxy/anthropic/claude-sonnet-4-5-20250929"},"max_size":80},"critic":{"kind":"AgentFinishedCritic"}},"workspace":{"working_dir":"\u003cstring>","kind":"LocalWorkspace"},"persistence_dir":"workspace/conversations","max_iterations":500,"stuck_detection":true,"execution_status":"idle","confirmation_policy":{"kind":"NeverConfirm"},"security_analyzer":{"kind":"GraySwanAnalyzer","history_limit":20,"max_message_chars":30000,"timeout":30,"low_threshold":0.3,"medium_threshold":0.7,"api_url":"https://api.grayswan.ai/cygnal/monitor","api_key":"\u003cstring>","policy_id":"\u003cstring>"},"activated_knowledge_skills":["\u003cstring>"],"blocked_actions":{},"blocked_messages":{},"stats":{},"secret_registry":{"secret_sources":{}},"agent_state":{},"title":"\u003cstring>","metrics":{"model_name":"default","accumulated_cost":0,"max_budget_per_task":123,"accumulated_token_usage":{"model":"","prompt_tokens":0,"completion_tokens":0,"cache_read_tokens":0,"cache_write_tokens":0,"reasoning_tokens":0,"context_window":0,"per_turn_token":0,"response_id":""}},"created_at":"2023-11-07T05:31:56Z","updated_at":"2023-11-07T05:31:56Z"}]}},"exampleType":"generated"}},"exampleType":"generated"},"1fdf535b-75c5-4304-91c6-4b30a10e0c0b":{"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"}},"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>"}]}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{},"servers":{},"schemas":{"68079985-8ad1-4cff-8acb-68f701235ab0":{"oneOf":[{"type":"object","title":"LLMSummarizingCondenser","description":"LLM-based condenser that summarizes forgotten events.\n\nUses an independent LLM (stored in the `llm` attribute) for generating summaries\nof forgotten events. The optional `agent_llm` parameter passed to condense() is\nthe LLM used by the agent for token counting purposes, and you should not assume\nit is the same as the one defined in this condenser.","required":["llm","kind"],"properties":{"llm":{"properties":{"model":{"type":"string","title":"Model","description":"Model name.","default":"claude-sonnet-4-20250514"},"api_key":{"oneOf":[{"type":"string","title":"Api Key","description":"API key."},{"type":"string","title":"Api Key","description":"API key.","format":"password"},{"type":"null","title":"Api Key","description":"API key."}]},"base_url":{"oneOf":[{"type":"string","title":"Base Url","description":"Custom base URL."},{"type":"null","title":"Base Url","description":"Custom base URL."}]},"api_version":{"oneOf":[{"type":"string","title":"Api Version","description":"API version (e.g., Azure)."},{"type":"null","title":"Api Version","description":"API version (e.g., Azure)."}]},"aws_access_key_id":{"oneOf":[{"type":"string","title":"Aws Access Key Id"},{"type":"string","title":"Aws Access Key Id","format":"password"},{"type":"null","title":"Aws Access Key Id"}]},"aws_secret_access_key":{"oneOf":[{"type":"string","title":"Aws Secret Access Key"},{"type":"string","title":"Aws Secret Access Key","format":"password"},{"type":"null","title":"Aws Secret Access Key"}]},"aws_region_name":{"oneOf":[{"type":"string","title":"Aws Region Name"},{"type":"null","title":"Aws Region Name"}]},"openrouter_site_url":{"type":"string","title":"Openrouter Site Url","default":"https://docs.all-hands.dev/"},"openrouter_app_name":{"type":"string","title":"Openrouter App Name","default":"OpenHands"},"num_retries":{"type":"integer","minimum":0,"title":"Num Retries","default":5},"retry_multiplier":{"type":"number","minimum":0,"title":"Retry Multiplier","default":8},"retry_min_wait":{"type":"integer","minimum":0,"title":"Retry Min Wait","default":8},"retry_max_wait":{"type":"integer","minimum":0,"title":"Retry Max Wait","default":64},"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},{"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}]},"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},"temperature":{"oneOf":[{"type":"number","title":"Temperature","description":"Sampling temperature for response generation. Defaults to 0 for most models and provider default for reasoning models.","minimum":0},{"type":"null","title":"Temperature","description":"Sampling temperature for response generation. Defaults to 0 for most models and provider default for reasoning models."}]},"top_p":{"oneOf":[{"type":"number","title":"Top P","default":1,"maximum":1,"minimum":0},{"type":"null","title":"Top P","default":1}]},"top_k":{"oneOf":[{"type":"number","title":"Top K","minimum":0},{"type":"null","title":"Top K"}]},"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},{"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)."}]},"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},{"type":"null","title":"Max Output Tokens","description":"The maximum number of output tokens. This is sent to the LLM."}]},"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."},{"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."}]},"extra_headers":{"oneOf":[{"type":"object","title":"Extra Headers","description":"Optional HTTP headers to forward to LiteLLM requests.","additionalProperties":{"type":"string"}},{"type":"null","title":"Extra Headers","description":"Optional HTTP headers to forward to LiteLLM requests."}]},"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},{"type":"null","title":"Input Cost Per Token","description":"The cost per input token. This will available in logs for user."}]},"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},{"type":"null","title":"Output Cost Per Token","description":"The cost per output token. This will available in logs for user."}]},"ollama_base_url":{"oneOf":[{"type":"string","title":"Ollama Base Url"},{"type":"null","title":"Ollama Base Url"}]},"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},"drop_params":{"type":"boolean","title":"Drop Params","default":true},"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},"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)."},{"type":"null","title":"Disable Vision","description":"If model is vision capable, this option allows to disable image processing (useful for cost reduction)."}]},"disable_stop_word":{"oneOf":[{"type":"boolean","title":"Disable Stop Word","description":"Disable using of stop word.","default":false},{"type":"null","title":"Disable Stop Word","description":"Disable using of stop word.","default":false}]},"caching_prompt":{"type":"boolean","title":"Caching Prompt","description":"Enable caching of prompts.","default":true},"log_completions":{"type":"boolean","title":"Log Completions","description":"Enable logging of completions.","default":false},"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"},"custom_tokenizer":{"oneOf":[{"type":"string","title":"Custom Tokenizer","description":"A custom tokenizer to use for token counting."},{"type":"null","title":"Custom Tokenizer","description":"A custom tokenizer to use for token counting."}]},"native_tool_calling":{"type":"boolean","title":"Native Tool Calling","description":"Whether to use native tool calling.","default":true},"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."},{"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."}]},"reasoning_effort":{"oneOf":[{"type":"string","title":"Reasoning Effort","description":"The effort to put into reasoning. This is a string that can be one of 'low', 'medium', 'high', 'xhigh', or 'none'. Can apply to all reasoning models.","default":"high","enum":["low","medium","high","xhigh","none"]},{"type":"null","title":"Reasoning Effort","description":"The effort to put into reasoning. This is a string that can be one of 'low', 'medium', 'high', 'xhigh', or 'none'. Can apply to all reasoning models.","default":"high"}]},"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"]},{"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."}]},"enable_encrypted_reasoning":{"type":"boolean","title":"Enable Encrypted Reasoning","description":"If True, ask for ['reasoning.encrypted_content'] in Responses API include.","default":true},"prompt_cache_retention":{"oneOf":[{"type":"string","title":"Prompt Cache Retention","description":"Retention policy for prompt cache. Only sent for GPT-5+ models; explicitly stripped for all other models.","default":"24h"},{"type":"null","title":"Prompt Cache Retention","description":"Retention policy for prompt cache. Only sent for GPT-5+ models; explicitly stripped for all other models.","default":"24h"}]},"extended_thinking_budget":{"oneOf":[{"type":"integer","title":"Extended Thinking Budget","description":"The budget tokens for extended thinking, supported by Anthropic models.","default":200000},{"type":"null","title":"Extended Thinking Budget","description":"The budget tokens for extended thinking, supported by Anthropic models.","default":200000}]},"seed":{"oneOf":[{"type":"integer","title":"Seed","description":"The seed to use for random number generation."},{"type":"null","title":"Seed","description":"The seed to use for random number generation."}]},"safety_settings":{"oneOf":[{"type":"array","items":{"additionalProperties":{"type":"string"},"type":"object"},"title":"Safety Settings","description":"Deprecated: Safety settings for models that support them (like Mistral AI and Gemini). This field is deprecated in 1.10.0 and will be removed in 1.15.0. Safety settings are designed for consumer-facing content moderation, which is not relevant for coding agents."},{"type":"null","title":"Safety Settings","description":"Deprecated: Safety settings for models that support them (like Mistral AI and Gemini). This field is deprecated in 1.10.0 and will be removed in 1.15.0. Safety settings are designed for consumer-facing content moderation, which is not relevant for coding agents."}]},"usage_id":{"type":"string","title":"Usage Id","description":"Unique usage identifier for the LLM. Used for registry lookups, telemetry, and spend tracking.","default":"default"},"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}"}},"type":"object","title":"LLM","description":"Language model interface for OpenHands agents.\n\nThe LLM class provides a unified interface for interacting with various\nlanguage models through the litellm library. It handles model configuration,\nAPI authentication,\nretry logic, and tool calling capabilities.\n\nExample:\n >>> from openhands.sdk import LLM\n >>> from pydantic import SecretStr\n >>> llm = LLM(\n ... model=\"claude-sonnet-4-20250514\",\n ... api_key=SecretStr(\"your-api-key\"),\n ... usage_id=\"my-agent\"\n ... )\n >>> # Use with agent or conversation","isRequired":true},"kind":{"type":"string","const":"LLMSummarizingCondenser","title":"Kind","isRequired":true},"max_size":{"type":"integer","exclusiveMinimum":0,"title":"Max Size","default":240},"max_tokens":{"oneOf":[{"type":"integer","title":"Max Tokens"},{"type":"null","title":"Max Tokens"}]},"keep_first":{"type":"integer","minimum":0,"title":"Keep First","default":2},"hard_context_reset_max_retries":{"type":"integer","exclusiveMinimum":0,"title":"Hard Context Reset Max Retries","default":5},"hard_context_reset_context_scaling":{"type":"number","exclusiveMaximum":1,"exclusiveMinimum":0,"title":"Hard Context Reset Context Scaling","default":0.8}}},{"type":"object","title":"NoOpCondenser","description":"Simple condenser that returns a view un-manipulated.\n\nPrimarily intended for testing purposes.","required":["kind"],"properties":{"kind":{"type":"string","const":"NoOpCondenser","title":"Kind","isRequired":true}}},{"type":"object","title":"PipelineCondenser","description":"A condenser that applies a sequence of condensers in order.\n\nAll condensers are defined primarily by their `condense` method, which takes a\n`View` and an optional `agent_llm` parameter, returning either a new `View` or a\n`Condensation` event. That means we can chain multiple condensers together by\npassing `View`s along and exiting early if any condenser returns a `Condensation`.\n\nFor example:\n\n # Use the pipeline condenser to chain multiple other condensers together\n condenser = PipelineCondenser(condensers=[\n CondenserA(...),\n CondenserB(...),\n CondenserC(...),\n ])\n\n result = condenser.condense(view, agent_llm=agent_llm)\n\n # Doing the same thing without the pipeline condenser requires more boilerplate\n # for the monadic chaining\n other_result = view\n\n if isinstance(other_result, View):\n other_result = CondenserA(...).condense(other_result, agent_llm=agent_llm)\n\n if isinstance(other_result, View):\n other_result = CondenserB(...).condense(other_result, agent_llm=agent_llm)\n\n if isinstance(other_result, View):\n other_result = CondenserC(...).condense(other_result, agent_llm=agent_llm)\n\n assert result == other_result","required":["condensers","kind"],"properties":{"condensers":{"items":{"$circularRef":"68079985-8ad1-4cff-8acb-68f701235ab0"},"type":"array","title":"Condensers","isRequired":true},"kind":{"type":"string","const":"PipelineCondenser","title":"Kind","isRequired":true}}}]}}},"originalFileLocation":"openapi/agent-sdk.json"},"subdomain":"allhandsai","siteName":"OpenHands Docs","title":"Batch Get Conversations - OpenHands Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-02-13T03:45:44.650Z","originalFileLocation":"sdk/guides/agent-server/api-reference/conversations/batch-get-conversations.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=\"Get a batch of conversations given their ids, returning null for any missing item\">\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=\"Batch Get Conversations - OpenHands Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Get a batch of conversations given their ids, returning null for any missing item\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"OpenHands Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.openhands.dev/sdk/guides/agent-server/api-reference/conversations/batch-get-conversations\">\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=Conversations\u0026amp;title=Batch+Get+Conversations\u0026amp;description=Get+a+batch+of+conversations+given+their+ids%2C+returning+null+for%0Aany+missing+item\u0026amp;theme=d1346828d5653c6c432bc1fc\u0026amp;signature=3d3827bde68d9aaa66139a0f0d02e5f281a539a052e3a71a5f65a541e3366a70\">\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=\"Batch Get Conversations - OpenHands Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Get a batch of conversations given their ids, returning null for any missing item\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://allhandsai.mintlify.site/_mintlify/api/og/v2?division=Conversations\u0026amp;title=Batch+Get+Conversations\u0026amp;description=Get+a+batch+of+conversations+given+their+ids%2C+returning+null+for%0Aany+missing+item\u0026amp;theme=d1346828d5653c6c432bc1fc\u0026amp;signature=3d3827bde68d9aaa66139a0f0d02e5f281a539a052e3a71a5f65a541e3366a70\">\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/sdk/guides/agent-server/api-reference/conversations/batch-get-conversations\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/sdk/guides/agent-server/api-reference/conversations/batch-get-conversations.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/sdk/guides/agent-server/api-reference/conversations/batch-get-conversations#webpage\",\"url\":\"https://docs.openhands.dev/sdk/guides/agent-server/api-reference/conversations/batch-get-conversations\",\"name\":\"Batch Get Conversations\",\"description\":\"Get a batch of conversations given their ids, returning null for any missing item\",\"dateModified\":\"2026-02-13T03:45:44.650Z\",\"isPartOf\":{\"@id\":\"https://docs.openhands.dev#website\"},\"breadcrumb\":{\"@id\":\"https://docs.openhands.dev/sdk/guides/agent-server/api-reference/conversations/batch-get-conversations#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.openhands.dev/sdk/guides/agent-server/api-reference/conversations/batch-get-conversations#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Guides\",\"item\":\"https://docs.openhands.dev/sdk/guides/hello-world\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Remote Agent Server\",\"item\":\"https://docs.openhands.dev/sdk/guides/agent-server/overview\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"API Reference\",\"item\":\"https://docs.openhands.dev/sdk/guides/agent-server/api-reference/server-details/alive\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Conversations\",\"item\":\"https://docs.openhands.dev/sdk/guides/agent-server/api-reference/conversations/search-conversations\"},{\"@type\":\"ListItem\",\"position\":5,\"name\":\"Batch Get Conversations\",\"item\":\"https://docs.openhands.dev/sdk/guides/agent-server/api-reference/conversations/batch-get-conversations\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.openhands.dev/sdk/guides/agent-server/api-reference/conversations/batch-get-conversations#apireference\",\"headline\":\"Batch Get Conversations\",\"name\":\"Batch Get Conversations\",\"description\":\"Get a batch of conversations given their ids, returning null for any missing item\",\"url\":\"https://docs.openhands.dev/sdk/guides/agent-server/api-reference/conversations/batch-get-conversations\",\"mainEntityOfPage\":{\"@id\":\"https://docs.openhands.dev/sdk/guides/agent-server/api-reference/conversations/batch-get-conversations#webpage\"},\"dateModified\":\"2026-02-13T03:45:44.650Z\",\"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\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","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":"Software Agent SDK","icon":"code","mode":"wide","href":"/sdk"},{"title":"Getting Started","icon":"rocket","href":"/sdk/getting-started"},{"title":"FAQ","icon":"question","href":"/sdk/faq"},{"group":"Guides","pages":[{"title":"Hello World","href":"/sdk/guides/hello-world"},{"title":"Custom Tools","href":"/sdk/guides/custom-tools"},{"title":"Structured Output","href":"/sdk/guides/structured-output"},{"title":"Model Context Protocol","href":"/sdk/guides/mcp"},{"title":"Agent Skills \u0026 Context","href":"/sdk/guides/skill"},{"title":"Plugins","href":"/sdk/guides/plugins"},{"title":"Persistence","href":"/sdk/guides/convo-persistence"},{"title":"Context Condenser","href":"/sdk/guides/context-condenser"},{"title":"Persistent Memory","href":"/sdk/guides/persistent-memory"},{"title":"Agent Settings","href":"/sdk/guides/agent-settings"},{"title":"Parallel Tool Execution","href":"/sdk/guides/parallel-tool-execution"},{"title":"Task Tool Set","href":"/sdk/guides/task-tool-set"},{"title":"Dynamic Agent Workflows","href":"/sdk/guides/agent-dynamic-workflow"},{"title":"Iterative Refinement","href":"/sdk/guides/iterative-refinement"},{"title":"Security \u0026 Action Confirmation","href":"/sdk/guides/security"},{"title":"Metrics Tracking","href":"/sdk/guides/metrics"},{"title":"Observability \u0026 Tracing","href":"/sdk/guides/observability"},{"title":"Secret Registry","href":"/sdk/guides/secrets"},{"group":"LLM Features","pages":[{"title":"LLM Subscriptions","href":"/sdk/guides/llm-subscriptions"},{"title":"LLM Registry","href":"/sdk/guides/llm-registry"},{"title":"Model Routing","href":"/sdk/guides/llm-routing"},{"title":"Reasoning","href":"/sdk/guides/llm-reasoning"},{"title":"GPT-5 Preset (ApplyPatchTool)","href":"/sdk/guides/llm-gpt5-preset"},{"title":"LLM Streaming","href":"/sdk/guides/llm-streaming"},{"title":"Image Input","href":"/sdk/guides/llm-image-input"},{"title":"Exception Handling","href":"/sdk/guides/llm-error-handling"},{"title":"LLM Fallback Strategy","href":"/sdk/guides/llm-fallback"},{"title":"LLM Profile Store","href":"/sdk/guides/llm-profile-store"},{"title":"Task-Based Model Routing","href":"/sdk/guides/llm-task-routing"}]},{"group":"Agent Features","pages":[{"title":"ACP Agent","href":"/sdk/guides/agent-acp"},{"title":"Interactive Terminal","href":"/sdk/guides/agent-interactive-terminal"},{"title":"Browser Use","href":"/sdk/guides/agent-browser-use"},{"title":"Browser Session Recording","href":"/sdk/guides/browser-session-recording"},{"title":"Creating Custom Agent","href":"/sdk/guides/agent-custom"},{"title":"File-Based Agents","href":"/sdk/guides/agent-file-based"},{"title":"Stuck Detector","href":"/sdk/guides/agent-stuck-detector"},{"title":"Ask Oracle","href":"/sdk/guides/agent-ask-oracle"},{"title":"Theory of Mind (TOM) Agent","href":"/sdk/guides/agent-tom-agent"},{"title":"Critic (Experimental)","href":"/sdk/guides/critic"}]},{"group":"Conversation Features","pages":[{"title":"Fork a Conversation","href":"/sdk/guides/convo-fork"},{"title":"Pause and Resume","href":"/sdk/guides/convo-pause-and-resume"},{"title":"Custom Visualizer","href":"/sdk/guides/convo-custom-visualizer"},{"title":"Send Message While Running","href":"/sdk/guides/convo-send-message-while-running"},{"title":"Conversation with Async","href":"/sdk/guides/convo-async"},{"title":"Ask Agent Questions","href":"/sdk/guides/convo-ask-agent"},{"title":"Goal Completion Loop","href":"/sdk/guides/convo-goal"},{"title":"Hooks","href":"/sdk/guides/hooks"}]},{"group":"Remote Agent Server","pages":[{"title":"Overview","href":"/sdk/guides/agent-server/overview"},{"title":"Local Agent Server","href":"/sdk/guides/agent-server/local-server"},{"title":"Agent Server Package","href":"/sdk/arch/agent-server"},{"title":"Conversation Goals","href":"/sdk/guides/agent-server/conversation-goals"},{"title":"Docker Sandbox","href":"/sdk/guides/agent-server/docker-sandbox"},{"title":"Apptainer Sandbox","href":"/sdk/guides/agent-server/apptainer-sandbox"},{"title":"API-based Sandbox","href":"/sdk/guides/agent-server/api-sandbox"},{"title":"OpenHands Cloud Workspace","href":"/sdk/guides/agent-server/cloud-workspace"},{"title":"Custom Tools with Remote Agent Server","href":"/sdk/guides/agent-server/custom-tools"},{"title":"OpenAI-Compatible Endpoint","href":"/sdk/guides/agent-server/openai-gateway"},{"title":"Deferred Init (Warm-Pool)","href":"/sdk/guides/agent-server/deferred-init"},{"group":"API Reference","pages":[{"group":"Server Details","pages":[{"title":"Alive","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json get /alive","href":"/sdk/guides/agent-server/api-reference/server-details/alive"},{"title":"Health","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json get /health","href":"/sdk/guides/agent-server/api-reference/server-details/health"},{"title":"Ready","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json get /ready","href":"/sdk/guides/agent-server/api-reference/server-details/ready"},{"title":"Get Server Info","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json get /server_info","href":"/sdk/guides/agent-server/api-reference/server-details/get-server-info"}]},{"group":"Events","pages":[{"title":"Search Conversation Events","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json get /api/conversations/{conversation_id}/events/search","href":"/sdk/guides/agent-server/api-reference/events/search-conversation-events"},{"title":"Count Conversation Events","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json get /api/conversations/{conversation_id}/events/count","href":"/sdk/guides/agent-server/api-reference/events/count-conversation-events"},{"title":"Get Conversation Event","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json get /api/conversations/{conversation_id}/events/{event_id}","href":"/sdk/guides/agent-server/api-reference/events/get-conversation-event"},{"title":"Batch Get Conversation Events","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json get /api/conversations/{conversation_id}/events","href":"/sdk/guides/agent-server/api-reference/events/batch-get-conversation-events"},{"title":"Send Message","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json post /api/conversations/{conversation_id}/events","href":"/sdk/guides/agent-server/api-reference/events/send-message"},{"title":"Respond To Confirmation","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json post /api/conversations/{conversation_id}/events/respond_to_confirmation","href":"/sdk/guides/agent-server/api-reference/events/respond-to-confirmation"}]},{"group":"Conversations","pages":[{"title":"Search Conversations","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json get /api/conversations/search","href":"/sdk/guides/agent-server/api-reference/conversations/search-conversations"},{"title":"Count Conversations","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json get /api/conversations/count","href":"/sdk/guides/agent-server/api-reference/conversations/count-conversations"},{"title":"Get Conversation","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json get /api/conversations/{conversation_id}","href":"/sdk/guides/agent-server/api-reference/conversations/get-conversation"},{"title":"Delete Conversation","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json delete /api/conversations/{conversation_id}","href":"/sdk/guides/agent-server/api-reference/conversations/delete-conversation"},{"title":"Update Conversation","description":"Update conversation metadata.\n\nThis endpoint allows updating conversation details like title.","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json patch /api/conversations/{conversation_id}","href":"/sdk/guides/agent-server/api-reference/conversations/update-conversation"},{"title":"Batch Get Conversations","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json get /api/conversations","href":"/sdk/guides/agent-server/api-reference/conversations/batch-get-conversations"},{"title":"Start Conversation","description":"Start a conversation in the local environment.","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json post /api/conversations","href":"/sdk/guides/agent-server/api-reference/conversations/start-conversation"},{"title":"Pause Conversation","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json post /api/conversations/{conversation_id}/pause","href":"/sdk/guides/agent-server/api-reference/conversations/pause-conversation"},{"title":"Run Conversation","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json post /api/conversations/{conversation_id}/run","href":"/sdk/guides/agent-server/api-reference/conversations/run-conversation"},{"title":"Update Conversation Secrets","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json post /api/conversations/{conversation_id}/secrets","href":"/sdk/guides/agent-server/api-reference/conversations/update-conversation-secrets"},{"title":"Set Conversation Confirmation Policy","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json post /api/conversations/{conversation_id}/confirmation_policy","href":"/sdk/guides/agent-server/api-reference/conversations/set-conversation-confirmation-policy"},{"title":"Set Conversation Security Analyzer","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json post /api/conversations/{conversation_id}/security_analyzer","href":"/sdk/guides/agent-server/api-reference/conversations/set-conversation-security-analyzer"},{"title":"Generate Conversation Title","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json post /api/conversations/{conversation_id}/generate_title","href":"/sdk/guides/agent-server/api-reference/conversations/generate-conversation-title"},{"title":"Ask Agent","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json post /api/conversations/{conversation_id}/ask_agent","href":"/sdk/guides/agent-server/api-reference/conversations/ask-agent"},{"title":"Condense Conversation","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json post /api/conversations/{conversation_id}/condense","href":"/sdk/guides/agent-server/api-reference/conversations/condense-conversation"}]},{"group":"Tools","pages":[{"title":"List Available Tools","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json get /api/tools/","href":"/sdk/guides/agent-server/api-reference/tools/list-available-tools"}]},{"group":"Bash","pages":[{"title":"Search Bash Events","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json get /api/bash/bash_events/search","href":"/sdk/guides/agent-server/api-reference/bash/search-bash-events"},{"title":"Get Bash Event","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json get /api/bash/bash_events/{event_id}","href":"/sdk/guides/agent-server/api-reference/bash/get-bash-event"},{"title":"Batch Get Bash Events","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json get /api/bash/bash_events/","href":"/sdk/guides/agent-server/api-reference/bash/batch-get-bash-events"},{"title":"Start Bash Command","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json post /api/bash/start_bash_command","href":"/sdk/guides/agent-server/api-reference/bash/start-bash-command"},{"title":"Execute Bash Command","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json post /api/bash/execute_bash_command","href":"/sdk/guides/agent-server/api-reference/bash/execute-bash-command"},{"title":"Clear All Bash Events","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json delete /api/bash/bash_events","href":"/sdk/guides/agent-server/api-reference/bash/clear-all-bash-events"}]},{"group":"Git","pages":[{"title":"Git Changes","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json get /api/git/changes/{path}","href":"/sdk/guides/agent-server/api-reference/git/git-changes"},{"title":"Git Diff","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json get /api/git/diff/{path}","href":"/sdk/guides/agent-server/api-reference/git/git-diff"}]},{"group":"Files","pages":[{"title":"Upload File","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json post /api/file/upload/{path}","href":"/sdk/guides/agent-server/api-reference/files/upload-file"},{"title":"Download File","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json get /api/file/download/{path}","href":"/sdk/guides/agent-server/api-reference/files/download-file"},{"title":"Download Trajectory","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json get /api/file/download-trajectory/{conversation_id}","href":"/sdk/guides/agent-server/api-reference/files/download-trajectory"}]},{"group":"VSCode","pages":[{"title":"Get Vscode Url","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json get /api/vscode/url","href":"/sdk/guides/agent-server/api-reference/vscode/get-vscode-url"},{"title":"Get Vscode Status","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json get /api/vscode/status","href":"/sdk/guides/agent-server/api-reference/vscode/get-vscode-status"}]},{"group":"Desktop","pages":[{"title":"Get Desktop Url","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json get /api/desktop/url","href":"/sdk/guides/agent-server/api-reference/desktop/get-desktop-url"}]},{"group":"Skills","pages":[{"title":"Get Skills","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json post /api/skills","href":"/sdk/guides/agent-server/api-reference/skills/get-skills"},{"title":"Sync Skills","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json post /api/skills/sync","href":"/sdk/guides/agent-server/api-reference/skills/sync-skills"}]},{"group":"Hooks","pages":[{"title":"Get Hooks","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json post /api/hooks","href":"/sdk/guides/agent-server/api-reference/hooks/get-hooks"}]},{"group":"API Reference","pages":[{"title":"Get Server Info","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json get /","href":"/sdk/guides/agent-server/api-reference/get-server-info"}]}]}]},{"group":"GitHub Workflows","pages":[{"title":"Assign Reviews","href":"/sdk/guides/github-workflows/assign-reviews"},{"title":"PR Review","href":"/sdk/guides/github-workflows/pr-review"},{"title":"TODO Management","href":"/sdk/guides/github-workflows/todo-management"}]}]},{"group":"Architecture","pages":[{"title":"Overview","href":"/sdk/arch/overview"},{"title":"Design Principles","href":"/sdk/arch/design"},{"group":"SDK Components","pages":[{"title":"Agent","href":"/sdk/arch/agent"},{"title":"Conversation","href":"/sdk/arch/conversation"},{"title":"Tool System \u0026 MCP","href":"/sdk/arch/tool-system"},{"title":"MCP Integration","href":"/sdk/arch/mcp"},{"title":"Events","href":"/sdk/arch/events"},{"title":"Workspace","href":"/sdk/arch/workspace"},{"title":"LLM","href":"/sdk/arch/llm"},{"title":"Skill","href":"/sdk/arch/skill"},{"title":"Condenser","href":"/sdk/arch/condenser"},{"title":"Security","href":"/sdk/arch/security"}]}]},{"group":"API Reference","pages":[{"title":"openhands.sdk.agent","href":"/sdk/api-reference/openhands.sdk.agent"},{"title":"openhands.sdk.conversation","href":"/sdk/api-reference/openhands.sdk.conversation"},{"title":"openhands.sdk.event","href":"/sdk/api-reference/openhands.sdk.event"},{"title":"openhands.sdk.llm","href":"/sdk/api-reference/openhands.sdk.llm"},{"title":"openhands.sdk.security","href":"/sdk/api-reference/openhands.sdk.security"},{"title":"openhands.sdk.tool","href":"/sdk/api-reference/openhands.sdk.tool"},{"title":"openhands.sdk.utils","href":"/sdk/api-reference/openhands.sdk.utils"},{"title":"openhands.sdk.workspace","href":"/sdk/api-reference/openhands.sdk.workspace"}]}]},{"tab":"Cloud","pages":[{"title":"Cloud","href":"/openhands/usage/cloud/openhands-cloud"}]},{"tab":"Enterprise","pages":[{"title":"Enterprise","href":"/enterprise"}]},{"tab":"Enterprise Cookbook","pages":[{"title":"Enterprise Cookbook","href":"/cookbook"}]}]},"basePath":"","title":"Batch Get Conversations - OpenHands Docs","buildId":"dpl_DTau1J5HqS9UTgVSDwGksstFWtPa","deploymentId":"dpl_DTau1J5HqS9UTgVSDwGksstFWtPa","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-5FCzAcfS.js","utils-SLtAG4EZ.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-2DZi8ZMu.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-D7J3nkzE.js","snippetPresets-D0Alv0AH.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-BI4qNJ2c.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BD3uyr8j.js","shallow-D8iEBr5z.js","getApiPlaygroundDisplay-CgNP4lzR.js","CodeSnippet-CX-QHuMs.js","CodeSnippets-VlXE-ZUf.js","Page-D9ithiIZ.js","getPastedJson-DYNQkZ1M.js","icon-CzacdwOi.js","MethodPill-2JVqoYKi.js","DuplicateIcon-_xVXs-U8.js","createIcon-BRHrweLo.js","DynamicMarkdown-mQG_iQiE.js","SectionHeading-DMpJzv8f.js","axios-vUo_bRtp.js","Markdown-5FGIym-8.js","clsx-D-TRO5q5.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CdrJecqK.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-CHlcWBLM.js"]}