List campaign performance
Changed onEvery message campaign sent in the period, ranked by attributed revenue, each row carrying the full channel stat block (delivery, engagement, unsubscribes, attribution) scoped to the same period — so period comparisons need no per-campaign detail calls. Zero-revenue sends are listed too, ranked after the revenue rows; at most 100 campaigns are ranked, and a send with no recorded activity at all in the period does not appear.
By default the list serves your newsletters — email and SMS one-time sends. Pass type=flows to instead rank the flow campaigns: the email and SMS messages your automation flows send (flow rows carry no sent_date or audience, and instead name the flow that sends them in flow, so attributing a message to its flow needs no follow-up request). Use /v1/reports/campaigns/{campaign_id} for one campaign's most-clicked links or its lifetime funnel.
Required scope: reports_read
Request
- Base URLhttps://api.privy.com/v1
- AuthHTTP bearer
Query parameters
The date range to report over, resolved in the account's time zone. Pass custom together with start_date and end_date.
Inclusive start of a custom period (ISO 8601 date). Required when period=custom, ignored otherwise.
Inclusive end of a custom period (ISO 8601 date). Required when period=custom, ignored otherwise. Custom periods are capped at 366 days.
Pass flows to rank the messages your flows send instead of newsletters.
Filter by message channel. Works for both newsletters and flow campaigns.
Page number (starts at 1).
Campaigns per page. Values above 50 are clamped to 50; omitted or invalid values default to 10.
Headers
Target a subaccount instead of the main connected account. Pass a subaccount id from get_account's subaccounts list. Only direct subaccounts of the connected account are reachable — omit this for the main account itself.
Response
Campaigns ranked by attributed revenue over the resolved period.
Example response
{
"data": [
{
"campaign_id": "kD4qN8wZr1",
"type": "newsletter",
"title": "June Restock Announcement",
"channel": "email",
"sent_date": "2026-06-18",
"audience": {
"included_segments": [
"Engaged 90d"
],
"excluded_segments": [
"Recent purchasers"
]
},
"flow": {
"id": "0Rqw3Z8",
"title": "Welcome Series"
},
"stats": {
"sent": {
"value": 42,
"unit": "count"
},
"delivered": {
"value": 42,
"unit": "count"
},
"delivery_rate": {
"value": 42,
"unit": "count"
},
"opened_unique": {
"value": 42,
"unit": "count"
},
"open_rate": {
"value": 42,
"unit": "count"
},
"clicked_unique": {
"value": 42,
"unit": "count"
},
"click_rate": {
"value": 42,
"unit": "count"
},
"bounced": {
"value": 42,
"unit": "count"
},
"bounce_rate": {
"value": 42,
"unit": "count"
},
"spam_reports": {
"value": 42,
"unit": "count"
},
"unsubscribed": {
"value": 42,
"unit": "count"
},
"unsubscribe_rate": {
"value": 42,
"unit": "count"
},
"opted_out": {
"value": 42,
"unit": "count"
},
"failed": {
"value": 42,
"unit": "count"
},
"attributed_orders": {
"value": 42,
"unit": "count"
},
"order_rate": {
"value": 42,
"unit": "count"
},
"attributed_revenue": {
"value": 42,
"unit": "count"
},
"average_order_value": {
"value": 42,
"unit": "count"
}
}
}
],
"period": {
"label": "last_30_days",
"start_date": "2026-06-21",
"end_date": "2026-07-20"
},
"pagination": {
"page": 1,
"per_page": 25,
"total_count": 142,
"total_pages": 6
}
}Changes
- warning
added the new
forbiddenenum value to the/response property for the response status - warning
added the new
forbiddenenum value to the/response property for the response status - warning
added the new
forbiddenenum value to the/response property for the response status - warning
added the new
forbiddenenum value to the/response property for the response status - warning
added the new
segment_builder_requiredenum value to the/response property for the response status - warning
added the new
segment_builder_requiredenum value to the/response property for the response status - warning
added the new
segment_builder_requiredenum value to the/response property for the response status - warning
added the new
segment_builder_requiredenum value to the/response property for the response status
- warning
- info
endpoint added
- info