---
title: "Get a webhook"
method: GET
path: "/v2/webhooks/{id}"
tags: ["Webhooks"]
---

# Get a webhook

`GET /v2/webhooks/{id}`

## Request

- Base URL: `https://api.village.ai`
- URL: `https://api.village.ai/v2/webhooks/{id}`
- Auth: HTTP bearer

Get a single webhook by its encrypted id (as returned by list_webhooks or create_webhook). Use this to confirm the current url, event_filter and active state before changing them. Returns 404 if the webhook does not exist or belongs to someone else. The HMAC signing secret is never returned — has_secret only tells you whether one is configured.

## Path parameters

- `id` string, required: Encrypted webhook identifier

## Response `200`

Webhook retrieved successfully

- object
  - `data` GetWebhookResponse, required: A single webhook
    - `id` string, required: Encrypted webhook identifier
    - `url` string, required: Endpoint that receives event payloads
    - `description` string, nullable, required: Human-readable label, or null if none was set
    - `is_active` boolean, required: True when the webhook is receiving deliveries; false when paused
    - `event_filter` string[], nullable, required: Event types delivered to this webhook. NULL means every event type is delivered.
    - `has_secret` boolean, required: Whether an HMAC signing secret is configured. The secret value is write-only — it is returned once by create_webhook and never again, so reads report only this flag.
    - `created_at` string, required: ISO 8601 creation timestamp
    - `updated_at` string, required: ISO 8601 last update timestamp
  - `metadata` object, required
    - `request_id` string, required

## Other responses

- `400`: Bad request - invalid parameters
- `401`: Unauthorized - missing or invalid authentication
- `404`: Webhook not found

---

[API](https://skmtc.dev/village/apis/village-v2-api.md) - [All operations](https://skmtc.dev/village/apis/village-v2-api/llms.txt) - [OpenAPI document](https://skmtc.dev/village/apis/village-v2-api/revisions/aebe21a1a544?raw)
