# List events

`GET https://api.parasend.com/v1/events`

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

Authentication: `Authorization: Bearer <API key>` (a `ps_test_` key in test mode, `ps_live_` in live mode).

Every event in your account, a page at a time: the same events your webhooks get. Use it to poll when you can't receive webhooks, or to catch up after an outage.

## Query parameters

- `limit` (integer, optional): Default: `25`.
- `cursor` (string, optional)
- `type` (string, optional): 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_after` (string · date-time, optional)
- `created_before` (string · date-time, optional): Only events created strictly before this time. With created_after, a date range (as GET /deliveries).
- `resource_id` (string, optional): Only events about this resource (dlv_…, bat_…, req_…, …). Exact match.
- `order` (string, optional): `asc`, the default, is the order for polling: oldest first, walking forward with the cursor. `desc` lists the newest first. A cursor works only with the order it came from. One of: `asc`, `desc`. Default: `"asc"`.

## Example: Poll for new events

```bash
curl "https://api.parasend.com/v1/events?limit=3" \
  -H "Authorization: Bearer $PARASEND_KEY"
```

```js
const res = await fetch('https://api.parasend.com/v1/events?limit=3', {
  method: 'GET',
  headers: {
    Authorization: `Bearer ${process.env.PARASEND_KEY}`,
  },
});
const data = await res.json();
```

## Response 200

Paginated events.

```json
{
  "data": [
    {
      "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
    },
    {
      "id": "evt_01M6R27T153J4657RB03NQNXW2",
      "object": "event",
      "type": "delivery.created",
      "created": "2026-11-06T09:15:05.634Z",
      "resource": {
        "type": "delivery",
        "id": "dlv_01M6R27T13NKWVJRJBTHZDP6Y1"
      },
      "batch_id": null,
      "reason": null,
      "data": null
    },
    {
      "id": "evt_01M6R27T1NHEY707SDDNNJTAZK",
      "object": "event",
      "type": "delivery.created",
      "created": "2026-11-06T09:15:05.651Z",
      "resource": {
        "type": "delivery",
        "id": "dlv_01M6R27T1MRPH7P4ZSR0WKTBQD"
      },
      "batch_id": null,
      "reason": null,
      "data": null
    }
  ],
  "has_more": true,
  "next_cursor": "eyJjcmVhdGVkX2F0IjoiMjAyNi0xMS0wNlQwOToxNTowNS42NTE1NDVaIiwiaWQiOiJldnRfMDFNNlIyN1QxTkhFWTcwN1NERE5OSlRBWksifQ"
}
```

Errors: one shape, `{"error": {type, code, message, param, request_id}}`; every code is listed at https://parasend.com/docs/errors.
