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