> ## 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 environment

> Replace the configuration of an environment in your catalog.

Replaces an environment's whole configuration. Renames are not supported. To change a few fields, use [Patch](/agents-api/environments/patch).

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

## Path parameters

<ParamField path="id" type="string" required>
  The environment's `id` (e.g. `wide-browser` or `myorg/wide-browser`). Slash-containing identifiers are supported.
</ParamField>

## Request body

The full environment, with the same fields as [Create an environment](/agents-api/environments/create#request-body). The `id` must equal the URL identifier. Omitted fields reset to their defaults, not their stored values. That includes `vault_id`: omitting it unbinds any attached [vault](/agents-api/vaults/overview).

## Examples

Bind a vault while keeping the rest of the spec:

<CodeGroup>
  ```bash cURL theme={"system"}
  curl -X PUT https://agp.eu.hcompany.ai/api/v2/environments/wide-browser \
    -H "Authorization: Bearer $HAI_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "id": "wide-browser",
      "kind": "web",
      "start_url": "https://example.com",
      "mode": {"type": "visual", "width": 1920, "height": 1080, "markdown": true},
      "vault_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
    }'
  ```

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

  client = Client()

  environment = client.environments.update_environment(
      "wide-browser",
      id="wide-browser",
      start_url="https://example.com",
      mode={"type": "visual", "width": 1920, "height": 1080, "markdown": True},
      vault_id="f47ac10b-58cc-4372-a567-0e02b2c3d479",
  )
  print(environment.mode)
  ```

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

  const client = new HaiAgentsClient();

  const environment = await client.environments.updateEnvironment({
    id: "wide-browser",
    body: {
      kind: "web",
      id: "wide-browser",
      startUrl: "https://example.com",
      mode: { type: "visual", width: 1920, height: 1080, markdown: true },
      vaultId: "f47ac10b-58cc-4372-a567-0e02b2c3d479",
    },
  });
  console.log(environment.mode);
  ```
</CodeGroup>

```json Response theme={"system"}
{
  "id": "wide-browser",
  "kind": "web",
  "host": "cloud",
  "start_url": "https://example.com",
  "headless": false,
  "session_id": null,
  "mode": {"type": "visual", "width": 1920, "height": 1080, "markdown": true},
  "lazy": false,
  "settle_s": 1.0,
  "vault_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
  "browser_profile_id": null,
  "use_default_browser_profile": false,
  "persist_browser_profile": false,
  "network": null
}
```

## Errors

| Status | Cause |
| - | - |
| `400` | The `id` in the body does not match the URL identifier (renames are not supported). |
| `403` | The environment is reserved (`h/`) and read-only. |
| `404` | Environment not found or you don't have access. |
| `422` | Body failed validation. Common cases: invalid `id` shape, missing required field. |


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