Update Agent
PUT /api/v1/agents/:agentId — update an existing agent.
Updates an agent. At least one field is required. config is deep-merged, not replaced — send only the fields you want to change and every other field keeps its current value.
PUT /api/v1/agents/{agentId}Path parameters
| Parameter | Type | Description |
|---|---|---|
agentId | string (UUID) | The agent to update. |
Request body
| Field | Type | Required | Description |
|---|---|---|---|
name | string (1–128 chars) | No* | New display name. |
description | string | null | No* | New description. |
config | object | No* | Partial config, deep-merged onto the agent's existing config. |
* At least one of name, description, config must be present.
Deep-merge, not replace
config is merged field-by-field against the agent's current stored config — you never need to (and shouldn't) send the full config object back. Sending { "config": { "model": { "primary": { "temperature": 0.9 } } } } changes only model.primary.temperature; every other field, including sibling fields under model.primary, is left untouched.
Every successful update also records an auto-save version snapshot, same as editing the agent in the Studio UI.
Response
200 OK — the updated agent, same shape as GET /agents/:agentId.
Errors
| Status | error | When |
|---|---|---|
400 | validation error ({ "errors": [{ "path", "message" }] }) | name/description fails validation, the merged config fails schema validation, or no field was provided |
403 | forbidden | The agent belongs to a different project than your project-scoped key |
404 | agent_not_found | No agent with that ID exists in your organization |
422 | llm_configuration_not_found | The merged config references an llm_config_id that doesn't exist or isn't connected |
Example
curl -X PUT https://api.elizon.com/api/v1/agents/3f9c1a2e-... \
-H "X-API-Key: elz_your_key_here" \
-H "Content-Type: application/json" \
-d '{ "config": { "model": { "primary": { "temperature": 0.9 } } } }'