> ## Documentation Index
> Fetch the complete documentation index at: https://www.charitystack.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# GET /v1/webhooks — list registered webhook endpoints

> Retrieve all webhook endpoints registered for your merchant account, including delivery statistics and current status for each endpoint.

The List Webhooks endpoint returns every webhook you have registered under your merchant account. Each object in the response includes delivery statistics — successful and failed counts — so you can quickly assess the health of your webhook integrations at a glance. This endpoint requires the `webhooks:read` permission.

## Request

```bash theme={null}
GET https://0k90mc4jjj.execute-api.us-east-2.amazonaws.com/v1/webhooks
```

### Headers

<ParamField header="Authorization" type="string" required>
  Bearer token using your API key. Format: `Bearer cs_live_your_key`
</ParamField>

## Response

### 200 — success

<ResponseField name="webhooks" type="array">
  List of registered webhook objects.

  <Expandable title="Webhook object properties">
    <ResponseField name="webhookId" type="string">
      Unique identifier for the webhook endpoint.
    </ResponseField>

    <ResponseField name="url" type="string">
      The destination HTTPS URL where events are delivered.
    </ResponseField>

    <ResponseField name="events" type="array[string]">
      List of event types this webhook is subscribed to (e.g., `donation.created`).
    </ResponseField>

    <ResponseField name="status" type="string">
      Current status of the webhook. One of `ACTIVE`, `DISABLED`, or `DELETED`.
    </ResponseField>

    <ResponseField name="description" type="string">
      Optional human-readable description you provided when registering the webhook.
    </ResponseField>

    <ResponseField name="createdAt" type="integer">
      Unix timestamp (seconds) when the webhook was registered.
    </ResponseField>

    <ResponseField name="lastDeliveryAt" type="integer">
      Unix timestamp (seconds) of the most recent delivery attempt. `null` if no deliveries have occurred.
    </ResponseField>

    <ResponseField name="successCount" type="integer">
      Total number of successful event deliveries to this endpoint.
    </ResponseField>

    <ResponseField name="failureCount" type="integer">
      Total number of failed delivery attempts to this endpoint.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="count" type="integer">
  Total number of webhooks returned in this response.
</ResponseField>

### 401 — unauthorized

Returned when your API key is missing, invalid, or does not have the `webhooks:read` permission.

## Example

<CodeGroup>
  ```bash cURL theme={null}
  curl https://0k90mc4jjj.execute-api.us-east-2.amazonaws.com/v1/webhooks \
    -H "Authorization: Bearer cs_live_your_key"
  ```
</CodeGroup>

```json Sample response theme={null}
{
  "webhooks": [
    {
      "webhookId": "wh_01hx4kz9mntd8vr2bpqe5ycf3a",
      "url": "https://yourapp.com/webhooks/charitystack",
      "events": [
        "donation.created",
        "subscription.created",
        "subscription.cancelled"
      ],
      "status": "ACTIVE",
      "description": "Production webhook for donation notifications",
      "createdAt": 1714003200,
      "lastDeliveryAt": 1714089600,
      "successCount": 142,
      "failureCount": 3
    },
    {
      "webhookId": "wh_02jy5la0noue9ws3cqrf6zdg4b",
      "url": "https://yourapp.com/webhooks/contacts",
      "events": [
        "contact.created",
        "contact.updated"
      ],
      "status": "DISABLED",
      "description": "Contact sync — temporarily disabled",
      "createdAt": 1712800000,
      "lastDeliveryAt": 1713600000,
      "successCount": 57,
      "failureCount": 0
    }
  ],
  "count": 2
}
```
