Skip to content

Analytics Report

Totals and daily, campaign, step and inbox breakdowns for a date range.

GET/api/v1/analytics/reports

Requires an API key with the read scope.

Counts follow the Reports page: a bounced email counts as sent, replies are distinct leads, and replies from bounce, warmup and unrelated mail are left out. Days are bucketed in the timezone of the user who created the API key.

With no filters the report covers every campaign in the workspace for the last 30 days.

Query Parameters#

startstringquery
First day, YYYY-MM-DD. Defaults to 30 days before end.
endstringquery
Last day, YYYY-MM-DD. Defaults to today in the key owner's timezone. A range is at most 365 days.
campaignIdsstringquery
Comma-separated campaign ids to include.
accountIdsstringquery
Comma-separated email account ids to include.

Response#

dataobject
Show data
rangeobject
start, end and the timezone used to bucket days.
totalsobject
Show totals
sentinteger
Emails that left the system (sent, delivered or bounced).
repliedinteger
Distinct leads that replied.
interestedinteger
Distinct leads categorised interested.
bouncedinteger
Emails that bounced.
openedinteger
Opens, from campaigns with open tracking on.
clickedinteger
Link clicks, from campaigns with click tracking on.
notInterestedinteger
Distinct leads categorised not interested.
outOfOfficeinteger
Distinct leads categorised out of office.
unsubscribedinteger
Distinct leads categorised unsubscribe.
replyRatenumber
Replies divided by sent, or null when nothing was sent.
positiveRatenumber
Interested divided by replies, or null.
bounceRatenumber
Bounced divided by sent, or null.
openRatenumber
Opened divided by sent, or null when open tracking was off.
clickRatenumber
Clicked divided by sent, or null when click tracking was off.
dailyarray
One row per day with the same counters and a date.
campaignsarray
One row per campaign with id, name, status and the counters.
stepsarray
One row per campaign, step and variant.
accountsarray
One row per sending inbox with accountId, email and the counters.

Errors#

StatusDescription
401Missing, invalid, revoked or expired API key
403API key does not have the required scope: read
400start is after end, or the range is longer than 365 days
404A campaign or account id is not in this workspace

Rate Limit#

  • 300 requests per minute, shared by every read call in your workspace. Fixed 60-second window.
  • Every response includes X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset (unix epoch seconds) and X-RateLimit-Bucket (read).
  • A 429 response includes a Retry-After header (seconds until the bucket resets).

For client-side patterns, see Rate Limiting.

Was this page helpful?
View as MarkdownLast updated November 4, 2026