Ресурс sendstatistics. Те же числа, что в отчёте рассылки в кабинете. Первые 30 дней после рассылки числа пересчитываются каждые 10 минут, потом становятся окончательными.
GET/mailer/sendstatistics.json
Рассылки со статистикой
Отправленные и отправляющиеся рассылки: номер и тема. Параметры: limit, page, sort_direction.
curl -G https://v1.estismail.com/mailer/sendstatistics.json \
-H "X-Estis-Auth: ВАШ_КЛЮЧ" \
-d sort_direction=-1 -d limit=3<?php
$query = http_build_query([
'sort_direction' => '-1',
'limit' => '3',
]);
$ch = curl_init('https://v1.estismail.com/mailer/sendstatistics.json' . '?' . $query);
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => ['X-Estis-Auth: ВАШ_КЛЮЧ'],
CURLOPT_RETURNTRANSFER => true,
]);
$response = curl_exec($ch);
echo curl_getinfo($ch, CURLINFO_HTTP_CODE), "\n", $response;import requests
r = requests.get(
"https://v1.estismail.com/mailer/sendstatistics.json",
headers={"X-Estis-Auth": "ВАШ_КЛЮЧ"},
params={
"sort_direction": "-1",
"limit": "3",
},
)
print(r.status_code, r.text)const params = new URLSearchParams({
sort_direction: "-1",
limit: "3",
});
const res = await fetch("https://v1.estismail.com/mailer/sendstatistics.json?" + params, {
headers: { "X-Estis-Auth": "ВАШ_КЛЮЧ" },
});
console.log(res.status, await res.text());Ответ 200
{
"statistics": [
{
"id": 290700,
"letter_title": "Октябрьская распродажа"
}
]
}GET/mailer/sendstatistics/{id}.json
Статистика рассылки
В fields перечислите нужные части. Без fields придёт только id.
| Часть | Что в ней |
|---|---|
common | count получателей, delivered доставлено, bounce не доставлено, deferred отложено провайдером, opened открыли (людей), opens_total всего открытий, clicked перешли по ссылкам (людей), clicks_total всего переходов, unsubs отписались, spam пожаловались, final числа окончательные. |
open_time | Первые 48 часов с шагом в час от начала рассылки: время начала отрезка (unix) и сколько человек впервые открыли письмо в этот час. |
click_statistic | Ссылки: url, people сколько человек перешли, clicks всего переходов. |
domain_statistic | Домены получателей: domain, recipients, delivered, bounced, deferred, opened, clicked, unsubscribed. Строка * собирает остальные домены. |
errors | Причины недоставки, как в отчёте рассылки: code код причины, reason описание, count сколько адресов. |
Для рассылок до 9 октября 2026 года есть только common, остальные части пустые.
curl -G https://v1.estismail.com/mailer/sendstatistics/290700.json \
-H "X-Estis-Auth: ВАШ_КЛЮЧ" \
--data-urlencode 'fields=["id","common","domain_statistic"]'<?php
$query = http_build_query([
'fields' => '["id","common","domain_statistic"]',
]);
$ch = curl_init('https://v1.estismail.com/mailer/sendstatistics/290700.json' . '?' . $query);
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => ['X-Estis-Auth: ВАШ_КЛЮЧ'],
CURLOPT_RETURNTRANSFER => true,
]);
$response = curl_exec($ch);
echo curl_getinfo($ch, CURLINFO_HTTP_CODE), "\n", $response;import requests
r = requests.get(
"https://v1.estismail.com/mailer/sendstatistics/290700.json",
headers={"X-Estis-Auth": "ВАШ_КЛЮЧ"},
params={
"fields": '["id","common","domain_statistic"]',
},
)
print(r.status_code, r.text)const params = new URLSearchParams({
fields: '["id","common","domain_statistic"]',
});
const res = await fetch("https://v1.estismail.com/mailer/sendstatistics/290700.json?" + params, {
headers: { "X-Estis-Auth": "ВАШ_КЛЮЧ" },
});
console.log(res.status, await res.text());Ответ 200
{
"id": 290700,
"common": {
"count": 1520,
"delivered": 1498,
"bounce": 22,
"opened": 611,
"clicked": 95,
"spam": 1,
"unsubs": 4,
"deferred": 0,
"opens_total": 902,
"clicks_total": 131,
"final": false
},
"domain_statistic": [
{
"domain": "gmail.com",
"recipients": 930,
"delivered": 925,
"bounced": 5,
"deferred": 0,
"opened": 402,
"clicked": 61,
"unsubscribed": 2
}
]
}Вопросы по API: support@estismail.com