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

> ## Agent Instructions
> H Platform has four products: the Agents API (managed computer-use agents, base URL https://agp.eu.hcompany.ai/api/v2 or https://agp.hcompany.ai/api/v2 for the US), the Models API (OpenAI-compatible Holo vision-language models at https://api.hcompany.ai/v1), HoloDesktop CLI (Holo on the user's own desktop), and HoloTab (a free no-code Chrome extension that runs Holo in the user's browser, with recordable routines and schedules).
> Authenticate with a bearer API key from the HAI_API_KEY environment variable. SDKs: `pip install hai-agents` (Python, `from hai_agents import Client`) and `npm install hai-agents` (TypeScript, `import { HaiAgentsClient } from "hai-agents"`). CLI: `hai`.
> Agents do work in a browser or on a desktop; describe the task as an imperative instruction. To run a task quickly, prefer the pre-built agent `h/web-surfer-flash`. Read results from the session's `latest_answer` after it reaches a terminal status.
> Sessions are the unit of work; wait for a terminal status (completed, failed, timed_out, interrupted) before reading the answer. Use webhooks or the `changes` long-poll endpoint to follow progress.

# Update an agent

> Replace the whole configuration of an agent in your catalog. Later sessions pick up the new spec.

Replaces an agent's whole configuration. Later sessions pick up the new spec. Renames are not supported. To change a few fields, use [Patch](/agents-api/agents/patch).

**Returns** the updated [agent object](/agents-api/agents/retrieve#response).

## Path parameters

<ParamField path="agent_name" type="string" required>
  The agent's `name` (e.g. `my-research-bot` or `myorg/web-helper`). Slash-containing names are supported.
</ParamField>

## Request body

The full agent, with the same fields and rules as [Create an agent](/agents-api/agents/create#request-body). The `name` must equal the URL identifier. Omitted fields reset to their defaults, not their stored values: leaving out `instructions`, `model`, `skills`, or `answer_format` clears them.

## Examples

<CodeGroup>
  ```bash cURL theme={"system"}
  curl -X PUT https://agp.eu.hcompany.ai/api/v2/agents/my-research-bot \
    -H "Authorization: Bearer $HAI_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "name": "my-research-bot",
      "description": "Researches a topic and returns a sourced summary.",
      "environments": ["h/browser"],
      "instructions": "Always cite the page you took each claim from.",
      "skills": ["web-browse", "extract-data"]
    }'
  ```

  ```python Python theme={"system"}
  from hai_agents import Client

  client = Client()

  agent = client.agents.update_agent(
      agent_name="my-research-bot",
      name="my-research-bot",
      description="Researches a topic and returns a sourced summary.",
      environments=["h/browser"],
      instructions="Always cite the page you took each claim from.",
      skills=["web-browse", "extract-data"],
  )
  print(agent.name)
  ```

  ```typescript TypeScript theme={"system"}
  import { HaiAgentsClient } from "hai-agents";

  const client = new HaiAgentsClient();

  const agent = await client.agents.updateAgent({
    agentName: "my-research-bot",
    body: {
      name: "my-research-bot",
      description: "Researches a topic and returns a sourced summary.",
      environments: ["h/browser"],
      instructions: "Always cite the page you took each claim from.",
      skills: ["web-browse", "extract-data"],
    },
  });
  console.log(agent.name);
  ```
</CodeGroup>

```json Response theme={"system"}
{
  "name": "my-research-bot",
  "description": "Researches a topic and returns a sourced summary.",
  "environments": ["h/browser"],
  "model": null,
  "reasoning_effort": null,
  "instructions": "Always cite the page you took each claim from.",
  "subagents": null,
  "skills": ["web-browse", "extract-data"],
  "answer_format": null,
  "tools": null
}
```

## Errors

| Status | Cause |
| - | - |
| `400` | The `name` in the body does not match the URL identifier (renames are not supported). |
| `403` | The agent is reserved (`h/`) and read-only. |
| `404` | Agent not found or you don't have access. |
| `422` | Body failed validation. Common cases: `environments` empty on an agent with no `subagents` or `tools`, invalid `name` shape. |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.