List campaign reportsMenu

List campaign reports

GET/v1/reports/campaigns

Requires an API key with the reports:read scope. About keys and scopes

Works with integration, agent and partner keys.

Available on plans with advanced reports. Plans

Lists campaign performance over a window. One row per campaign with a marketing message in the window, including a campaign none of whose messages were sent: its email shows as failed or skipped. Counts are send cohorts like the overview: email by the time it was sent, email never sent and push by the time it was queued, and later feedback revises them. Journey and transactional messages are not here (see the journey and transactional reports), so these rows can sum to less than the overview. Conversions are those whose source message was sent in the window, and revenue is summed per goal currency, never converted. Rates are fractions; null means no denominator, and sorts below every rate. sent sorts by email sent. Without from and to, the window is the last 30 days ending today. Needs a plan with advanced reports: without one, 403 PLAN_FEATURE_UNAVAILABLE.

Query parameters

limitintegeroptional

How many items a page holds: 1 to 100, 20 by default.

min > 0 · max 100 · default 20

cursorstringoptional

Where the page starts: the previous page's meta.pagination.nextCursor. Omit it for the first page, and send the same filters with it.

1–2,048 characters

fromstringoptional

Start of the window, inclusive: a date-time, or a date meaning the start of that day in the workspace timezone. Give with to; omit both for the last 30 days.

tostringoptional

End of the window, exclusive, in the same forms. To include a whole last day, pass the day after it: from=2026-10-01&to=2026-10-08 covers 1 to 7 October. No later than the end of today; a window touches at most 366 days. Give with from.

sortstringoptional

A field ascending, or -field descending. Rates with no denominator sort last.

one of firstAttemptedAt, sent, openRate, clickRate, bounceRate, unsubscribeRate, conversions, -firstAttemptedAt, -sent, -openRate, -clickRate, -bounceRate, -unsubscribeRate, -conversions · default "-firstAttemptedAt"

tagstringoptional

Only campaigns carrying this tag, its name matched without case: "everything tagged Black Friday".

1–64 characters

Header parameters

Kirora-Workspacestringoptional

Partner keys only: the child workspace to act in, by the external id the partner gave it. Without it, a partner key acts in its own workspace. Any other key that sends it is refused with 403, and an unknown workspace is 404.

pattern ^[A-Za-z0-9._:-]{1,128}$

Returns

Returns 200 OK with a list of CampaignPerformance objects in data, and the next page's cursor in meta (see pagination). Otherwise returns an error; Errors lists every code and which to retry.

campaignIdstringrequired

uuid

namestringrequired
statusstringrequired

one of draft, scheduled, sending, testing, sent, cancelled

channelsstring[]required

The channels the campaign targets.

firstAttemptedAtstringrequired

The campaign's first message in the window: when it was sent, or queued for one never sent. Not the campaign schedule.

date-time

emailobjectrequired

Email counts and rates for the window. sent covers only email the provider accepted.

11 child attributes
sentintegerrequired

min 0

deliveredintegerrequired

min 0

openedintegerrequired

Opened at least once, including openedByMachine.

min 0

openedByMachineintegerrequired

Of opened, those only a machine opened: a mail app fetched its images with no reader (Apple Mail Privacy Protection, Gmail's prefetch on delivery) or a mail security scanner checked it.

min 0

clickedintegerrequired

With a link clicked by a person.

min 0

failedintegerrequired

Not delivered, with no bounce or complaint: refused before sending, or failed after it. Each message's failure.reason says why.

min 0

skippedintegerrequired

Stopped before sending by a guard (no consent, suppressed, no address). Not in sent.

min 0

bouncedintegerrequired

min 0

complainedintegerrequired

min 0

unsubscribedintegerrequired

min 0

ratesEmailRatesrequired

Email rates as fractions: delivery over sent; bounce and complaint over real sends (sent less simulated where the counts give it), as deliverabilityHealth judges them; open, click and unsubscribe over delivered. null when there is no denominator.

6 child attributes
deliverynumber | nullrequired

min 0

opennumber | nullrequired

min 0

clicknumber | nullrequired

min 0

bouncenumber | nullrequired

min 0

complaintnumber | nullrequired

min 0

unsubscribenumber | nullrequired

min 0

pushobjectrequired

Push counts for the window.

4 child attributes
sentintegerrequired

min 0

failedintegerrequired

min 0

openedintegerrequired

min 0

clickedintegerrequired

min 0

conversionsintegerrequired

Goal conversions whose source message was sent in the window.

min 0

revenueMoney[]required

Credited revenue per goal currency, never converted: what conversions a message drove were worth, gross, before refunds and cancellations.

2 child attributes
currencystring | nullrequired

The currency, an ISO 4217 code; null when none was named.

valuenumberrequired

The amount in that currency.

revenueWithheldbooleanrequired

True when revenue leaves out the value of a goal whose value property is a masked attribute this viewer may not see; its conversions are still counted.