# List webhooks

> A profile's webhooks, without their secrets.

Canonical: <https://www.tryadeli.com/docs/api/webhooks/list-webhooks>

`GET https://app.tryadeli.com/api/v1/webhooks`

Authorization: `Bearer <API key>` — see [Authentication](https://www.tryadeli.com/docs/authentication)

List a profile's webhooks. Signing secrets are never returned here.

**Query**

| Name        | Type   | Required | Description                         |
| ----------- | ------ | -------- | ----------------------------------- |
| `profileId` | `uuid` | Yes      | The profile whose webhooks to list. |

Returns `200` with `{ webhooks }`. A webhook's `status` is `active`, or
`disabled` after its URL answered `410 Gone`.

**Errors** — `401 unauthorized`, `400 invalid_request`, `404 profile_not_found`.

## Request examples

**cURL**

```bash
curl "https://app.tryadeli.com/api/v1/webhooks?profileId=00000000-0000-4000-8000-000000000001" \
  -H "Authorization: Bearer $ADELI_API_KEY"
```

**JavaScript**

```javascript
const response = await fetch("https://app.tryadeli.com/api/v1/webhooks?profileId=00000000-0000-4000-8000-000000000001", {
  headers: {
    Authorization: `Bearer ${process.env.ADELI_API_KEY}`,
  },
});
console.log(await response.json());
```

**Python**

```python
import os

import requests

response = requests.get(
    "https://app.tryadeli.com/api/v1/webhooks",
    headers={"Authorization": f"Bearer {os.environ['ADELI_API_KEY']}"},
    params={
        "profileId": "00000000-0000-4000-8000-000000000001",
    },
)
print(response.json())
```

## Responses

### 200

```json
{
  "webhooks": [
    {
      "id": "00000000-0000-4000-8000-000000000009",
      "profileId": "00000000-0000-4000-8000-000000000001",
      "url": "https://example.com/webhooks/adeli",
      "events": ["comment.created", "message.postback"],
      "status": "active",
      "createdAt": "2026-10-27T21:30:00.000Z"
    }
  ]
}
```

### 404

```json
{
  "error": {
    "code": "profile_not_found",
    "message": "Profile not found"
  }
}
```
