Get Email Stats
Aggregate delivery and engagement figures for one campaign: sent, delivered, opened, clicked, bounced, complained, and delivery-delayed. Each comes back as a raw total, a unique count that collapses repeat events from the same recipient, and a rate, so open rate is not just opens divided by sends. For the per-recipient breakdown behind these numbers use List Emails.
Authorization
Authorization In: header
Path Parameters
ID of the project that owns the campaign.
ID of the campaign to report on.
Query Parameters
Only count events on or after this YYYY-MM-DD date. Omit for the campaign's whole lifetime.
Only count events on or before this YYYY-MM-DD date.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://www.saasco.com/api/v2/projects/string/email-campaigns/string/stats"{
"bounced": {
"rate": 0,
"total": 0,
"unique": 0
},
"clicked": {
"rate": 0,
"total": 0,
"unique": 0
},
"complained": {
"rate": 0,
"total": 0,
"unique": 0
},
"delivered": {
"rate": 0,
"total": 0,
"unique": 0
},
"deliveryDelayed": {
"rate": 0,
"total": 0,
"unique": 0
},
"opened": {
"rate": 0,
"total": 0,
"unique": 0
},
"sent": {
"rate": 0,
"total": 0,
"unique": 0
}
}{
"code": "BAD_REQUEST",
"message": "Invalid input data",
"issues": []
}{
"code": "UNAUTHORIZED",
"message": "Authorization not provided",
"issues": []
}{
"code": "FORBIDDEN",
"message": "Insufficient access",
"issues": []
}{
"code": "NOT_FOUND",
"message": "Not found",
"issues": []
}{
"code": "INTERNAL_SERVER_ERROR",
"message": "Internal server error",
"issues": []
}Count Campaign Emails
How many emails the campaign covers. The meaning shifts with campaign state: while it is still SENDING this is a live count of contacts currently matching the audience, so it can move between calls as contacts subscribe or unsubscribe. In every other state it counts the Email rows actually created. Treat it as a projection before the send finishes and a fact afterwards.
List Emails
The per-recipient send log for one campaign: who it went to, current status, and delivery timestamps. Paginated, and returns `total` alongside the rows so you can page without a second call. Filter by `status` to answer questions like "who bounced", or by `messageId` / `sendPhase` to isolate one side of an A/B test.