# Events

Source: https://parasend.com/docs/api/events

Global audit event log (polling fallback for webhooks).

## Endpoints

- [List events](https://parasend.com/docs/api/events/list.md): `GET /v1/events`
- [Retrieve an event](https://parasend.com/docs/api/events/retrieve.md): `GET /v1/events/{id}`
- [See where an event was sent](https://parasend.com/docs/api/events/webhooks.md): `GET /v1/events/{id}/webhooks`

## The Event object

Thin payload + fetch — no recipient PII or document names; consumers fetch the resource, re-authorized through the key matrix.

- `id` (string, optional): The event's ID, starting `evt_`.
- `object` (string, optional): Always `event`.
- `type` (string, optional): Every event type. `delivery.*` events follow a delivery from creation to its end, `batch.*` a batch, and `member.*`, `email_sender.*` and `recipient_domain.*` your account. `delivery.email_opened` is a hint (the e-mail client loaded an image), never proof of receipt; `delivery.confirmed` is the recipient confirming receipt. `delivery.auth_failed` carries a `reason`, such as `personal_code_mismatch` or `id_document_mismatch`. The `secret.*`, `request.*` and `lookup.*` events belong to features that are not available yet. New types may be added: ignore types you do not know. One of: `delivery.created`, `delivery.rejected`, `delivery.notified`, `delivery.opened`, `delivery.email_opened`, `delivery.auth_failed`, `delivery.confirmed`, `delivery.downloaded`, `delivery.delivered`, `delivery.reminded`, `delivery.bounced`, `delivery.expired`, `delivery.revoked`, `delivery.consignment_failed`, `delivery.evidence_sealed`, `delivery.evidence_timestamp_deferred`, `delivery.evidence_timestamp_recovered`, `delivery.paper_pending_approval`, `delivery.paper_dispatched`, `delivery.paper_failed`, `document.previewed`, `batch.finalized`, `batch.completed`, `lookup.completed`, `consent.granted`, `consent.withdrawn`, `invitation.sent`, `link.opened`, `otp.sent`, `otp.verified`, `otp.locked`, `secret.attached`, `secret.available`, `secret.revealed`, `secret.copied`, `secret.expired`, `secret.exhausted`, `secret.revoked`, `request.sent`, `request.opened`, `request.fulfilled`, `request.expired`, `request.closed`, `request.reopened`, `deletion.scheduled`, `recipient_domain.verified`, `recipient_domain.degraded`, `recipient_domain.failed`, `member.suspended`, `member.restored`, `member.removed`, `batch.cancelled`, `batch.policy_changed`, `delivery.policy_changed`, `email_sender.verified`, `email_sender.degraded`, `email_sender.failed`, `email_sender.restored`.
- `created` (string · date-time, optional): When it was created, in ISO 8601 (UTC).
- `resource` (object, optional): What the event is about: its `type` (such as `delivery`, `batch` or `recipient_domain`) and `id`. The event carries no personal data; fetch the resource for its details.
  - `resource.type` (string, optional)
  - `resource.id` (string, optional)
- `batch_id` (string · nullable, optional): The batch it belongs to (`bat_…`), or null when it is not part of a batch.
- `reason` (string · nullable, optional): Reason code where the type defines one (delivery.auth_failed → pin_mismatch, provider_failure, timeout, cancelled; delivery.consignment_failed → assurance_not_met; delivery.rejected → the catalogue code of the refusing rule).
- `data` (object · nullable, optional): Details for some event types; never personal data, never file names. Absent for most types.

```json
{
  "id": "evt_01M6R27T08JTMBJ4B6GQP90838",
  "object": "event",
  "type": "delivery.created",
  "created": "2026-11-06T09:15:05.604Z",
  "resource": {
    "type": "delivery",
    "id": "dlv_01M6R27T05512SCV3852TPM2XY"
  },
  "batch_id": null,
  "reason": null,
  "data": null
}
```
