# Hent webhook-hændelser

`GET /v1/me/webhooks/events` · Webhooks

Alle hændelser, Grundfast har dannet til dine webhook-endpoints, ældste først — med data og hvordan leveringen gik.

Den sikre vej tilbage efter et nedbrud hos din modtager: læs fra dit sidste kendte tidspunkt med `status=failed`, og behandl det, du ikke har set — eller send det igen med [Send fejlede igen](https://grundfast.dk/docs/api/webhooks-redeliver-failed).

`data` er præcis det, der blev (eller bliver) sendt. `delivery.status` er den seneste tilstand: en hændelse, der fejlede og siden blev sendt igen med held, står som `success` med `redeliveries: 1`. Hændelser gemmes i `retentionDays` dage; et `since` før `coveredFrom` læser fra `coveredFrom`.

**Godkendelse:** API-nøgle eller dashboard-session

**Afregning:** Ikke målt.

## Parametre

| Navn | Placering | Type | Påkrævet | Beskrivelse |
| --- | --- | --- | --- | --- |
| `status` | query | string | nej | Kun hændelser med denne seneste leveringstilstand. |
| `event` | query | string | nej | Kun én hændelsestype, fx `adresse.aendret`. |
| `webhook` | query | string | nej | Kun hændelser til ét endpoint (`wh_…`). |
| `since` | query | string | nej | Kun hændelser fra denne dato eller dette tidspunkt (ISO 8601). |
| `cursor` | query | string | nej | `nextCursor` fra forrige side. |
| `limit` | query | integer | nej | Hændelser pr. side, 1-100. |

## Eksempel

```bash
curl -G "https://api.grundfast.dk/v1/me/webhooks/events" \
  --data-urlencode "status=failed" \
  --data-urlencode "since=2026-10-10" \
  -H "Authorization: Bearer $GRUNDFAST_API_KEY"
```

## Svar (200)

```json
{
  "events": [
    {
      "id": "whd_74rxu7q98u3kl3u6ok67q5y3",
      "event": "key.revoked",
      "created": "2026-10-13T12:47:49.607Z",
      "data": { "key_id": 2 },
      "webhookId": "wh_g6omjl6xaqe6syjuz2wd4sws",
      "delivery": {
        "id": "whd_74rxu7q98u3kl3u6ok67q5y3",
        "status": "failed",
        "attempts": 5,
        "responseStatus": 500,
        "error": "endpoint returned 500",
        "lastAttemptAt": "2026-10-13T12:47:52.631Z",
        "deliveredAt": null,
        "redeliveries": 0
      }
    }
  ],
  "nextCursor": "ZToz",
  "hasMore": false,
  "retentionDays": 30,
  "coveredFrom": "2026-09-13T12:48:11.695Z"
}
```

## Vigtige felter

| Felt | Type | Betydning |
| --- | --- | --- |
| `events[].id` | string | Hændelsens id — det samme som `X-Grundfast-Delivery` på leveringen. |
| `events[].delivery` | object | Seneste forsøg: `status`, `attempts`, `responseStatus`, `error`, `lastAttemptAt`, `deliveredAt` og `redeliveries`. |
| `nextCursor` | string | Send som `cursor` i næste kald; du springer aldrig over og ser aldrig en hændelse to gange. |
| `hasMore` | boolean | Flere hændelser venter efter denne side. |

## Fejl

| Status | Betydning |
| --- | --- |
| 400 | En ugyldig `status`, `since`, `limit` eller en `cursor`, API’et ikke har udstedt. |
| 404 | `webhook` er ikke et af dine endpoints. |
| 401 | Hverken en gyldig nøgle eller en session. |
| 403 | Nøglen har ikke scopet `webhooks` (`key_scope_missing`), eller kontoen er suspenderet. |
