curl --request PATCH \
--url https://api.example.com/api/organizations/{org_id} \
--header 'Content-Type: application/json' \
--header 'X-Access-Token: <api-key>' \
--data '
{
"name": "<string>",
"contact_name": "<string>",
"contact_email": "jsmith@example.com",
"conversation_expiration": 123,
"remote_runtime_resource_factor": 1,
"billing_margin": 0.5,
"enable_proactive_conversation_starters": true,
"sandbox_base_container_image": "<string>",
"sandbox_runtime_container_image": "<string>",
"sandbox_api_key": "<string>",
"max_budget_per_task": 1,
"v1_enabled": true,
"search_api_key": "<string>",
"llm_api_key": "<string>",
"agent_settings_diff": {},
"conversation_settings_diff": {}
}
'import requests
url = "https://api.example.com/api/organizations/{org_id}"
payload = {
"name": "<string>",
"contact_name": "<string>",
"contact_email": "jsmith@example.com",
"conversation_expiration": 123,
"remote_runtime_resource_factor": 1,
"billing_margin": 0.5,
"enable_proactive_conversation_starters": True,
"sandbox_base_container_image": "<string>",
"sandbox_runtime_container_image": "<string>",
"sandbox_api_key": "<string>",
"max_budget_per_task": 1,
"v1_enabled": True,
"search_api_key": "<string>",
"llm_api_key": "<string>",
"agent_settings_diff": {},
"conversation_settings_diff": {}
}
headers = {
"X-Access-Token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {'X-Access-Token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
contact_name: '<string>',
contact_email: 'jsmith@example.com',
conversation_expiration: 123,
remote_runtime_resource_factor: 1,
billing_margin: 0.5,
enable_proactive_conversation_starters: true,
sandbox_base_container_image: '<string>',
sandbox_runtime_container_image: '<string>',
sandbox_api_key: '<string>',
max_budget_per_task: 1,
v1_enabled: true,
search_api_key: '<string>',
llm_api_key: '<string>',
agent_settings_diff: {},
conversation_settings_diff: {}
})
};
fetch('https://api.example.com/api/organizations/{org_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/api/organizations/{org_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'contact_name' => '<string>',
'contact_email' => 'jsmith@example.com',
'conversation_expiration' => 123,
'remote_runtime_resource_factor' => 1,
'billing_margin' => 0.5,
'enable_proactive_conversation_starters' => true,
'sandbox_base_container_image' => '<string>',
'sandbox_runtime_container_image' => '<string>',
'sandbox_api_key' => '<string>',
'max_budget_per_task' => 1,
'v1_enabled' => true,
'search_api_key' => '<string>',
'llm_api_key' => '<string>',
'agent_settings_diff' => [
],
'conversation_settings_diff' => [
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Access-Token: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/api/organizations/{org_id}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"contact_name\": \"<string>\",\n \"contact_email\": \"jsmith@example.com\",\n \"conversation_expiration\": 123,\n \"remote_runtime_resource_factor\": 1,\n \"billing_margin\": 0.5,\n \"enable_proactive_conversation_starters\": true,\n \"sandbox_base_container_image\": \"<string>\",\n \"sandbox_runtime_container_image\": \"<string>\",\n \"sandbox_api_key\": \"<string>\",\n \"max_budget_per_task\": 1,\n \"v1_enabled\": true,\n \"search_api_key\": \"<string>\",\n \"llm_api_key\": \"<string>\",\n \"agent_settings_diff\": {},\n \"conversation_settings_diff\": {}\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("X-Access-Token", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.example.com/api/organizations/{org_id}")
.header("X-Access-Token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"contact_name\": \"<string>\",\n \"contact_email\": \"jsmith@example.com\",\n \"conversation_expiration\": 123,\n \"remote_runtime_resource_factor\": 1,\n \"billing_margin\": 0.5,\n \"enable_proactive_conversation_starters\": true,\n \"sandbox_base_container_image\": \"<string>\",\n \"sandbox_runtime_container_image\": \"<string>\",\n \"sandbox_api_key\": \"<string>\",\n \"max_budget_per_task\": 1,\n \"v1_enabled\": true,\n \"search_api_key\": \"<string>\",\n \"llm_api_key\": \"<string>\",\n \"agent_settings_diff\": {},\n \"conversation_settings_diff\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/organizations/{org_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["X-Access-Token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"contact_name\": \"<string>\",\n \"contact_email\": \"jsmith@example.com\",\n \"conversation_expiration\": 123,\n \"remote_runtime_resource_factor\": 1,\n \"billing_margin\": 0.5,\n \"enable_proactive_conversation_starters\": true,\n \"sandbox_base_container_image\": \"<string>\",\n \"sandbox_runtime_container_image\": \"<string>\",\n \"sandbox_api_key\": \"<string>\",\n \"max_budget_per_task\": 1,\n \"v1_enabled\": true,\n \"search_api_key\": \"<string>\",\n \"llm_api_key\": \"<string>\",\n \"agent_settings_diff\": {},\n \"conversation_settings_diff\": {}\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"name": "<string>",
"contact_name": "<string>",
"contact_email": "<string>",
"conversation_expiration": 123,
"remote_runtime_resource_factor": 123,
"billing_margin": 123,
"enable_proactive_conversation_starters": true,
"sandbox_base_container_image": "<string>",
"sandbox_runtime_container_image": "<string>",
"org_version": 0,
"agent_settings": {
"schema_version": 5,
"agent_kind": "openhands",
"agent": "CodeActAgent",
"llm": {
"is_subscription": true,
"model": "gpt-5.5",
"api_key": "<string>",
"auth_type": "api_key",
"subscription_vendor": "<string>",
"base_url": "<string>",
"api_version": "<string>",
"aws_access_key_id": "<string>",
"aws_secret_access_key": "<string>",
"aws_session_token": "<string>",
"aws_region_name": "<string>",
"aws_profile_name": "<string>",
"aws_role_name": "<string>",
"aws_session_name": "<string>",
"aws_bedrock_runtime_endpoint": "<string>",
"openrouter_site_url": "https://docs.all-hands.dev/",
"openrouter_app_name": "OpenHands",
"num_retries": 5,
"retry_multiplier": 8,
"retry_min_wait": 8,
"retry_max_wait": 64,
"timeout": 300,
"max_message_chars": 30000,
"temperature": 1,
"top_p": 0.5,
"top_k": 1,
"max_input_tokens": 2,
"max_output_tokens": 2,
"model_canonical_name": "<string>",
"api_mode": "auto",
"capability_overrides": {},
"extra_headers": {},
"input_cost_per_token": 1,
"output_cost_per_token": 1,
"ollama_base_url": "<string>",
"stream": false,
"drop_params": true,
"modify_params": true,
"disable_vision": true,
"disable_stop_word": false,
"caching_prompt": true,
"log_completions": false,
"log_completions_folder": "logs/completions",
"custom_tokenizer": "<string>",
"native_tool_calling": true,
"force_string_serializer": true,
"inline_image_urls": true,
"reasoning_effort": "high",
"enable_encrypted_reasoning": true,
"prompt_cache_retention": "24h",
"extended_thinking_budget": 200000,
"seed": 123,
"usage_id": "default",
"litellm_extra_body": {}
},
"tools": [
{
"name": "<string>",
"params": {}
}
],
"enable_sub_agents": false,
"enable_switch_llm_tool": true,
"tool_concurrency_limit": 1,
"mcp_config": {},
"agent_context": {
"skills": [
{
"name": "<string>",
"content": "<string>",
"trigger": {
"keywords": [
"<string>"
],
"type": "keyword"
},
"source": "<string>",
"mcp_tools": {},
"inputs": [
{
"name": "<string>",
"description": "<string>"
}
],
"is_agentskills_format": false,
"version": "1.0.0",
"description": "<string>",
"license": "<string>",
"compatibility": "<string>",
"metadata": {},
"allowed_tools": [
"<string>"
],
"disable_model_invocation": false,
"resources": {
"skill_root": "<string>",
"scripts": [
"<string>"
],
"references": [
"<string>"
],
"assets": [
"<string>"
]
}
}
],
"system_message_suffix": "<string>",
"user_message_suffix": "<string>",
"load_user_skills": false,
"load_public_skills": false,
"marketplace_path": "marketplaces/default.json",
"registered_marketplaces": [
{
"name": "<string>",
"source": "<string>",
"ref": "<string>",
"repo_path": "<string>",
"auto_load": false
}
],
"load_project_skills": false,
"load_memory": false,
"disabled_skills": [
"<string>"
],
"secrets": {},
"current_datetime": "2023-11-07T05:31:56Z"
},
"condenser": {
"enabled": true,
"max_size": 240,
"condenser_kind": "llm_summarizing",
"max_tokens": 1,
"keep_first": 2,
"minimum_progress": 0.1,
"hard_context_reset_max_retries": 5,
"hard_context_reset_context_scaling": 0.8
},
"verification": {
"critic_enabled": false,
"critic_mode": "finish_and_message",
"enable_iterative_refinement": false,
"critic_threshold": 0.6,
"max_refinement_iterations": 3,
"critic_server_url": "<string>",
"critic_model_name": "<string>",
"critic_api_key": "<unknown>"
}
},
"conversation_settings": {
"schema_version": 1,
"max_iterations": 500,
"confirmation_mode": false,
"security_analyzer": "llm"
},
"search_api_key": "<string>",
"sandbox_api_key": "<string>",
"max_budget_per_task": 123,
"v1_enabled": true,
"credits": 123,
"is_personal": false
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Update Org
Update an existing organization.
This endpoint updates organization settings. Access requires the EDIT_ORG_SETTINGS permission, which is granted to admin and owner roles.
Args: org_id: Organization ID to update (UUID) update_data: Organization update data user_id: Authenticated user ID (injected by require_permission dependency)
Returns: OrgResponse: The updated organization details
Raises: HTTPException: 401 if user is not authenticated HTTPException: 403 if user lacks EDIT_ORG_SETTINGS permission HTTPException: 404 if organization not found HTTPException: 409 if organization name already exists HTTPException: 422 if validation errors occur (handled by FastAPI) HTTPException: 500 if update fails
curl --request PATCH \
--url https://api.example.com/api/organizations/{org_id} \
--header 'Content-Type: application/json' \
--header 'X-Access-Token: <api-key>' \
--data '
{
"name": "<string>",
"contact_name": "<string>",
"contact_email": "jsmith@example.com",
"conversation_expiration": 123,
"remote_runtime_resource_factor": 1,
"billing_margin": 0.5,
"enable_proactive_conversation_starters": true,
"sandbox_base_container_image": "<string>",
"sandbox_runtime_container_image": "<string>",
"sandbox_api_key": "<string>",
"max_budget_per_task": 1,
"v1_enabled": true,
"search_api_key": "<string>",
"llm_api_key": "<string>",
"agent_settings_diff": {},
"conversation_settings_diff": {}
}
'import requests
url = "https://api.example.com/api/organizations/{org_id}"
payload = {
"name": "<string>",
"contact_name": "<string>",
"contact_email": "jsmith@example.com",
"conversation_expiration": 123,
"remote_runtime_resource_factor": 1,
"billing_margin": 0.5,
"enable_proactive_conversation_starters": True,
"sandbox_base_container_image": "<string>",
"sandbox_runtime_container_image": "<string>",
"sandbox_api_key": "<string>",
"max_budget_per_task": 1,
"v1_enabled": True,
"search_api_key": "<string>",
"llm_api_key": "<string>",
"agent_settings_diff": {},
"conversation_settings_diff": {}
}
headers = {
"X-Access-Token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {'X-Access-Token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
contact_name: '<string>',
contact_email: 'jsmith@example.com',
conversation_expiration: 123,
remote_runtime_resource_factor: 1,
billing_margin: 0.5,
enable_proactive_conversation_starters: true,
sandbox_base_container_image: '<string>',
sandbox_runtime_container_image: '<string>',
sandbox_api_key: '<string>',
max_budget_per_task: 1,
v1_enabled: true,
search_api_key: '<string>',
llm_api_key: '<string>',
agent_settings_diff: {},
conversation_settings_diff: {}
})
};
fetch('https://api.example.com/api/organizations/{org_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/api/organizations/{org_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'contact_name' => '<string>',
'contact_email' => 'jsmith@example.com',
'conversation_expiration' => 123,
'remote_runtime_resource_factor' => 1,
'billing_margin' => 0.5,
'enable_proactive_conversation_starters' => true,
'sandbox_base_container_image' => '<string>',
'sandbox_runtime_container_image' => '<string>',
'sandbox_api_key' => '<string>',
'max_budget_per_task' => 1,
'v1_enabled' => true,
'search_api_key' => '<string>',
'llm_api_key' => '<string>',
'agent_settings_diff' => [
],
'conversation_settings_diff' => [
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Access-Token: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/api/organizations/{org_id}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"contact_name\": \"<string>\",\n \"contact_email\": \"jsmith@example.com\",\n \"conversation_expiration\": 123,\n \"remote_runtime_resource_factor\": 1,\n \"billing_margin\": 0.5,\n \"enable_proactive_conversation_starters\": true,\n \"sandbox_base_container_image\": \"<string>\",\n \"sandbox_runtime_container_image\": \"<string>\",\n \"sandbox_api_key\": \"<string>\",\n \"max_budget_per_task\": 1,\n \"v1_enabled\": true,\n \"search_api_key\": \"<string>\",\n \"llm_api_key\": \"<string>\",\n \"agent_settings_diff\": {},\n \"conversation_settings_diff\": {}\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("X-Access-Token", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.example.com/api/organizations/{org_id}")
.header("X-Access-Token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"contact_name\": \"<string>\",\n \"contact_email\": \"jsmith@example.com\",\n \"conversation_expiration\": 123,\n \"remote_runtime_resource_factor\": 1,\n \"billing_margin\": 0.5,\n \"enable_proactive_conversation_starters\": true,\n \"sandbox_base_container_image\": \"<string>\",\n \"sandbox_runtime_container_image\": \"<string>\",\n \"sandbox_api_key\": \"<string>\",\n \"max_budget_per_task\": 1,\n \"v1_enabled\": true,\n \"search_api_key\": \"<string>\",\n \"llm_api_key\": \"<string>\",\n \"agent_settings_diff\": {},\n \"conversation_settings_diff\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/organizations/{org_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["X-Access-Token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"contact_name\": \"<string>\",\n \"contact_email\": \"jsmith@example.com\",\n \"conversation_expiration\": 123,\n \"remote_runtime_resource_factor\": 1,\n \"billing_margin\": 0.5,\n \"enable_proactive_conversation_starters\": true,\n \"sandbox_base_container_image\": \"<string>\",\n \"sandbox_runtime_container_image\": \"<string>\",\n \"sandbox_api_key\": \"<string>\",\n \"max_budget_per_task\": 1,\n \"v1_enabled\": true,\n \"search_api_key\": \"<string>\",\n \"llm_api_key\": \"<string>\",\n \"agent_settings_diff\": {},\n \"conversation_settings_diff\": {}\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"name": "<string>",
"contact_name": "<string>",
"contact_email": "<string>",
"conversation_expiration": 123,
"remote_runtime_resource_factor": 123,
"billing_margin": 123,
"enable_proactive_conversation_starters": true,
"sandbox_base_container_image": "<string>",
"sandbox_runtime_container_image": "<string>",
"org_version": 0,
"agent_settings": {
"schema_version": 5,
"agent_kind": "openhands",
"agent": "CodeActAgent",
"llm": {
"is_subscription": true,
"model": "gpt-5.5",
"api_key": "<string>",
"auth_type": "api_key",
"subscription_vendor": "<string>",
"base_url": "<string>",
"api_version": "<string>",
"aws_access_key_id": "<string>",
"aws_secret_access_key": "<string>",
"aws_session_token": "<string>",
"aws_region_name": "<string>",
"aws_profile_name": "<string>",
"aws_role_name": "<string>",
"aws_session_name": "<string>",
"aws_bedrock_runtime_endpoint": "<string>",
"openrouter_site_url": "https://docs.all-hands.dev/",
"openrouter_app_name": "OpenHands",
"num_retries": 5,
"retry_multiplier": 8,
"retry_min_wait": 8,
"retry_max_wait": 64,
"timeout": 300,
"max_message_chars": 30000,
"temperature": 1,
"top_p": 0.5,
"top_k": 1,
"max_input_tokens": 2,
"max_output_tokens": 2,
"model_canonical_name": "<string>",
"api_mode": "auto",
"capability_overrides": {},
"extra_headers": {},
"input_cost_per_token": 1,
"output_cost_per_token": 1,
"ollama_base_url": "<string>",
"stream": false,
"drop_params": true,
"modify_params": true,
"disable_vision": true,
"disable_stop_word": false,
"caching_prompt": true,
"log_completions": false,
"log_completions_folder": "logs/completions",
"custom_tokenizer": "<string>",
"native_tool_calling": true,
"force_string_serializer": true,
"inline_image_urls": true,
"reasoning_effort": "high",
"enable_encrypted_reasoning": true,
"prompt_cache_retention": "24h",
"extended_thinking_budget": 200000,
"seed": 123,
"usage_id": "default",
"litellm_extra_body": {}
},
"tools": [
{
"name": "<string>",
"params": {}
}
],
"enable_sub_agents": false,
"enable_switch_llm_tool": true,
"tool_concurrency_limit": 1,
"mcp_config": {},
"agent_context": {
"skills": [
{
"name": "<string>",
"content": "<string>",
"trigger": {
"keywords": [
"<string>"
],
"type": "keyword"
},
"source": "<string>",
"mcp_tools": {},
"inputs": [
{
"name": "<string>",
"description": "<string>"
}
],
"is_agentskills_format": false,
"version": "1.0.0",
"description": "<string>",
"license": "<string>",
"compatibility": "<string>",
"metadata": {},
"allowed_tools": [
"<string>"
],
"disable_model_invocation": false,
"resources": {
"skill_root": "<string>",
"scripts": [
"<string>"
],
"references": [
"<string>"
],
"assets": [
"<string>"
]
}
}
],
"system_message_suffix": "<string>",
"user_message_suffix": "<string>",
"load_user_skills": false,
"load_public_skills": false,
"marketplace_path": "marketplaces/default.json",
"registered_marketplaces": [
{
"name": "<string>",
"source": "<string>",
"ref": "<string>",
"repo_path": "<string>",
"auto_load": false
}
],
"load_project_skills": false,
"load_memory": false,
"disabled_skills": [
"<string>"
],
"secrets": {},
"current_datetime": "2023-11-07T05:31:56Z"
},
"condenser": {
"enabled": true,
"max_size": 240,
"condenser_kind": "llm_summarizing",
"max_tokens": 1,
"keep_first": 2,
"minimum_progress": 0.1,
"hard_context_reset_max_retries": 5,
"hard_context_reset_context_scaling": 0.8
},
"verification": {
"critic_enabled": false,
"critic_mode": "finish_and_message",
"enable_iterative_refinement": false,
"critic_threshold": 0.6,
"max_refinement_iterations": 3,
"critic_server_url": "<string>",
"critic_model_name": "<string>",
"critic_api_key": "<unknown>"
}
},
"conversation_settings": {
"schema_version": 1,
"max_iterations": 500,
"confirmation_mode": false,
"security_analyzer": "llm"
},
"search_api_key": "<string>",
"sandbox_api_key": "<string>",
"max_budget_per_task": 123,
"v1_enabled": true,
"credits": 123,
"is_personal": false
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Authorizations
Headers
Path Parameters
Body
Request model for updating an organization.
agent_settings_diff and conversation_settings_diff are sparse diffs
that are deep-merged into the org row and then validated as full settings
before persistence.
1 - 255x > 00 <= x <= 1x > 0Response
Successful Response
Response model for organization.
Settings for a standard LLM-backed :class:Agent.
This is the long-standing AgentSettings shape; fields here build
the default Agent (LLM + tools + MCP + condenser + critic).
- OpenHandsAgentSettings
- LLMAgentSettings
- ACPAgentSettings
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Was this page helpful?

