> ## 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 a webhook

> Change a webhook's URL, events, description, or disabled state.

Partially updates a webhook. Only the fields you send are changed. The signing `secret` cannot be changed here. Use [Rotate](/agents-api/webhooks/rotate).

**Returns** the updated [webhook object](/agents-api/webhooks/retrieve).

***

## Path parameters

<ParamField path="webhook_id" type="string" required>
  The webhook's `id` (UUID).
</ParamField>

***

## Request body

<ParamField body="url" type="string">
  New target URL. Must be `https://` and publicly reachable. It is verified with a `HEAD` request before the change is saved, and the old URL is kept if verification fails.
</ParamField>

<ParamField body="enabled_events" type="string[]">
  Replacement list of [event types](/agents-api/webhooks/events), or `["*"]` for the `session.status_updated` firehose.
</ParamField>

<ParamField body="description" type="string">
  New label (max 255 characters).
</ParamField>

<ParamField body="disabled" type="boolean">
  Set `true` to pause deliveries without deleting the webhook. Setting `false` re-enables a webhook that was disabled automatically after repeated delivery failures.
</ParamField>

***

## Examples

<CodeGroup>
  ```bash cURL theme={"system"}
  curl -X PATCH https://agp.eu.hcompany.ai/api/v2/webhooks/f47ac10b-58cc-4372-a567-0e02b2c3d479 \
    -H "Authorization: Bearer $HAI_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{"disabled": true}'
  ```

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

  client = Client()

  webhook = client.webhooks.update_webhook(
      webhook_id="f47ac10b-58cc-4372-a567-0e02b2c3d479",
      disabled=True,
  )
  print(webhook.disabled)
  ```

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

  const client = new HaiAgentsClient();

  const webhook = await client.webhooks.updateWebhook({
    webhookId: "f47ac10b-58cc-4372-a567-0e02b2c3d479",
    disabled: true,
  });
  console.log(webhook.disabled);
  ```
</CodeGroup>

***

## Errors

| Status | Cause                                                                       |
| ------ | --------------------------------------------------------------------------- |
| `400`  | The new URL does not resolve to a public address or could not be reached.   |
| `404`  | Webhook not found or you don't have access.                                 |
| `422`  | Body failed validation: non-`https` URL, empty or unknown `enabled_events`. |
