Отримання активності контактів через API
Ресурс Get contacts activity повертає записи активності за повідомленнями, надісланими вашим контактам, за вказаний період. Кожен запис у відповіді містить статус — DELIVERED, UNDELIVERED, READ, CLICKED, UNSUBSCRIBED, SUBSCRIPTION_CHANGED або SPAM, — час події, а також повідомлення й контакт, яких вона стосується. Для UNDELIVERED повертається ще й причина.
Використовуйте ресурс, щоб передавати до своєї системи статуси повідомлень, дії контактів і причини недоставлення, а також зіставляти їх із запитами вашої інтеграції на надсилання.
Get contacts activity повертає окремі події активності за період і охоплює багатьох контактів одразу; нові події можуть зʼявлятися із затримкою в кілька хвилин.
Get contact's message history повертає історію повідомлень одного контакту, ідентифікатор якого потрібно передати в запиті, та відображає факт надсилання одразу. Тому використовуйте цей ресурс для перевірки перед повторним надсиланням. Повне порівняння методів отримання активності контактів, разом із вебхуками та експортом, — у розділі 6.
Get contacts activity вмикається за запитомЗверніться до служби підтримки, щоб активувати ресурс для вашої організації. Активація може зайняти кілька годин.
Дані накопичуються лише після активації та зберігаються 90 діб. Попередня активність не додається, тому підключіть ресурс заздалегідь.
1. Запит
GET https://esputnik.com/api/v2/contacts/activity
Запити авторизуються через Basic HTTP Authentication, де паролем є API-ключ. API-ключі >
Обовʼязкові лише dateFrom і dateTo. Усі інші параметри — фільтри, які звужують вибірку.
| Параметр | Опис |
|---|---|
dateFrom (обовʼязковий) | Початок періоду. |
dateTo (обовʼязковий) | Кінець періоду. |
email | Email-адреса контакту. |
sms | Номер телефону контакту. |
webPushToken | Токен Web Push. |
mobPushToken | Токен Mobile Push. |
telegramToken | Токен Telegram. |
messageTag | Мітка повідомлення. |
activityStatus | Одне зі значень DELIVERED, UNDELIVERED, READ, UNSUBSCRIBED, CLICKED, SPAM. Фільтр за статусом звужує відповідь до цього результату: DELIVERED не покаже повідомлень, які ще не мають статусу або завершилися як UNDELIVERED. |
offset | Зсув із попередньої відповіді, щоб продовжити читання. Посторінкове читання > |
maxrows | Максимальна кількість записів у відповіді. За замовчуванням — 25000. |
Приклад запиту за одним контактом за два тижні:
curl --request GET \
--url 'https://esputnik.com/api/v2/contacts/activity?dateFrom=2026-08-01T00:00:00&dateTo=2026-08-14T23:59:59&[email protected]&maxrows=25000' \
--user 'YOUR_LOGIN:YOUR_API_KEY'2. Період
- Значення без часу означає північ цієї дати за UTC. Щоб отримати активність за поточний день, вказуйте час у форматі ISO 8601 — наприклад,
dateTo=2026-08-14T10:59:59. - Активність зберігається 90 діб. Якщо
dateFromвказує на ранішу дату, записи за межами цього періоду не потраплять до відповіді. Для довготривалого зберігання отримуйте нові події вебхуками або експортуйте їх до BigQuery.
3. Посторінкове читання
За один запит повертається не більше maxrows записів. Для наступної сторінки надішліть той самий запит, передавши значення offset останнього отриманого запису. Продовжуйте, доки кількість отриманих записів не стане меншою за maxrows.
GET .../activity?dateFrom=...&dateTo=...&maxrows=25000
GET .../activity?dateFrom=...&dateTo=...&maxrows=25000&offset={last_offset}
Не змінюйте фільтри між сторінками: значення offset діє лише в межах початкової вибірки.
4. Відповідь
Відповідь — масив, у якому кожен запис описує одну подію активності за одним повідомленням. Кожен запис також містить значення offset для продовження читання.
Повідомлення
| Поле | Опис |
|---|---|
iid | Ідентифікатор надісланого повідомлення. |
imid | Ідентифікатор миттєвого повідомлення. |
externalRequestId | Ідентифікатор, який ви передали у запиті на надсилання. Повертається лише для повідомлень, надісланих із цим полем. |
messageId | Ідентифікатор повідомлення. |
messageInstanceId | Ідентифікатор екземпляра повідомлення. |
messageName | Назва повідомлення. |
messageTag | Мітка повідомлення. |
messageLanguageCode | Мовна версія, яку отримав контакт. |
from | Відправник. |
Контакт
| Поле | Опис |
|---|---|
contactId | Ідентифікатор контакту. |
externalCustomerId | Ваш власний ідентифікатор контакту. |
email | Email-адреса контакту. |
sms | Номер телефону контакту. |
webPushToken, mobPushToken, telegramToken | Токени каналів. |
Активність
| Поле | Опис |
|---|---|
mediaType | email, sms, viber, mobilepush, webpush, appinbox, widget, inapp, telegrambot. |
activityStatus | DELIVERED, UNDELIVERED, READ, UNSUBSCRIBED, SUBSCRIPTION_CHANGED, CLICKED, SPAM. |
activityDateTime | Дата й час активності. |
statusDescription | Повертається лише для UNDELIVERED. Містить причину — відповідь сервера одержувача, системне повідомлення про неможливість надіслати лист тощо. |
viewMessageLink | Посилання на вебверсію повідомлення. Лише для email. |
clickEventLink | Посилання, за яким перейшов контакт. |
subscriptions | Ключі категорій підписок. |
osType | Тип пристрою: Desktop або Mobile. |
osName | Назва операційної системи — наприклад, Windows NT, iOS, Mac OS. |
Джерело повідомлення
| Поле | Опис |
|---|---|
workflowId, workflowInstanceId, workflowBlockId | Сценарій, конкретний запуск і блок, який надіслав повідомлення. |
broadcastId | Ідентифікатор масової розсилки. |
sourceEventKey, sourceEventTypeKey | Подія, яка запустила сценарій, — значення її ключа та тип події. |
ПриміткаЗначення
SUBSCRIPTION_CHANGEDтрапляється у відповідях, але не входить до переліку значень, які приймає фільтрactivityStatus.
Приклад запису:
[
{
"iid": "3f9a1c20-7624-11f1-a0dc-000000000000",
"externalRequestId": "zamovlennya-48219",
"contactId": 451677871,
"externalCustomerId": "48219",
"email": "[email protected]",
"mediaType": "email",
"activityStatus": "DELIVERED",
"messageId": 3045908,
"messageInstanceId": 6694763,
"messageName": "Pidtverdzhennya zamovlennya",
"messageLanguageCode": "uk",
"activityDateTime": "2026-08-14T14:41:54",
"imid": 29055000426,
"offset": "MjAyNi0wOC0xNFQxNDo0MTo1NA"
}
]5. Типові задачі
5.1 Зіставити активність із власним запитом на надсилання
Це працює лише для повідомлень, надісланих ресурсом, який приймає externalRequestId: Send prepared message — окреме значення для кожного одержувача, а також Send email message, Send SMS message і Send Viber message — одне значення на весь запит. Повідомлення, надіслані сценарієм, масовою розсилкою або подією, цього поля не мають.
Передайте власний externalRequestId під час надсилання, а потім знайдіть його у відповіді про активність — він звʼязує активність із вашим запитом на надсилання. Один запит може містити кількох одержувачів з однаковим externalRequestId, тому для визначення окремого повідомлення додатково зіставляйте contactId, адресу або iid. Використання API-ресурсу Send prepared message >
externalRequestId не є параметром фільтра цього ресурсу — його потрібно шукати у вже отриманій відповіді.
5.2 Отримати дані про недоставлені повідомлення
Запитайте записи з activityStatus=UNDELIVERED і згрупуйте значення statusDescription, щоб виявити некоректні адреси, блокування на стороні серверів-одержувачів або системні проблеми з доставленням. Процес контролю доставлення >
6. Що обрати: активність, історію повідомлень, вебхуки чи експорт
| Get contacts activity | Get contact's message history | Вебхуки | Експорт у BigQuery | |
|---|---|---|---|---|
| Один запис — це | Одна подія активності | Одне повідомлення з поточним статусом, темою або текстом і мітками | Одна подія активності | Одна подія активності |
| Ідентифікатор контакту в запиті | Не обовʼязковий — один запит може охопити багатьох контактів | Обовʼязковий: contactId, externalCustomerId, email або phone | Не застосовується | Не застосовується |
| Як отримуєте дані | Запитуєте самі | Запитуєте самі | Надходять на ваш endpoint у момент активності | За розкладом експорту, який ви налаштували |
| Типове застосування | Забрати активність за період на вимогу | Переглянути історію повідомлень одного контакту | Реагувати на активність у момент її появи | Аналітика й довготривале зберігання |
| Актуальність | Затримка кілька хвилин | Одразу | Майже в реальному часі | Залежить від частоти експорту |
| Глибина даних | 90 діб | dateFrom не старіше за рік | Лише з моменту налаштування | Скільки зберігаєте самі |
| Посторінкове читання | maxrows за замовчуванням 25000; продовження за offset останнього запису | maxrows за замовчуванням 10, максимум 100; offset — числовий зсув від початку списку | Не застосовується | Не застосовується |
externalRequestId | Повертається, якщо його передали під час надсилання | Не повертається | Повертається, якщо його передали під час надсилання | Перевірте схему налаштованого експорту |
Повʼязані статті
- Get contacts activity — повний перелік параметрів і полів
- Get contact's message history — історія повідомлень окремого контакту
- Використання API-ресурсу Send prepared message — відправка з власним
externalRequestId - Вебхуки — отримання активності в момент її появи
- Інтеграція eSputnik і Google BigQuery — експорт активності для аналітики
Updated about 2 hours ago