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

# Retrieve a webhook

> Fetch a single webhook by id, with its subscribed events and delivery stats.

Fetches one webhook. The signing `secret` is never returned by reads. It appears only in the [Create](/agents-api/webhooks/create) response.

**Returns** the webhook object.

***

## Path parameters

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

***

## The webhook object

<ResponseField name="id" type="string">
  Unique identifier (UUID).
</ResponseField>

<ResponseField name="url" type="string">
  Target URL for deliveries.
</ResponseField>

<ResponseField name="enabled_events" type="string[]">
  Event types delivered to this webhook; `["*"]` means the `session.status_updated` firehose.
</ResponseField>

<ResponseField name="description" type="string | null">
  Optional label.
</ResponseField>

<ResponseField name="disabled" type="boolean">
  When `true`, the webhook stays registered but receives no deliveries. Set manually via [Update](/agents-api/webhooks/update), or automatically after repeated delivery failures.
</ResponseField>

<ResponseField name="last_delivery_status" type="string | null">
  Result of the most recent delivery attempt: `succeeded` or `failed`. `null` before the first attempt.
</ResponseField>

<ResponseField name="last_delivery_error" type="string | null">
  What went wrong on the most recent delivery attempt, e.g. `HTTP 503` or a connection error. `null` when it succeeded.
</ResponseField>

<ResponseField name="last_delivery_at" type="string | null">
  When the most recent delivery attempt happened (UTC). `null` before the first attempt.
</ResponseField>

<ResponseField name="last_success_at" type="string | null">
  When a delivery last succeeded (UTC). `null` if none has.
</ResponseField>

<ResponseField name="consecutive_failures" type="integer">
  Failed delivery attempts since the last success. Resets to `0` on a successful delivery or a manual re-enable. The webhook is disabled automatically when it grows too large. See [Delivery semantics](/agents-api/webhooks/overview#delivery-semantics).
</ResponseField>

<ResponseField name="created_at" type="string">
  Creation time (UTC).
</ResponseField>

<ResponseField name="updated_at" type="string">
  Last modification time (UTC).
</ResponseField>

***

## Examples

<CodeGroup>
  ```bash cURL theme={"system"}
  curl https://agp.eu.hcompany.ai/api/v2/webhooks/f47ac10b-58cc-4372-a567-0e02b2c3d479 \
    -H "Authorization: Bearer $HAI_API_KEY"
  ```

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

  client = Client()

  webhook = client.webhooks.get_webhook(webhook_id="f47ac10b-58cc-4372-a567-0e02b2c3d479")
  print(webhook.url, webhook.enabled_events)
  ```

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

  const client = new HaiAgentsClient();

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

```json Response theme={"system"}
{
  "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
  "url": "https://example.com/hooks/h",
  "enabled_events": ["session.status_updated"],
  "description": "Production listener",
  "disabled": false,
  "last_delivery_status": "succeeded",
  "last_delivery_error": null,
  "last_delivery_at": "2026-07-03T08:30:00Z",
  "last_success_at": "2026-07-03T08:30:00Z",
  "consecutive_failures": 0,
  "created_at": "2026-06-11T15:04:05Z",
  "updated_at": "2026-06-11T15:04:05Z"
}
```

***

## Errors

| Status | Cause                                       |
| ------ | ------------------------------------------- |
| `404`  | Webhook not found or you don't have access. |
