Get the email activity timeline of an expiry

gethttps://api.expiryedge.com/v1/getExpiryActivity
any role in the expiry's organization60/min
Request
curl 'https://api.expiryedge.com/v1/getExpiryActivity?expiry_id=exp_4Tq9sLm2' \
  -H "Authorization: Bearer $EXPIRYEDGE_API_KEY"
Response
{
  "expiry_id": "exp_4Tq9sLm2",
  "stats": {
    "sent_count": 2,
    "delivered_count": 2,
    "opened_count": 1,
    "last_event_at": "2026-09-27T14:05:00.000Z"
  },
  "events": [
    {
      "id": "evt_R2m8Tq",
      "event_type": "sent",
      "timestamp": "2026-09-26T09:00:04.000Z",
      "contact_email": "billing@contosolegal.com",
      "contact_display": "Contoso Legal Billing",
      "message_id": "msg_01J8ZK",
      "subject": "Reminder: State Dental License expires in 18 days",
      "clicked_url": null,
      "bounce_type": null,
      "failure_reason": null,
      "reply_text": null,
      "provider": "resend"
    },
    {
      "id": "evt_W7n3Ya",
      "event_type": "opened",
      "timestamp": "2026-09-27T14:05:00.000Z",
      "contact_email": "billing@contosolegal.com",
      "contact_display": "Contoso Legal Billing",
      "message_id": "msg_01J8ZK",
      "subject": "Reminder: State Dental License expires in 18 days",
      "clicked_url": null,
      "bounce_type": null,
      "failure_reason": null,
      "reply_text": null,
      "provider": "resend"
    }
  ],
  "contact_count": 1
}

Returns up to 300 most recent email events (sent, delivered, opened, clicked, bounced, ...) for the expiry, oldest first. No pagination.

Query parameters

  • expiry_idstringrequired

Returns

200
Activity timeline.
  • expiry_idstringrequired
  • statsobjectrequired
    Rollup counters: <event_type>_count, last_<event_type>_at and last_event_at.
  • eventsarray of objectsrequired
  • contact_countintegerrequired
    Distinct recipient addresses in events.

Errors

400
The request is missing required fields or contains invalid values.
401
Missing, expired or invalid bearer token.
403
Authenticated, but your role or organization does not allow this action.
404
The record does not exist or is not in your organization.
405
The endpoint does not accept this HTTP method.
429
Too many requests for this endpoint from your IP. Wait Retry-After seconds.
500
Unexpected server error. Retry later; quote requestId to support.