# Get a subscription

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

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

One webhook subscription with its delivery health.

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

## Path parameters

| Name | Type | Description |
|---|---|---|
| `webhookId` | string | The subscription id, `whk_…` |

## Response

`data.subscription` is one subscription object, described on [List subscriptions](https://help.ruuster.com/api/webhooks-list). The secret is never returned here.

## Example request

cURL:

```bash
curl -s "https://api.ruuster.com/v1/webhooks/whk_2c7f9a4e1b" \
  -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/whk_2c7f9a4e1b", {
  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/whk_2c7f9a4e1b",
    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": {
    "subscription": {
      "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
      }
    }
  }
}
```
