View Reports
Access dashboard summaries, email performance metrics, and campaign engagement data using the API.Goal
By the end of this guide you will be able to retrieve your dashboard summary statistics, view overall email performance, get time-series histograms, pull detailed reports for individual campaigns, and access engagement breakdowns.Prerequisites
- An API key with
reports:readscope - Your API base URL (found on the Settings > API Keys page)
- At least one sent campaign (for meaningful report data)
Steps
1. Get dashboard summary
Retrieve a high-level snapshot of your email and contact performance over a specified time period.| Parameter | Required | Description |
|---|---|---|
pastDays | Yes | Number of days to look back (1-90) |
timezone | No | IANA timezone code (default: UTC). Example: America/New_York, Europe/London |
200 OK):
diff field: The diff value is a percentage change compared to the equivalent preceding time period. For example, with pastDays=30, the diff compares the last 30 days to the 30 days before that. A positive value means an increase; negative means a decrease.
2. Get email performance overview
Retrieve aggregate email performance statistics across all campaigns.200 OK):
3. Get email performance histogram
Retrieve a time-series breakdown of email performance for chart visualization.200 OK):
4. Get campaign-specific report
Retrieve detailed performance metrics for a single campaign. You will need the campaign ID (fromGET /api/email/campaign).
200 OK):
- sent — Total emails dispatched
- delivered — Emails that reached the recipient’s mail server
- opens.unique — Number of unique recipients who opened the email
- opens.rate — Open rate as a percentage of delivered emails
- clicks.unique — Number of unique recipients who clicked a link
- clicks.rate — Click rate as a percentage of delivered emails
- totalBounces — Hard + soft bounces combined
- hardBounces — Permanent delivery failures (invalid addresses)
- softBounces — Temporary delivery failures (full mailbox, server issues)
- linkActivity — Per-link click breakdown
5. Get campaign engagement details
Retrieve a time-series engagement histogram for a specific campaign, useful for understanding when recipients interact with your email.| Parameter | Required | Description |
|---|---|---|
period | No | Engagement window: 24hours (default), week, or month |
timezone | No | IANA timezone code (default: UTC) |
200 OK):
Endpoint Summary
| Endpoint | Method | Description |
|---|---|---|
/api/reports/dashboard | GET | Dashboard snapshot (campaigns + contacts) |
/api/reports/email/overall | GET | Aggregate email performance |
/api/reports/email/overall/histogram | GET | Email performance time series |
/api/reports/email/:id | GET | Individual campaign report |
/api/reports/email/:id/engagement | GET | Campaign engagement time series |
reports:read scope and accept pastDays and timezone query parameters (except per-campaign endpoints which use period).
Common Errors
| Status | Error | Cause | Fix |
|---|---|---|---|
401 | UnauthorizedError | Invalid or inactive API key | Verify your key in Settings > API Keys |
403 | ForbiddenError | Key lacks reports:read scope | Create or upgrade your key with reports:read |
400 | ValidationError | Invalid pastDays value (must be 1-90) or invalid period | Check query parameters |
404 | RecordNotFound | Campaign ID does not exist | Verify the campaign ID from GET /api/email/campaign |
429 | TooManyRequestsError | Rate limit exceeded | Wait for the Retry-After period. See Rate Limits |
Next Steps
- Manage Campaigns — create and manage the campaigns you are reporting on
- Search Contacts — find contacts for targeted campaign analysis
- Manage Lists — manage the lists your campaigns send to