# List subscriptions

Source: https://help.ruuster.com/api/webhooks-list

```http
GET https://api.ruuster.com/v1/webhooks
```

Every webhook subscription in your brokerage, with delivery health for the last 24 hours.

- Authentication: `x-api-key` and `x-email` headers of an owner or admin
- Rate limit: 120 requests per minute per key

## Response

`data.subscriptions` lists subscription objects; `meta.limit` is the most your brokerage can have (10).

## Subscription object

| Field | Description |
|---|---|
| `id` | `whk_…` |
| `url` | Where deliveries are sent |
| `events` | Event kinds, or `lead.*` |
| `description` | Your label |
| `status` | `active`, `paused` (by you), `disabled` (after about 24 hours of failed deliveries) or `blocked` (by Ruuster) |
| `disabledReason` | Why it was disabled or blocked |
| `secretHint` | Last characters of the signing secret. The secret itself is returned only on create and rotate |
| `createdBy`, `createdAt`, `updatedAt` | |
| `health` | `last24h.delivered`, `last24h.failed`, `last24h.pending`, `lastSuccessAt`, `lastFailureAt`, `lastError` |

## Example request

cURL:

```bash
curl -s "https://api.ruuster.com/v1/webhooks" \
  -H "x-api-key: $RUUSTER_API_KEY" \
  -H "x-email: $RUUSTER_EMAIL"
```

Node.js:

```javascript
const res = await fetch("https://api.ruuster.com/v1/webhooks", {
  headers: {
    "x-api-key": process.env.RUUSTER_API_KEY,
    "x-email": process.env.RUUSTER_EMAIL,
  },
});
const body = await res.json();
if (!body.ok) throw new Error(`${body.error.code}: ${body.error.message} (${body.requestId})`);
console.log(body.data);
```

Python:

```python
import os
import requests

res = requests.get(
    "https://api.ruuster.com/v1/webhooks",
    headers={"x-api-key": os.environ["RUUSTER_API_KEY"], "x-email": os.environ["RUUSTER_EMAIL"]},
    timeout=30,
)
body = res.json()
if not body["ok"]:
    raise RuntimeError(f'{body["error"]["code"]}: {body["error"]["message"]} ({body.get("requestId")})')
print(body["data"])
```

## Example response

```json
{
  "ok": true,
  "data": {
    "subscriptions": [
      {
        "id": "whk_2c7f9a4e1b",
        "url": "https://hooks.saguarorealty.com/ruuster",
        "events": ["lead.tour_request", "lead.contact_agent", "lead.favorite", "lead.created"],
        "description": "Hot-lead alerts to our CRM",
        "status": "active", "disabledReason": null,
        "secretHint": "…a2d9",
        "createdBy": "jane@saguarorealty.com", "createdAt": "2026-10-01T14:20:00Z", "updatedAt": "2026-10-01T14:20:00Z",
        "health": { "last24h": { "delivered": 14, "failed": 0, "pending": 0 }, "lastSuccessAt": "2026-10-01T15:42:10Z", "lastFailureAt": null, "lastError": null }
      }
    ]
  },
  "meta": { "total": 1, "limit": 10 }
}
```
