Skip to main content
GET
/
campaigns
/
{campaignId}
/
events
List campaign engagement events
curl --request GET \
  --url https://app.lettr.com/api/campaigns/{campaignId}/events \
  --header 'Authorization: Bearer <token>'
{
  "message": "Campaign events retrieved successfully.",
  "data": {
    "events": [
      {
        "event_id": "92356829",
        "event_type": "open",
        "email": "jane@example.com",
        "timestamp": "2026-05-01T12:30:00+00:00",
        "bounce_class": "<string>",
        "reason": "<string>",
        "target_link_url": "<string>",
        "user_agent": "<string>"
      }
    ],
    "next_cursor": "<string>"
  }
}

Documentation Index

Fetch the complete documentation index at: https://docs.lettr.com/llms.txt

Use this file to discover all available pages before exploring further.

Returns engagement events (opens, clicks, bounces, etc.) for a campaign, with optional filtering by type, recipient email, and date range. Uses cursor-based pagination: keep requesting with the returned next_cursor until it is null. When a filter is applied, a page may come back with an empty events array and a non-null next_cursor — that means more pages remain, not that there are no matching events, so continue paginating until next_cursor is null. Requires the campaigns:read scope.

Authorizations

Authorization
string
header
required

API key for authentication

Path Parameters

campaignId
string<uuid>
required

Campaign ID

Query Parameters

event_type
enum<string>

Filter by event type

Available options:
injection,
delivery,
bounce,
spam_complaint,
open,
click,
list_unsubscribe
email
string<email>

Filter by recipient email

start_date
string<date-time>

Only events at or after this time (ISO 8601). A date-only value (e.g. 2026-05-01) is treated as the start of that day in UTC.

end_date
string<date-time>

Only events at or before this time (ISO 8601), inclusive. A date-only value (e.g. 2026-05-01) covers the whole of that day in UTC (through 23:59:59).

limit
integer
default:25

Max events per page (max 100)

Required range: 1 <= x <= 100
cursor
string

Pagination cursor from a previous response

Response

Campaign events retrieved successfully.

message
string
required
Example:

"Campaign events retrieved successfully."

data
object
required