curl https://api2.ecomailapp.cz/campaigns/12345/stats-detail \
-H "key: YOUR_API_KEY" \
-H "Content-Type: application/json"
$campaignId = 12345;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api2.ecomailapp.cz/campaigns/{$campaignId}/stats-detail");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'key: YOUR_API_KEY',
'Content-Type: application/json',
]);
$response = curl_exec($ch);
curl_close($ch);
{
"next_page_url": "https://api2.ecomailapp.cz/campaigns/12345/stats-detail?page=2",
"total": 4256,
"per_page": 100,
"subscribers": {
"foo@bar.com": {
"open": 2,
"send": 1,
"unsub": 0,
"soft_bounce": 0,
"click": 1,
"hard_bounce": 0,
"out_of_band": 0,
"spam": 0
}
}
}
{
"next_page_url": null,
"total": 3,
"per_page": 100,
"subscribers": {
"foo@bar.com": [
{
"url": "https://example.com/landing",
"event": "click",
"occured_at": "2026-03-22 10:15:03"
}
]
}
}
Campaigns
Get campaign stats detail
Returns statistics for a specific campaign with each subscriber and their individual events.
GET
/
campaigns
/
{id}
/
stats-detail
curl https://api2.ecomailapp.cz/campaigns/12345/stats-detail \
-H "key: YOUR_API_KEY" \
-H "Content-Type: application/json"
$campaignId = 12345;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api2.ecomailapp.cz/campaigns/{$campaignId}/stats-detail");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'key: YOUR_API_KEY',
'Content-Type: application/json',
]);
$response = curl_exec($ch);
curl_close($ch);
{
"next_page_url": "https://api2.ecomailapp.cz/campaigns/12345/stats-detail?page=2",
"total": 4256,
"per_page": 100,
"subscribers": {
"foo@bar.com": {
"open": 2,
"send": 1,
"unsub": 0,
"soft_bounce": 0,
"click": 1,
"hard_bounce": 0,
"out_of_band": 0,
"spam": 0
}
}
}
{
"next_page_url": null,
"total": 3,
"per_page": 100,
"subscribers": {
"foo@bar.com": [
{
"url": "https://example.com/landing",
"event": "click",
"occured_at": "2026-03-22 10:15:03"
}
]
}
}
integer
required
Campaign ID.
string
Filter by event type:
open, send, unsub, soft_bounce, click, hard_bounce, out_of_band, spam.string
Filter by subscriber email.
string
Filter events from this date onwards (
YYYY-MM-DD in UTC). Cannot be more than one year in the past.string
Filter events up to this date (
YYYY-MM-DD in UTC). Must be after from_date.string
Set to
true to return each individual event per subscriber (with event, url and occured_at) instead of aggregated per-event counts.integer
Results per page. Maximum and default is
100.integer
Page number.
total field returns the total number of subscribers the campaign was targeted at.
The open, click, and send fields return unique counts — not total events, which can include one subscriber many times.
curl https://api2.ecomailapp.cz/campaigns/12345/stats-detail \
-H "key: YOUR_API_KEY" \
-H "Content-Type: application/json"
$campaignId = 12345;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api2.ecomailapp.cz/campaigns/{$campaignId}/stats-detail");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'key: YOUR_API_KEY',
'Content-Type: application/json',
]);
$response = curl_exec($ch);
curl_close($ch);
{
"next_page_url": "https://api2.ecomailapp.cz/campaigns/12345/stats-detail?page=2",
"total": 4256,
"per_page": 100,
"subscribers": {
"foo@bar.com": {
"open": 2,
"send": 1,
"unsub": 0,
"soft_bounce": 0,
"click": 1,
"hard_bounce": 0,
"out_of_band": 0,
"spam": 0
}
}
}
{
"next_page_url": null,
"total": 3,
"per_page": 100,
"subscribers": {
"foo@bar.com": [
{
"url": "https://example.com/landing",
"event": "click",
"occured_at": "2026-03-22 10:15:03"
}
]
}
}