Snov.io API: методи для пошуку, верифікації та розсилок
Користуйтеся інструментами Snov.io за допомогою нашого простого REST API. Інтегруйте Snov.io API до своєї платформи для синхронізації лідів, пошуку і перевірки їхніх контактів, запуску розсилок та ін. Пропускна здатність API обмежена 60 запитами на хвилину.
Якщо у вас безплатний тариф, ви можете надіслати запит на тестовий доступ, забронювавши персональне демо з нашою командою. Щоб розпочати, будь ласка, чітко вкажіть вашу мету, щоб ми могли краще зрозуміти ваші потреби.
Сценарії використання Snov.io API
- Збагачуйте свої списки контактів, щоб надати розширені дані вашій sales-команді
Знаходьте перевірені email-адреси, навіть якщо у вас є лише ім'я та домен компанії — ідеально для розширення списків контактів або збагачення наявних даних. - Автоматично додавайте нових підписників до кампаній
Під'єднайте форми реєстрації через Snov.io API та миттєво додавайте нові контакти до ваших кампаній. - Підтримуйте базу клієнтів чистою
Підключіть верифікацію email-адрес до вашої CRM або інструментів для аутрічу, щоб миттєво перевіряти адреси нових контактів та зберігати дані наявних клієнтів актуальними. - Використовуйте посилання на профіль LinkedIn для автоматичного заповнення даних лідів
Перетворіть просте посилання на профіль LinkedIn на розширений, готовий до використання у CRM профіль. Попрощайтеся з ручним введенням даних — привітайтеся з якісними потенційними клієнтами. - Діліться результатами кампанії в реальному часі
Отримуйте дані з ваших холодних кампаній у дешборди в режимі реального часу. Надавайте зацікавленим колегам необхідну аналітику без зайвого клопоту. - Підтримуйте списки контактів-винятків
Автоматично додавайте контакти до списків контактів-винятків, щоб уникнути випадкового аутрічу. Ідеально підходить для того, щоб ваша команда з продажів працювала узгоджено, поважала відмови та дотримувалася правил конфіденційності даних.
Інтегруйте ці методи — і багато іншого — у ваш робочий процес. З нашими гнучкими методами API, варіанти використання практично безмежні.
Автентифікація
Для автентифікації майбутніх запитів вам необхідно згенерувати токен доступу. Відправляючи запит, укажіть токен доступу в полі для авторизації.
| Authorization: Bearer QSlHffXmCAILIOHNGXToq4LsP2yX64VQhEBZ7Ei4 |
Ось приклад генерування токену.
| POST | https://api.snov.io/v1/oauth/access_token |
grant_type | Завжди client_credentials |
client_id | Ваш персональний id, який можна знайти в налаштуваннях акаунта https://app.snov.io/account/api |
client_secret | Ваш секретний ключ, який можна знайти в налаштуваннях акаунта https://app.snov.io/account/api |
<?php function getAccessToken() { $params = [ 'grant_type' => 'client_credentials', 'client_id' => 'c57a0459f6t141659ea75cccb393c5111', 'client_secret' => '77cbf92b71553e85ce3bfd505214f40b' ]; $options = [ CURLOPT_URL => 'https://api.snov.io/v1/oauth/access_token', CURLOPT_POST => true, CURLOPT_POSTFIELDS => $params, CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true ]; $ch = curl_init(); curl_setopt_array($ch, $options); $res = json_decode(curl_exec($ch), true); curl_close($ch); return $res['access_token']; } ?>
def get_access_token(): params = { 'grant_type':'client_credentials', 'client_id':'c57a0459f6t141659ea75cccb393c111', 'client_secret': '77cbf92b71553e85ce3bfd505214f40b' } res = requests.post('https://api.snov.io/v1/oauth/access_token', data=params) resText = res.text.encode('ascii','ignore') return json.loads(resText)['access_token']
| { | |||
| |||
| } |
access_token | Ваш новий токен доступу. |
token_type | Завжди Bearer |
expires_in | Строк дії токену (в секундах). |
Методи API
POSTПошук за доменом
1 кредит за кожен унікальний запит / 1 кредит за кожен профіль потенційного клієнта з email-адресоюВведіть домен, і Snov.io поверне інформацію про компанію, email-адреси та профілі лідів.
1 кредит за кожен запит POST. Ми не знімаємо плату, якщо ви не отримаєте результати.
| POST | https://api.snov.io/v2/domain-search/start |
domain | Домен, для якого ви хочете отримати інформацію про компанію. Наприклад, "snov.io". |
<?php function companyInfoSearch() { $token = getAccessToken(); $params = [ 'domain' => 'snov.io', ]; $headers = [ 'Authorization: Bearer ' . $token, ]; $options = [ CURLOPT_URL => 'https://api.snov.io/v2/domain-search/start', CURLOPT_HTTPHEADER => $headers, CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_POSTFIELDS => $params, CURLOPT_FOLLOWLOCATION => true ]; $ch = curl_init(); curl_setopt_array($ch, $options); $response = json_decode(curl_exec($ch), true); curl_close($ch); return $response; } ?>
def company_info_search(): token = get_access_token() headers = {'authorization': f'Bearer {token}'} params = { 'domain': 'snov.io', } res = requests.post('https://api.snov.io/v2/domain-search/start', params=params, headers=headers) return json.loads(res.text)
{
"data": [],
"meta": {
"domain": "snov.io",
"task_hash": "6f15de14db954c761f8e7507547b3bd7"
},
"links": {
"result": "https://api.snov.io/v2/domain-search/result/6f15de14db954c761f8e7507547b3bd7"
}
}
domain | Домен, для якого ви отримуєте інформацію про компанію. |
task_hash | Унікальний ID задачі з пошуку, яку ви почали. Він автоматично додається до URL-адреси вашого наступного запиту, щоб отримати результати. |
result | URL-адреса запиту для отримання інформації про компанію. |
| GET | https://api.snov.io/v2/domain-search/result/{task_hash} |
<?php function companyInfoResult() { $token = getAccessToken(); $task_hash = 'b10e4c47693dbf87cc8de16edcc8ae22'; $headers = [ 'Authorization: Bearer ' . $token, ]; $options = [ CURLOPT_URL => 'https://api.snov.io/v2/domain-search/result/$task_hash', CURLOPT_HTTPHEADER => $headers, CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true ]; $ch = curl_init(); curl_setopt_array($ch, $options); $response = json_decode(curl_exec($ch), true); curl_close($ch); return $response; } ?>
def company_info_result(): token = get_access_token() task_hash = '86586db9ac64ae5471eb18fc71b0dd5e' headers = {'authorization': f'Bearer {token}'} res = requests.get(f'https://api.snov.io/v2/domain-search/result/{task_hash}', headers=headers) return json.loads(res.text)
{
"data": {
"company_name": "Snov.io",
"city": "New York",
"founded": "2017",
"website": "snov.io",
"hq_phone": "13477050819",
"industry": "Computer Software",
"size": "51-200",
"related_domains": [
"snov.me",
"snov.com",
"snov.nl",
"snov.com.ua",
"snov.cl"
]
},
"meta": {
"domain": "snov.io",
"task_hash": "6f15de14db954c761f8e7507547b3bd7",
"prospects_count": 196,
"emails_count": 108,
"generic_contacts_count": 9
},
"links": {
"prospects": "https://api.snov.io/v2/domain-search/prospects/start?domain=snov.io",
"domain_emails": "https://api.snov.io/v2/domain-search/domain-emails/start?domain=snov.io",
"generic_contacts": "https://api.snov.io/v2/domain-search/generic-contacts/start?domain=snov.io"
},
"status": "completed"
}
company_name | Назва компанії, пов’язаної з доменом. |
city | Місто, в якому розташований головний офіс компанії. |
founded | Рік заснування компанії. |
website | Сайт компанії. |
hq_phone | Телефон головного офісу компанії. |
industry | Галузь компанії. |
size | Кількість працівників компанії. |
related_domains | Домени з тим самим SLD (доменом другого рівня), що й домен, для якого ви запитуєте дані. |
domain | Домен, для якого API знайшов інформацію про компанію. |
task_hash | Унікальний ID задачі з пошуку, яку ви почали. |
prospects_count | Кількість профілів контактів, отриманих за вашим запитом. |
emails_count | Кількість email-адрес, отриманих за вашим запитом. |
generic_contacts_count | Кількість загальних email-адрес, отриманих за вашим запитом. |
prospects | URL-адреса для запиту списку з повними профілями потенційних клієнтів. |
domain_emails | URL-адреса для запиту списку з email-адресами з домену. |
generic_contacts | URL-адреса для запиту списку з загальними email-адресами компанії. |
status | Статус запиту. Може бути completed або in progress. |
| POST | https://api.snov.io/v2/domain-search/prospects/start |
domain | Домен, за яким ви хочете знайти профілі потенційних клієнтів. Наприклад, "snov.io". |
positions[] | Використовуйте цей параметр, щоб фільтрувати ліди за посадою, наприклад, "Software Developer". Для фільтрації за кількома посадами введіть масив необхідних посад, розділених комою. Ви можете фільтрувати за 10 посадами за запит. |
page | Номер сторінки, яка містить профілі потенційних клієнтів. На кожній сторінці показано до 20 профілів. Якщо сторінка не вказана, за замовчуванням показується перша сторінка. |
<?php function prospectsSearch() { $token = getAccessToken(); $params = [ 'domain' => 'snov.io', 'page' => 1, 'positions' => ['Web developer','QA Engineer'] ]; $headers = [ 'Authorization: Bearer ' . $token, ]; $options = [ CURLOPT_URL => 'https://api.snov.io/v2/domain-search/start', CURLOPT_HTTPHEADER => $headers, CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_POSTFIELDS => http_build_query($params), CURLOPT_FOLLOWLOCATION => true ]; $ch = curl_init(); curl_setopt_array($ch, $options); $response = json_decode(curl_exec($ch), true); curl_close($ch); return $response; } ?>
def prospects_search(): token = get_access_token() headers = {'authorization': f'Bearer {token}'} params = { 'domain': 'snov.io', 'page': 1, 'positions[]': ['Web developer', 'QA Engineer'] } res = requests.post('https://api.snov.io/v2/domain-search/prospects/start', params=params, headers=headers) return json.loads(res.text)
{
"data": [],
"meta": {
"domain": "snov.io",
"tab": "prospects",
"task_hash": "3384369c16aad810f58609a40ad65089",
"page": 1,
"positions": [
"Web developer",
"QA Engineer"
]
},
"links": {
"result": "https://api.snov.io/v2/domain-search/prospects/result/3384369c16aad810f58609a40ad65089"
}
}
domain | Домен, для якого ви отримуєте профілі контактів. |
tab | Показує тип результатів, які ви запитуєте. prospects означає, що ви шукаєте профілі потенційних клієнтів. emails показує email-адреси з домену. service показує, що ви отримуєте загальні адреси. |
task_hash | Унікальний ID задачі з пошуку, яку ви почали. Він автоматично додається до URL-адреси вашого наступного запиту, щоб отримати результати. |
page | Номер сторінки, яка містить профілі потенційних клієнтів. На кожній сторінці показано до 20 профілів. |
positions | Посади, які використовуються для фільтрації результатів. |
result | URL-адреса запиту для отримання профілів контактів. |
| GET | https://api.snov.io/v2/domain-search/prospects/result/{task_hash} |
<?php function prospectsResult() { $token = getAccessToken(); $task_hash = '3384369c16aad810f58609a40ad65089'; $headers = [ 'Authorization: Bearer ' . $token, ]; $options = [ CURLOPT_URL => 'https://api.snov.io/v2/domain-search/prospects/result/$task_hash', CURLOPT_HTTPHEADER => $headers, CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true ]; $ch = curl_init(); curl_setopt_array($ch, $options); $response = json_decode(curl_exec($ch), true); curl_close($ch); return $response; } ?>
def prospects_result(): token = get_access_token() task_hash = '3384369c16aad810f58609a40ad65089' headers = {'authorization': f'Bearer {token}'} res = requests.get(f'https://api.snov.io/v2/domain-search/prospects/result/{task_hash}', headers=headers) return json.loads(res.text)
{
"data": [
{
"first_name": "John",
"last_name": "Doe",
"position": "Web developer",
"source_page": "https://www.linkedin.com/in/john-doe/",
"search_emails_start": "https://api.snov.io/v2/domain-search/prospects/search-emails/start/41627edbfff8ba9c0819a1aa51d232baf3fa1763e5813dc86e027ccbbefd7a16b0522391086776b8764c94d02bab1257df392"
}
],
"meta": {
"domain": "snov.io",
"tab": "prospects",
"task_hash": "3384369c16aad810f58609a40ad65089",
"page": 1,
"positions": [
"Web developer",
"QA Engineer"
],
"total_count": 18
},
"links": {
"next": ""
},
"status": "completed"
}
first_name | Ім'я контакта. |
last_name | Прізвище контакта. |
position | Посада контакта. |
source_page | Сторінка, на якій були знайдені персональні контакти. |
search_emails_start | URL-адреса вашого наступного запиту на пошук email-адреси ліда. |
domain | Домен, для якого ви отримуєте профілі контактів. |
tab | Показує тип результатів, які ви отримуєте. prospects означає, що ви шукаєте профілі потенційних клієнтів. emails показує email-адреси з домену. service показує, що ви отримуєте загальні адреси. |
task_hash | Унікальний ID задачі з пошуку, яку ви почали. |
page | Номер сторінки, яка містить профілі потенційних клієнтів. На кожній сторінці показано до 20 профілів. |
positions | Посади, які використовуються для фільтрації результатів. |
total_count | Загальна кількість знайдених профілів контактів. |
next | URL-адреса для запиту на отримання результатів із наступної сторінки. Кожна сторінка має до 20 лідів. |
status | Статус запиту. Може бути completed або in progress. |
| POST | https://api.snov.io/v2/domain-search/prospects/search-emails/start/{prospect_hash} |
<?php function searchProspectEmailsStart() { $token = getAccessToken(); $headers = [ 'Authorization: Bearer ' . $token, ]; $task = '41627edbfff8ba9c0819a1aa51d232baf3fa1763e5813dc86e027ccbbefd7a16b0522391086776b8764c94d02bab1257df392'; $options = [ CURLOPT_URL => 'https://api.snov.io/v2/domain-search/prospects/search-emails/start/$task', CURLOPT_HTTPHEADER => $headers, CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_FOLLOWLOCATION => true ]; $ch = curl_init(); curl_setopt_array($ch, $options); $response = json_decode(curl_exec($ch), true); curl_close($ch); return $response; } ?>
def search_prospect_emails_start(): token = get_access_token() headers = {'authorization': f'Bearer {token}'} res = requests.post(f'https://api.snov.io/v2/domain-search/prospects/search-emails/start/' f'a811d72df2e52bd447621c4a1326e540102f3b70ba39a81bd597020ed0b9f812ee8de7e0f4ecad312716d03576fdf0af6d8277e1', headers=headers) return json.loads(res.text)
{
"data": [],
"meta": {
"task_hash": "5e846a1d80d95f66cfb30250a7c1881f"
},
"links": {
"result": "https://api.snov.io/v2/domain-search/prospects/search-emails/result/5e846a1d80d95f66cfb30250a7c1881f"
}
}
task_hash | Унікальний ID задачі з пошуку, яку ви почали. |
result | URL-адреса вашого наступного запиту на отримання email-адреси ліда. |
| GET | https://api.snov.io/v2/domain-search/prospects/search-emails/result/{task_hash} |
<?php function searchProspectEmailsResult() { $token = getAccessToken(); $task_hash = '5e846a1d80d95f66cfb30250a7c1881f'; $headers = [ 'Authorization: Bearer ' . $token, ]; $options = [ CURLOPT_URL => 'https://api.snov.io/v2/domain-search/prospects/search-emails/result/$task_hash', CURLOPT_HTTPHEADER => $headers, CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true ]; $ch = curl_init(); curl_setopt_array($ch, $options); $response = json_decode(curl_exec($ch), true); curl_close($ch); return $response; } ?>
def search_prospect_emails_result(): token = get_access_token() task_hash = '7f1df5bd8bca6f66e38dad0ffb30ba4c' headers = {'authorization': f'Bearer {token}'} res = requests.get(f'https://api.snov.io/v2/domain-search/prospects/search-emails/result/{task_hash}', headers=headers) return json.loads(res.text)
{
"data": {
"searching_date": "2025-01-01 11:11:11",
"emails": [
{
"email": "example@snov.io",
"smtp_status": "valid"
}
]
},
"meta": {
"task_hash": "5e846a1d80d95f66cfb30250a7c1881f"
},
"links": [],
"status": "completed"
}
searching_date | Дата пошуку email-адреси. |
emails | Email-адреси контакта. |
smtp_status | Може повернути valid або unknown (unverifiable). Детальніше про статуси email-адрес. |
task_hash | Унікальний ID задачі з пошуку, яку ви почали. |
status | Статус запиту. Може бути completed або in progress. |
| POST | https://api.snov.io/v2/domain-search/domain-emails/start |
domain | Домен, для якого ви хочете отримати email-адреси. Наприклад, "snov.io". |
<?php function domainEmailsSearch() { $token = getAccessToken(); $params = [ 'domain' => 'snov.io', ]; $headers = [ 'Authorization: Bearer ' . $token, ]; $options = [ CURLOPT_URL => 'https://api.snov.io/v2/domain-search/domain-emails/start', CURLOPT_HTTPHEADER => $headers, CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_POSTFIELDS => $params, CURLOPT_FOLLOWLOCATION => true ]; $ch = curl_init(); curl_setopt_array($ch, $options); $response = json_decode(curl_exec($ch), true); curl_close($ch); return $response; } ?>
def domain_emails_search(): token = get_access_token() headers = {'authorization': f'Bearer {token}'} params = { 'domain': 'snov.io' } res = requests.post('https://api.snov.io/v2/domain-search/domain-emails/start', params=params, headers=headers) return json.loads(res.text)
{
"data": [],
"meta": {
"domain": "snov.io",
"tab": "emails",
"task_hash": "36fce9ac2667a827f6c5ab954e288bed",
"next": ""
},
"links": {
"result": "https://api.snov.io/v2/domain-search/domain-emails/result/36fce9ac2667a827f6c5ab954e288bed"
}
}
domain | Домен, для якого ви отримуєте email-адреси. |
tab | Показує тип результатів, які ви запитуєте. prospects означає, що ви шукаєте профілі потенційних клієнтів. emails показує email-адреси з домену. service показує, що ви отримуєте загальні адреси. |
task_hash | Унікальний ID задачі з пошуку, яку ви почали. Він автоматично додається до URL-адреси вашого наступного запиту, щоб отримати результати. |
next | ID для запиту наступної сторінки, якщо вона є. Якщо більше сторінок немає, він буде порожнім. |
result | URL-адреса запиту для отримання email-адрес із домену. |
| GET | https://api.snov.io/v2/domain-search/domain-emails/result/{task_hash} |
<?php function domainEmailsResult() { $token = getAccessToken(); $task_hash = '36fce9ac2667a827f6c5ab954e288bed'; $headers = [ 'Authorization: Bearer ' . $token, ]; $options = [ CURLOPT_URL => 'https://api.snov.io/v2/domain-search/domain-emails/result/$task_hash', CURLOPT_HTTPHEADER => $headers, CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true ]; $ch = curl_init(); curl_setopt_array($ch, $options); $response = json_decode(curl_exec($ch), true); curl_close($ch); return $response; } ?>
def domain_emails_result(): token = get_access_token() task_hash = '36fce9ac2667a827f6c5ab954e288bed' headers = {'authorization': f'Bearer {token}'} res = requests.get(f'https://api.snov.io/v2/domain-search/domain-emails/result/{task_hash}', headers=headers) return json.loads(res.text)
{
"data": [
{
"email": "admin@snov.io"
},
{
"email": "help@snov.io"
}
],
"meta": {
"domain": "snov.io",
"tab": "emails",
"task_hash": "36fce9ac2667a827f6c5ab954e288bed",
"next": "4ae6ca51c056c584db03c618dfe80dedb82ec37ab4667fa189386c82288a7422e8f4ab1010d84a13f2728d8f1b12b2ff139e3cb81108dc48",
"total_count": 108
},
"links": {
"next": "https://api.snov.io/v2/domain-search/domain-emails/start?domain=snov.io&next=4ae6ca51c056c584db03c618dfe80dedb82ec37ab4667fa189386c82288a7422e8f4ab1010d84a13f2728d8f1b12b2ff139e3cb81108dc48"
},
"status": "completed"
}
email | Email-адреса домену. Пам'ятайте, що ці адреси неверифіковані. Щоб перевірити їх, скористайтеся методом Верифікація адрес. |
domain | Домен, для якого ви отримуєте email-адреси. |
tab | Показує тип результатів, які ви отримуєте. prospects означає, що ви шукаєте профілі потенційних клієнтів. emails показує email-адреси з домену. service показує, що ви отримуєте загальні адреси. |
task_hash | Унікальний ID задачі з пошуку, яку ви почали. |
next | ID додається до URL-адреси запиту для доступу до наступної сторінки адрес, якщо вона існує. |
total_count | Загальна кількість знайдених адрес із домену. |
next | URL-адреса на запит для отримання результатів із наступної сторінки, якщо вона існує. Кожна сторінка містить до 50 email-адрес. |
status | Статус запиту. Може бути completed або in progress. |
| POST | https://api.snov.io/v2/domain-search/generic-contacts/start |
domain | Домен, для якого ви хочете отримати загальні email-адреси. Наприклад, "snov.io". |
<?php function genericContactsSearch() { $token = getAccessToken(); $params = [ 'domain' => 'snov.io', ]; $headers = [ 'Authorization: Bearer ' . $token, ]; $options = [ CURLOPT_URL => 'https://api.snov.io/v2/domain-search/generic-contacts/start', CURLOPT_HTTPHEADER => $headers, CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_POSTFIELDS => $params, CURLOPT_FOLLOWLOCATION => true ]; $ch = curl_init(); curl_setopt_array($ch, $options); $response = json_decode(curl_exec($ch), true); curl_close($ch); return $response; } ?>
def generic_contacts_search(): token = get_access_token() headers = {'authorization': f'Bearer {token}'} params = { 'domain': 'snov.io' } res = requests.post('https://api.snov.io/v2/domain-search/generic-contacts/start', params=params, headers=headers) return json.loads(res.text)
{
"data": [],
"meta": {
"domain": "snov.io",
"tab": "service",
"task_hash": "0e36e43b9b91a9b20d14b82c1ee141f2",
"next": ""
},
"links": {
"result": "https://api.snov.io/v2/domain-search/generic-contacts/result/0e36e43b9b91a9b20d14b82c1ee141f2"
}
}
domain | Домен, для якого ви отримуєте загальні email-адреси. |
tab | Показує тип результатів, які ви запитуєте. prospects означає, що ви шукаєте профілі потенційних клієнтів. emails показує email-адреси з домену. service показує, що ви отримуєте загальні адреси. |
task_hash | Унікальний ID задачі з пошуку, яку ви почали. Він автоматично додається до URL-адреси вашого наступного запиту, щоб отримати результати. |
next | ID для запиту наступної сторінки, якщо вона є. Якщо більше сторінок немає, він буде порожнім. |
result | URL-адреса запиту для отримання загальних email-адрес із домену. |
| GET | https://api.snov.io/v2/domain-search/generic-contacts/result/{task_hash} |
<?php function genericContactsResult() { $token = getAccessToken(); $task_hash = '0e36e43b9b91a9b20d14b82c1ee141f2'; $headers = [ 'Authorization: Bearer ' . $token, ]; $options = [ CURLOPT_URL => 'https://api.snov.io/v2/domain-search/generic-contacts/result/$task_hash', CURLOPT_HTTPHEADER => $headers, CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true ]; $ch = curl_init(); curl_setopt_array($ch, $options); $response = json_decode(curl_exec($ch), true); curl_close($ch); return $response; } ?>
def generic_contacts_result(): token = get_access_token() task_hash = '0e36e43b9b91a9b20d14b82c1ee141f2' headers = {'authorization': f'Bearer {token}'} res = requests.get(f'https://api.snov.io/v2/domain-search/generic-contacts/result/{task_hash}', headers=headers) return json.loads(res.text)
{
"data": [
{
"email": "orders@snov.io"
},
{
"email": "sales@snov.io"
}
],
"meta": {
"domain": "snov.io",
"tab": "service",
"task_hash": "0e36e43b9b91a9b20d14b82c1ee141f2",
"next": "",
"total_count": 9
},
"links": {
"next": ""
},
"status": "completed"
}
email | Загальні email-адреси контакта. Пам'ятайте, що ці адреси неверифіковані. Щоб перевірити їх, скористайтеся методом Верифікація адрес. |
domain | Домен, для якого ви отримуєте загальні email-адреси. |
tab | Показує тип результатів, які ви отримуєте. prospects означає, що ви шукаєте профілі потенційних клієнтів. emails показує email-адреси з домену. service показує, що ви отримуєте загальні адреси. |
task_hash | Унікальний ID задачі з пошуку, яку ви почали. |
next | ID додається до URL-адреси запиту для доступу до наступної сторінки адрес, якщо вона існує. |
total_count | Загальна кількість загальних email-адрес, знайдених за доменом. |
next | URL-адреса на запит для отримання результатів із наступної сторінки, якщо вона існує. Кожна сторінка містить до 50 email-адрес. |
status | Статус запиту. Може бути completed або in progress. |
POSTПеревірити кількість доступних email-адрес
БезплатноЦей метод API дозволяє дізнатися скільки email-адрес з певного домену є в нашій базі даних. Ця послуга безплатна і кредити за неї не списуються.
| POST | https://api.snov.io/v1/get-domain-emails-count |
domain | Ім'я домену, кількість емейлів на якому вам необхідно дізнатися. |
<?php function getEmailCount() { $token = getAccessToken(); $params = [ 'access_token' => $token, 'domain' => 'octagon.com', ]; $options = [ CURLOPT_URL => 'https://api.snov.io/v1/get-domain-emails-count', CURLOPT_POST => true, CURLOPT_POSTFIELDS => $params, CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true ]; $ch = curl_init(); curl_setopt_array($ch, $options); $res = json_decode(curl_exec($ch), true); curl_close($ch); return $res; } ?>
def get_email_count(): token = get_access_token() params = {'access_token':token, 'domain':'octagon.com' } res = requests.post('https://api.snov.io/v1/get-domain-emails-count', data=params) return json.loads(res.text)
| { | ||||
| ||||
| } |
domain | Ім'я домену, кількість емейлів на якому вам необхідно дізнатися. |
webmail | Буде true , якщо вибраний вами домен — сайт електронної пошти. |
result | Загальна кількість email-адрес, які були знайдені для цього домену. Ми не можемо надати результати для сайтів електронної пошти, тому для них результат завжди буде 0
. |
POSTЗнайти email-адреси за іменем і доменом
1 кредит за кожну email-адресу з валідним або невідомим статусом.Введіть ім'я контакта та домен компанії і Snov.io поверне його верифіковану email-адресу.
| POST | https://api.snov.io/v2/emails-by-domain-by-name/start |
Найпростіший спосіб надіслати цей запит — це через необроблений JSON. Ось приклад, якщо ви віддаєте перевагу використанню параметрів.
rows | Масив об'єктів, що містять дані контактів (ім'я, прізвище та домен). Кожен запит може містити до 10 об'єктів. |
first_name | Ім'я контакта. |
last_name | Прізвище контакта. |
domain | Домен компанії, в якій працює контакт. |
webhook_url | Введіть URL вебхука, щоб миттєво отримувати результати, замість використання hash task. |
<?php function emailsByDomainByNameSearch() { $token = getAccessToken(); $headers = [ 'Authorization: Bearer ' . $token, ]; $params = [ 'rows' => [ [ 'first_name' => 'John', 'last_name' => 'Doe', 'domain' => 'yourdomain.com', ], [ 'first_name' => 'John', 'last_name' => 'Doe', 'domain' => 'yourdomain.com', ] ], 'webhook_url' => 'https://hooks.yourdomain.com', ]; $options = [ CURLOPT_URL => 'https://api.snov.io/v2/emails-by-domain-by-name/start', CURLOPT_HTTPHEADER => $headers, CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_POSTFIELDS => http_build_query($params), CURLOPT_FOLLOWLOCATION => true ]; $ch = curl_init(); curl_setopt_array($ch, $options); $response = json_decode(curl_exec($ch), true); curl_close($ch); return $response; } ?>
def emails_by_domain_by_name_search(): token = get_access_token() headers = { 'authorization': f'Bearer {token}', 'Content-Type': 'application/json' } payload = json.dumps({ 'rows': [ { 'first_name': 'John', 'last_name': 'Doe', 'domain': 'yourdomain.com' }, { 'first_name': 'Jane', 'last_name': 'Doe', 'domain': 'yourdomain.com' }, ], 'webhook_url': 'https://hooks.yourdomain.com' }) res = requests.post('https://api.snov.io/v2/emails-by-domain-by-name/start', data=payload, headers=headers) return json.loads(res.text)
{
"data": {
"task_hash": "005ffad65aad581943cf65a45112ca7a"
},
"meta": {
"rows": [
{
"first_name": "John",
"last_name": "Doe",
"domain": "yourdomain.com"
},
{
"first_name": "Jane",
"last_name": "Doe",
"domain": "yourdomain.com"
}
]
}
}
task_hash | Унікальний ID задачі з пошуку, яку ви почали. |
first_name | Ім'я контакта. |
last_name | Прізвище контакта. |
domain | Домен компанії, в якій працює контакт. |
| GET | https://api.snov.io/v2/emails-by-domain-by-name/result |
task_hash | Унікальний ID запиту, отриманий з попереднього запиту. |
<?php function emailsByDomainByNameResult() { $token = getAccessToken(); $task_hash = '475d03ac6f98c124349b0f2efb506702'; $headers = [ 'Authorization: Bearer ' . $token, ]; $options = [ CURLOPT_URL => 'https://api.snov.io/v2/emails-by-domain-by-name/result?task_hash=$task_hash', CURLOPT_HTTPHEADER => $headers, CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true ]; $ch = curl_init(); curl_setopt_array($ch, $options); $response = json_decode(curl_exec($ch), true); curl_close($ch); return $response; } ?>
def emails_by_domain_by_name_result(): token = get_access_token() task_hash = '0d0c862099b22bdf300b8c8e67754e49' headers = {'authorization': f'Bearer {token}'} params = {'task_hash': task_hash} res = requests.get(f'https://api.snov.io/v2/emails-by-domain-by-name/result', params=params, headers=headers) return json.loads(res.text)
{
"status": "completed",
"data": [
{
"people": "John Doe",
"result": [
{
"email": "john.doe@yourdomain.com",
"smtp_status": "valid",
"is_valid_format": true,
"is_disposable": false,
"is_webmail": false,
"is_gibberish": false
}
]
},
{
"people": "Jane Doe",
"result": [
{
"email": "jane.doe@yourdomain.com",
"smtp_status": "unknown",
"is_valid_format": true,
"is_disposable": false,
"is_webmail": false,
"is_gibberish": false,
"unknown_status_reason": "catchall"
}
]
}
],
"meta": {
"rows": [
{
"domain": "yourdomain.com",
"last_name": "Doe",
"first_name": "John"
},
{
"domain": "yourdomain.com",
"last_name": "Doe",
"first_name": "Jane"
}
],
"task_hash": "af50fb238757ad092ad6e57e130b0dea"
}
}
status | Статус запиту. Може бути completed або in_progress. Ви можете отримати статус not_enough_credits, якщо на акаунті, який ви використовуєте для пошуку недостатньо кредитів. |
people | Повне ім'я контакта. |
email | Email-адреса контакта. |
smtp_status | Може повернути valid або unknown (тобто адресу неможливо верифікувати). Щоб переглянути причину статусу unknown, перевірте параметр unknown_status_reason. |
is_valid_format | Показує, чи формат email-адреси валідний. Може бути false або true. |
is_disposable | Вказує, чи email-адреса тимчасова або одноразова, повертаючи false або true. |
is_webmail | Якщо true, то email-адреса, яку ви шукаєте, є вебпоштою. |
is_gibberish | Показує, чи містить надана email-адреса набір випадкових символів або символів у випадковому порядку. Буде false або true. |
unknown_status_reason | Якщо для перевіреної email-адреси встановлено невідомий smtp_status, ви можете знайти детальнішу причину тут. Banned: Високий ризик доставлення – неможливо верифікувати цю email-адресу зі 100 % точністю. Catchall: Ризик для репутації відправника – це catch-all адреса. Connection_error: Ризик потенційного баунсу – технічні помилки на стороні отримувача. Greylist: Ризик доставлення – сервер адреси використовує фільтри грейлістингу. |
domain | Домен компанії, в якій працює контакт. |
first_name | Ім'я контакта. |
last_name | Прізвище контакта. |
task_hash | Унікальний ID для цієї задачі з пошуку. |
POSTЗнайти домен за назвою компанії
1 кредит за кожен знайдений доменВведіть назви компаній, і Snov.io надасть їхні домени.
| POST | https://api.snov.io/v2/company-domain-by-name/start |
names[] | Масив назв компаній, для яких ви хочете отримати домени. Щоб отримати домени для кількох компаній, додайте кожну як окремий параметр. Наприклад: names[] | Snov.io names[] | Sendpulse Ви можете вказати до 10 назв компаній за раз. |
webhook_url | Введіть URL вебхука, щоб миттєво отримувати результати, замість використання hash task. |
<?php function companyDomainByNameStart() { $token = getAccessToken(); $params = [ 'names' => ['Snov.io','SendPulse'], 'webhook_url' => 'https://hooks.yourdomain.com', ]; $headers = [ 'Authorization: Bearer ' . $token, ]; $options = [ CURLOPT_URL => 'https://api.snov.io/v2/company-domain-by-name/start', CURLOPT_HTTPHEADER => $headers, CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_POSTFIELDS => http_build_query($params), CURLOPT_FOLLOWLOCATION => true ]; $ch = curl_init(); curl_setopt_array($ch, $options); $response = json_decode(curl_exec($ch), true); curl_close($ch); return $response; } ?>
def company_domain_by_name_start(): token = get_access_token() headers = {'authorization': f'Bearer {token}'} params = { 'webhook_url': 'https://hooks.yourdomain.com', 'names[]': ['Snov.io', 'Sendpulse'] } res = requests.post('https://api.snov.io/v2/company-domain-by-name/start', params=params, headers=headers) return json.loads(res.text)
{
"data": {
"task_hash": "959c0f60facb8629bba746e091a26f7b"
},
"meta": {
"names": [
"Snov.io",
"Sendpulse"
]
}
}
task_hash | Унікальний ID задачі з пошуку, яку ви почали. |
names | Масив назв компаній, які ви надали. |
| GET | https://api.snov.io/v2/company-domain-by-name/result?task_hash={hash_from_1} |
task_hash | Унікальний ID запиту, отриманий з попереднього запиту. |
<?php function companyDomainByNameResult() { $token = getAccessToken(); $task_hash = '48c156a785cfc1f3b0edab2cc28b3774'; $headers = [ 'Authorization: Bearer ' . $token, ]; $options = [ CURLOPT_URL => 'https://api.snov.io/v2/company-domain-by-name/result?task_hash=$task_hash', CURLOPT_HTTPHEADER => $headers, CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true ]; $ch = curl_init(); curl_setopt_array($ch, $options); $response = json_decode(curl_exec($ch), true); curl_close($ch); return $response; } ?>
def company_domain_by_name_result(): token = get_access_token() task_hash = '959c0f60facb8629bba746e091a26f7b' headers = {'authorization': f'Bearer {token}'} params = { 'task_hash': task_hash } res = requests.get(f'https://api.snov.io/v2/company-domain-by-name/result', params=params, headers=headers) return json.loads(res.text)
{
"status": "completed",
"data": [
{
"name": "Snov.io",
"result": {
"domain": "snov.io"
}
},
{
"name": "Sendpulse",
"result": {
"domain": "sendpulse.com"
}
}
],
"meta": {
"names": [
"Snov.io",
"Sendpulse"
],
"task_hash": "959c0f60facb8629bba746e091a26f7b"
}
}
status | Статус запиту. Може бути completed або in_progress. |
name | Назва компанії, для якої ви запросили домен. |
domain | Домен компанії. |
names | Масив назв компаній, які ви надали. |
task_hash | Унікальний ID для цієї задачі з пошуку. |
POSTОтримати інформацію з профілю LinkedIn за посиланнями
1 кредит за кожен профіль контакта з наданою інформацієюВведіть посилання учасників LinkedIn, і Snov.io надасть повну інформацію з їхніх профілів.
| POST | https://api.snov.io/v2/li-profiles-by-urls/start |
urls[] | Масив посилань на профілі LinkedIn, для яких ви хочете отримати повну інформацію з профілів. Щоб отримати інформацію з профілю для кількох учасників LinkedIn за раз, додайте кожне посилання в окремий параметр. Ви можете вказати до 10 посилань LinkedIn за раз. |
webhook_url | Введіть URL вебхука, щоб миттєво отримувати результати, замість використання hash task. |
<?php function linkedInProfilesByUrlsStart() { $token = getAccessToken(); $params = [ 'urls' => ['https://www.linkedin.com/in/oleksii-kratko-6a0544187/','https://www.linkedin.com/in/atahualpamaia/'], 'webhook_url' => 'https://hooks.yourdomain.com', ]; $headers = [ 'Authorization: Bearer ' . $token, ]; $options = [ CURLOPT_URL => 'https://api.snov.io/v2/li-profiles-by-urls/start', CURLOPT_HTTPHEADER => $headers, CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_POSTFIELDS => http_build_query($params), CURLOPT_FOLLOWLOCATION => true ]; $ch = curl_init(); curl_setopt_array($ch, $options); $response = json_decode(curl_exec($ch), true); curl_close($ch); return $response; } ?>
def linkedin_profiles_by_urls_start(): token = get_access_token() headers = {'authorization': f'Bearer {token}'} params = { 'urls[]': ['https://www.linkedin.com/in/atahualpamaia/', 'https://www.linkedin.com/in/oleksii-kratko-6a0544187/'], 'webhook_url': 'https://hooks.yourdomain.com', } res = requests.post('https://api.snov.io/v2/li-profiles-by-urls/start', params=params, headers=headers) return json.loads(res.text)
{
"data": {
"task_hash": "ef005a4f6d82e7e88384de7c72ee198d"
},
"meta": {
"urls": [
"https://www.linkedin.com/in/john-doe-32a416248/",
"https://www.linkedin.com/in/john-doe-04bb56b1/",
"https://www.linkedin.com/in/john-jungwoo-do/"
]
}
}
task_hash | Унікальний ID задачі з пошуку, яку ви почали. |
urls | Посилання на профілі, для яких ви запитуєте інформацію. |
| GET | https://api.snov.io/v2/li-profiles-by-urls/result |
task_hash | Унікальний ID запиту, отриманий з попереднього запиту. |
<?php function linkedInProfilesByUrlsResult() { $token = getAccessToken(); $task_hash = 'ef005a4f6d82e7e88384de7c72ee198d'; $headers = [ 'Authorization: Bearer ' . $token, ]; $options = [ CURLOPT_URL => 'https://api.snov.io/v2/li-profiles-by-urls/result?task_hash=$task_hash', CURLOPT_HTTPHEADER => $headers, CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true ]; $ch = curl_init(); curl_setopt_array($ch, $options); $response = json_decode(curl_exec($ch), true); curl_close($ch); return $response; } ?>
def linkedin_profiles_by_urls_result(): token = get_access_token() task_hash = '879788bd889b0b9aa447278ce184e2ad' headers = {'authorization': f'Bearer {token}'} params = { 'task_hash': task_hash } res = requests.get(f'https://api.snov.io/v2/li-profiles-by-urls/result', params=params, headers=headers) return json.loads(res.text)
{
"status": "completed",
"data": [
{
"url": "https://www.linkedin.com/in/john-doe-32a416248/",
"result": {
"name": "John Doe",
"first_name": "John",
"last_name": "Doe",
"industry": "Internet",
"location": "Chicago, Illinois, United States",
"country": "United States",
"positions": [
{
"name": "Stealth Startup",
"title": "CEO",
"linkedin_url": "https://www.linkedin.com/company/18583501",
"url": "https://www.linkedin.com/in/ruhbirsingh/",
"industry": "Computer Software",
"country": "India",
"location": "Gurugram, Haryana, India"
},
{
"name": "TikTok",
"title": "Influencer",
"linkedin_url": "https://www.linkedin.com/company/33246798",
"url": "https://www.tiktok.com/about?lang=en",
"industry": "Entertainment",
"country": "United States",
"location": "Los Angeles, California, United States"
}
]
}
},
{
"url": "https://www.linkedin.com/in/john-doe-04bb56b1/",
"result": []
},
{
"url": "https://www.linkedin.com/in/john-jungwoo-do/",
"result": {
"name": "John Do",
"first_name": "John",
"last_name": "Do",
"location": "Vancouver, British Columbia, Canada",
"country": "Canada",
"skills": [
"communication",
"java"
],
"positions": [
{
"name": "UBC Electrical and Computer Engineering",
"title": "Undergraduate Research Assistant",
"linkedin_url": "https://www.linkedin.com/company/15134449",
"url": "http://www.ece.ubc.ca",
"industry": "Higher Education",
"country": "Canada",
"location": "Vancouver, British Columbia, Canada"
},
{
"name": "The University of British Columbia",
"title": "Undergraduate Teaching Assistant",
"linkedin_url": "https://www.linkedin.com/company/4373",
"url": "http://www.ubc.ca",
"industry": "Higher Education",
"country": "Canada",
"location": "Vancouver, British Columbia, Canada",
"specializations": [
"Aboriginal Engagement",
"Alumni Engagement",
"Community Engagement",
"Intercultural Understanding",
"International Engagement",
"Outstanding Work Environment",
"Research Excellence",
"Student Learning",
"sustainability"
]
}
]
}
},
{
"url": "https://www.linkedin.com/in/john-doe-474006162/",
"result": []
}
],
"meta": {
"urls": [
"https://www.linkedin.com/in/john-doe-32a416248/",
"https://www.linkedin.com/in/john-doe-04bb56b1/",
"https://www.linkedin.com/in/john-jungwoo-do/",
"https://www.linkedin.com/in/john-doe-474006162/"
],
"task_hash": "8a60c72133d0ea94767e4a978355c630"
}
}
status | Статус запиту. Може бути completed або in_progress. |
url | Посилання на профіль LinkedIn. |
name | Повне ім'я контакта. |
first_name | Ім'я контакта. |
last_name | Прізвище контакта. |
industry | Сфера роботи контакта. |
location | Локація контакта. |
country | Країна, де знаходиться контакт, за даними з його профілю у LinkedIn. |
skills | Навички контакта. |
positions | Масив посад, які зараз займає контакт. |
name | Назва компанії, в якій працює контакт. |
title | Посада контакта. |
linkedin_url | Посилання на сторінку компанії в LinkedIn. |
url | Сайт компанії. |
industry | Галузь компанії. |
country | Країна, в якій розташований головний офіс компанії. |
location | Локація компанії. |
specializations | Галузь або фокус компанії. |
urls | Масив посилань на профілі LinkedIn, які ви надали. |
task_hash | Унікальний ID для цієї задачі з пошуку. |
POSTДоповнити профіль інформацією з email-адреси
1 кредит за запитЗазначте адресу електронної пошти, і Snov.io поверне всю пов'язану з власником емейлу інформацію, яка міститься у нашій базі даних.
Якщо нам не вдасться знайти інформацію про власника адреси у нашій базі даних, оплата за запит не буде знята.
| POST | https://api.snov.io/v1/get-profile-by-email |
email | Адреса електронної пошти особи, про яку ви хочете знайти додаткову інформацію. |
<?php function getProfileByEmail() { $token = getAccessToken(); $params = [ 'access_token' => $token, 'email' => 'gavin.vanrooyen@octagon.com' ]; $options = [ CURLOPT_URL => 'https://api.snov.io/v1/get-profile-by-email', CURLOPT_POST => true, CURLOPT_POSTFIELDS => $params, CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true ]; $ch = curl_init(); curl_setopt_array($ch, $options); $res = json_decode(curl_exec($ch), true); curl_close($ch); return $res; } ?>
def get_profile_by_email(): token = get_access_token() params = {'access_token':token, 'email':'gavin.vanrooyen@octagon.com' } res = requests.post('https://api.snov.io/v1/get-profile-by-email', data=params) return json.loads(res.text)
{
"success": true,
"id": 301592,
"source": "linkedIn",
"name": "Lizi Hamer",
"firstName": "Lizi",
"lastName": "Hamer",
"logo": "https://app.snov.io/img/peoples/010fcf23c70dfa68d880545ec89a9215.jpg",
"industry": null,
"country": "Singapore",
"locality": "Singapore",
"social": [
{
"link": "https://www.linkedin.com/in/lizihamer/",
"type": "linkedIn"
},
{
"link": "https://twitter.com/LiziHamer",
"type": "twitter"
}
],
"currentJobs": [
{
"companyName": "Octagon",
"position": "Regional Creative Director",
"socialLink": "https://www.linkedin.com/company/165282",
"site": "www.octagon.com",
"locality": "Greater New York City Area",
"state": "Connecticut",
"city": "Stamford",
"street": "290 Harbor Dr",
"street2": "2nd Floor",
"postal": "06902",
"founded": "1983",
"startDate": "2016-01-31",
"endDate": null,
"size": "1-10",
"industry": "Marketing and Advertising",
"companyType": "Public Company",
"country": "United States"
},
{
"companyName": "SisuGirls",
"position": "Co Founder",
"socialLink": "https://www.linkedin.com/company/3841118",
"site": "http://www.sisugirls.org",
"locality": null,
"state": "SG",
"city": "Singapore",
"street": "33-03 Hong Leong Building",
"street2": null,
"postal": null,
"founded": "2014",
"startDate": "2015-07-31",
"endDate": null,
"size": "1-10",
"industry": "Health, Wellness and Fitness",
"companyType": null,
"country": "Singapore"
}
],
"previousJobs": [
{
"companyName": "Fusion Co-innovation Labs",
"position": "Creative Entrepreneur",
"socialLink": null,
"site": null,
"locality": null,
"state": null,
"city": null,
"street": null,
"street2": null,
"postal": null,
"founded": null,
"startDate": "2013-05-31",
"endDate": "2013-10-31",
"size": null,
"industry": null,
"companyType": null,
"country": null
},
{
"companyName": "Russell Commission",
"position": "Youth Advisory Board Member",
"socialLink": null,
"site": null,
"locality": null,
"state": null,
"city": null,
"street": null,
"street2": null,
"postal": null,
"founded": null,
"startDate": "2004-06-30",
"endDate": "2006-06-30",
"size": null,
"industry": null,
"companyType": null,
"country": null
}
],
"lastUpdateDate": "2018-02-07 10:12:28"
}id | Унікальний ідентифікатор профілю. |
source | Джерело отриманих персональних даних. |
name | Повне ім'я власника email-адреси. |
firstName | Ім'я власника email-адреси. |
lastName | Прізвище власника email-адреси. |
logo | Аватар профілю. |
industry | Галузь, зазначена в джерелі даних. |
country | Країна, зазначена в джерелі даних. |
locality | Місцезнаходження, зазначене в джерелі даних. |
social | Посилання на профілі у соцмережах. |
currentJobs | Масив, який містить інформацію про поточну посаду особи. |
previousJobs | Масив, який містить інформацію про попередні посади особи. |
lastUpdateDate | Дата останнього оновлення профілю в базі даних. |
POSTВерифікація email-адрес
Введіть email-адреси, і Snov.io виконає повну перевірку. Ви можете верифікувати до 10 адрес за раз.Надання email-адрес
| POST | https://api.snov.io/v2/email-verification/start |
emails[] | Email-адреси, які ви хочете перевірити. Щоб перевірити кілька адрес одночасно, додайте кожну як окремий параметр. Наприклад: emails[] | help@snov.io emails[] | partnerships@snov.io Ви можете перевірити до 10 email-адрес за раз. |
webhook_url | Введіть URL вебхука, щоб миттєво отримувати результати, замість використання hash task. |
<?php function emailVerificationStart() { $token = getAccessToken(); $params = [ 'emails' => ['gavin.vanrooyen@octagon.com','lizi.hamer@octagon.com','admin@snov.io','test@snov.io','ivalid_format_snov.io'], 'webhook_url' => 'https://hooks.yourdomain.com', ]; $headers = [ 'Authorization: Bearer ' . $token, ]; $options = [ CURLOPT_URL => 'https://api.snov.io/v2/email-verification/start', CURLOPT_HTTPHEADER => $headers, CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_POSTFIELDS => http_build_query($params), CURLOPT_FOLLOWLOCATION => true ]; $ch = curl_init(); curl_setopt_array($ch, $options); $response = json_decode(curl_exec($ch), true); curl_close($ch); return $response; } ?>
def email_verification_start(): token = get_access_token() headers = {'authorization': f'Bearer {token}'} params = { 'emails[]': ['gavin.vanrooyen@octagon.com', 'lizi.hamer@octagon.com', 'admin@snov.io', 'test@snov.io', 'ivalid_format_snov.io'], 'webhook_url': 'https://hooks.yourdomain.com', } res = requests.post('https://api.snov.io/v2/email-verification/start', params=params, headers=headers) return json.loads(res.text)
{
"data": {
"task_hash": "0110437df6811068197577a538849a4b"
},
"meta": {
"emails": [
"gavin.vanrooyen@octagon.com",
"lizi.hamer@octagon.com",
"admin@snov.io",
"test@snov.io",
"ivalid_format_snov.io"
]
}
}
task_hash | Унікальний ID задачі з пошуку, яку ви почали. |
emails | Масив email-адрес, які ви надали для перевірки. |
| GET | https://api.snov.io/v2/email-verification/result |
task_hash | Унікальний ID запиту, отриманий з попереднього запиту. |
<?php function emailVerificationResult() { $token = getAccessToken(); $task_hash = '0110437df6811068197577a538849a4b'; $headers = [ 'Authorization: Bearer ' . $token, ]; $options = [ CURLOPT_URL => 'https://api.snov.io/v2/email-verification/result?task_hash=$task_hash', CURLOPT_HTTPHEADER => $headers, CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true ]; $ch = curl_init(); curl_setopt_array($ch, $options); $response = json_decode(curl_exec($ch), true); curl_close($ch); return $response; } ?>
def email_verification_result(): token = get_access_token() task_hash = 'b55b28d5419a1c3ec310f21916e4e271' headers = {'authorization': f'Bearer {token}'} params = { 'task_hash': task_hash } res = requests.get(f'https://api.snov.io/v2/email-verification/result', params=params, headers=headers) return json.loads(res.text)
{
"status": "completed",
"data": [
{
"email": "gavin.vanrooyen@octagon.com",
"result": {
"is_webmail": false,
"smtp_status": "unknown",
"is_gibberish": false,
"is_disposable": false,
"is_valid_format": true,
"unknown_status_reason": "catchall"
}
},
{
"email": "admin@snov.io",
"result": {
"is_webmail": false,
"smtp_status": "valid",
"is_gibberish": false,
"is_disposable": false,
"is_valid_format": true
}
},
{
"email": "ivalid_format_snov.io",
"result": {
"is_webmail": false,
"smtp_status": "not_valid",
"is_gibberish": false,
"is_disposable": false,
"is_valid_format": false
}
},
{
"email": "lizi.hamer@octagon.com",
"result": {
"is_webmail": false,
"smtp_status": "unknown",
"is_gibberish": false,
"is_disposable": false,
"is_valid_format": true,
"unknown_status_reason": "catchall"
}
},
{
"email": "test@snov.io",
"result": {
"smtp_status": "unknown",
"is_valid_format": true,
"is_disposable": false,
"is_webmail": false,
"is_gibberish": true,
"unknown_status_reason": "banned"
}
}
],
"meta": {
"emails": [
"gavin.vanrooyen@octagon.com",
"lizi.hamer@octagon.com",
"admin@snov.io",
"test@snov.io",
"ivalid_format_snov.io"
],
"task_hash": "0110437df6811068197577a538849a4b"
}
}
status | Статус запиту. Може бути completed або in_progress. |
email | Email-адреса, яку ви верифікуєте. |
smtp_status | Може повернути valid, not_valid або unknown (тобто адресу неможливо верифікувати). Щоб переглянути причину статусу unknown, перевірте параметр unknown_status_reason. |
is_valid_format | Показує, чи формат email-адреси валідний. Може бути false або true. |
is_disposable | Вказує, чи email-адреса тимчасова або одноразова, повертаючи false або true. |
is_webmail | Якщо true, то email-адреса, яку ви шукаєте, є вебпоштою. |
is_gibberish | Показує, чи містить надана email-адреса набір випадкових символів або символів у випадковому порядку. Буде false або true. |
unknown_status_reason | Якщо для перевіреної email-адреси встановлено невідомий smtp_status, ви можете знайти детальнішу причину тут. Banned: Високий ризик доставлення – неможливо верифікувати цю email-адресу зі 100 % точністю. Catchall: Ризик для репутації відправника – це catch-all адреса. Connection_error: Ризик потенційного баунсу – технічні помилки на стороні отримувача. Greylist: Ризик доставлення – сервер адреси використовує фільтри грейлістингу. Hidden_by_owner: Власник email-адреси або компанія, що володіє доменом, запросила видалити його із результатів Snov.io. |
emails | Масив email-адрес, які ви верифікуєте. |
task_hash | Унікальний ID запиту для цієї задачі верифікації. |
POSTДодати новий email-акаунт
Цей метод підключає новий SMTP/IMAP email-акаунт до вашого робочого простору snov.io, щоб його можна було використовувати як відправника в кампаніях. Акаунт створюється навіть якщо перевірка SMTP/IMAP-з'єднання ще не завершилася — статус з'єднання повертається асинхронно в полях smtp.status / imap.status і його можна опитати згодом. Підтримуються лише SMTP/IMAP-акаунти (тип провайдера other); потоки OAuth для Gmail і Microsoft не підтримуються.
| POST | https://api.snov.io/v2/sender-accounts/emails |
sender_name *обов'язковий | Відображуване ім'я відправника, максимум 100 символів. |
email_from *обов'язковий | Email-адреса відправника. |
password *обов'язковий | Пароль або пароль застосунку для SMTP/IMAP-акаунта. Зберігається в зашифрованому вигляді. |
smtp *обов'язковий | Об'єкт із налаштуваннями SMTP. |
smtp.host *обов'язковий | SMTP-хост, наприклад smtp.gmail.com. |
smtp.port *обов'язковий | SMTP-порт. Дозволені значення: 25, 465, 587. |
smtp.encryption *обов'язковий | Тип шифрування. Дозволені значення: ssl, tls, none. Має відповідати порту: 465 → ssl, 587 → tls, 25 → none. |
imap | Об'єкт із налаштуваннями IMAP. Необов'язковий, але якщо вказано, всі вкладені поля обов'язкові. |
imap.host | IMAP-хост, наприклад imap.gmail.com. Обов'язковий, коли присутній imap. |
imap.port | IMAP-порт. Дозволені значення: 143, 993. Обов'язковий, коли присутній imap. |
imap.encryption | Тип шифрування. Дозволені значення: ssl, tls, none. Має відповідати порту: 993 → ssl або tls, 143 → none. Обов'язковий, коли присутній imap. |
reply_to | Адреса для отримання відповідей. |
limitation | Денний ліміт відправки. Ціле число, мін. 1, макс. 1200. За замовчуванням: 50. Не може перевищувати максимальну кількість листів, яку акаунт може надіслати протягом 24 годин з урахуванням налаштованої затримки. |
delay_type | Тип затримки між листами. Дозволені значення: fixed, random. За замовчуванням: random. |
delay_fixed | Фіксована затримка в секундах (використовується, коли delay_type=fixed). Ціле число, мін. 5, макс. 3600. За замовчуванням: 600. |
delay_from | Мінімальна затримка в секундах (використовується, коли delay_type=random). Ціле число, мін. 5, макс. 3600. За замовчуванням: 600. |
delay_to | Максимальна затримка в секундах (використовується, коли delay_type=random). Ціле число, мін. 5, макс. 3600, має бути більшою за delay_from. За замовчуванням: 900. |
signature | HTML-підпис, що додається до вихідних листів. |
bcc_email | BCC email-адреса. |
tags | Масив рядків. Наявні теги зіставляються за назвою, нові створюються та прикріплюються до акаунта. |
timezoneId | Цілочисловий ID часового поясу акаунта. Мін. 1, макс. 458. |
<?php function createEmailAccount() { $token = getAccessToken(); $params = json_encode([ 'sender_name' => 'John Smith', 'email_from' => 'john@example.com', 'password' => 'app_password_here', 'smtp' => [ 'host' => 'smtp.gmail.com', 'port' => 465, 'encryption' => 'ssl' ], 'imap' => [ 'host' => 'imap.gmail.com', 'port' => 993, 'encryption' => 'ssl' ], 'limitation' => 50, 'delay_type' => 'random', 'delay_from' => 600, 'delay_to' => 900, 'reply_to' => 'replies@example.com', 'bcc_email' => 'bcc@example.com', 'tags' => ['Canada campaign 2025'] ]); $options = [ CURLOPT_URL => 'https://api.snov.io/v2/sender-accounts/emails', CURLOPT_POST => true, CURLOPT_POSTFIELDS => $params, CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTPHEADER => [ 'Authorization: Bearer ' . $token, 'Content-Type: application/json' ] ]; $ch = curl_init(); curl_setopt_array($ch, $options); $res = json_decode(curl_exec($ch), true); curl_close($ch); return $res; } ?>
def create_email_account(): token = get_access_token() headers = { 'Authorization': 'Bearer ' + token, 'Content-Type': 'application/json' } params = { 'sender_name': 'John Smith', 'email_from': 'john@example.com', 'password': 'app_password_here', 'smtp': { 'host': 'smtp.gmail.com', 'port': 465, 'encryption': 'ssl' }, 'imap': { 'host': 'imap.gmail.com', 'port': 993, 'encryption': 'ssl' }, 'limitation': 50, 'delay_type': 'random', 'delay_from': 600, 'delay_to': 900, 'reply_to': 'replies@example.com', 'bcc_email': 'bcc@example.com', 'tags': ['Canada campaign 2025'] } res = requests.post( 'https://api.snov.io/v2/sender-accounts/emails', headers=headers, json=params ) return json.loads(res.text)
{
"data": {
"id": 869852,
"sender_name": "John Smith",
"email_from": "john@example.com",
"smtp": {
"host": "smtp.gmail.com",
"port": 465,
"encryption": "ssl",
"status": "pending"
},
"imap": {
"host": "imap.gmail.com",
"port": 993,
"encryption": "ssl",
"status": "pending"
},
"limitation": 50,
"delay_type": "random",
"delay_from": 600,
"delay_to": 900,
"reply_to": "replies@example.com",
"bcc_email": "bcc@example.com",
"tags": ["Canada campaign 2025"],
"created_at": "2026-03-20T10:00:00+00:00"
}
}
data.id | ID створеного акаунта відправника. |
data.sender_name | Відображуване ім'я відправника. |
data.email_from | Email-адреса відправника. |
data.smtp | Налаштування SMTP: host, port, encryption, а також поле status із результатом перевірки з'єднання (pending, connected, error). |
data.imap | Налаштування IMAP (присутні лише якщо IMAP було налаштовано): host, port, encryption, status. |
data.limitation | Денний ліміт відправки. |
data.delay_type | Тип затримки: fixed або random. |
data.delay_from | Мінімальна затримка в секундах (для delay_type=random). |
data.delay_to | Максимальна затримка в секундах (для delay_type=random). |
data.delay_fixed | Фіксована затримка в секундах (для delay_type=fixed). |
data.reply_to | Адреса для отримання відповідей. |
data.signature | HTML-підпис (присутній лише якщо його було вказано). |
data.bcc_email | BCC email-адреса. |
data.tags | Масив тегів, прикріплених до акаунта. |
data.timezoneId | ID часового поясу (присутній лише якщо заданий у запиті). |
data.created_at | Часова мітка створення акаунта. |
PATCHОновити email-акаунт
Цей метод оновлює наявний SMTP/IMAP-акаунт відправника. Усі поля необов'язкові, але має бути вказане принаймні одне коректне поле — змінюються лише передані поля, решта залишається без змін. Коли включено будь-яке SMTP- або IMAP-поле, запускається нова асинхронна перевірка з'єднання, а отриманий статус повертається в smtp.status / imap.status. Якщо передано tags, новий масив повністю замінює поточний список тегів акаунта (заміна, а не злиття).
| PATCH | https://api.snov.io/v2/sender-accounts/emails/{id} |
id *обов'язковий (path) | ID акаунта відправника, який потрібно оновити. |
sender_name | Нове відображуване ім'я відправника, максимум 100 символів. |
email_from | Нова email-адреса відправника. |
password | Новий пароль або пароль застосунку для SMTP/IMAP-акаунта. Зберігається в зашифрованому вигляді. |
smtp | Об'єкт із новими налаштуваннями SMTP (host, port, encryption). Коли присутній smtp, усі три вкладені поля обов'язкові й мають відповідати правилам пар порт/шифрування (465 → ssl, 587 → tls, 25 → none). |
smtp.host | SMTP-хост. Максимум 100 символів; формат: ^[a-zA-Z0-9][a-zA-Z0-9-.]*. Обов'язковий, коли присутній smtp. |
smtp.port | Дозволені значення: 25, 465, 587. Обов'язковий, коли присутній smtp. |
smtp.encryption | Має відповідати порту: 465 → ssl, 587 → tls, 25 → none. Обов'язковий, коли присутній smtp. |
imap | Об'єкт із новими налаштуваннями IMAP (host, port, encryption). Коли присутній imap, усі три вкладені поля обов'язкові (993 → ssl або tls, 143 → none) |
imap.host | IMAP-хост. Максимум 100 символів. Обов'язковий, коли присутній imap. |
imap.port | Дозволені значення: 143, 993. Обов'язковий, коли присутній imap. |
imap.encryption | Має відповідати порту: 993 → ssl або tls; 143 → none. Обов'язковий, коли присутній imap. |
reply_to | Нова адреса для отримання відповідей. Передайте null, щоб очистити. |
limitation | Новий денний ліміт відправки. Ціле число, мін. 1, макс. 1200. Не може перевищувати максимальну кількість листів, яку акаунт може надіслати протягом 24 годин з урахуванням налаштованої затримки. |
delay_type | Новий тип затримки. Дозволені значення: fixed, random. |
delay_fixed | Фіксована затримка в секундах (використовується, коли delay_type=fixed). Ціле число, мін. 5, макс. 3600. |
delay_from | Мінімальна затримка в секундах (використовується, коли delay_type=random). Ціле число, мін. 5, макс. 3600. |
delay_to | Максимальна затримка в секундах (використовується, коли delay_type=random). Ціле число, мін. 5, макс. 3600, має бути більшою за delay_from. |
signature | Новий HTML-підпис. Передайте null, щоб очистити. |
bcc_email | Нова BCC email-адреса. Передайте null, щоб очистити. |
tags | Новий масив тегів. Повністю замінює поточний список тегів. Передайте null, щоб очистити всі теги. |
timezoneId | Цілочисловий ID часового поясу акаунта. Мін. 1, макс. 458. |
<?php function updateEmailAccount($accountId) { $token = getAccessToken(); $params = json_encode([ 'sender_name' => 'John Smith Updated', 'limitation' => 100, 'delay_type' => 'fixed', 'delay_fixed' => 600, 'tags' => ['Canada campaign 2025', 'Q2'] ]); $options = [ CURLOPT_URL => 'https://api.snov.io/v2/sender-accounts/emails/' . $accountId, CURLOPT_CUSTOMREQUEST => 'PATCH', CURLOPT_POSTFIELDS => $params, CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTPHEADER => [ 'Authorization: Bearer ' . $token, 'Content-Type: application/json' ] ]; $ch = curl_init(); curl_setopt_array($ch, $options); $res = json_decode(curl_exec($ch), true); curl_close($ch); return $res; } ?>
def update_email_account(account_id): token = get_access_token() headers = { 'Authorization': 'Bearer ' + token, 'Content-Type': 'application/json' } params = { 'sender_name': 'John Smith Updated', 'limitation': 100, 'delay_type': 'fixed', 'delay_fixed': 600, 'tags': ['Canada campaign 2025', 'Q2'] } res = requests.patch( f'https://api.snov.io/v2/sender-accounts/emails/{account_id}', headers=headers, json=params ) return json.loads(res.text)
{
"data": {
"id": 869852,
"sender_name": "John Smith Updated",
"email_from": "john@example.com",
"smtp": {
"host": "smtp.gmail.com",
"port": 465,
"encryption": "ssl",
"status": "pending"
},
"imap": {
"host": "imap.gmail.com",
"port": 993,
"encryption": "ssl",
"status": "pending"
},
"limitation": 100,
"delay_type": "fixed",
"delay_fixed": 600,
"reply_to": "replies@example.com",
"bcc_email": "bcc@example.com",
"tags": ["Canada campaign 2025", "Q2"],
"updated_at": "2026-04-22T11:04:37+00:00"
}
}
data.id | ID акаунта відправника. |
data.sender_name | Відображуване ім'я відправника. |
data.email_from | Email-адреса відправника. |
data.smtp | Налаштування SMTP: host, port, encryption, а також поле status із результатом перевірки з'єднання (pending, valid, invalid). |
data.imap | Налаштування IMAP (присутні лише якщо IMAP налаштовано): host, port, encryption, status. |
data.limitation | Денний ліміт відправки. |
data.delay_type | Тип затримки: fixed або random. |
data.delay_from | Мінімальна затримка в секундах (для delay_type=random). |
data.delay_to | Максимальна затримка в секундах (для delay_type=random). |
data.delay_fixed | Фіксована затримка в секундах (для delay_type=fixed). |
data.reply_to | Адреса для отримання відповідей. |
data.signature | HTML-підпис (присутній лише якщо його було вказано). |
data.bcc_email | BCC email-адреса. |
data.tags | Масив тегів, прикріплених до акаунта. |
data.timezoneId | ID часового поясу (присутній лише якщо заданий). |
data.updated_at | Часова мітка останнього оновлення. |
GETПеревірити SMTP/IMAP-статус відправника
Цей метод перевіряє статус SMTP- та (за бажанням) IMAP-з'єднання підключеного email-акаунта відправника. Використовуйте його, щоб переконатися, що акаунт відправника наразі коректний і працездатний, а також щоб отримати будь-які помилки з'єднання.
| GET | https://api.snov.io/v2/sender-accounts/check-sender-status |
sender_account_id *обов'язковий | ID email-акаунта відправника для перевірки. Ціле число, мінімальне значення: 1. |
<?php function checkSenderStatus($senderAccountId) { $token = getAccessToken(); $query = http_build_query([ 'sender_account_id' => $senderAccountId ]); $options = [ CURLOPT_URL => 'https://api.snov.io/v2/sender-accounts/check-sender-status?' . $query, CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTPHEADER => [ 'Authorization: Bearer ' . $token, 'Content-Type: application/json' ] ]; $ch = curl_init(); curl_setopt_array($ch, $options); $res = json_decode(curl_exec($ch), true); curl_close($ch); return $res; } ?>
def check_sender_status(sender_account_id): token = get_access_token() headers = { 'Authorization': 'Bearer ' + token, 'Content-Type': 'application/json' } params = { 'sender_account_id': sender_account_id } res = requests.get( 'https://api.snov.io/v2/sender-accounts/check-sender-status', headers=headers, params=params ) return json.loads(res.text)
{
"data": {
"smtp": {
"status": "valid"
},
"imap": {
"status": "valid"
}
}
}
{
"data": {
"smtp": {
"status": "invalid",
"errors": [
"Connection refused"
]
},
"imap": null
}
}
data | Об'єкт із деталями статусу з'єднання для акаунта відправника. |
smtp | Об'єкт, що описує статус SMTP-з'єднання: status (pending, valid, invalid) та errors (масив повідомлень про помилки, присутній, коли status дорівнює invalid). |
imap | Об'єкт, що описує статус IMAP-з'єднання з тією самою структурою, що й smtp. Повертає null, коли IMAP не було налаштовано під час створення акаунта. |
GETОтримати список усіх email-акаунтів
БезплатноМетод показує список усіх підключених email-акаунтів.
| GET | https://api.snov.io/v2/sender-accounts/emails |
| Цей метод не має вхідних параметрів. |
<?php function getSenderEmails() { $token = getAccessToken(); $options = [ CURLOPT_URL => 'https://api.snov.io/v2/sender-accounts/emails', CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTPHEADER => [ 'Authorization: Bearer ' . $token, 'Content-Type: application/json', ], ]; $ch = curl_init(); curl_setopt_array($ch, $options); $res = json_decode(curl_exec($ch), true); curl_close($ch); return $res; } ?>
def get_sender_emails(): token = get_access_token() headers = { 'Authorization': 'Bearer ' + token, 'Content-Type': 'application/json' } res = requests.get('https://api.snov.io/v2/sender-accounts/emails', headers=headers) return json.loads(res.text)
{
"data": [
{
"id": 11980,
"sender_name": "Den Johnson",
"email_from": "den.johnson@snov.io",
"valid": true,
"suspended": false,
"limitation": 50,
"provider": "hostinger",
"tags": [
"Den's account"
],
"imap": {
"username": "den.johnson@snov.io",
"valid": true
}
},
{
"id": 12355,
"sender_name": "Anna",
"email_from": "anna@snov.io",
"valid": false,
"suspended": false,
"limitation": 50,
"provider": "godaddy",
"tags": [
"Work"
],
"imap": {
"username": "anna@snov.io",
"valid": false
}
}
]
}
id | Унікальний ID email-акаунта. |
sender_name | Ім'я відправника (поле «Від кого») — це ім'я, яке бачить отримувач у своїх вхідних. Воно вказує, хто саме надіслав лист. |
email_from | Повна email-адреса. |
valid | Показує true, якщо акаунт відправника дійсний. Повертає false, якщо акаунт недійсний. |
suspended | Показує true, якщо надсилання з акаунта призупинено. Повертає false, якщо акаунт працює нормально. |
limitation | Денні ліміти надсилання акаунту. |
provider | Провайдер email-акаунту. |
tags | Теги, призначені акаунту. |
imap | Масив даних IMAP для акаунту. |
username | Email-адреса, вибрана для отримання відповідей замість основного email-акаунту. |
valid | Показує true, якщо IMAP увімкнено. Повертає false, якщо IMAP вимкнено. |
POSTСтворити кампанію прогріву
Цей метод створює та запускає нову кампанію прогріву для вказаного поштового акаунта. Прогрів поступово покращує репутацію надсилання акаунта шляхом обміну короткими листами з відібраною мережею отримувачів. Оберіть стратегію progressive, щоб поступово збільшувати щоденний обсяг надсилання з невеликої початкової точки, або стратегію steady, щоб надсилати фіксовану кількість листів прогріву на день; вкажіть власні subject та body або дозвольте snov.io генерувати їх автоматично.
| POST | https://api.snov.io/v2/warm-up |
email_account_id *обов'язковий | Integer. ID поштового акаунта для прогріву. |
strategy | Стратегія надсилання. Допустимі значення: progressive, steady. За замовчуванням: progressive. |
per_day *обов'язковий | Integer. Щоденна мета надсилання. Діапазон 1–1000 залежно від тарифного плану. |
from | Integer. Початковий щоденний обсяг (лише для стратегії progressive). Діапазон 1–5, має бути ≤ per_day. Обов'язково, якщо strategy=progressive. |
increase | Integer. Щоденне збільшення обсягу (лише для стратегії progressive). Діапазон 1–5. Обов'язково, якщо strategy=progressive. |
email_content | Тип вмісту листа. Допустимі значення: autogenerated (генерується ШІ), specific (власний). За замовчуванням: autogenerated. |
subject | String. Тема листа, 1–200 символів. Обов'язково, якщо email_content=specific. |
body | String. Тіло листа, 1–10000 символів. Обов'язково, якщо email_content=specific. |
reply_rate | Integer. Відсоток вхідних листів прогріву, на які буде надіслано відповідь. Діапазон 10–45. За замовчуванням: 30. |
campaign_deadline | String (YYYY-MM-DD). Дата завершення прогріву. Пропустіть, якщо кінцевий термін не потрібен. |
providers | Масив рядків. Цільові провайдери отримувачів. Допустимі значення: gmail, microsoft, aliyun, hostinger, private email, zoho, titan, godaddy, other. |
send_to_paid_domain | Boolean. Чи надсилати на платні домени. За замовчуванням: false. |
enable_ctd | Boolean. Увімкнути власний домен відстеження. За замовчуванням: false. |
enable_proxy | Boolean. Увімкнути динамічний проксі. За замовчуванням: false. |
schedule_id | Integer. ID розкладу надсилання, який буде прикріплено до прогріву. |
template_name | String. Назва збереженого шаблону листа для використання. |
<?php function createWarmUp() { $token = getAccessToken(); $params = json_encode([ 'email_account_id' => 123, 'strategy' => 'progressive', 'per_day' => 50, 'from' => 2, 'increase' => 2, 'reply_rate' => 30, 'campaign_deadline' => '2026-12-31', 'send_to_paid_domain' => false, 'enable_proxy' => false ]); $options = [ CURLOPT_URL => 'https://api.snov.io/v2/warm-up', CURLOPT_POST => true, CURLOPT_POSTFIELDS => $params, CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTPHEADER => [ 'Authorization: Bearer ' . $token, 'Content-Type: application/json' ], ]; $ch = curl_init(); curl_setopt_array($ch, $options); $res = json_decode(curl_exec($ch), true); curl_close($ch); return $res; } ?>
def create_warm_up(): token = get_access_token() headers = { 'Authorization': 'Bearer ' + token, 'Content-Type': 'application/json' } params = { 'email_account_id': 123, 'strategy': 'progressive', 'per_day': 50, 'from': 2, 'increase': 2, 'reply_rate': 30, 'campaign_deadline': '2026-12-31', 'send_to_paid_domain': False, 'enable_proxy': False } res = requests.post( 'https://api.snov.io/v2/warm-up', headers=headers, json=params ) return json.loads(res.text)
{
"data": {
"id": 123
},
"success": true
}
success | Boolean. true, якщо кампанію прогріву створено. |
data.id | ID створеної кампанії прогріву. |
GETОтримати список кампаній прогріву
Цей метод повертає сторінковий список усіх кампаній прогріву в акаунті, за бажанням відфільтрованих за статусом. Кожен елемент має таку саму структуру, як і відповідь методу «Отримати інформацію про кампанію прогріву».
| GET | https://api.snov.io/v2/warm-up |
page | Integer. Номер сторінки. За замовчуванням: 1. Мінімум: 1. |
per_page | Integer. Кількість результатів на сторінці. Допустимі значення: 20, 50, 100. За замовчуванням: 20. |
status | Фільтр за статусом. Допустимі значення: active, paused, completed, error. Пропустіть, щоб повернути всі. |
<?php function getWarmUpList() { $token = getAccessToken(); $params = http_build_query([ 'page' => 1, 'per_page' => 20, 'status' => 'active' ]); $options = [ CURLOPT_URL => 'https://api.snov.io/v2/warm-up?' . $params, CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTPHEADER => [ 'Authorization: Bearer ' . $token, 'Content-Type: application/json' ], ]; $ch = curl_init(); curl_setopt_array($ch, $options); $res = json_decode(curl_exec($ch), true); curl_close($ch); return $res; } ?>
def get_warm_up_list(): token = get_access_token() headers = { 'Authorization': 'Bearer ' + token, 'Content-Type': 'application/json' } params = { 'page': 1, 'per_page': 20, 'status': 'active' } res = requests.get( 'https://api.snov.io/v2/warm-up', headers=headers, params=params ) return json.loads(res.text)
{
"data": [
{
"id": 1,
"status": "active",
"reply_rate": 30,
"send_to_paid_domain": false,
"start_date": "2026-03-26",
"campaign_deadline": "2026-12-21",
"strategy": "progressive",
"per_day": 2,
"from": 2,
"increase": 2,
"subject": null,
"body": null,
"template_name": null,
"enable_ctd": false,
"schedule": null,
"email_account": {
"id": 732745,
"email_from": "john@example.com",
"type": "microsoft",
"delay": 30,
"limit": 15,
"per_day": 50,
"schedule_required": false,
"provider": "gmail",
"custom_tracking_domain": null
},
"enable_proxy": false,
"sent_today": 2,
"daily_limit": 2,
"total_saved_from_spam": 5,
"deliverability": 88,
"warm_up_error": null
}
],
"success": true,
"meta": {
"total_items": 1,
"page": 1,
"per_page": 20,
"total_pages": 1
}
}
success | Boolean. true, якщо запит виконано успішно. |
data | Масив об'єктів кампаній прогріву. Кожен елемент має таку саму структуру, як і відповідь методу «Отримати інформацію про кампанію прогріву» (див. поля data.* там). |
meta.total_items | Загальна кількість елементів на всіх сторінках. |
meta.page | Поточний номер сторінки. |
meta.per_page | Кількість елементів на сторінці. |
meta.total_pages | Загальна кількість сторінок. |
GETОтримати інформацію про кампанію прогріву
Цей метод повертає повну інформацію про окрему кампанію прогріву за її ID — включаючи налаштування стратегії, денні ліміти, поточну статистику доставки та підключений поштовий акаунт.
| GET | https://api.snov.io/v2/warm-up/{id} |
id *обов'язковий(path) | Integer. ID кампанії прогріву. |
<?php function getWarmUpById($warmUpId) { $token = getAccessToken(); $options = [ CURLOPT_URL => 'https://api.snov.io/v2/warm-up/' . $warmUpId, CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTPHEADER => [ 'Authorization: Bearer ' . $token, 'Content-Type: application/json' ], ]; $ch = curl_init(); curl_setopt_array($ch, $options); $res = json_decode(curl_exec($ch), true); curl_close($ch); return $res; } ?>
def get_warm_up_by_id(warm_up_id): token = get_access_token() headers = { 'Authorization': 'Bearer ' + token, 'Content-Type': 'application/json' } res = requests.get( f'https://api.snov.io/v2/warm-up/{warm_up_id}', headers=headers ) return json.loads(res.text)
{
"data": {
"id": 123,
"status": "active",
"reply_rate": 30,
"send_to_paid_domain": false,
"start_date": "2026-03-26",
"campaign_deadline": "2026-12-21",
"strategy": "progressive",
"per_day": 2,
"from": 2,
"increase": 2,
"subject": null,
"body": null,
"template_name": null,
"enable_ctd": false,
"schedule": null,
"email_account": {
"id": 732745,
"email_from": "john@example.com",
"type": "google",
"delay": 30,
"limit": 15,
"per_day": 50,
"schedule_required": false,
"provider": "gmail",
"custom_tracking_domain": null
},
"enable_proxy": false,
"sent_today": 2,
"daily_limit": 2,
"total_saved_from_spam": 106,
"deliverability": 88,
"warm_up_error": null
},
"success": true
}
success | Boolean. true, якщо запит виконано успішно. |
data.id | ID кампанії прогріву. |
data.status | Статус кампанії: active, pending, paused, completed, error. |
data.reply_rate | Відсоток отриманих листів, на які буде надіслано відповідь (10–45). |
data.send_to_paid_domain | Чи надсилає кампанія листи на платні домени. |
data.start_date | Дата початку кампанії (YYYY-MM-DD). |
data.campaign_deadline | Дата завершення кампанії (YYYY-MM-DD). null, якщо кінцевий термін не встановлено. |
data.strategy | Стратегія надсилання: progressive або steady. |
data.per_day | Щоденна мета надсилання. |
data.from | Початковий щоденний обсяг (лише для стратегії progressive). |
data.increase | Щоденне збільшення обсягу (лише для стратегії progressive). |
data.subject | Тема листа (лише якщо email_content=specific). |
data.body | Тіло листа (лише якщо email_content=specific). |
data.template_name | Назва шаблону. |
data.enable_ctd | Чи увімкнено власний домен відстеження. |
data.schedule | Розклад надсилання, прикріплений до кампанії, або null. |
data.enable_proxy | Чи увімкнено динамічний проксі. |
data.sent_today | Кількість листів прогріву, надісланих сьогодні. |
data.daily_limit | Наразі застосований щоденний ліміт надсилання. |
data.total_saved_from_spam | Загальна кількість листів, врятованих зі спаму з початку кампанії. |
data.deliverability | Відсоток доставки до папки «Вхідні» (%). |
data.warm_up_error | Опис помилки, якщо прогрів перейшов у стан error, інакше null. |
data.email_account | Дані підключеного поштового акаунта. |
data.email_account.id | ID поштового акаунта. |
data.email_account.email_from | Email-адреса акаунта. |
data.email_account.type | Тип акаунта (наприклад, google, microsoft). |
data.email_account.delay | Затримка між листами (у секундах). |
data.email_account.limit | Загальний ліміт листів для акаунта. |
data.email_account.per_day | Щоденний ліміт для акаунта. |
data.email_account.schedule_required | Чи потрібен розклад для цього акаунта. |
data.email_account.provider | Провайдер email: gmail, microsoft, hostinger, zoho, titan, godaddy, other тощо. |
data.email_account.custom_tracking_domain | Власний домен відстеження або null. |
PATCHОновити кампанію прогріву
Цей метод частково оновлює існуючу кампанію прогріву. Змінюються лише передані поля; всі інші налаштування залишаються без змін. Використовуйте цей метод для зміни налаштувань кампанії на льоту, перемикання статусу (active, paused, completed, deleted) або видалення кінцевого терміну шляхом передачі make_endless: true.
| PATCH | https://api.snov.io/v2/warm-up/{id} |
id *обов'язковий(path) | Integer. ID кампанії прогріву для оновлення. |
status | Змінити статус кампанії вручну. Допустимі значення: active, paused, completed, deleted. |
strategy | Нова стратегія надсилання: progressive або steady. |
per_day | Нова щоденна мета надсилання. Діапазон 1–1000 залежно від тарифного плану. |
from | Новий початковий щоденний обсяг. Діапазон 1–10. Обов'язково, якщо strategy=progressive. |
increase | Нове щоденне збільшення обсягу. Діапазон 1–5. Обов'язково, якщо strategy=progressive. |
email_content | Тип вмісту листа: autogenerated або specific. |
subject | Нова тема листа, 1–200 символів. Обов'язково, якщо email_content=specific. |
body | Нове тіло листа, 1–10000 символів. Обов'язково, якщо email_content=specific. |
reply_rate | Новий відсоток відповідей. Діапазон 10–45. |
campaign_deadline | Нова дата завершення кампанії (YYYY-MM-DD). |
make_endless | Boolean. Передайте true, щоб видалити поточний campaign_deadline і зробити кампанію безстроковою. |
providers | Нові цільові провайдери отримувачів (ті самі допустимі значення, що й при створенні кампанії прогріву). |
send_to_paid_domain | Boolean. |
enable_ctd | Boolean. Увімкнути або вимкнути власний домен відстеження. |
enable_proxy | Boolean. Увімкнути або вимкнути динамічний проксі. |
schedule_id | ID нового розкладу надсилання. |
template_name | Нова назва шаблону. |
<?php function updateWarmUp($warmUpId) { $token = getAccessToken(); $params = json_encode([ 'reply_rate' => 10, 'campaign_deadline' => '2027-06-30', 'enable_proxy' => true ]); $options = [ CURLOPT_URL => 'https://api.snov.io/v2/warm-up/' . $warmUpId, CURLOPT_CUSTOMREQUEST => 'PATCH', CURLOPT_POSTFIELDS => $params, CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTPHEADER => [ 'Authorization: Bearer ' . $token, 'Content-Type: application/json' ], ]; $ch = curl_init(); curl_setopt_array($ch, $options); $res = json_decode(curl_exec($ch), true); curl_close($ch); return $res; } ?>
def update_warm_up(warm_up_id): token = get_access_token() headers = { 'Authorization': 'Bearer ' + token, 'Content-Type': 'application/json' } params = { 'reply_rate': 10, 'campaign_deadline': '2027-06-30', 'enable_proxy': True } res = requests.patch( f'https://api.snov.io/v2/warm-up/{warm_up_id}', headers=headers, json=params ) return json.loads(res.text)
{
"data": {
"id": 123
},
"success": true
}
success | Boolean. true, якщо кампанію прогріву оновлено. |
data.id | ID оновленої кампанії прогріву. |
DELETEВидалити кампанію прогріву
Цей метод видаляє кампанію прогріву за її ID. Після видалення кампанія та її статистика більше не будуть доступні через інші методи API прогріву.
| DELETE | https://api.snov.io/v2/warm-up/{id} |
id *обов'язковий(path) | Integer. ID кампанії прогріву для видалення. |
<?php function deleteWarmUp($warmUpId) { $token = getAccessToken(); $options = [ CURLOPT_URL => 'https://api.snov.io/v2/warm-up/' . $warmUpId, CURLOPT_CUSTOMREQUEST => 'DELETE', CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTPHEADER => [ 'Authorization: Bearer ' . $token, 'Content-Type: application/json' ], ]; $ch = curl_init(); curl_setopt_array($ch, $options); $res = json_decode(curl_exec($ch), true); curl_close($ch); return $res; } ?>
def delete_warm_up(warm_up_id): token = get_access_token() headers = { 'Authorization': 'Bearer ' + token, 'Content-Type': 'application/json' } res = requests.delete( f'https://api.snov.io/v2/warm-up/{warm_up_id}', headers=headers ) return json.loads(res.text)
{
"data": {
"id": 123
},
"success": true
}
success | Boolean. true, якщо кампанію прогріву видалено. |
data.id | ID видаленої кампанії прогріву. |
GETОтримати статистику прогріву
Цей метод повертає щоденну статистику доставки та статистику за провайдерами для кампанії прогріву — або за попередньо встановленим вікном (two_weeks / month), або за користувацьким діапазоном дат. Корисно для відстеження прогресу доставки до папки «Вхідні» та виявлення провайдерів, у яких прогрів відбувається незадовільно.
| GET | https://api.snov.io/v2/warm-up/statistics/{id} |
id *обов'язковий(path) | Integer. ID кампанії прогріву. |
period | Попередньо встановлений період. Допустимі значення: two_weeks, month. Обов'язково, якщо date_from / date_to не вказані. |
date_from | String (YYYY-MM-DD). Початок користувацького діапазону дат. Обов'язково, якщо period не вказано. |
date_to | String (YYYY-MM-DD). Кінець користувацького діапазону дат. Має бути ≥ date_from і ≥ дати початку кампанії. Обов'язково, якщо period не вказано. |
<?php function getWarmUpStatistics($warmUpId) { $token = getAccessToken(); $params = http_build_query([ 'period' => 'two_weeks' ]); $options = [ CURLOPT_URL => 'https://api.snov.io/v2/warm-up/statistics/' . $warmUpId . '?' . $params, CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTPHEADER => [ 'Authorization: Bearer ' . $token, 'Content-Type: application/json' ], ]; $ch = curl_init(); curl_setopt_array($ch, $options); $res = json_decode(curl_exec($ch), true); curl_close($ch); return $res; } ?>
def get_warm_up_statistics(warm_up_id): token = get_access_token() headers = { 'Authorization': 'Bearer ' + token, 'Content-Type': 'application/json' } params = { 'period': 'two_weeks' } res = requests.get( f'https://api.snov.io/v2/warm-up/statistics/{warm_up_id}', headers=headers, params=params ) return json.loads(res.text)
{
"data": {
"daily_statistics": {
"2026-05-30": {
"emails_sent": 2,
"replies": 0,
"bounces": 0,
"spam_emails": 0,
"inbox_emails": 2,
"categories_emails": 0,
"scheduled": 0
},
"2026-05-31": {
"emails_sent": 2,
"replies": 0,
"bounces": 0,
"spam_emails": 0,
"inbox_emails": 2,
"categories_emails": 0,
"scheduled": 0
}
},
"provider_statistics": {
"google": {
"id": 1,
"count": 6,
"spam": 2,
"percent": 75,
"categories": 0
},
"outlook": {
"id": 2,
"count": 2,
"spam": 0,
"percent": 100
},
"hostinger": {
"id": 4,
"count": 2,
"spam": 0,
"percent": 100
},
"other": {
"id": 9,
"count": 4,
"spam": 0,
"percent": 100
}
},
"deliverability": {
"inbox": {
"count": 14,
"percent": 88
},
"spam": {
"count": 2,
"percent": 13
},
"categories": {
"count": 0,
"percent": 0
}
},
"is_calculated": false
},
"success": true
}
success | Boolean. true, якщо запит виконано успішно. |
data.daily_statistics | Об'єкт з ключами за датою (YYYY-MM-DD). Кожен запис містить поля щоденної статистики нижче. |
data.daily_statistics.{date}.emails_sent | Кількість листів прогріву, надісланих цього дня. |
data.daily_statistics.{date}.replies | Кількість отриманих відповідей цього дня. |
data.daily_statistics.{date}.bounces | Кількість листів, що отримали відмову доставки цього дня. |
data.daily_statistics.{date}.spam_emails | Кількість листів, що потрапили до спаму цього дня. |
data.daily_statistics.{date}.inbox_emails | Кількість листів, що потрапили до папки «Вхідні» цього дня. |
data.daily_statistics.{date}.categories_emails | Кількість листів, що потрапили до вкладок категорій Gmail цього дня. |
data.daily_statistics.{date}.scheduled | Кількість листів, запланованих для надсилання цього дня. |
data.provider_statistics | Об'єкт з ключами за назвою провайдера (google, outlook, hostinger тощо). Кожен запис містить поля статистики за провайдером нижче. |
data.provider_statistics.{provider}.id | Внутрішній ID провайдера. |
data.provider_statistics.{provider}.count | Кількість листів, надісланих через цього провайдера. |
data.provider_statistics.{provider}.spam | Кількість листів, що потрапили до спаму в цього провайдера. |
data.provider_statistics.{provider}.percent | Відсоток доставки до папки «Вхідні» (%) для цього провайдера. |
data.provider_statistics.{provider}.categories | Кількість листів, що потрапили до вкладок категорій Gmail. Може бути відсутнім для провайдерів без підтримки категорій. |
data.deliverability.inbox.count | Загальна кількість листів, доставлених до папки «Вхідні». |
data.deliverability.inbox.percent | Відсоток доставки до папки «Вхідні» (%). |
data.deliverability.spam.count | Загальна кількість листів, доставлених до спаму. |
data.deliverability.spam.percent | Відсоток спаму (%). |
data.deliverability.categories.count | Загальна кількість листів, доставлених до вкладок категорій Gmail. |
data.deliverability.categories.percent | Відсоток категорій (%). |
data.is_calculated | Boolean. false, якщо статистика ще обробляється; true, якщо розрахунок завершено. |
Керування кампаніями
Ці методи дозволяють створювати, налаштовувати та контролювати повний життєвий цикл кампанії — від початкового налаштування до запуску, призупинення, завершення та видалення.
GETПереглянути усі розсилки
БезплатноЦей метод показує список усіх кампаній користувача. Якщо користувач є учасником команди та має дозвіл на перегляд записів команди, метод також поверне всі кампанії, створені в цій команді.
| GET | https://api.snov.io/v1/get-user-campaigns |
| Для цього методу відсутні вхідні параметри |
<?php function userCampaigns() { $token = getAccessToken(); $params = [ 'access_token' => $token ]; $params = http_build_query($params); $options = [ CURLOPT_URL => 'https://api.snov.io/v1/get-user-campaigns?'.$params, CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true, ]; $ch = curl_init(); curl_setopt_array($ch, $options); $res = json_decode(curl_exec($ch), true); curl_close($ch); return $res; } ?>
def user_lists(): token = get_access_token() headers = {'Authorization': token} url = 'https://api.snov.io/v1/get-user-campaigns' response = requests.request('GET', url, headers=headers) return json.loads(res.text)
[
{
"id": 237945,
"campaign": "New Campaign",
"list_id": 8512947,
"status": "Paused",
"created_at": 1639469976,
"updated_at": 1639470026,
"started_at": 1639470021,
"hash": "e272be8f9a6894f5b5894fe2ef77095e"
},
{
"id": 237956,
"campaign": "Test campaign",
"list_id": 7654321,
"status": "Draft",
"created_at": 1638808262,
"updated_at": 1638808262,
"started_at": null,
"hash": "f97fce248b77e9a1ae770b21c7bd783d"
}
]
id | Унікальний id розсилки користувача. |
campaign | Назва розсилки. |
list_id | Унікальний id списку отримувачів розсилки. |
status | Статус розсилки. |
created_at | Дата та час створення розсилки в форматі Unix Timestamp. |
updated_at | Дата та час останнього редагування розсилки в форматі Unix Timestamp. |
started_at | Дата та час запуску розсилки в форматі Unix Timestamp. |
POSTСтворити кампанію
Цей метод створює нову аутрич-кампанію у вашому робочому просторі snov.io. Кампанія створюється зі статусом new і може бути збережена в будь-якому частково налаштованому стані — обов'язковими є лише поля, необхідні для запуску кампанії, решту можна заповнити пізніше. Підтримуються послідовності лише з email, лише з LinkedIn та змішані багатоканальні послідовності, включаючи A/B-варіанти, тригери (відкриття, кліки, відповіді, calendly, рівень з'єднання, надсилання LinkedIn in-mail тощо), затримки та блоки цілей. Цей метод створює кампанію без вмісту в блоках повідомлень. Ви додаєте вміст пізніше, викликаючи метод Create Email Step Content.
| POST | https://api.snov.io/v2/campaigns/create |
title *обов'язковий | String. Назва кампанії. Максимум 255 символів. |
priority *обов'язковий | String enum. Пріоритет надсилання кампанії: low, medium, high. |
email_accounts *Обов'язково для email-кампаній | Array of integers. ID акаунтів email-відправників. |
linkedin_accounts | Array of integers. ID акаунтів LinkedIn. |
tracking *Обов'язково для email-кампаній | Object. Налаштування відстеження email. |
tracking.open | Boolean. Відстежувати відкриття email. |
tracking.link_click | Boolean. Відстежувати кліки по посиланнях в email. |
sending_settings *Обов'язково для email-кампаній | Object. Контролює спосіб надсилання листів та яких отримувачів пропускати. |
sending_settings.sending_priority | String enum. Які листи йдуть першими: first_email або follow_up. |
sending_settings.daily_sending_all | Integer або null. Максимальна кількість листів на день по всіх отримувачах. |
sending_settings.daily_sending_new_recipients | Integer або null. Максимальна кількість нових отримувачів на день. |
sending_settings.skip_unverifiable | Boolean. Пропускати отримувачів, чий email не може бути верифікований. |
sending_settings.skip_unverified | Boolean. Пропускати отримувачів з неверифікованими email. |
sending_settings.skip_who_replied | Зупиняти подальші листи для проспектів, які відповіли. |
sending_settings.skip_company_domain_who_replied | Boolean. Пропускати отримувачів з домену компанії, де хтось відповів. |
sending_settings.skip_recipients_without_variables_data | Boolean. Пропускати отримувачів без значень кастомних змінних. |
sending_settings.skip_other_recipients_email_addresses | Boolean. Якщо контакт має кілька email-адрес, надсилати лише на першу, якщо значення true. |
sending_settings.skip_recipients_added_to_my_another_campaign | Boolean. Пропускати отримувачів, вже доданих до іншої кампанії цього користувача. |
sending_settings.skip_recipients_added_to_team_another_campaign | Boolean. Пропускати отримувачів, вже доданих до іншої кампанії будь-якого члена команди. |
sending_settings.one_click_unsubscribe | Boolean. Увімкнути заголовок one-click unsubscribe в листах. |
recipients *обов'язковий | Object. Визначає, хто отримує кампанію. |
recipients.list_id *обов'язковий | Integer. ID списку проспектів для надсилання. |
recipients.black_list_id | Integer. ID списку «Не надсилати». Дивіться Переглянути всі контакти-винятки. |
schedule_id | Integer. ID розкладу надсилання. Дивіться Переглянути всі розклади. |
start_campaign_at | String (YYYY-MM-DD HH:MM:SS) або null. Дата і час автоматичного старту кампанії, наприклад 2027-03-25 09:00:00. |
complete_campaign_at | String (YYYY-MM-DD HH:MM:SS) або null. Дата і час автоматичної зупинки кампанії. |
timezone | String. Часовий пояс кампанії. Список підтримуваних часових поясів дивіться в таблиці Часові пояси нижче. |
complete_campaign_after_last_step *обов'язковий | Boolean. Зупинити кампанію, коли всі отримувачі пройдуть останній крок послідовності. |
archive_in_months *обов'язковий | Integer. Автоматичне архівування кампанії через вказану кількість місяців. Допустимі значення: 1, 2, 3, 6. |
provider_matching *Обов'язково для email-кампаній | Boolean. Відповідність провайдера email отримувача провайдеру акаунту відправника. Може бути true лише при наявності мінімум двох підключених email-акаунтів. |
deals | Object або null. Налаштування створення CRM-угод за подіями кампанії. |
deals.event *Обов'язково при наявності deals | Array of strings. Події, що створюють угоду: open, click, reply. |
deals.pipeline_id *Обов'язково при наявності deals | Integer. ID CRM-пайплайну для створення угоди. |
deals.stage_id *Обов'язково при наявності deals | Integer. ID етапу пайплайну для розміщення угоди. |
deals.potential_value | Integer. Очікувана вартість угоди. |
deals.currency | String. Код валюти для значення угоди. Список підтримуваних валют дивіться в таблиці Валюти нижче. |
sequence *обов'язковий | Object. Автоматизований потік кроків, які виконує кампанія. |
sequence.entry *обов'язковий | String. _ref першого кроку для виконання. |
sequence.steps *обов'язковий | Array of objects. Упорядкований список усіх кроків послідовності. |
sequence.steps._ref *обов'язковий | String. Унікальний ідентифікатор цього кроку, що використовується для зв'язку кроків через next / yes / no. |
sequence.steps.type *обов'язковий | String enum. Тип кроку: email, delay, trigger, goal, linkedin. |
sequence.steps.next | String або null. _ref кроку, до якого перейти після цього (лінійні блоки: email, linkedin, delay). |
sequence.steps.yes | String. _ref кроку, до якого перейти, якщо умова тригера виконана (лише для trigger). |
sequence.steps.no | String. _ref кроку, до якого перейти, якщо умова тригера не виконана (лише для trigger). |
sequence.steps.waiting_type *Обов'язково для delay / trigger | String enum. Одиниця часу для очікування: minutes, hours, days. |
sequence.steps.waiting_val *Обов'язково для delay / trigger | Integer. Кількість одиниць часу для очікування. Обмеження: minutes ≤ 43200, hours ≤ 720, days ≤ 30. |
sequence.steps.action *Обов'язково для linkedin / trigger | String enum. Дія для виконання або подія для відстеження. Дивіться підтримувані значення нижче. |
sequence.steps.goal_name *Обов'язково для goal | String. Мітка для цього цільового кроку, наприклад Replied, Connected. Блок goal має бути останнім кроком у гілці — він не може мати next і не може бути першим кроком послідовності. |
sequence.steps.content_slots *Обов'язково для email | Integer (мін. 1, макс. 15). Кількість A/B-варіантів контенту для цього email-кроку. |
sequence.steps.subject | String або null. Тема email (лише для email); підтримує {{variables}}. Обов'язково для кроку linkedin з action=in_mail. |
sequence.steps.body *Обов'язково для invite / message / in_mail | String (HTML). Тіло повідомлення для LinkedIn-дій, що надсилають текст. Не може бути порожнім. |
sequence.steps.value *Обов'язково для endorse_skills | Integer (1–5) для endorse_skills. Масив з 1–2 унікальних цілих чисел з [1, 2, 3] для check_connection_level. |
| Тип кроку | Значення action | Опис |
|---|---|---|
linkedin | visit | Відвідати профіль проспекта в LinkedIn. |
linkedin | like | Лайкнути публікацію в профілі проспекта. |
linkedin | follow | Підписатися на проспекта в LinkedIn. |
linkedin | invite | Надіслати запит на з'єднання (потрібен body). |
linkedin | message | Надіслати особисте повідомлення в LinkedIn (потрібен body). |
linkedin | in_mail | Надіслати LinkedIn InMail (потрібні body та subject). |
linkedin | connected_on_linkedin | Перевірити, чи прийняв проспект запит на підключення у LinkedIn. |
linkedin | check_connection_level | Перевірити рівень з'єднання з проспектом. |
linkedin | endorse_skills | Підтримати навички в профілі проспекта (потрібен value 1–5). |
trigger | open | Очікувати, чи відкриє проспект email. |
trigger | click | Очікувати, чи клікне проспект посилання в email. |
trigger | calendly | Очікувати, чи запише проспект зустріч через Calendly. |
trigger | connected_on_linkedin | Системний тригер. Обов'язковий після кроку connected_on_linkedin у LinkedIn. Поле next кроку connected_on_linkedin має вказувати на цей тригер. |
trigger | check_connection_level | Розгалуження залежно від рівня з'єднання проспекта в LinkedIn. |
trigger | linkedin_in_mail_sent | Системний тригер. Обов'язковий після кроку in_mail у LinkedIn. Поле next кроку in_mail має вказувати на цей тригер. |
| id | zone | zone_time |
|---|---|---|
| 1 | Pacific/Midway | -11:00 |
| 2 | US/Samoa | -11:00 |
| 3 | US/Hawaii | -10:00 |
| 4 | US/Alaska | -09:00 |
| 5 | America/Los Angeles | -08:00 |
| 6 | America/Tijuana | -08:00 |
| 7 | PST8PDT | -08:00 |
| 8 | America/Chihuahua | -07:00 |
| 9 | America/Mazatlan | -07:00 |
| 10 | Canada/Mountain | -07:00 |
| 11 | US/Arizona | -07:00 |
| 12 | US/Mountain | -07:00 |
| 13 | Canada/Saskatchewan | -06:00 |
| 14 | America/Mexico City | -06:00 |
| 15 | America/Monterrey | -06:00 |
| 16 | US/Central | -06:00 |
| 17 | America/Bogota | -05:00 |
| 18 | America/Lima | -05:00 |
| 19 | America/Chicago | -06:00 |
| 20 | America/Toronto | -05:00 |
| 21 | America/New York | -05:00 |
| 22 | Canada/Eastern | -05:00 |
| 23 | US/East-Indiana | -05:00 |
| 24 | US/Eastern | -05:00 |
| 25 | America/La Paz | -04:00 |
| 26 | America/Santiago | -03:00 |
| 27 | Canada/Atlantic | -04:00 |
| 28 | America/Buenos Aires | -03:00 |
| 29 | America/Sao Paulo | -03:00 |
| 30 | America/Montevideo | -03:00 |
| 31 | Canada/Newfoundland | -03:30 |
| 32 | Atlantic/South Georgia | -02:00 |
| 33 | Atlantic/Cape Verde | -01:00 |
| 34 | Atlantic/Azores | -01:00 |
| 35 | Africa/Monrovia | +00:00 |
| 36 | UTC | +00:00 |
| 37 | Africa/Casablanca | +00:00 |
| 38 | Europe/Dublin | +00:00 |
| 39 | Europe/Lisbon | +00:00 |
| 40 | Europe/London | +00:00 |
| 41 | Europe/Amsterdam | +01:00 |
| 42 | Europe/Belgrade | +01:00 |
| 43 | Europe/Berlin | +01:00 |
| 44 | Europe/Bratislava | +01:00 |
| 45 | Europe/Brussels | +01:00 |
| 46 | Europe/Budapest | +01:00 |
| 47 | Europe/Copenhagen | +01:00 |
| 48 | Europe/Ljubljana | +01:00 |
| 49 | Europe/Madrid | +01:00 |
| 50 | Europe/Paris | +01:00 |
| 51 | Europe/Prague | +01:00 |
| 52 | Europe/Rome | +01:00 |
| 53 | Europe/Sarajevo | +01:00 |
| 54 | Europe/Skopje | +01:00 |
| 55 | Europe/Stockholm | +01:00 |
| 56 | Europe/Vienna | +01:00 |
| 57 | Europe/Warsaw | +01:00 |
| 58 | Europe/Zagreb | +01:00 |
| 59 | Africa/Cairo | +02:00 |
| 60 | Africa/Harare | +02:00 |
| 61 | Asia/Jerusalem | +02:00 |
| 62 | Europe/Athens | +02:00 |
| 63 | Europe/Bucharest | +02:00 |
| 64 | Europe/Helsinki | +02:00 |
| 65 | Europe/Istanbul | +03:00 |
| 66 | Europe/Kyiv | +02:00 |
| 67 | Europe/Riga | +02:00 |
| 68 | Europe/Sofia | +02:00 |
| 69 | Europe/Tallinn | +02:00 |
| 70 | Europe/Vilnius | +02:00 |
| 71 | Africa/Nairobi | +03:00 |
| 72 | Asia/Baghdad | +03:00 |
| 73 | Asia/Kuwait | +03:00 |
| 74 | Asia/Riyadh | +03:00 |
| 75 | Europe/Minsk | +03:00 |
| 76 | Europe/Moscow | +03:00 |
| 77 | Europe/Volgograd | +03:00 |
| 78 | Asia/Baku | +04:00 |
| 79 | Asia/Dubai | +04:00 |
| 80 | Asia/Muscat | +04:00 |
| 81 | Asia/Tbilisi | +04:00 |
| 82 | Asia/Yerevan | +04:00 |
| 83 | Asia/Kabul | +04:30 |
| 84 | Asia/Karachi | +05:00 |
| 85 | Asia/Tashkent | +05:00 |
| 86 | Asia/Calcutta | +05:30 |
| 87 | Asia/Kolkata | +05:30 |
| 88 | Asia/Kathmandu | +05:45 |
| 89 | Asia/Almaty | +06:00 |
| 90 | Asia/Dhaka | +06:00 |
| 91 | Asia/Urumqi | +06:00 |
| 92 | Asia/Rangoon | +06:30 |
| 93 | Asia/Bangkok | +07:00 |
| 94 | Asia/Jakarta | +07:00 |
| 95 | Asia/Novosibirsk | +07:00 |
| 96 | Asia/Krasnoyarsk | +07:00 |
| 97 | Asia/Shanghai | +08:00 |
| 98 | Asia/Hong Kong | +08:00 |
| 99 | Asia/Chongqing | +08:00 |
| 100 | Asia/Kuala Lumpur | +08:00 |
| 101 | Asia/Taipei | +08:00 |
| 102 | Asia/Ulan Bator | +08:00 |
| 103 | Australia/Perth | +08:00 |
| 104 | Hongkong | +08:00 |
| 105 | Singapore | +08:00 |
| 106 | Asia/Irkutsk | +08:00 |
| 107 | Asia/Seoul | +09:00 |
| 108 | Asia/Tokyo | +09:00 |
| 109 | Asia/Yakutsk | +09:00 |
| 110 | Australia/Adelaide | +10:30 |
| 111 | Australia/Darwin | +09:30 |
| 112 | Australia/Brisbane | +10:00 |
| 113 | Australia/Canberra | +11:00 |
| 114 | Australia/Hobart | +11:00 |
| 115 | Australia/Melbourne | +11:00 |
| 116 | Australia/Sydney | +11:00 |
| 117 | Pacific/Guam | +10:00 |
| 118 | Pacific/Port Moresby | +10:00 |
| 119 | Asia/Vladivostok | +10:00 |
| 120 | Asia/Magadan | +11:00 |
| 121 | Asia/Kamchatka | +12:00 |
| 122 | Pacific/Auckland | +13:00 |
| 123 | Pacific/Fiji | +12:00 |
| 124 | Pacific/Wallis | +12:00 |
| 125 | Pacific/Tongatapu | +13:00 |
| 126 | Pacific/Kiritimati | +14:00 |
| 127 | Africa/Abidjan | +00:00 |
| 128 | Africa/Accra | +00:00 |
| 129 | Africa/Addis Ababa | +03:00 |
| 130 | Africa/Algiers | +01:00 |
| 131 | Africa/Asmara | +03:00 |
| 132 | Africa/Bamako | +00:00 |
| 133 | Africa/Bangui | +01:00 |
| 134 | Africa/Banjul | +00:00 |
| 135 | Africa/Bissau | +00:00 |
| 136 | Africa/Blantyre | +02:00 |
| 137 | Africa/Brazzaville | +01:00 |
| 138 | Africa/Bujumbura | +02:00 |
| 139 | Africa/Ceuta | +02:00 |
| 140 | Africa/Conakry | +00:00 |
| 141 | Africa/Dakar | +00:00 |
| 142 | Africa/Dar es Salaam | +03:00 |
| 143 | Africa/Djibouti | +03:00 |
| 144 | Africa/Douala | +01:00 |
| 145 | Africa/El Aaiun | +01:00 |
| 146 | Africa/Freetown | +00:00 |
| 147 | Africa/Gaborone | +02:00 |
| 148 | Africa/Johannesburg | +02:00 |
| 149 | Africa/Juba | +03:00 |
| 150 | Africa/Kampala | +03:00 |
| 151 | Africa/Khartoum | +02:00 |
| 152 | Africa/Kigali | +02:00 |
| 153 | Africa/Kinshasa | +01:00 |
| 154 | Africa/Lagos | +01:00 |
| 155 | Africa/Libreville | +01:00 |
| 156 | Africa/Lome | +00:00 |
| 157 | Africa/Luanda | +01:00 |
| 158 | Africa/Lubumbashi | +02:00 |
| 159 | Africa/Lusaka | +02:00 |
| 160 | Africa/Malabo | +01:00 |
| 161 | Africa/Maputo | +02:00 |
| 162 | Africa/Maseru | +02:00 |
| 163 | Africa/Mbabane | +02:00 |
| 164 | Africa/Mogadishu | +03:00 |
| 165 | Africa/Ndjamena | +01:00 |
| 166 | Africa/Niamey | +01:00 |
| 167 | Africa/Nouakchott | +00:00 |
| 168 | Africa/Ouagadougou | +00:00 |
| 169 | Africa/Porto-Novo | +01:00 |
| 170 | Africa/Sao Tome | +00:00 |
| 171 | Africa/Tripoli | +02:00 |
| 172 | Africa/Tunis | +01:00 |
| 173 | Africa/Windhoek | +02:00 |
| 174 | America/Adak | -09:00 |
| 175 | America/Anchorage | -08:00 |
| 176 | America/Anguilla | -04:00 |
| 177 | America/Antigua | -04:00 |
| 178 | America/Araguaina | -03:00 |
| 179 | America/Argentina/Buenos Aires | -03:00 |
| 180 | America/Argentina/Catamarca | -03:00 |
| 181 | America/Argentina/Cordoba | -03:00 |
| 182 | America/Argentina/Jujuy | -03:00 |
| 183 | America/Argentina/La Rioja | -03:00 |
| 184 | America/Argentina/Mendoza | -03:00 |
| 185 | America/Argentina/Rio Gallegos | -03:00 |
| 186 | America/Argentina/Salta | -03:00 |
| 187 | America/Argentina/San Juan | -03:00 |
| 188 | America/Argentina/San Luis | -03:00 |
| 189 | America/Argentina/Tucuman | -03:00 |
| 190 | America/Argentina/Ushuaia | -03:00 |
| 191 | America/Aruba | -04:00 |
| 192 | America/Asuncion | -04:00 |
| 193 | America/Atikokan | -05:00 |
| 194 | America/Bahia | -03:00 |
| 195 | America/Bahia Banderas | -05:00 |
| 196 | America/Barbados | -04:00 |
| 197 | America/Belem | -03:00 |
| 198 | America/Belize | -06:00 |
| 199 | America/Blanc-Sablon | -04:00 |
| 200 | America/Boa Vista | -04:00 |
| 201 | America/Boise | -06:00 |
| 202 | America/Cambridge Bay | -06:00 |
| 203 | America/Campo Grande | -04:00 |
| 204 | America/Cancun | -05:00 |
| 205 | America/Caracas | -04:00 |
| 206 | America/Cayenne | -03:00 |
| 207 | America/Cayman | -05:00 |
| 208 | America/Costa Rica | -06:00 |
| 209 | America/Creston | -07:00 |
| 210 | America/Cuiaba | -04:00 |
| 211 | America/Curacao | -04:00 |
| 212 | America/Danmarkshavn | +00:00 |
| 213 | America/Dawson | -07:00 |
| 214 | America/Dawson Creek | -07:00 |
| 215 | America/Denver | -06:00 |
| 216 | America/Detroit | -04:00 |
| 217 | America/Dominica | -04:00 |
| 218 | America/Edmonton | -06:00 |
| 219 | America/Eirunepe | -05:00 |
| 220 | America/El Salvador | -06:00 |
| 221 | America/Fort Nelson | -07:00 |
| 222 | America/Fortaleza | -03:00 |
| 223 | America/Glace Bay | -03:00 |
| 224 | America/Godthab | -02:00 |
| 225 | America/Goose Bay | -03:00 |
| 226 | America/Grand Turk | -04:00 |
| 227 | America/Grenada | -04:00 |
| 228 | America/Guadeloupe | -04:00 |
| 229 | America/Guatemala | -06:00 |
| 230 | America/Guayaquil | -05:00 |
| 231 | America/Guyana | -04:00 |
| 232 | America/Halifax | -03:00 |
| 233 | America/Havana | -04:00 |
| 234 | America/Hermosillo | -07:00 |
| 235 | America/Indiana/Indianapolis | -04:00 |
| 236 | America/Indiana/Knox | -05:00 |
| 237 | America/Indiana/Marengo | -04:00 |
| 238 | America/Indiana/Petersburg | -04:00 |
| 239 | America/Indiana/Tell City | -05:00 |
| 240 | America/Indiana/Vevay | -04:00 |
| 241 | America/Indiana/Vincennes | -04:00 |
| 242 | America/Indiana/Winamac | -04:00 |
| 243 | America/Inuvik | -06:00 |
| 244 | America/Iqaluit | -04:00 |
| 245 | America/Jamaica | -05:00 |
| 246 | America/Juneau | -08:00 |
| 247 | America/Kentucky/Louisville | -04:00 |
| 248 | America/Kentucky/Monticello | -04:00 |
| 249 | America/Kralendijk | -04:00 |
| 252 | America/Lower Princes | -04:00 |
| 253 | America/Maceio | -03:00 |
| 254 | America/Managua | -06:00 |
| 255 | America/Manaus | -04:00 |
| 256 | America/Marigot | -04:00 |
| 257 | America/Martinique | -04:00 |
| 258 | America/Matamoros | -05:00 |
| 259 | America/Menominee | -05:00 |
| 260 | America/Merida | -05:00 |
| 261 | America/Metlakatla | -08:00 |
| 263 | America/Miquelon | -02:00 |
| 264 | America/Moncton | -03:00 |
| 265 | America/Montserrat | -04:00 |
| 266 | America/Nassau | -04:00 |
| 268 | America/Nipigon | -04:00 |
| 269 | America/Nome | -08:00 |
| 270 | America/Noronha | -02:00 |
| 271 | America/North Dakota/Beulah | -05:00 |
| 272 | America/North Dakota/Center | -05:00 |
| 273 | America/North Dakota/New Salem | -05:00 |
| 274 | America/Ojinaga | -06:00 |
| 275 | America/Panama | -05:00 |
| 276 | America/Pangnirtung | -04:00 |
| 277 | America/Paramaribo | -03:00 |
| 278 | America/Phoenix | -07:00 |
| 279 | America/Port-au-Prince | -04:00 |
| 280 | America/Port of Spain | -04:00 |
| 281 | America/Porto Velho | -04:00 |
| 282 | America/Puerto Rico | -04:00 |
| 283 | America/Punta Arenas | -03:00 |
| 284 | America/Rainy River | -05:00 |
| 285 | America/Rankin Inlet | -05:00 |
| 286 | America/Recife | -03:00 |
| 287 | America/Regina | -06:00 |
| 288 | America/Resolute | -05:00 |
| 289 | America/Rio Branco | -05:00 |
| 290 | America/Santarem | -03:00 |
| 291 | America/Santo Domingo | -04:00 |
| 293 | America/Scoresbysund | +00:00 |
| 294 | America/Sitka | -08:00 |
| 295 | America/St Barthelemy | -04:00 |
| 296 | America/St Johns | -02:30 |
| 297 | America/St Kitts | -04:00 |
| 298 | America/St Lucia | -04:00 |
| 299 | America/St Thomas | -04:00 |
| 300 | America/St Vincent | -04:00 |
| 301 | America/Swift Current | -06:00 |
| 302 | America/Tegucigalpa | -06:00 |
| 303 | America/Thule | -03:00 |
| 304 | America/Thunder Bay | -04:00 |
| 305 | America/Tortola | -04:00 |
| 306 | America/Vancouver | -07:00 |
| 307 | America/Whitehorse | -07:00 |
| 308 | America/Winnipeg | -05:00 |
| 309 | America/Yakutat | -08:00 |
| 310 | America/Yellowknife | -06:00 |
| 311 | Antarctica/Casey | +08:00 |
| 312 | Antarctica/Davis | +07:00 |
| 313 | Antarctica/DumontDUrville | +10:00 |
| 314 | Antarctica/Macquarie | +11:00 |
| 315 | Antarctica/Mawson | +05:00 |
| 316 | Antarctica/McMurdo | +12:00 |
| 317 | Antarctica/Palmer | -03:00 |
| 318 | Antarctica/Rothera | -03:00 |
| 319 | Antarctica/Syowa | +03:00 |
| 320 | Antarctica/Troll | +02:00 |
| 321 | Antarctica/Vostok | +06:00 |
| 322 | Arctic/Longyearbyen | +02:00 |
| 323 | Asia/Aden | +03:00 |
| 324 | Asia/Amman | +03:00 |
| 325 | Asia/Anadyr | +12:00 |
| 326 | Asia/Aqtau | +05:00 |
| 327 | Asia/Aqtobe | +05:00 |
| 328 | Asia/Ashgabat | +05:00 |
| 329 | Asia/Atyrau | +05:00 |
| 330 | Asia/Bahrain | +03:00 |
| 331 | Asia/Barnaul | +07:00 |
| 332 | Asia/Beirut | +03:00 |
| 333 | Asia/Bishkek | +06:00 |
| 334 | Asia/Brunei | +08:00 |
| 335 | Asia/Chita | +09:00 |
| 336 | Asia/Choibalsan | +08:00 |
| 337 | Asia/Colombo | +05:30 |
| 338 | Asia/Damascus | +03:00 |
| 339 | Asia/Dili | +09:00 |
| 340 | Asia/Dushanbe | +05:00 |
| 341 | Asia/Famagusta | +03:00 |
| 342 | Asia/Gaza | +03:00 |
| 343 | Asia/Hebron | +03:00 |
| 344 | Asia/Ho Chi Minh | +07:00 |
| 346 | Asia/Hovd | +07:00 |
| 347 | Asia/Jayapura | +09:00 |
| 348 | Asia/Khandyga | +09:00 |
| 350 | Asia/Kuching | +08:00 |
| 351 | Asia/Macau | +08:00 |
| 352 | Asia/Makassar | +08:00 |
| 353 | Asia/Manila | +08:00 |
| 354 | Asia/Nicosia | +03:00 |
| 355 | Asia/Novokuznetsk | +07:00 |
| 356 | Asia/Omsk | +06:00 |
| 357 | Asia/Oral | +05:00 |
| 358 | Asia/Phnom Penh | +07:00 |
| 359 | Asia/Pontianak | +07:00 |
| 360 | Asia/Pyongyang | +09:00 |
| 361 | Asia/Qatar | +03:00 |
| 362 | Asia/Qostanay | +06:00 |
| 363 | Asia/Qyzylorda | +05:00 |
| 364 | Asia/Sakhalin | +11:00 |
| 365 | Asia/Samarkand | +05:00 |
| 366 | Asia/Singapore | +08:00 |
| 367 | Asia/Srednekolymsk | +11:00 |
| 368 | Asia/Tehran | +04:30 |
| 369 | Asia/Thimphu | +06:00 |
| 370 | Asia/Tomsk | +07:00 |
| 371 | Asia/Ulaanbaatar | +08:00 |
| 372 | Asia/Ust-Nera | +10:00 |
| 373 | Asia/Vientiane | +07:00 |
| 374 | Asia/Yangon | +06:30 |
| 375 | Asia/Yekaterinburg | +05:00 |
| 376 | Atlantic/Bermuda | -03:00 |
| 377 | Atlantic/Canary | +01:00 |
| 379 | Atlantic/Faroe | +01:00 |
| 380 | Atlantic/Madeira | +01:00 |
| 381 | Atlantic/Reykjavik | +00:00 |
| 383 | Atlantic/St Helena | +00:00 |
| 384 | Atlantic/Stanley | -03:00 |
| 385 | Australia/Broken Hill | +09:30 |
| 386 | Australia/Currie | +10:00 |
| 387 | Australia/Eucla | +08:45 |
| 388 | Australia/Lindeman | +10:00 |
| 389 | Australia/Lord Howe | +10:30 |
| 390 | Europe/Andorra | +02:00 |
| 391 | Europe/Astrakhan | +04:00 |
| 392 | Europe/Busingen | +02:00 |
| 393 | Europe/Chisinau | +03:00 |
| 394 | Europe/Gibraltar | +02:00 |
| 395 | Europe/Guernsey | +01:00 |
| 396 | Europe/Isle of Man | +01:00 |
| 397 | Europe/Jersey | +01:00 |
| 398 | Europe/Kaliningrad | +02:00 |
| 399 | Europe/Kirov | +03:00 |
| 400 | Europe/Luxembourg | +02:00 |
| 401 | Europe/Malta | +02:00 |
| 402 | Europe/Mariehamn | +03:00 |
| 403 | Europe/Monaco | +02:00 |
| 404 | Europe/Oslo | +02:00 |
| 405 | Europe/Podgorica | +02:00 |
| 406 | Europe/Samara | +04:00 |
| 407 | Europe/San Marino | +02:00 |
| 408 | Europe/Saratov | +04:00 |
| 409 | Europe/Simferopol | +03:00 |
| 410 | Europe/Tirane | +02:00 |
| 411 | Europe/Ulyanovsk | +04:00 |
| 412 | Europe/Uzhgorod | +03:00 |
| 413 | Europe/Vaduz | +02:00 |
| 414 | Europe/Vatican | +02:00 |
| 415 | Europe/Zaporozhye | +03:00 |
| 416 | Europe/Zurich | +02:00 |
| 417 | Indian/Antananarivo | +03:00 |
| 418 | Indian/Chagos | +06:00 |
| 419 | Indian/Christmas | +07:00 |
| 420 | Indian/Cocos | +06:30 |
| 421 | Indian/Comoro | +03:00 |
| 422 | Indian/Kerguelen | +05:00 |
| 423 | Indian/Mahe | +04:00 |
| 424 | Indian/Maldives | +05:00 |
| 425 | Indian/Mauritius | +04:00 |
| 426 | Indian/Mayotte | +03:00 |
| 427 | Indian/Reunion | +04:00 |
| 428 | Pacific/Apia | +13:00 |
| 429 | Pacific/Bougainville | +11:00 |
| 430 | Pacific/Chatham | +12:45 |
| 431 | Pacific/Chuuk | +10:00 |
| 432 | Pacific/Easter | -06:00 |
| 433 | Pacific/Efate | +11:00 |
| 434 | Pacific/Enderbury | +13:00 |
| 435 | Pacific/Fakaofo | +13:00 |
| 436 | Pacific/Funafuti | +12:00 |
| 437 | Pacific/Galapagos | -06:00 |
| 438 | Pacific/Gambier | -09:00 |
| 439 | Pacific/Guadalcanal | +11:00 |
| 440 | Pacific/Honolulu | -10:00 |
| 441 | Pacific/Kosrae | +11:00 |
| 442 | Pacific/Kwajalein | +12:00 |
| 443 | Pacific/Majuro | +12:00 |
| 444 | Pacific/Marquesas | -09:30 |
| 445 | Pacific/Nauru | +12:00 |
| 446 | Pacific/Niue | -11:00 |
| 447 | Pacific/Norfolk | +11:00 |
| 448 | Pacific/Noumea | +11:00 |
| 449 | Pacific/Pago Pago | -11:00 |
| 450 | Pacific/Palau | +09:00 |
| 451 | Pacific/Pitcairn | -08:00 |
| 452 | Pacific/Pohnpei | +11:00 |
| 454 | Pacific/Rarotonga | -10:00 |
| 455 | Pacific/Saipan | +10:00 |
| 456 | Pacific/Tahiti | -10:00 |
| 457 | Pacific/Tarawa | +12:00 |
| 458 | Pacific/Wake | +12:00 |
| id | name | code | symbol |
|---|---|---|---|
| 1 | US Dollar | USD | $ |
| 2 | Canadian Dollar | CAD | CA$ |
| 3 | Euro | EUR | € |
| 4 | United Arab Emirates Dirham | AED | AED |
| 5 | Afghan Afghani | AFN | Af |
| 6 | Albanian Lek | ALL | ALL |
| 7 | Armenian Dram | AMD | AMD |
| 8 | Argentine Peso | ARS | AR$ |
| 9 | Australian Dollar | AUD | AU$ |
| 10 | Azerbaijani Manat | AZN | man. |
| 11 | Bosnia-Herzegovina Convertible Mark | BAM | KM |
| 12 | Bangladeshi Taka | BDT | Tk |
| 13 | Bulgarian Lev | BGN | BGN |
| 14 | Bahraini Dinar | BHD | BD |
| 15 | Burundian Franc | BIF | FBu |
| 16 | Brunei Dollar | BND | BN$ |
| 17 | Bolivian Boliviano | BOB | Bs |
| 18 | Brazilian Real | BRL | R$ |
| 19 | Botswanan Pula | BWP | BWP |
| 20 | Belarusian Ruble | BYN | Br |
| 21 | Belize Dollar | BZD | BZ$ |
| 22 | Congolese Franc | CDF | CDF |
| 23 | Swiss Franc | CHF | CHF |
| 24 | Chilean Peso | CLP | CL$ |
| 25 | Chinese Yuan | CNY | CN¥ |
| 26 | Colombian Peso | COP | CO$ |
| 27 | Costa Rican Colón | CRC | ₡ |
| 28 | Cape Verdean Escudo | CVE | CV$ |
| 29 | Czech Republic Koruna | CZK | Kč |
| 30 | Djiboutian Franc | DJF | Fdj |
| 31 | Danish Krone | DKK | Dkr |
| 32 | Dominican Peso | DOP | RD$ |
| 33 | Algerian Dinar | DZD | DA |
| 34 | Estonian Kroon | EEK | Ekr |
| 35 | Egyptian Pound | EGP | EGP |
| 36 | Eritrean Nakfa | ERN | Nfk |
| 37 | Ethiopian Birr | ETB | Br |
| 38 | British Pound Sterling | GBP | £ |
| 39 | Georgian Lari | GEL | GEL |
| 40 | Ghanaian Cedi | GHS | GH₵ |
| 41 | Guinean Franc | GNF | FG |
| 42 | Guatemalan Quetzal | GTQ | GTQ |
| 43 | Hong Kong Dollar | HKD | HK$ |
| 44 | Honduran Lempira | HNL | HNL |
| 45 | Croatian Kuna | HRK | kn |
| 46 | Hungarian Forint | HUF | Ft |
| 47 | Indonesian Rupiah | IDR | Rp |
| 48 | Israeli New Sheqel | ILS | ₪ |
| 49 | Indian Rupee | INR | Rs |
| 50 | Iraqi Dinar | IQD | IQD |
| 51 | Iranian Rial | IRR | IRR |
| 52 | Icelandic Króna | ISK | Ikr |
| 53 | Jamaican Dollar | JMD | J$ |
| 54 | Jordanian Dinar | JOD | JD |
| 55 | Japanese Yen | JPY | ¥ |
| 56 | Kenyan Shilling | KES | Ksh |
| 57 | Cambodian Riel | KHR | KHR |
| 58 | Comorian Franc | KMF | CF |
| 59 | South Korean Won | KRW | ₩ |
| 60 | Kuwaiti Dinar | KWD | KD |
| 61 | Kazakhstani Tenge | KZT | KZT |
| 62 | Lebanese Pound | LBP | LB£ |
| 63 | Sri Lankan Rupee | LKR | SLRs |
| 64 | Lithuanian Litas | LTL | Lt |
| 65 | Latvian Lats | LVL | Ls |
| 66 | Libyan Dinar | LYD | LD |
| 67 | Moroccan Dirham | MAD | MAD |
| 68 | Moldovan Leu | MDL | MDL |
| 69 | Malagasy Ariary | MGA | MGA |
| 70 | Macedonian Denar | MKD | MKD |
| 71 | Myanma Kyat | MMK | MMK |
| 72 | Macanese Pataca | MOP | MOP$ |
| 73 | Mauritian Rupee | MUR | MURs |
| 74 | Mexican Peso | MXN | MX$ |
| 75 | Malaysian Ringgit | MYR | RM |
| 76 | Mozambican Metical | MZN | MTn |
| 77 | Namibian Dollar | NAD | N$ |
| 78 | Nigerian Naira | NGN | ₦ |
| 79 | Nicaraguan Córdoba | NIO | C$ |
| 80 | Norwegian Krone | NOK | Nkr |
| 81 | Nepalese Rupee | NPR | NPRs |
| 82 | New Zealand Dollar | NZD | NZ$ |
| 83 | Omani Rial | OMR | OMR |
| 84 | Panamanian Balboa | PAB | B/. |
| 85 | Peruvian Nuevo Sol | PEN | S/. |
| 86 | Philippine Peso | PHP | ₱ |
| 87 | Pakistani Rupee | PKR | PKRs |
| 88 | Polish Zloty | PLN | zł |
| 89 | Paraguayan Guarani | PYG | ₲ |
| 90 | Qatari Rial | QAR | QR |
| 91 | Romanian Leu | RON | RON |
| 92 | Serbian Dinar | RSD | din. |
| 93 | Russian Ruble | RUB | RUB |
| 94 | Rwandan Franc | RWF | RWF |
| 95 | Saudi Riyal | SAR | SR |
| 96 | Sudanese Pound | SDG | SDG |
| 97 | Swedish Krona | SEK | Skr |
| 98 | Singapore Dollar | SGD | S$ |
| 99 | Somali Shilling | SOS | Ssh |
| 100 | Syrian Pound | SYP | SY£ |
| 101 | Thai Baht | THB | ฿ |
| 102 | Tunisian Dinar | TND | DT |
| 103 | Tongan Paʻanga | TOP | T$ |
| 104 | Turkish Lira | TRY | TL |
| 105 | Trinidad and Tobago Dollar | TTD | TT$ |
| 106 | New Taiwan Dollar | TWD | NT$ |
| 107 | Tanzanian Shilling | TZS | TSh |
| 108 | Ukrainian Hryvnia | UAH | ₴ |
| 109 | Ugandan Shilling | UGX | USh |
| 110 | Uruguayan Peso | UYU | $U |
| 111 | Uzbekistan Som | UZS | UZS |
| 112 | Venezuelan Bolívar | VEF | Bs.F. |
| 113 | Vietnamese Dong | VND | ₫ |
| 114 | CFA Franc BEAC | XAF | FCFA |
| 115 | CFA Franc BCEAO | XOF | CFA |
| 116 | Yemeni Rial | YER | YR |
| 117 | South African Rand | ZAR | R |
| 118 | Zambian Kwacha | ZMK | ZK |
| 119 | Zimbabwean Dollar | ZWL | ZWL$ |
<?php function createCampaign() { $token = getAccessToken(); $requestParameters = [ 'title' => 'My top campaign', 'email_accounts' => [649079], 'linkedin_accounts' => [], 'priority' => 'high', 'tracking' => [ 'open' => true, 'link_click' => true ], 'sending_settings' => [ 'sending_priority' => 'first_email', 'daily_sending_all' => 10, 'daily_sending_new_recipients' => 5, 'skip_unverifiable' => true, 'skip_unverified' => false, 'skip_who_replied' => true, 'skip_company_domain_who_replied' => false, 'skip_recipients_without_variables_data' => true, 'skip_other_recipients_email_addresses' => true, 'skip_recipients_added_to_my_another_campaign' => false, 'skip_recipients_added_to_team_another_campaign' => false, 'one_click_unsubscribe' => true, 'delay_type' => 'random', 'delay_from' => 600, 'delay_to' => 900 ], 'recipients' => [ 'list_id' => 32, 'black_list_id' => 8 ], 'schedule_id' => 4, 'start_campaign_at' => '2027-03-25 09:00:00', 'complete_campaign_at' => '2027-03-28 06:00:00', 'timezone' => 'America/New_York', 'complete_campaign_after_last_step' => false, 'archive_in_months' => 3, 'provider_matching' => false, 'sequence' => [ 'entry' => '1773996379996', 'steps' => [ [ '_ref' => '1773996379996', 'type' => 'email', 'content_slots' => 3, 'next' => '1774364404811' ], [ '_ref' => '1774364404811', 'type' => 'goal', 'goal_name' => 'end' ] ] ] ]; $options = [ CURLOPT_URL => 'https://api.snov.io/v2/campaigns/create', CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true, CURLOPT_POST => true, CURLOPT_POSTFIELDS => json_encode($requestParameters), CURLOPT_HTTPHEADER => [ 'Authorization: Bearer ' . $token, 'Content-Type: application/json', ], ]; $ch = curl_init(); curl_setopt_array($ch, $options); $res = json_decode(curl_exec($ch), true); curl_close($ch); return $res; } ?>
import json import requests def create_campaign(): token = get_access_token() headers = { 'Authorization': 'Bearer ' + token, 'Content-Type': 'application/json' } request_parameters = { 'title': 'My top campaign', 'email_accounts': [649079], 'linkedin_accounts': [], 'priority': 'high', 'tracking': { 'open': True, 'link_click': True }, 'sending_settings': { 'sending_priority': 'first_email', 'daily_sending_all': 10, 'daily_sending_new_recipients': 5, 'skip_unverifiable': True, 'skip_unverified': False, 'skip_who_replied': True, 'skip_company_domain_who_replied': False, 'skip_recipients_without_variables_data': True, 'skip_other_recipients_email_addresses': True, 'skip_recipients_added_to_my_another_campaign': False, 'skip_recipients_added_to_team_another_campaign': False, 'one_click_unsubscribe': True, 'delay_type': 'random', 'delay_from': 600, 'delay_to': 900 }, 'recipients': { 'list_id': 32, 'black_list_id': 8 }, 'schedule_id': 4, 'start_campaign_at': '2027-03-25 09:00:00', 'complete_campaign_at': '2027-03-28 06:00:00', 'timezone': 'America/New_York', 'complete_campaign_after_last_step': False, 'archive_in_months': 3, 'provider_matching': False, 'sequence': { 'entry': '1773996379996', 'steps': [ { '_ref': '1773996379996', 'type': 'email', 'content_slots': 3, 'next': '1774364404811' }, { '_ref': '1774364404811', 'type': 'goal', 'goal_name': 'end' } ] } } res = requests.post( 'https://api.snov.io/v2/campaigns/create', json=request_parameters, headers=headers ) return json.loads(res.text)
{
"success": true,
"data": {
"id": 37505,
"status": "new",
"title": "My top campaign",
"email_accounts": [649079],
"linkedin_accounts": [],
"priority": "high",
"tracking": {
"open": true,
"link_click": true
},
"sending_settings": {
"sending_priority": "first_email",
"daily_sending_all": 10,
"daily_sending_new_recipients": 5,
"skip_unverifiable": true,
"skip_unverified": false,
"skip_who_replied": true,
"skip_company_domain_who_replied": false,
"skip_recipients_without_variables_data": true,
"skip_other_recipients_email_addresses": true,
"skip_recipients_added_to_my_another_campaign": false,
"skip_recipients_added_to_team_another_campaign": false,
"one_click_unsubscribe": true,
"delay_type": "random",
"delay_from": 600,
"delay_to": 900
},
"recipients": {
"list_id": 32,
"black_list_id": 8
},
"schedule_id": 4,
"start_campaign_at": "2027-03-25 09:00:00",
"complete_campaign_at": "2027-03-28 06:00:00",
"timezone": "America/New_York",
"complete_campaign_after_last_step": false,
"archive_in_months": 3,
"provider_matching": false,
"sequence": {
"entry": "1773996379996",
"steps": [
{
"_ref": "1773996379996",
"type": "email",
"content_slots": 3,
"content": [
{ "id": 17739963799960, "plain_text": false, "usage": "active" },
{ "id": 17739963799961, "plain_text": false, "usage": "active" },
{ "id": 17739963799962, "plain_text": false, "usage": "active" }
],
"next": "1774364404811"
},
{
"_ref": "1774364404811",
"type": "goal",
"goal_name": "end"
}
]
}
}
}
success | Boolean. true, якщо кампанію створено. |
data.id | ID створеної кампанії. |
data.status | Статус кампанії. Нові кампанії повертаються зі статусом new. |
data.title | Назва кампанії. |
data.email_accounts | Масив ID акаунтів email-відправників, прикріплених до кампанії. |
data.linkedin_accounts | Масив ID акаунтів LinkedIn, прикріплених до кампанії. |
data.priority | Пріоритет кампанії (low, medium, high). |
data.tracking | Налаштування відстеження email (open, link_click). |
data.sending_settings | Налаштування надсилання, повернені сервером точно так, як були прийняті, включаючи конфігурацію затримки. |
data.recipients | Списки отримувачів (list_id, black_list_id). |
data.schedule_id | ID розкладу надсилання, прикріпленого до кампанії, або null. |
data.start_campaign_at | Дата і час початку надсилання кампанії. |
data.complete_campaign_at | Дата і час зупинки надсилання кампанії. |
data.timezone | Ідентифікатор часового поясу кампанії. |
data.complete_campaign_after_last_step | Чи завершується кампанія автоматично після доставки останнього кроку. |
data.archive_in_months | Період автоархівування в місяцях. |
data.provider_matching | Чи увімкнено відповідність провайдера email. |
data.sequence | Схема кампанії, повернена у тій самій структурі. Кожен крок email доповнюється масивом content, що описує згенеровані слоти контенту (id, plain_text, usage). |
data.deals | Налаштування створення угод, присутні лише якщо deals було передано в запиті. |
GETІнформація про кампанію
Цей метод дозволяє отримати інформацію про конкретну кампанію: підключені акаунти відправників, налаштування відправки, інформацію про список отримувачів та деталі кроків послідовності.
| GET | https://api.snov.io/v2/campaigns/{campaign_id} |
campaign_id *обов'язковий | Унікальний ідентифікатор кампанії, для якої ви хочете переглянути інформацію. |
<?php function getCampaign(int $campaignId) { $token = getAccessToken(); $url = 'https://api.snov.io/v2/campaigns/' . $campaignId; $options = [ CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTPHEADER => [ 'Authorization: Bearer ' . $token, 'Content-Type: application/json', ], ]; $ch = curl_init(); curl_setopt_array($ch, $options); $res = json_decode(curl_exec($ch), true); curl_close($ch); return $res; } ?>
import requests, json def get_campaign(campaign_id): token = get_access_token() headers = { 'Authorization': 'Bearer ' + token, 'Content-Type': 'application/json' } url = 'https://api.snov.io/v2/campaigns/' + str(campaign_id) res = requests.get(url, headers=headers) return json.loads(res.text)
{
"success": true,
"data": {
"id": 37505,
"status": "new",
"title": "My top campaign",
"email_accounts": [649079],
"linkedin_accounts": [],
"priority": "high",
"tracking": {
"open": true,
"link_click": true
},
"sending_settings": {
"sending_priority": "first_email",
"daily_sending_all": 10,
"daily_sending_new_recipients": 5,
"skip_unverifiable": true,
"skip_unverified": false,
"skip_who_replied": true,
"skip_company_domain_who_replied": false,
"skip_recipients_without_variables_data": true,
"skip_other_recipients_email_addresses": true,
"skip_recipients_added_to_my_another_campaign": false,
"skip_recipients_added_to_team_another_campaign": false,
"one_click_unsubscribe": true
},
"recipients": {
"list_id": 32,
"black_list_id": 8
},
"schedule_id": 4,
"start_campaign_at": "2027-03-25 09:00:00",
"complete_campaign_at": "2027-03-28 06:00:00",
"timezone": "America/New_York",
"complete_campaign_after_last_step": false,
"archive_in_months": 3,
"provider_matching": false,
"sequence": {
"entry": "1773996379996",
"steps": [
{
"_ref": "1773996379996",
"type": "email",
"content_slots": 3,
"content": [
{ "id": 17739963799960, "plain_text": false, "usage": "active" },
{ "id": 17739963799961, "plain_text": false, "usage": "active" },
{ "id": 17739963799962, "plain_text": false, "usage": "active" }
],
"next": "1774364404811"
},
{
"_ref": "1774364404811",
"type": "goal",
"goal_name": "end"
}
]
}
}
}
success | Boolean. true, якщо інформацію про кампанію успішно отримано. |
data.id | ID кампанії. |
data.status | Статус кампанії. Новостворені кампанії повертаються зі статусом new. |
data.title | Назва кампанії. |
data.email_accounts | Масив ID акаунтів електронної пошти відправника, прикріплених до кампанії. |
data.linkedin_accounts | Масив ID акаунтів LinkedIn, прикріплених до кампанії. |
data.priority | Пріоритет кампанії (low, medium, high). |
data.tracking | Налаштування відстеження електронних листів (open, link_click). |
data.sending_settings | Налаштування відправки, повернуті в точності так, як були прийняті сервером, включаючи конфігурацію затримки. |
data.recipients | Списки отримувачів (list_id, black_list_id). |
data.schedule_id | ID розкладу відправки, прикріпленого до кампанії, або null. |
data.start_campaign_at | Дата і час початку відправки кампанії. |
data.complete_campaign_at | Дата і час завершення відправки кампанії. |
data.timezone | Ідентифікатор часового поясу, в якому працює кампанія. |
data.complete_campaign_after_last_step | Чи завершується кампанія автоматично після доставки останнього кроку. |
data.archive_in_months | Період автоматичного архівування в місяцях. |
data.provider_matching | Чи увімкнено відповідність провайдерів електронної пошти. |
data.sequence | Блок-схема кампанії, повернута з тією ж структурою. Кожен крок email доповнено масивом content з описом згенерованих слотів контенту (id, plain_text, usage). |
data.deals | Налаштування створення угод, присутні лише якщо deals було передано в запиті. |
PATCHОновити кампанію
Цей метод частково оновлює існуючу outreach-кампанію у вашому workspace snov.io. Змінюються лише поля, включені до тіла запиту; пропущені поля залишаються без змін. Вкладені об'єкти (tracking, sending_settings, recipients, deals) також об'єднуються — надсилання {"tracking": {"open": false}} не очищує link_click. Тіло запиту має таку ж структуру, що й Create campaign, тому можна надіслати будь-яке підмножину з title, priority, email_accounts, linkedin_accounts, tracking, sending_settings, recipients, schedule_id, start_campaign_at, complete_campaign_at, timezone, complete_campaign_after_last_step, archive_in_months, provider_matching, sequence та deals.
Основні налаштування (позначені (core) нижче) доступні для запису лише поки кампанія перебуває у стані new (чернетка) — вони блокуються після переходу кампанії до стану paused, active, scheduled, completed або archived.
Якщо надається sequence, масив повністю замінює наявну блок-схему. Кроки, чий _ref збігається з існуючим числовим ID кроку, оновлюються на місці; кроки з нечисловим _ref створюються як нові; будь-які існуючі кроки, відсутні в масиві, видаляються.
| PATCH | https://api.snov.io/v2/campaigns/{campaign_id} |
campaign_id *обов'язковий (path) | Ціле число. ID кампанії для оновлення. |
title | Рядок. Відображувана назва кампанії. Максимум 255 символів. |
priority | Рядковий enum. Пріоритет надсилання: low, medium, high. |
email_accounts | Масив цілих чисел. ID облікових записів відправника email. Не можна додати email-акаунти, якщо активна кампанія не містить email-кроків. |
linkedin_accounts | Масив цілих чисел. ID облікових записів LinkedIn. Не можна додати LinkedIn-акаунти, якщо активна кампанія не містить LinkedIn-кроків. |
provider_matching | Булевий. Зіставляти провайдера email одержувача з провайдером акаунту відправника. Завжди false для кампаній лише з LinkedIn. |
complete_campaign_after_last_step | Булевий. Зупинити кампанію після того, як усі одержувачі пройдуть останній крок послідовності. |
archive_in_months | Ціле число. Автоматично архівувати після вказаної кількості місяців. Допустимі значення: 1, 2, 3, 6. |
schedule_id | Ціле число або null. ID розкладу надсилання. Неіснуючий ID повертає 404/422. |
start_campaign_at | Рядок (YYYY-MM-DD HH:MM:SS) або null. Дата та час автоматичного запуску кампанії. Не можна додати, якщо поле було відсутнє при створенні; null не змінює наявне значення. |
complete_campaign_at | Рядок (YYYY-MM-DD HH:MM:SS) або null. Дата та час автоматичного завершення кампанії. Має бути пізніше за start_campaign_at. null не змінює наявне значення. |
timezone | Рядок або null. Часовий пояс для полів дати; приймає ідентифікатори часових поясів IANA у форматі Region/City, наприклад America/New_York. Набирає чинності лише якщо в кампанії присутнє поле start_campaign_at. |
recipients (core) | Об'єкт. Налаштування одержувачів. Заблоковано в запущених кампаніях, доступно в чернетці. |
recipients.list_id (core) | Ціле число. ID списку проспектів. |
recipients.black_list_id (core) | Ціле число або null. ID чорного списку для виключення. |
tracking | Об'єкт. Налаштування відстеження email. Ігнорується для кампаній лише з LinkedIn. |
tracking.open | Булевий. Відстежувати відкриття листів. |
tracking.link_click | Булевий. Відстежувати кліки по посиланнях в листах. |
sending_settings | Об'єкт. Керує способом надсилання листів та пропуском одержувачів. |
sending_settings.sending_priority | Рядковий enum. Які листи йдуть першими: first_email або follow_up. |
sending_settings.daily_sending_all | Ціле число або null. Максимальна кількість листів на день для всіх одержувачів. null знімає ліміт. |
sending_settings.daily_sending_new_recipients | Ціле число або null. Максимальна кількість нових одержувачів на день. null знімає ліміт. |
sending_settings.skip_who_replied | Булевий. Припинити follow-up для проспектів, які відповіли. |
sending_settings.skip_company_domain_who_replied | Булевий. Пропускати одержувачів з домену компанії, де хтось відповів. |
sending_settings.skip_unverifiable (core) | Булевий. Пропускати одержувачів, email яких неможливо перевірити. Заблоковано в запущених кампаніях. |
sending_settings.skip_unverified (core) | Булевий. Пропускати одержувачів з неперевіреними email. Заблоковано в запущених кампаніях. |
sending_settings.skip_other_recipients_email_addresses (core) | Булевий. Якщо проспект має кілька email-адрес, надсилати лише на першу при значенні true. Заблоковано в запущених кампаніях. |
sending_settings.skip_recipients_added_to_my_another_campaign (core) | Булевий. Пропускати одержувачів, які вже беруть участь в іншій кампанії цього користувача. Заблоковано в запущених кампаніях. |
sending_settings.skip_recipients_added_to_team_another_campaign (core) | Булевий. Пропускати одержувачів, які беруть участь в кампанії будь-якого члена команди. Заблоковано в запущених кампаніях. |
sending_settings.skip_recipients_without_variables_data | Булевий. Пропускати одержувачів, у яких відсутні значення змінних. |
sending_settings.one_click_unsubscribe | Булевий. Увімкнути заголовок відписки одним кліком у листах. |
deals | Об'єкт або null. Налаштування створення deal в CRM. Передайте null, щоб видалити конфігурацію deals. |
deals.event *Обов'язково для deals | Масив рядків. Події, що створюють deal: open, click, reply. |
deals.pipeline_id *Обов'язково для deals | Ціле число. ID pipeline в CRM. |
deals.stage_id *Обов'язково для deals | Ціле число. ID етапу pipeline. |
deals.potential_value | Ціле число. Прогнозована цінність deal. Має бути позитивним. |
deals.currency | Рядок. Код валюти для значення deal, наприклад USD, EUR. |
sequence | Об'єкт. Повна заміна послідовності кампанії — при наданні замінює всю блок-схему. |
sequence.entry *Обов'язково для sequence | Рядок. _ref першого кроку для виконання. |
sequence.steps *Обов'язково для sequence | Масив об'єктів кроків. Повний список кроків. |
sequence.steps._ref *обов'язковий | Рядок. Ідентифікатор кроку. Числовий _ref оновлює існуючий крок; нечисловий _ref створює новий крок. |
sequence.steps.type *обов'язковий | Рядковий enum. Тип кроку: email, delay, trigger, goal, linkedin. Не можна змінити для існуючих кроків (числовий _ref). |
sequence.steps.next | Рядок або null. _ref кроку, до якого перейти після цього (лінійні блоки: email, linkedin, delay). |
sequence.steps.yes | Рядок. _ref кроку, до якого перейти при виконанні умови тригера (лише trigger). |
sequence.steps.no | Рядок. _ref кроку, до якого перейти при невиконанні умови тригера (лише trigger). |
sequence.steps.waiting_type *Обов'язково для delay / trigger | Рядковий enum. Одиниця часу: minutes, hours, days. |
sequence.steps.waiting_val *Обов'язково для delay / trigger | Ціле число. Кількість одиниць часу для очікування. Мін 1 для кроків delay та trigger. Обмеження за одиницями: minutes ≤ 43200, hours ≤ 720, days ≤ 30. |
sequence.steps.action *Обов'язково для linkedin / trigger | Рядковий enum. Дія для виконання або подія для відстеження. Дивіться підтримувані значення нижче. |
sequence.steps.goal_name *Обов'язково для goal | Рядок. Мітка для цього кроку мети, наприклад Replied, Connected. Блок goal має бути останнім кроком у своїй гілці — він не може мати next і не може бути першим кроком послідовності. |
sequence.steps.content_slots *Обов'язково для email | Ціле число (мін 1, макс 15). Кількість варіантів A/B-контенту. |
sequence.steps.content *Обов'язково для email при оновленні існуючих кроків | Масив об'єктів. Метадані контенту скопійовані з відповіді GET; кожен елемент: {"id": <int>, "plain_text": <bool>, "usage": "active"}. |
sequence.steps.subject | Рядок або null. Тема листа або InMail; підтримує {{variables}}. Необов'язково для email; обов'язково для кроку linkedin з action=in_mail. |
sequence.steps.body *Обов'язково для invite / message / in_mail | Рядок (HTML). Тіло повідомлення для LinkedIn-дій, що надсилають текст. |
sequence.steps.value *Обов'язково для endorse_skills / check_connection_level | Ціле число (1–5) для endorse_skills; масив цілих чисел (допустимі рівні зв'язку) для тригера check_connection_level. |
| visit | Відвідати профіль LinkedIn проспекта. | |
| like | Поставити вподобання публікації в профілі проспекта. | |
| follow | Підписатися на проспекта в LinkedIn. | |
| invite | Надіслати запит на зв'язок (потребує body). | |
| message | Надіслати пряме повідомлення LinkedIn (потребує body). | |
| in_mail | Надіслати InMail LinkedIn (потребує body та subject; має слідувати за тригером linkedin_in_mail_sent). | |
| connected_on_linkedin | Перевіряє, чи прийняв проспект запит на підключення в LinkedIn. | |
| check_connection_level | Перевірити ступінь зв'язку проспекта. | |
| endorse_skills | Підтвердити навички в профілі проспекта (потребує value 1–5). | |
| trigger | open | Чекати, чи відкриє проспект email. |
| trigger | click | Чекати, чи натисне проспект на посилання в email. |
| trigger | calendly | Чекати, чи запишеться проспект через Calendly (має йти після email-кроку; макс 30 днів). |
| trigger | connected_on_linkedin | Системний тригер. Обов'язковий після кроку LinkedIn connected_on_linkedin. Поле next кроку connected_on_linkedin має вказувати на цей тригер. |
| trigger | check_connection_level | Розгалуження залежно від ступеня зв'язку LinkedIn проспекта (потребує value: масив допустимих рівнів зв'язку). |
| trigger | linkedin_in_mail_sent | Системний тригер. Обов'язковий після кроку LinkedIn in_mail. Поле next кроку in_mail має вказувати на цей тригер. |
<?php function updateCampaign($campaignId) { $token = getAccessToken(); $requestParameters = [ 'title' => 'Updated title via API', 'priority' => 'medium', 'tracking' => [ 'open' => true, 'link_click' => false ], 'sending_settings' => [ 'sending_priority' => 'follow_up', 'daily_sending_all' => null, 'daily_sending_new_recipients' => 15, 'skip_who_replied' => true ] ]; $options = [ CURLOPT_URL => 'https://api.snov.io/v2/campaigns/' . $campaignId, CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true, CURLOPT_CUSTOMREQUEST => 'PATCH', CURLOPT_POSTFIELDS => json_encode($requestParameters), CURLOPT_HTTPHEADER => [ 'Authorization: Bearer ' . $token, 'Content-Type: application/json', ], ]; $ch = curl_init(); curl_setopt_array($ch, $options); $res = json_decode(curl_exec($ch), true); curl_close($ch); return $res; } ?>
def update_campaign(campaign_id): token = get_access_token() headers = { 'Authorization': 'Bearer ' + token, 'Content-Type': 'application/json' } request_parameters = { 'title': 'Updated title via API', 'priority': 'medium', 'tracking': { 'open': True, 'link_click': False }, 'sending_settings': { 'sending_priority': 'follow_up', 'daily_sending_all': None, 'daily_sending_new_recipients': 15, 'skip_who_replied': True } } res = requests.patch( f'https://api.snov.io/v2/campaigns/{campaign_id}', json=request_parameters, headers=headers ) return json.loads(res.text)
{
"success": true,
"data": {
"id": 41816,
"status": "new",
"title": "Updated title via API",
"email_accounts": [18061],
"linkedin_accounts": [],
"priority": "medium",
"tracking": {
"open": true,
"link_click": false
},
"sending_settings": {
"sending_priority": "follow_up",
"daily_sending_all": null,
"daily_sending_new_recipients": 15,
"skip_unverifiable": true,
"skip_unverified": true,
"skip_who_replied": true,
"skip_company_domain_who_replied": false,
"skip_recipients_without_variables_data": false,
"skip_other_recipients_email_addresses": false,
"skip_recipients_added_to_my_another_campaign": false,
"skip_recipients_added_to_team_another_campaign": false,
"one_click_unsubscribe": false
},
"recipients": {
"list_id": 857538,
"black_list_id": 392812
},
"schedule_id": 1074,
"start_campaign_at": "2030-06-01 00:00:00",
"complete_campaign_at": "2030-10-01 01:00:00",
"timezone": "UTC",
"complete_campaign_after_last_step": false,
"archive_in_months": 3,
"provider_matching": false,
"sequence": {
"entry": "1778676939",
"steps": [
{
"_ref": "1778676939",
"type": "email",
"content_slots": 1,
"content": [
{ "id": 17786769390, "plain_text": false, "usage": "active" }
],
"next": "1778676940"
},
{
"_ref": "1778676940",
"type": "goal",
"goal_name": "end"
}
]
}
}
}
success | Булевий. true, якщо кампанію було оновлено. |
data.id | ID оновленої кампанії. |
data.status | Поточний статус кампанії. |
data.title | Назва кампанії. |
data.email_accounts | Масив ID email-акаунтів відправника, прив'язаних до кампанії. |
data.linkedin_accounts | Масив ID LinkedIn-акаунтів, прив'язаних до кампанії. |
data.priority | Пріоритет кампанії (low, medium, high). |
data.tracking | Налаштування відстеження email (open, link_click). |
data.sending_settings | Налаштування надсилання, повернені точно так, як збережені на сервері після оновлення. |
data.recipients | Списки одержувачів (list_id, black_list_id). |
data.schedule_id | ID розкладу надсилання, прив'язаного до кампанії, або null. |
data.start_campaign_at | Дата та час початку надсилання кампанії. |
data.complete_campaign_at | Дата та час завершення надсилання кампанії. |
data.timezone | Ідентифікатор часового поясу кампанії. |
data.complete_campaign_after_last_step | Чи автоматично завершується кампанія після доставки останнього кроку. |
data.archive_in_months | Період автоматичного архівування в місяцях. |
data.provider_matching | Чи увімкнено зіставлення провайдера email. |
data.sequence | Блок-схема кампанії, повернена з тією ж структурою після узгодження. Кожен крок email доповнюється масивом content, що описує слоти контенту (id, plain_text, usage). |
data.deals | Налаштування створення deals, присутні лише якщо в кампанії налаштовано deals. |
POSTЗмінити стан кампанії
БезплатноЦей метод дозволяє керувати станом кампанії — запустити, призупинити, завершити або архівувати її.
| POST | https://api.snov.io/v2/campaigns/{campaign_id}/action |
campaign_id *обов'язковий (path) | Унікальний ідентифікатор кампанії, стан якої ви хочете змінити. |
action | Стан, у який можна перевести кампанію. Допустимі значення: start, pause, resume, complete, archived. |
<?php $campaignId = 123; $apiUrl = 'https://api.snov.io/v2/campaigns/' . $campaignId . '/action'; $ch = curl_init($apiUrl); curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_HTTPHEADER => [ 'Authorization: Bearer ' . $accessToken, 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => json_encode(['action' => 'start']), ]); $response = curl_exec($ch); curl_close($ch); $result = json_decode($response, true); print_r($result);
import requests campaign_id = 123 api_url = f'https://api.snov.io/v2/campaigns/{campaign_id}/action' response = requests.post( api_url, headers={'Authorization': f'Bearer {access_token}'}, json={'action': 'start'}, ) print(response.json())
{
"success": true
}
success | Може повертати true або false залежно від результату виконання. |
errors | Список помилок, що виникли під час зміни стану кампанії. |
DELETEВидалити кампанію
Цей метод видаляє кампанію за її ID. Видалення дозволено лише для кампаній зі статусом new (чернетка), complete або archived — кампанії зі статусом active, pause або scheduled не можна видалити, поки вони не зупинені.
| DELETE | https://api.snov.io/v2/campaigns/{campaign_id} |
campaign_id *обов'язковий (path) | Ціле число. ID кампанії для видалення. |
<?php function deleteCampaign($campaignId) { $token = getAccessToken(); $options = [ CURLOPT_URL => 'https://api.snov.io/v2/campaigns/' . $campaignId, CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true, CURLOPT_CUSTOMREQUEST => 'DELETE', CURLOPT_HTTPHEADER => [ 'Authorization: Bearer ' . $token, 'Content-Type: application/json', ], ]; $ch = curl_init(); curl_setopt_array($ch, $options); $res = json_decode(curl_exec($ch), true); curl_close($ch); return $res; } ?>
def delete_campaign(campaign_id): token = get_access_token() headers = { 'Authorization': 'Bearer ' + token, 'Content-Type': 'application/json' } res = requests.delete( f'https://api.snov.io/v2/campaigns/{campaign_id}', headers=headers ) return json.loads(res.text)
{
"success": true
}
success | Булевий. true, якщо кампанію було видалено. |
Вміст кроку електронної пошти
Ці методи дозволяють керувати блоками вмісту (темою та тілом листа) кроків електронної пошти в послідовності кампанії. Вміст можна змінювати лише тоді, коли кампанія має статус new, paused або scheduled. Кожен крок повинен мати принаймні один блок вмісту.
GETПереглянути всі розклади
БезплатноМетод показує список усіх розкладів кампаній.
| GET | https://api.snov.io/v2/campaigns/schedules |
| Цей метод не має вхідних параметрів. |
<?php function getCampaignSchedules() { $token = getAccessToken(); $options = [ CURLOPT_URL => 'https://api.snov.io/v2/campaigns/schedules', CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTPHEADER => [ 'Authorization: Bearer ' . $token, 'Content-Type: application/json', ], ]; $ch = curl_init(); curl_setopt_array($ch, $options); $res = json_decode(curl_exec($ch), true); curl_close($ch); return $res; } ?>
def get_campaign_schedules(): token = get_access_token() headers = { 'Authorization': 'Bearer ' + token, 'Content-Type': 'application/json' } res = requests.get('https://api.snov.io/v2/campaigns/schedules', headers=headers) return json.loads(res.text)
{
"data": [
{
"id": 1074,
"name": "UA Monday & Saturday",
"timezone": "Europe/Kyiv",
"days": [
{
"day": "sunday",
"enabled": false,
"start_time": "09:00",
"end_time": "18:00"
},
{
"day": "monday",
"enabled": true,
"start_time": "09:00",
"end_time": "17:00"
},
{
"day": "tuesday",
"enabled": false,
"start_time": "09:00",
"end_time": "18:00"
},
{
"day": "wednesday",
"enabled": false,
"start_time": "09:00",
"end_time": "18:00"
},
{
"day": "thursday",
"enabled": false,
"start_time": "09:00",
"end_time": "18:00"
},
{
"day": "friday",
"enabled": false,
"start_time": "09:00",
"end_time": "18:00"
},
{
"day": "saturday",
"enabled": true,
"start_time": "11:00",
"end_time": "16:30"
}
]
}
]
}
id | Унікальний ID розкладу. |
name | Назва розкладу. |
timezone | Часовий пояс, за яким працює розклад. |
days | Масив доступних днів та годин надсилання для розкладу |
day | День тижня. |
enabled | Показує true, якщо надсилання в цей день дозволено. Повертає false, якщо надсилання в цей день заборонено. |
start_time | Час початку розкладу в цей день. |
end_time | Час завершення розкладу в цей день. |
POSTСтворити вміст кроку email
БезплатноЦей метод створює або оновлює блок вмісту для кроку email-послідовності в кампанії. Якщо блок вмісту з вказаним content_id вже існує, він буде перезаписаний. Вміст можна змінювати лише коли кампанія перебуває у стані new, paused або scheduled.
| POST | https://api.snov.io/v2/campaigns/{campaign_id}/steps/{step_id}/content/create |
campaign_id *обов'язковий (path) | Ціле число. ID кампанії. |
step_id *обов'язковий (path) | Ціле число. ID кроку email-послідовності. |
content_id *обов'язковий | Ціле число. ID блоку вмісту для запису. Повторне надсилання того ж content_id перезаписує існуючий блок. |
subject *обов'язковий | Рядок. Тема листа. Підтримує {{variables}}. |
body *обов'язковий | Рядок (HTML). Тіло листа. |
plain_text *обов'язковий | Булевий. true надсилає лист як звичайний текст, false — як HTML. |
usage *обов'язковий | Рядок. Стан блоку вмісту. Допустимі значення: "active", "pause". |
<?php function createEmailContent(int $campaignId, int $stepId) { $token = getAccessToken(); $requestParameters = [ 'content_id' => 1, 'subject' => 'Hey, I have something for you', 'body' => '<p>Hi {{first_name}}, ...</p>', 'plain_text' => false, 'usage' => 'active', ]; $url = 'https://api.snov.io/v2/campaigns/' . $campaignId . '/steps/' . $stepId . '/content/create'; $options = [ CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS => json_encode($requestParameters), CURLOPT_HTTPHEADER => [ 'Authorization: Bearer ' . $token, 'Content-Type: application/json', ], ]; $ch = curl_init(); curl_setopt_array($ch, $options); $res = json_decode(curl_exec($ch), true); curl_close($ch); return $res; } ?>
def create_email_content(campaign_id, step_id): token = get_access_token() headers = { 'Authorization': 'Bearer ' + token, 'Content-Type': 'application/json' } request_parameters = { 'content_id': 1, 'subject': 'Hey, I have something for you', 'body': '<p>Hi {{first_name}}, ...</p>', 'plain_text': False, 'usage': 'active' } url = 'https://api.snov.io/v2/campaigns/' + str(campaign_id) + '/steps/' + str(step_id) + '/content/create' res = requests.post(url, json=request_parameters, headers=headers) return json.loads(res.text)
{
"success": true,
"data": {
"id": 11111,
"subject": "Hey, I have something for you",
"body": "Hi {{first_name}}, ...
",
"plain_text": false,
"usage": "active"
}
}success | Булевий. true, якщо запит виконано успішно. |
data.id | Ціле число. ID блоку вмісту. |
data.subject | Рядок. Тема листа. |
data.body | Рядок (HTML). Тіло листа. |
data.plain_text | Булевий. true, якщо режим звичайного тексту, false, якщо HTML. |
data.usage | Рядок. Стан блоку вмісту. Допустимі значення: "active", "pause". |
GETОтримати вміст кроку email
БезплатноЦей метод повертає блок вмісту кроку email-послідовності за його content_id.
| GET | https://api.snov.io/v2/campaigns/{campaign_id}/steps/{step_id}/content/{content_id} |
campaign_id *обов'язковий (path) | Ціле число. ID кампанії. |
step_id *обов'язковий (path) | Ціле число. ID кроку email-послідовності. |
content_id *обов'язковий (path) | Ціле число. ID блоку вмісту. |
<?php function getEmailContent(int $campaignId, int $stepId, int $contentId) { $token = getAccessToken(); $url = 'https://api.snov.io/v2/campaigns/' . $campaignId . '/steps/' . $stepId . '/content/' . $contentId; $options = [ CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTPHEADER => [ 'Authorization: Bearer ' . $token, 'Content-Type: application/json', ], ]; $ch = curl_init(); curl_setopt_array($ch, $options); $res = json_decode(curl_exec($ch), true); curl_close($ch); return $res; } ?>
def get_email_content(campaign_id, step_id, content_id): token = get_access_token() headers = { 'Authorization': 'Bearer ' + token, 'Content-Type': 'application/json' } url = 'https://api.snov.io/v2/campaigns/' + str(campaign_id) + '/steps/' + str(step_id) + '/content/' + str(content_id) res = requests.get(url, headers=headers) return json.loads(res.text)
{
"data": {
"id": 11111,
"subject": "Hey, I have something for you",
"body": "Hi {{first_name}}, ...
",
"plain_text": false,
"usage": "active"
}
}data.id | Ціле число. ID блоку вмісту. |
data.subject | Рядок. Тема листа. |
data.body | Рядок (HTML). Тіло листа. |
data.plain_text | Булевий. true, якщо режим звичайного тексту, false, якщо HTML. |
data.usage | Рядок. Стан блоку вмісту. Допустимі значення: "active", "pause". |
PATCHОновити вміст кроку email
БезплатноЦей метод частково оновлює блок вмісту кроку email-послідовності. Оновлюються лише поля, надані в тілі запиту; пропущені поля залишаються без змін. Необхідно включити хоча б одне поле. Вміст можна змінювати лише коли кампанія перебуває у стані new, paused або scheduled.
| PATCH | https://api.snov.io/v2/campaigns/{campaign_id}/steps/{step_id}/content/{content_id} |
campaign_id *обов'язковий (path) | Ціле число. ID кампанії. |
step_id *обов'язковий (path) | Ціле число. ID кроку email-послідовності. |
content_id *обов'язковий (path) | Ціле число. ID блоку вмісту. |
subject | Рядок. Тема листа. Підтримує {{variables}}. |
body | Рядок (HTML). Тіло листа. |
plain_text | Булевий. true для звичайного тексту, false для HTML. |
usage | Рядок. Стан блоку вмісту. Допустимі значення: "active", "pause". |
<?php function updateEmailContent(int $campaignId, int $stepId, int $contentId) { $token = getAccessToken(); $requestParameters = [ 'subject' => 'Updated subject', ]; $url = 'https://api.snov.io/v2/campaigns/' . $campaignId . '/steps/' . $stepId . '/content/' . $contentId; $options = [ CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true, CURLOPT_CUSTOMREQUEST => 'PATCH', CURLOPT_POSTFIELDS => json_encode($requestParameters), CURLOPT_HTTPHEADER => [ 'Authorization: Bearer ' . $token, 'Content-Type: application/json', ], ]; $ch = curl_init(); curl_setopt_array($ch, $options); $res = json_decode(curl_exec($ch), true); curl_close($ch); return $res; } ?>
def update_email_content(campaign_id, step_id, content_id): token = get_access_token() headers = { 'Authorization': 'Bearer ' + token, 'Content-Type': 'application/json' } request_parameters = { 'subject': 'Updated subject' } url = 'https://api.snov.io/v2/campaigns/' + str(campaign_id) + '/steps/' + str(step_id) + '/content/' + str(content_id) res = requests.patch(url, json=request_parameters, headers=headers) return json.loads(res.text)
{
"success": true,
"data": {
"id": 11111,
"subject": "Updated subject",
"body": "Hi {{first_name}}, ...
",
"plain_text": false,
"usage": "active"
}
}success | Булевий. true, якщо запит виконано успішно. |
data.id | Ціле число. ID блоку вмісту. |
data.subject | Рядок. Тема листа. |
data.body | Рядок (HTML). Тіло листа. |
data.plain_text | Булевий. true, якщо режим звичайного тексту, false, якщо HTML. |
data.usage | Рядок. Стан блоку вмісту. Допустимі значення: "active", "pause". |
DELETEВидалити вміст кроку email
БезплатноЦей метод видаляє блок вмісту з кроку email-послідовності. Видалення останнього блоку вмісту в кроці заборонено — кожен крок повинен мати хоча б один блок вмісту.
| DELETE | https://api.snov.io/v2/campaigns/{campaign_id}/steps/{step_id}/content/{content_id} |
campaign_id *обов'язковий (path) | Ціле число. ID кампанії. |
step_id *обов'язковий (path) | Ціле число. ID кроку email-послідовності. |
content_id *обов'язковий (path) | Ціле число. ID блоку вмісту для видалення. |
<?php function deleteEmailContent(int $campaignId, int $stepId, int $contentId) { $token = getAccessToken(); $url = 'https://api.snov.io/v2/campaigns/' . $campaignId . '/steps/' . $stepId . '/content/' . $contentId; $options = [ CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true, CURLOPT_CUSTOMREQUEST => 'DELETE', CURLOPT_HTTPHEADER => [ 'Authorization: Bearer ' . $token, 'Content-Type: application/json', ], ]; $ch = curl_init(); curl_setopt_array($ch, $options); $res = json_decode(curl_exec($ch), true); curl_close($ch); return $res; } ?>
def delete_email_content(campaign_id, step_id, content_id): token = get_access_token() headers = { 'Authorization': 'Bearer ' + token, 'Content-Type': 'application/json' } url = 'https://api.snov.io/v2/campaigns/' + str(campaign_id) + '/steps/' + str(step_id) + '/content/' + str(content_id) res = requests.delete(url, headers=headers) return json.loads(res.text)
{
"data": {
"success": true
}
}data.success | Булевий. true, якщо блок вмісту успішно видалено. |
Керування отримувачами
Ці методи дозволяють керувати отримувачами кампанії — перевіряти та оновлювати їхні статуси, переглядати завершених потенційних клієнтів і підтримувати списки «Не надсилати» для контролю над тим, хто отримує ваші кампанії.
GETПеревірити статус отримувача
БезплатноЦей метод перевіряє, чи є вказані email-адреси отримувачами в конкретній кампанії, та повертає їхній поточний статус. Призначений для дедублікації перед додаванням нових отримувачів до кампанії — наприклад, щоб уникнути зв'язку з контактами, які вже зараховані, завершили кампанію або відписались.
| GET | https://api.snov.io/v2/campaigns/[campaign_id]/recipient |
campaign_id *обов'язковий | Унікальний ідентифікатор кампанії. |
emails[] *обов'язковий | Масив email-адрес для перевірки. Мінімум 1, максимум 100 на запит. Кожен email має бути унікальним і не перевищувати 100 символів. |
<?php
function checkRecipientStatus($campaignId, array $emails)
{
$token = getAccessToken();
$query = http_build_query([
'access_token' => $token,
'emails' => $emails,
]);
$options = [
CURLOPT_URL => "https://api.snov.io/v2/campaigns/{$campaignId}/recipient?{$query}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
];
$ch = curl_init();
curl_setopt_array($ch, $options);
$res = json_decode(curl_exec($ch), true);
curl_close($ch);
return $res;
}
?>
def check_recipient_status(campaign_id, emails):
token = get_access_token()
params = [('access_token', token)] + [('emails[]', email) for email in emails]
res = requests.get(
f'https://api.snov.io/v2/campaigns/{campaign_id}/recipient',
params=params,
)
return json.loads(res.text)
{
"data": [
{
"email": "admin@snov.io",
"exist": true,
"status": "tocheck"
},
{
"email": "jn@snov.io",
"exist": false,
"status": null
},
{
"email": "dennis@snov.io",
"exist": true,
"status": "unsubscribe"
}
]
}
email | Email-адреса із запиту (повертається як є). |
exist | true, якщо email присутній як отримувач у кампанії, false — якщо ні. |
status | Поточний статус отримувача в кампанії (наприклад, tocheck, active, finished, unsubscribe, moved). null, коли exist має значення false. |
POSTЗмінити статус отримувача
БезплатноЗмініть статус отримувача конкретної розсилки.
| POST | https://api.snov.io/v1/change-recipient-status |
email *обов'язковий | Адреса електронної пошти контакта. |
campaign_id *обов'язковий | Id розсилки. Його можна побачити в адресному рядку під час перегляду інформації про розсилку (приклад). |
status *обов'язковий | Може містити статуси Активний, Призупинений або Відписаний. Ви не можете змінити статус отримувача, якщо він Завершений або Переміщений. |
<?php function changeRecipientStatus() { $token = getAccessToken(); $params = [ 'access_token' => $token, 'email' => 'gavin.vanrooyen@octagon.com', 'campaign_id' => '179025', 'status' => 'Paused' ]; $options = [ CURLOPT_URL => 'https://api.snov.io/v1/change-recipient-status', CURLOPT_POST => true, CURLOPT_POSTFIELDS => $params, CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true ]; $ch = curl_init(); curl_setopt_array($ch, $options); $res = json_decode(curl_exec($ch), true); curl_close($ch); return $res; } ?>
def change_recipient_status(): token = get_access_token() params = {'access_token':token, 'email':'gavin.vanrooyen@octagon.com', 'campaign_id': '179025', 'status':'Paused' } res = requests.post('https://api.snov.io/v1/change-recipient-status', data=params) return json.loads(res.text)
{
"success": true
}Метод поверне success: true, якщо статус контакта було змінено. У випадку виникнення помилки метод поверне success: false з описом помилки.
GETСписок контактів, для яких завершена розсилка
БезплатноЦей метод надає список контактів, для яких розсилка завершена.
| GET | https://api.snov.io/v1/prospect-finished |
campaignId *обов'язковий | Унікальний id розсилки, за якою вам необхідно переглянути список отримувачів. |
<?php function finishedProspects() { $token = getAccessToken(); $params = [ 'access_token' => $token, 'campaignId' => 1234567 ]; $params = http_build_query($params); $options = [ CURLOPT_URL => 'https://api.snov.io/v1/prospect-finished?'.$params, CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true, ]; $ch = curl_init(); curl_setopt_array($ch, $options); $res = json_decode(curl_exec($ch), true); curl_close($ch); return $res; } ?>
def user_lists(): token = get_access_token() params = {'access_token':token, 'campaignId':1234567 } res = requests.get('https://api.snov.io/v1/prospect-finished', data=params) return json.loads(res.text)
[
{
"id": "88c268d404797d1001b4d72806207625",
"prospectId": "9c2eb5b46bb5873e408684dd577d002354e4f7026f47bf8a592d659bba3d2dd0ff186b90dc7a5",
"userName": "zach Jones",
"userEmail": "zach@entselect.us",
"campaign": "Zipari - Salesforce Developer",
"hash": "f3967971cbab6e769b5f7e3457d00159"
}
]
id | Унікальний id запиту. |
prospectId | Унікальний id контакта. |
userName | Повне ім'я контакта. |
userEmail | Email-адреса контакта. |
campaign | Назва розсилки. |
POSTДодати контакти до списку винятків
БезплатноЗа допомогою цього методу ви можете додати адресу або домен до списку «Контакти-винятки». Після додавання ви не зможете надсилати листи на ці адреси/домени.
| POST | https://api.snov.io/v1/do-not-email-list |
items | Адреса або домен, який необхідно додати до списку «Контакти-винятки». |
listId *обов'язковий | ID списку контактів-винятків, в якому знаходяться email-адреси і домени. |
<?php function addToBlackList() { $token = getAccessToken(); $params = [ 'access_token' => $token ]; $data = http_build_query([ 'items' => [ 'gavin.vanrooyen@octagon.com', 'octagon.com' ] ]); $options = [ CURLOPT_URL => 'https://api.snov.io/v1/do-not-email-list?'. $data, CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_POSTFIELDS => $params, CURLOPT_FOLLOWLOCATION => true, ]; $ch = curl_init(); curl_setopt_array($ch, $options); $res = json_decode(curl_exec($ch), true); curl_close($ch); } ?>
def do_not_email_list(): token = get_access_token() params = { 'access_token':token, 'items[]':['gavin.vanrooyen@octagon.com','octagon.com'] } res = requests.post('https://api.snov.io/v1/do-not-email-list', data=params) return json.loads(res.text)
[
{
"success": true,
"data": {
"duplicates": []
}
}
]
duplicates | Цей параметр показує, які з адрес/доменів були раніше додані до списку винятків. |
GETПереглянути всі контакти-винятки
БезплатноМетод повертає список усіх контактів-винятків.
| GET | https://api.snov.io/v2/blacklists |
| Цей метод не має вхідних параметрів. |
<?php function getBlacklists() { $token = getAccessToken(); $options = [ CURLOPT_URL => 'https://api.snov.io/v2/blacklists', CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTPHEADER => [ 'Authorization: Bearer ' . $token, 'Content-Type: application/json', ], ]; $ch = curl_init(); curl_setopt_array($ch, $options); $res = json_decode(curl_exec($ch), true); curl_close($ch); return $res; } ?>
def get_blacklists(): token = get_access_token() headers = { 'Authorization': 'Bearer ' + token, 'Content-Type': 'application/json' } res = requests.get('https://api.snov.io/v2/blacklists', headers=headers) return json.loads(res.text)
{
"data": [
{
"id": 8,
"name": "Do-not-email List",
"owner": "Rob Patison",
"total": 100
}
]
}
id | Унікальний ID списку контактів-винятків. |
name | Назва списку. |
owner | Ім'я користувача, який створив список. |
total | Загальна кількість записів у списку (email-адреси та вебсайти). |
Аналітика та звітність
Ці методи лише для читання забезпечують видимість ефективності кампанії — доставку, відкриття, кліки та відповіді. Використовуйте їх для моніторингу залученості та експорту даних для аналізу.
GETАналітика кампанії
БезплатноЦей метод показує статистику кампанії на основі застосованих фільтрів.
| GET | https://api.snov.io/v2/statistics/campaign-analytics |
campaign_id | ID кампанії. Його можна побачити в адресному рядку під час перегляду інформації про розсилку (приклад).
Якщо залишити це поле порожнім, ви отримаєте дані для всіх активних кампаній за вказаний період. Щоб отримати дані для кількох кампаній, розділяйте ID комами. |
sender_email | ID email-акаунту відправника. Ви можете знайти його за URL-адресою під час перегляду або редагування інформації акаунту (приклад).
Щоб переглянути аналітику для кількох email-акаунтів, розділяйте ID комами. Або залиште цей параметр порожнім, якщо ви не хочете застосовувати фільтр для email-акаунту. |
sender_linkedin | ID LinkedIn-акаунту відправника. Ви можете знайти його в URL-адресі під час перегляду або редагування інформації акаунту LinkedIn. Щоб переглянути аналітику для кількох акаунтів, розділяйте ID комами. Залиште цей параметр порожнім, якщо ви не хочете застосовувати фільтр для акаунту LinkedIn. |
campaign_owner | Щоб переглянути дані кампанії учасника команди, введіть його email-адресу. Щоб фільтрувати за кількома власниками кампаній, укажіть email-адреси, розділивши їх комами (без пробілів). Наприклад: example1@gmail.com,example2@gmail.com Зверніть увагу, що для використання цього фільтра у вашого акаунту повинен бути дозвіл "Дані команди", і ви повинні мати план Pro або вищий. |
date_from *обов'язковий | Дата початку періоду, за який ви хочете отримати статистику. Формат: рррр-мм-дд. |
date_to *обов'язковий | Дата завершення періоду, за який ви хочете отримати статистику. Формат: рррр-мм-дд. |
<?php
function getCampaignAnalytics()
{
$token = getAccessToken();
$campaignIds = [1, 2];
$senderEmailIds = [21, 22];
$senderLinkedInIds = [31, 32, 33];
$ownerEmails = ['owner1@email.loc', 'owner2@email.loc'];
$params = [
'access_token' => $token,
'campaign_id' => implode(',', $campaignIds),
'sender_email' => implode(',', $senderEmailIds),
'sender_linkedin' => implode(',', $senderLinkedInIds),
'campaign_owner' => implode(',', $ownerEmails),
'date_from' => '2024-06-15',
'date_to' => '2024-09-15',
];
$params = http_build_query($params);
$options = [
CURLOPT_URL => 'https://api.snov.io/v2/statistics/campaign-analytics?' . $params,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true
];
$ch = curl_init();
curl_setopt_array($ch, $options);
$res = json_decode(curl_exec($ch), true);
curl_close($ch);
return $res;
}
?>
def get_campaign_analytics():
token = get_access_token()
campaign_ids = [1, 2]
sender_email_ids = [21, 22]
sender_linkedin_ids = [31, 32, 33]
owner_emails = ['owner1@email.loc', 'owner2@email.loc']
params = {
'access_token': token,
'campaign_id': ','.join(map(str, campaign_ids)),
'sender_email': ','.join(map(str, sender_email_ids)),
'sender_linkedin': ','.join(map(str, sender_linkedin_ids)),
'campaign_owner': ','.join(owner_emails),
'date_from': '2024-06-15',
'date_to': '2024-09-15',
}
res = requests.get('https://api.snov.io/v2/statistics/campaign-analytics', params=params)
return json.loads(res.text)
{
"total_contacted": 32,
"emails_sent": 31,
"first_emails": 24,
"first_emails_rate": "77%",
"follow_ups": 7,
"follow_ups_rate": "23%",
"delivered": 30,
"delivered_rate": "97%",
"bounced": 1,
"bounced_rate": "3%",
"contacted_by_email": 23,
"email_opens": 16,
"email_opens_rate": "70%",
"link_clicks": 0,
"link_clicks_rate": "0%",
"email_replies": 16,
"email_replies_rate": "70%",
"unsubscribed": 0,
"unsubscribed_rate": "0%",
"auto_replied": 0,
"auto_replied_rate": "0%",
"contacted_by_linkedin": 10,
"linkedin_total_replies": 9,
"linkedin_total_replies_rate": "90%",
"connection_request_replies": 2,
"connection_request_replies_rate": "22%",
"message_replies": 7,
"message_replies_rate": "78%",
"in_mail_replies": 0,
"in_mail_replies_rate": "0%",
"connection_requests": 2,
"accepted_requests": 2,
"accepted_requests_rate": "100%",
"failed_connection_requests": 0,
"messages_sent": 9,
"linkedin_views": 9,
"linkedin_likes": 0,
"linkedin_follows": 0,
"in_mail_sent": 0,
"interested": 8,
"interested_rate": "32%",
"maybe": 8,
"maybe_rate": "32%",
"not_interested": 4,
"not_interested_rate": "16%"
}
total_contacted | Загальна кількість отримувачів, з якими ви зв’язалися через емейл або LinkedIn (запит на контакт, повідомлення або InMail). |
emails_sent | Загальна кількість емейлів, надісланих у кампаніях. Зверніть увагу, що це не включає емейли, надіслані поза кампаніями. |
first_emails | Кількість перших емейлів в кампанії, надісланих протягом зазначеного періоду. |
first_emails_rate | Відсоток перших емейлів від загальної кількості надісланих емейлів. |
follow_ups | Кількість фоллоу-апів у кампанії, надісланих протягом зазначеного періоду. |
follow_ups_rate | Відсоток фоллоу-апів від загальної кількості надісланих емейлів. |
delivered | Кількість надісланих емейлів, які не збаунсили. |
delivered_rate | Відсоток емейлів, які не збаунсили, від загальної кількості надісланих листів. |
bounced | Кількість емейлів, які збаунсили. |
bounced_rate | Відсоток емейлів, які збаунсили, від загальної кількості надісланих листів. |
contacted_by_email | Кількість отримувачів, яким було доставлено принаймні один емейл. |
email_opens | Кількість отримувачів, які принаймні один раз відкрили емейл. |
email_opens_rate | Відсоток отримувачів, які відкрили ваш емейл принаймні один раз, від загальної кількості сконтактованих отримувачів. |
link_clicks | Кількість отримувачів, які перейшли за принаймні одним посиланням у ваших кампаніях. |
link_clicks_rate | Відсоток отримувачів, які клікнули принаймні одне посилання в кампаніях, серед усіх сконтактованих отримувачів. |
email_replies | Кількість отримувачів, які відповіли принаймні один раз. |
email_replies_rate | Відсоток отримувачів, які принаймні один раз відповіли на ваш емейл, від усіх сконтактованих отримувачів. |
unsubscribed | Кількість отримувачів, які клікнули посилання "Відписатися" у ваших кампаніях. |
unsubscribed_rate | Відсоток отримувачів, які клікнули "Відписатися" в кампаніях, серед усіх сконтактованих отримувачів. |
auto_replied | Кількість отримувачів, від яких було отримано автовідповідь на емейли в кампаніях. |
auto_replied_rate | Відсоток отримувачів, від яких було отримано автовідповідь, від усіх сконтактованих отримувачів. |
contacted_by_linkedin | Кількість отримувачів, яким ви надіслали принаймні одне повідомлення або запит на контакт у LinkedIn. |
linkedin_total_replies | Кількість отримувачів, які принаймні один раз відповіли на будь-яке повідомлення, надіслане в LinkedIn (повідомлення LinkedIn, повідомлення у запиті на контакт та InMail). |
linkedin_total_replies_rate | Відсоток отримувачів, які принаймні один раз відповіли на будь-яке повідомлення, надіслане в LinkedIn (повідомлення LinkedIn, повідомлення у запиті на контакт та InMail). |
connection_request_replies | Кількість отримувачів, які відповіли на повідомлення у запиті на контакт. |
connection_request_replies_rate | Відсоток отримувачів, які відповіли на повідомлення у запиті на контакт, серед усіх сконтактованих отримувачів. |
message_replies | Кількість отримувачів, які відповіли на звичайне повідомлення у LinkedIn. |
message_replies_rate | Відсоток отримувачів, які відповіли на звичайне повідомлення у LinkedIn, серед усіх сконтактованих отримувачів. |
in_mail_replies | Кількість отримувачів, які відповіли на повідомлення InMail у LinkedIn. |
in_mail_replies_rate | Відсоток отримувачів, які відповіли на повідомлення InMail у LinkedIn. |
connection_requests | Кількість запитів на контакт, надісланих лідам через кампанії Snov.io. |
accepted_requests | Кількість запитів на контакт, прийнятих учасниками LinkedIn. |
accepted_requests_rate | Відсоток прийнятих запитів на контакт від усіх надісланих запитів. |
failed_connection_requests | Кількість запитів на контакт у Linkedin, які не були надіслані з причини:
|
messages_sent | Кількість надісланих повідомлень у LinkedIn. |
linkedin_views | Кількість переглянутих профілів лідів. |
linkedin_likes | Кількість пролайканих постів лідів у LinkedIn. |
linkedin_follows | Кількість профілів лідів, за якими ви почали спостерігати. |
in_mail_sent | Загальна кількість надісланих повідомлень InMail. |
interested | Кількість отримувачів, які проявили інтерес у своїх відповідях. |
interested_rate | Відсоток отримувачів, які проявили інтерес у своїх відповідях. |
maybe | Кількість отримувачів, які не висловили прямої зацікавленості чи незацікавленості у своїх відповідях. |
maybe_rate | Відсоток отримувачів, які не висловили прямої зацікавленості чи незацікавленості у своїх відповідях. |
not_interested | Кількість отримувачів, які не проявили інтерес у своїх відповідях. |
not_interested_rate | Відсоток отримувачів, які не проявили інтерес у своїх відповідях. |
GETПрогрес кампанії
БезплатноЦей метод повертає прогрес і статус кампанії.
| GET | https://api.snov.io/v2/campaigns/[campaign_id]/progress |
campaign_id *обов'язковий | ID кампанії. Його можна побачити в адресному рядку під час перегляду інформації про розсилку (приклад). |
<?php
function getCampaignProgress()
{
$token = getAccessToken();
$campaignId = 1;
$params = [
'access_token' => $token,
];
$params = http_build_query($params);
$options = [
CURLOPT_URL => "https://api.snov.io/v2/campaigns/$campaignId/progress?" . $params,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true
];
$ch = curl_init();
curl_setopt_array($ch, $options);
$res = json_decode(curl_exec($ch), true);
curl_close($ch);
return $res;
}
?>
def get_campaign_progress():
token = get_access_token()
campaign_id = 1
params = {
'access_token': token,
}
res = requests.get(f"https://api.snov.io/v2/campaigns/{campaign_id}/progress", params=params)
return json.loads(res.text)
{
"status":"Active",
"unfinished":1,
"progress":"90%"
}
progress | Відсоток отримувачів, які:
|
unfinished | Кількість отримувачів, які не досягли кінця кампанії або для яких кампанію не було зупинено. |
status | Статус кампанії. Детальніше |
GETОтримати звіт про активність отримувачів кампанії
БезплатноЦей метод повертає детальний звіт про активність усіх отримувачів кампанії — події відправлення, відкриття, кліку, відповіді, відмови та відписки — разом з даними контакта. Відображає звіт про активність отримувачів, доступний в інтерфейсі кампанії, та підходить для синхронізації активності кампанії із зовнішніми дашбордами або CRM-системами.
| GET | https://api.snov.io/v2/campaigns/[campaignId]/recipients-activity |
campaignId *обов'язковий | Унікальний ідентифікатор кампанії. |
dateFrom *обов'язковий | Початок діапазону дат у форматі Y-m-d (UTC). |
dateTo *обов'язковий | Кінець діапазону дат у форматі Y-m-d (UTC). Максимальний діапазон між dateFrom і dateTo — 31 день. |
offset | Зміщення пагінації (за замовчуванням: 0). |
limit | Кількість записів на сторінці (за замовчуванням: 100, максимум: 1000). |
<?php
function getCampaignRecipientsActivity($campaignId, $dateFrom, $dateTo, $offset = 0, $limit = 100)
{
$token = getAccessToken();
$params = http_build_query([
'access_token' => $token,
'dateFrom' => $dateFrom,
'dateTo' => $dateTo,
'offset' => $offset,
'limit' => $limit,
]);
$options = [
CURLOPT_URL => "https://api.snov.io/v2/campaigns/{$campaignId}/recipients-activity?{$params}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
];
$ch = curl_init();
curl_setopt_array($ch, $options);
$res = json_decode(curl_exec($ch), true);
curl_close($ch);
return $res;
}
?>
def get_campaign_recipients_activity(campaign_id, date_from, date_to, offset=0, limit=100):
token = get_access_token()
params = {
'access_token': token,
'dateFrom': date_from,
'dateTo': date_to,
'offset': offset,
'limit': limit,
}
res = requests.get(
f'https://api.snov.io/v2/campaigns/{campaign_id}/recipients-activity',
params=params,
)
return json.loads(res.text)
{
"data": [
{
"event_time": "2025-12-15 10:58:52",
"event_type": "sent",
"sender_email": "sender@snov.io",
"email_subject": "About our plans",
"recipient_email": "recipient@snov.io",
"recipient_name": "Den Johnson",
"phone": "380631234567",
"industry": "Information Technology & Services",
"country": "Ukraine",
"location": "Kyiv",
"company": "Snov.io",
"job_position": "Quality assurance engineer",
"hq_phone": "380631234567",
"website": "snov.io"
},
{
"event_time": "2025-12-15 10:58:58",
"event_type": "open",
"sender_email": "sender@snov.io",
"email_subject": "About our plans",
"recipient_email": "recipient@snov.io",
"recipient_name": "Den Johnson",
"phone": "380631122333",
"industry": "Information Technology & Services",
"country": "Ukraine",
"location": "Kyiv",
"company": "Snov.io",
"job_position": "Quality assurance engineer",
"hq_phone": "380631234567",
"website": "snov.io"
}
],
"pagination": {
"total": 2,
"offset": 0,
"limit": 100,
"has_more": false
}
}
event_time | Час події в ISO 8601 (UTC). |
event_type | Тип події: sent, open, click, reply, bounce, unsubscribe. |
sender_email | Email-адреса відправника (поштова скринька кампанії). |
email_subject | Тема листа в послідовності кампанії. |
recipient_email | Email-адреса отримувача. |
recipient_name | Повне ім'я отримувача. |
phone | Номер телефону отримувача (з профілю контакта). |
country | Країна отримувача. |
location | Місцезнаходження отримувача (місто, регіон). |
industry | Галузь компанії отримувача. |
company | Назва компанії отримувача. |
job_position | Посада отримувача. |
website | Сайт компанії отримувача. |
hq_phone | Номер телефону штаб-квартири компанії отримувача. |
total | Загальна кількість записів, що відповідають запиту. |
offset | Поточне зміщення пагінації. |
limit | Розмір сторінки, використаний у відповіді. |
has_more | true, якщо є ще записи після поточної сторінки. |
GETПерегляд відправлених емейлів
БезплатноЦей метод показує інформацію про відправлені емейли в межах вибраної розсилки.
| GET | https://api.snov.io/v1/emails-sent |
campaignId *обов'язковий | Унікальний id розсилки, за якою вам необхідно переглянути надіслані емейли. |
offset | Ви можете зібрати до 10 000 надісланих емейлів за запит. Якщо у вашій кампанії більше емейлів, використовуйте зміщення, щоб указати, скільки попередніх емейлів ви хочете пропустити. Наприклад, якщо у вашій кампанії 20 000 емейлів, а ви хочете отримати емейли 10 001-20 000, установіть зміщення на 10 000. Якщо зміщення не вказано, ви отримаєте останні 10 000 емейлів. |
<?php function emailsSended() { $token = getAccessToken(); $params = [ 'access_token' => $token, 'campaignId' => 1234567 ]; $params = http_build_query($params); $options = [ CURLOPT_URL => 'https://api.snov.io/v1/emails-sent?'.$params, CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true, ]; $ch = curl_init(); curl_setopt_array($ch, $options); $res = json_decode(curl_exec($ch), true); curl_close($ch); return $res; } ?>
def user_lists(): token = get_access_token() params = {'access_token':token, 'campaignId':1234567 } res = requests.get('https://api.snov.io/v1/emails-sent', data=params) return json.loads(res.text)
[
{
"sentDate": {
"date": "2020-07-06 06:58:10.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"userName": "John Doe",
"userEmail": "johndoe@snov.io",
"campaign": "Test",
"hash": "be8fd412b793c15ccab9f1a6573d6595",
"id": "010f091d81860753a19867ba1dd805d1"
},
{
"sentDate": {
"date": "2020-07-06 06:56:44.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"userName": "Mister Smith",
"userEmail": "mistersmith@snov.io",
"campaign": "Test",
"hash": "55bb20def471e630c539935cb0efcbf8",
"id": "00e3df8427477a21d64bbe959ff95471"
}
]
sentDate | Точний час надсилання емейлу. |
userName | Повне ім'я отримувача розсилки. |
userEmail | Email-адреса контакта. |
campaign | Назва розсилки. |
GETІнформація про відкриття емейлів у розсилці
БезплатноЦей метод показує інформацію про відкриті емейли в розсилці.
| GET | https://api.snov.io/v1/get-emails-opened |
campaignId *обов'язковий | Унікальний id розсилки, за якою ви хочете побачити відкриття емейлів. |
offset | Ви можете зібрати до 10 000 відкриттів за запит. Якщо у вашій кампанії більше відкриттів, використовуйте зміщення, щоб указати, скільки попередніх відкриттів ви хочете пропустити. Наприклад, якщо у вашій кампанії 20 000 відкриттів, а ви хочете отримати відкриття 10 001-20 000, установіть зміщення на 10 000. Якщо зміщення не вказано, ви отримаєте останні 10 000 відкриттів. |
<?php function emailsOpen() { $token = getAccessToken(); $params = [ 'access_token' => $token, 'campaignId' => 1234567 ]; $params = http_build_query($params); $options = [ CURLOPT_URL => 'https://api.snov.io/v1/get-emails-opened?'.$params, CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true, ]; $ch = curl_init(); curl_setopt_array($ch, $options); $res = json_decode(curl_exec($ch), true); curl_close($ch); return $res; } ?>
def user_lists(): token = get_access_token() params = {'access_token':token, 'campaignId':1234567 } res = requests.get('https://api.snov.io/v1/get-emails-opened', data=params) return json.loads(res.text)
[
{
"visitedAt": {
"date": "2020-01-08 21:48:14.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"campaignId": 1234567
"campaign": "My top campaign",
"prospectId": "a9e58c3eecff94e617815a90ca412c4c305045102be1312b41fd0073c9c9f3eee30e090bbc3e3",
"prospectFirstName": "John",
"prospectLastName": "Doe",
"prospectName": "John Doe",
"sourcePage": null,
"source": "copy",
"locality": null,
"industry": null,
"country": null,
"prospectEmail": "Johndoe@snov.io",
"hash": "20b1aeb0e2949fdf7e58363f84b7aff1",
"emailSubject": "\"Special content for you\"",
"emailBody": "\"<\p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.<\/p>\"",
"skills": "",
"links": null,
"customFields": null,
"id": "c2a67a47d59745f548ea7b0213c3a81d",
"customField_Phone": ""
}
]
campaignId | Унікальний id розсилки. |
campaign | Назва розсилки. |
prospectName | Повне ім'я отримувача, який відкрив емейл. |
emailSubject | Тема відкритого емейлу. |
visitedAt | Точний час перегляду емейлу. |
GETПерегляд переходів за посиланнями
БезплатноЦей метод повертає інформацію про всіх отримувачів в межах розсилки, які перейшли за посиланням в емейлах.
| GET | https://api.snov.io/v1/get-emails-clicked |
campaignId *обов'язковий | Унікальний id розсилки, у якій ви хочете переглянути переходи за посиланнями. |
offset | Ви можете зібрати до 10 000 кліків за запит. Якщо у вашій кампанії більше кліків, використовуйте зміщення, щоб указати, скільки попередніх кліків ви хочете пропустити. Наприклад, якщо у вашій кампанії 20 000 кліків, а ви хочете отримати кліки 10 001-20 000, установіть зміщення на 10 000. Якщо зміщення не вказано, ви отримаєте останні 10 000 кліків. |
<?php function emailsClicked() { $token = getAccessToken(); $params = [ 'access_token' => $token, 'campaignId' => 1234567 ]; $params = http_build_query($params); $options = [ CURLOPT_URL => 'https://api.snov.io/v1/get-emails-clicked?'.$params, CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true, ]; $ch = curl_init(); curl_setopt_array($ch, $options); $res = json_decode(curl_exec($ch), true); curl_close($ch); return $res; } ?>
def user_lists(): token = get_access_token() params = {'access_token':token, 'campaignId':1234567 } res = requests.get('https://api.snov.io/v1/get-emails-clicked', data=params) return json.loads(res.text)
[
{
"visitedAt": {
"date": "2020-01-08 21:48:14.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"campaignId": 1234567
"campaign": "My top campaign",
"prospectId": "a9e58c3eecff94e617815a90ca412c4c305045102be1312b41fd0073c9c9f3eee30e090bbc3e3",
"prospectFirstName": "John",
"prospectLastName": "Doe",
"prospectName": "John Doe",
"sourcePage": null,
"source": "copy",
"locality": null,
"industry": null,
"country": null,
"prospectEmail": "Johndoe@snov.io",
"hash": "20b1aeb0e2949fdf7e58363f84b7aff1",
"emailSubject": "\"Special content for you\"",
"emailBody": "\"<\p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.<\/p>\"",
"skills": "",
"links": null,
"customFields": null,
"id": "c2a67a47d59745f548ea7b0213c3a81d",
"customField_Phone": ""
}
]
campaignId | Унікальний id розсилки. |
campaign | Назва розсилки. |
prospectName | Повне ім'я отримувача, який перейшов за посиланням в емейлі. |
prospectEmail | Email-адреса контакта. |
emailSubject | Тема емейлу, в якому отримувач перейшов за посиланням. |
emailBody | Текст емейлу. |
visitedAt | Точний час переходу за посиланням у листі. |
GETУсі відповіді на розсилку
БезплатноЦей метод показує список усіх відповідей, отриманих у межах кампанії — як email-відповідей, так і відповідей у LinkedIn (на запити з'єднання, повідомлення LinkedIn та InMail). Кожен запис відповідає унікальній парі (контакт, тип відповіді); відповіді в записі відсортовано хронологічно.
| GET | https://api.snov.io/v2/campaigns/[campaign_id]/all-replies |
campaign_id *обов'язковий | Унікальний ідентифікатор кампанії. |
offset | Зміщення пагінації (за замовчуванням: 0). |
<?php
function campaignAllReplies($campaignId, $offset = 0)
{
$token = getAccessToken();
$params = http_build_query([
'access_token' => $token,
'offset' => $offset,
]);
$options = [
CURLOPT_URL => "https://api.snov.io/v2/campaigns/{$campaignId}/all-replies?{$params}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
];
$ch = curl_init();
curl_setopt_array($ch, $options);
$res = json_decode(curl_exec($ch), true);
curl_close($ch);
return $res;
}
?>
def get_campaign_all_replies(campaign_id, offset=0):
token = get_access_token()
params = {
'access_token': token,
'offset': offset,
}
res = requests.get(
f'https://api.snov.io/v2/campaigns/{campaign_id}/all-replies',
params=params,
)
return json.loads(res.text)
{
"data": [
{
"campaignId": 38573,
"campaign": "All replies campaign",
"prospectId": "aed674fa6404b38954b4ed68f4fd4901b15c9ca9b9393522a052a420aa2690df99614e277d",
"prospectName": "Snov.io",
"prospectEmail": "office@snov.io",
"linkedInProfile": "https://www.linkedin.com/in/snovio",
"replyType": "email",
"receivedAt": "2026-04-29 10:09:42",
"replies": [
{
"subject": "Re: All replies campaign",
"message": "This is reply to email",
"receivedAt": "2026-04-29 10:09:42"
}
]
},
{
"campaignId": 38573,
"campaign": "All replies campaign",
"prospectId": "504d37faada2989dda5f7621393ed9b07e4dccaba44b7332e48fd425c75a77e3d653d24b60",
"prospectName": "Snov.io",
"prospectEmail": "office@snov.io",
"linkedInProfile": "https://www.linkedin.com/in/snovio",
"replyType": "linkedinMessage",
"receivedAt": "2026-04-29 09:26:07",
"replies": [
{
"subject": "",
"message": "Hello! This is reply to Li message",
"receivedAt": "2026-04-29 09:26:07"
}
]
}
]
}
campaignId | Унікальний ідентифікатор кампанії. |
campaign | Назва кампанії. |
prospectId | Унікальний ідентифікатор контакта. |
prospectName | Повне ім'я контакта. |
prospectEmail | Email-адреса контакта. |
linkedInProfile | URL профілю LinkedIn контакта (якщо доступний). |
replyType | Тип відповіді: email, linkedinMessage, linkedinInvite, linkedinInMail. |
receivedAt | Дата та час найраннішої відповіді для цієї пари (контакт, тип відповіді). |
replies[].subject | Тема відповіді (порожній рядок для відповідей LinkedIn без теми). |
replies[].message | Тіло відповіді. |
replies[].receivedAt | Дата та час отримання конкретної відповіді. |
GETEmail-відповіді на розсилку
БезплатноЦей метод повертає email-відповіді на листи розсилки, включно з іменем контакта, id, назвою розсилки та ін. Щоб отримати відповіді LinkedIn (запит на з'єднання, пряме повідомлення, InMail) разом з email-відповідями, використовуйте метод Усі відповіді на розсилку.
| GET | https://api.snov.io/v1/get-emails-replies |
campaignId *обов'язковий | Унікальний id розсилки для перегляду отриманих відповідей. |
offset | Ви можете зібрати до 10 000 відповідей за запит. Якщо у вашій кампанії більше відповідей, використовуйте зміщення, щоб указати, скільки попередніх відповідей ви хочете пропустити. Наприклад, якщо у вашій кампанії 20 000 відповідей, а ви хочете отримати відповіді 10 001-20 000, установіть зміщення на 10 000. Якщо зміщення не вказано, ви отримаєте останні 10 000 відповідей. |
<?php function campaignReplies() { $token = getAccessToken(); $params = [ 'access_token' => $token, 'campaignId' => 1234567 ]; $params = http_build_query($params); $options = [ CURLOPT_URL => 'https://api.snov.io/v1/get-emails-replies?'.$params, CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true, ]; $ch = curl_init(); curl_setopt_array($ch, $options); $res = json_decode(curl_exec($ch), true); curl_close($ch); return $res; } ?>
def user_lists(): token = get_access_token() params = {'access_token':token, 'campaignId':1234567 } res = requests.get('https://api.snov.io/v1/get-emails-replies', data=params) return json.loads(res.text)
[
{
"visitedAt": {
"date": "2020-07-14 13:10:46.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"campaignId": 1234567,
"campaign": "My top campaign",
"prospectId": "7a941739b09f1187532d52a684df545f3a223e432c7f53662264db8d33db80ee5fc19e573416a",
"prospectFirstName": "John",
"prospectLastName": "Doe",
"prospectName": "John Doe",
"sourcePage": null,
"source": "copy",
"locality": null,
"industry": "Airlines/Aviation",
"country": null,
"prospectEmail": "Johndoe@snov.io",
"hash": "6745f8162ecadbe325693345d1a53976",
"emailSubject": "\"Special content for you\"",
"emailBody": "\"<\p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.<\/p>\"",
"skills": "",
"links": null,
"customFields": null,
"id": "f676edc5de58f341dc7bf4e75c0c8580",
"customField_Phone": "",
"customField_Birthday": ""
}
]
campaignId | Унікальний id розсилки. |
campaign | Назва розсилки. |
prospectName | Повне ім'я контакта. |
emailSubject | Тема емейлу, на який було отримано відповідь. |
emailBody | Зміст емейлу, на який було отримано відповідь. |
POSTДодати контакти до списку
БезплатноВикористовуйте цей метод, якщо вам необхідно автоматизувати додавання контактів до списків, для яких запущена розсилка. Таким чином, після додавання контакта до вибраного списку, розсилка для нього почнеться автоматично.
| POST | https://api.snov.io/v1/add-prospect-to-list |
email | Адреса електронної пошти контакта. |
fullName | Повне ім'я контакта. |
firstName | Ім'я контакта. |
lastName | Прізвище контакта. |
phones | Масив з номерами телефонів контакта. |
country | Країна, у якій проживає контакт. Список країн представлений тут. Будь ласка, використовуйте лише країни з цього списку. |
locality | Місцезнаходження контакта. |
position | Посада контакта. |
companyName | Назва компанії, у якій працює контакт. |
companySite | Сайт компанії, у якій працює контакт. Будь ласка, використовуйте формат http://example.com . |
updateContact | Оновлює наявний контакт. Приймає true або false.
|
createDuplicates | Створює дублікат контакту. Приймає true або false.
Лише один параметр, updateContact або createDuplicates, може бути true. |
customFields[specialization] | Ви можете додати кастомні значення до вже наявних кастомних полів. Для цього зазначте назву поля у [квадратних дужках]. |
socialLinks[linkedIn] *Required if email is null | Посилання на профіль контакта в соцмережах. Укажіть назву соціальної мережі в [таких дужках] (LinkedIn, Facebook або X). |
listId *обов'язковий | Id списку, у якому міститься контакт. |
<?php function addProspectToList() { $token = getAccessToken(); $params = [ 'access_token' => $token, 'email' => 'john.doe@example.com', 'fullName' => 'John Doe', 'firstName' => 'John', 'lastName' => 'Doe', 'phones' => ['+18882073333', '+18882074444'], 'country' => 'United States', 'locality' => 'Woodbridge, New Jersey', 'socialLinks' => [ 'linkedIn' => 'https://www.linkedin.com/in/johndoe/&social', 'twiiter' => 'https://twitter.com/johndoe&social', ], 'customFields[specialization]'=> 'Software Engineering', 'position' => 'Vice President of Sales', 'companyName' => 'GoldenRule', 'companySite' => 'https://goldenrule.com', 'updateContact' => true, 'listId' => '12345', ]; $options = [ CURLOPT_URL => 'https://api.snov.io/v1/add-prospect-to-list', CURLOPT_POST => true, CURLOPT_POSTFIELDS => $params, CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true ]; $ch = curl_init(); curl_setopt_array($ch, $options); $res = json_decode(curl_exec($ch), true); curl_close($ch); return $res; } ?>
def add_prospect_to_list(): token = get_access_token() params = {'access_token':token, 'email':'john.doe@example.com', 'fullName': 'John Doe', 'firstName':'John', 'lastName':'Doe', 'phones':['+18882073333', '+18882074444'], 'country':'United States', 'locality':'Woodbridge, New Jersey', 'socialLinks[linkedIn]':'https://www.linkedin.com/in/johndoe/&social', 'social[twiiter]':'https://twitter.com/johndoe&social', 'customFields[specialization]':'Software Engineering', 'position':'Vice President of Sales', 'companyName':'GoldenRule', 'companySite':'https://goldenrule.com', 'updateContact':1, 'listId':'12345' } res = requests.post('https://api.snov.io/v1/add-prospect-to-list', data=params) return json.loads(res.text)
{ "email": "john.doe@example.com", "listId": 12345678, "createDuplicates": false, "updateContact": true, "fullName": "John Doe", "firstName": "John", "lastName": "Doe", "position": "Vice President of Sales", "companyName": "GoldenRule", "companySite": "https://goldenrule.com", "phones": [ "+18882073333", "+18882074444" ], "country": "United States", "locality": "Woodbridge, New Jersey", "customFields": { "specialization": "Software Engineering" }, "socialLinks": { "linkedIn": "https://www.linkedin.com/in/johndoe/&social", "twitter": "https://twitter.com/johndoe&social" } }
{
"success": true,
"id": "0Y2QzowWL1rHpIptwaRp0Q==",
"added": true,
"updated": false
}success | Буде true , якщо контакт було додано до списку. |
id | Ідентифікатор доданого контакта. |
added | Буде true , якщо контакт було додано до списку. |
updated | Буде true , якщо дані контакта було оновлено. |
errors | Під час додавання контакта до списку виникла помилка. |
POSTЗнайти контакт за id
БезплатноЗнаходьте контакти у списках за id. Якщо у вас є id контакта, ви можете отримати повну інформацію про нього, включно зі списками та розсилками, до яких він доданий.
| POST | https://api.snov.io/v1/get-prospect-by-id |
id *обов'язковий | Id контакта. Його можна побачити у відповіді, коли ви додаєте контакт за допомогою методу API Додати контакти до списку або в адресному рядку, коли переглядаєте сторінку контакта (приклад). |
<?php function getProspectById() { $token = getAccessToken(); $params = [ 'access_token' => $token, 'id' => 'xusD3-T_K5IktGoaa8Jc8A==' ]; $options = [ CURLOPT_URL => 'https://api.snov.io/v1/get-prospect-by-id', CURLOPT_POST => true, CURLOPT_POSTFIELDS => $params, CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true ]; $ch = curl_init(); curl_setopt_array($ch, $options); $res = json_decode(curl_exec($ch), true); curl_close($ch); return $res; } ?>
def getProspectById(): token = get_access_token() params = {'access_token':token, 'id':'xusD3-T_K5IktGoaa8Jc8A==' } res = requests.post('https://api.snov.io/v1/get-prospect-by-id', data=params) return json.loads(res.text)
{
"success": true,
"data": {
"id": "xusD3-T_K5IktGoaa8Jc8A==",
"name": "Gavin Vanrooyen",
"firstName": "Gavin",
"lastName": "Vanrooyen",
"industry": "Entertainment",
"country": "United States",
"locality": "Greater Atlanta Area",
"social": [
{
"link": "https:\/\/www.linkedin.com\/in\/gavin-vanrooyen-8090738\/",
"type": "linkedIn"
}
],
"lastUpdateDate": {
"date": "2019-09-11 12:37:58.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"currentJob": [
{
"companyName": "Octagon",
"position": "Senior Brand Director",
"socialLink": "https:\/\/www.linkedin.com\/company\/659312",
"site": "http:\/\/octagon.com",
"locality": "United States",
"state": null,
"city": null,
"street": null,
"street2": null,
"postal": null,
"founded": null,
"startDate": "2018-07-31",
"endDate": null,
"size": "1-10",
"industry": "Entertainment",
"companyType": "Public Company",
"country": "United States"
}
],
"previousJob": [
{
"companyName": "UPS",
"position": "Manager, Sponsorships and Events",
"socialLink": "https:\/\/www.linkedin.com\/company\/152322",
"site": "http:\/\/www.ups.com\/",
"locality": "United States",
"state": "GA",
"city": "Atlanta",
"street": "55 Glenlake Parkway, NE",
"street2": null,
"postal": "30328",
"founded": "1907",
"startDate": null,
"endDate": null,
"size": "10001+",
"industry": "Logistics and Supply Chain",
"companyType": "Public Company",
"country": "United States"
}
],
"lists": [
{
"id": 1250344,
"name": "People List"
}
],
"campaigns": []
}
}success | Буде true , якщо контакт був знайдений. |
id | Унікальний ідентифікатор профілю. |
name | Повне ім'я контакта. |
firstName | Ім'я контакта. |
lastName | Прізвище контакта. |
industry | Галузь, зазначена в профілі контакта. |
country | Країна контакта. |
locality | Місцезнаходження контакта. |
social | Посилання на профілі соцмереж контакта. |
currentJobs | Масив, який містить інформацію про поточну посаду контакта. |
previousJobs | Масив, який містить інформацію про попередні посади контакта. |
lastUpdateDate | Дата останнього оновлення контакта. |
lists | Списки, до яких було додано контакт. |
campaigns | Список розсилок, отримувачем яких є контакт. Містить коротку статистику, наприклад, статус, кількість отриманих ним листів, відкриттів та відповідей на емейли. |
POSTЗнайти контакт за email-адресою
БезплатноЗнаходьте контакти в списках за адресою електронної пошти. Під час пошуку за email-адресою ви отримуєте список усіх контактів, які пов'язані з адресою. Кожен елемент списку містить повну інформацію про контакт, включно зі списками та розсилками, до яких він доданий.
| POST | https://api.snov.io/v1/get-prospects-by-email |
email *обов'язковий | Адреса електронної пошти контакта. |
<?php function getProspectsByEmail() { $token = getAccessToken(); $params = [ 'access_token' => $token, 'email' => 'gavin.vanrooyen@octagon.com' ]; $options = [ CURLOPT_URL => 'https://api.snov.io/v1/get-prospects-by-email', CURLOPT_POST => true, CURLOPT_POSTFIELDS => $params, CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true ]; $ch = curl_init(); curl_setopt_array($ch, $options); $res = json_decode(curl_exec($ch), true); curl_close($ch); return $res; } ?>
def getProspectsByEmail(): token = get_access_token() params = {'access_token':token, 'email':'gavin.vanrooyen@octagon.com' } res = requests.post('https://api.snov.io/v1/get-prospects-by-email', data=params) return json.loads(res.text)
{
"success": true,
"data": [
{
"id": "xusD3-T_K5IktGoaa8Jc8A==",
"name": "Gavin Vanrooyen",
"firstName": "Gavin",
"lastName": "Vanrooyen",
"industry": "Entertainment",
"country": "United States",
"locality": "Greater Atlanta Area",
"social": [
{
"link": "https:\/\/www.linkedin.com\/in\/gavin-vanrooyen-809073755\/",
"type": "linkedIn"
}
],
"lastUpdateDate": {
"date": "2019-09-11 12:37:58.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"currentJob": [
{
"companyName": "Octagon",
"position": "Senior Brand Director",
"socialLink": "https:\/\/www.linkedin.com\/company\/659333",
"site": "http:\/\/octagon.com",
"locality": "United States",
"state": null,
"city": null,
"street": null,
"street2": null,
"postal": null,
"founded": null,
"startDate": "2018-07-31",
"endDate": null,
"size": "1-10",
"industry": "Entertainment",
"companyType": "Public Company",
"country": "United States"
}
],
"previousJob": [
{
"companyName": "UPS",
"position": "Manager, Sponsorships and Events",
"socialLink": "https:\/\/www.linkedin.com\/company\/1523574",
"site": "http:\/\/www.ups.com\/",
"locality": "United States",
"state": "GA",
"city": "Atlanta",
"street": "55 Glenlake Parkway, NE",
"street2": null,
"postal": "30328",
"founded": "1907",
"startDate": null,
"endDate": null,
"size": "10001+",
"industry": "Logistics and Supply Chain",
"companyType": "Public Company",
"country": "United States"
}
],
"lists": [
{
"id": 1250344,
"name": "People List"
}
],
"campaigns": []
}
]
}success | Буде true , якщо контакт був знайдений. |
id | Унікальний ідентифікатор профілю. |
name | Повне ім'я контакта. |
firstName | Ім'я контакта. |
lastName | Прізвище контакта. |
industry | Галузь, зазначена в профілі контакта. |
country | Країна контакта. |
locality | Місцезнаходження контакта. |
social | Посилання на профілі соцмереж контакта. |
currentJobs | Масив, який містить інформацію про поточну посаду контакта. |
previousJobs | Масив, який містить інформацію про попередні посади контакта. |
lastUpdateDate | Дата останнього оновлення контакта. |
lists | Списки, до яких було додано контакт. |
campaigns | Список розсилок, отримувачем яких є контакт. Містить коротку статистику, наприклад, статус, кількість отриманих ним листів, відкриттів та відповідей на емейли. |
GETЗнайти кастомні поля контактів.
БезплатноЦей метод повертає список усіх кастомних полів, створених користувачем, включно з назвами полів, параметрами, які визначають, обов'язкове поле чи ні, та типом інформації у полі.
| GET | https://api.snov.io/v1/prospect-custom-fields |
| Для цього методу відсутні вхідні параметри |
<?php function customFields() { $token = getAccessToken(); $params = [ 'access_token' => $token, ]; $params = http_build_query($params); $options = [ CURLOPT_URL => 'https://api.snov.io/v1/prospect-custom-fields?'.$params, CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true ]; $ch = curl_init(); curl_setopt_array($ch, $options); $res = json_decode(curl_exec($ch), true); curl_close($ch); return $res; } ?>
def custom_fields(): token = get_access_token() params = {'access_token':token } res = requests.get('https://api.snov.io/v1/prospect-custom-fields', data=params) return json.loads(res.text)
[
{
"key": "customFields['company']",
"label": "company",
"required": false,
"type": "string"
},
{
"key": "customFields['Project name']",
"label": "Project name",
"required": false,
"type": "string"
},
{
"key": "customFields['SEO']",
"label": "SEO",
"required": false,
"type": "string"
}
]
key | Ключ поля у масиві customFields . |
label | Назва поля. |
required | Буде true якщо кастомне поле обов'язкове. |
type | Тип даних кастомного поля (рядок, число або дата). |
GETПерегляд списків користувача
БезплатноЦей метод надає всі списки, створені користувачем. Ви можете використовувати цей метод, щоб перевірити списки, які можна використовувати для тригерних розсилок.
| GET | https://api.snov.io/v1/get-user-lists |
| Для цього методу відсутні вхідні параметри |
<?php function getUserLists() { $token = getAccessToken(); $params = [ 'access_token' => $token, ]; $params = http_build_query($params); $options = [ CURLOPT_URL => 'https://api.snov.io/v1/get-user-lists?'.$params, CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true ]; $ch = curl_init(); curl_setopt_array($ch, $options); $res = json_decode(curl_exec($ch), true); curl_close($ch); return $res; } ?>
def user_lists(): token = get_access_token() params = {'access_token':token } res = requests.get('https://api.snov.io/v1/get-user-lists', params=params) return json.loads(res.text)
[
{
"id": 1818597,
"name": "FirstSend",
"contacts": 1,
"isDeleted": false,
"creationDate": {
"date": "2020-04-07 08:25:44.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"deletionDate": null
},
{
"id": 1505383,
"name": "All prospects",
"contacts": 10,
"isDeleted": true,
"creationDate": {
"date": "2019-12-17 15:07:30.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"deletionDate": {
"date": "2020-02-17 14:05:44.000000",
"timezone_type": 3,
"timezone": "UTC"
}
},
{
"id": 1479070,
"name": "EMAIL",
"contacts": 13,
"isDeleted": true,
"creationDate": {
"date": "2019-12-06 10:51:01.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"deletionDate": {
"date": "2020-02-17 14:05:48.000000",
"timezone_type": 3,
"timezone": "UTC"
}
}
]
id | Унікальний id списку користувача. |
name | Назва списку. |
contacts | Кількість контактів у списку. |
isDeleted | Статус списку. Повертає true , якщо список було видалено. |
creationDate | Дата створення списку (дата, час, часовий пояс). |
deleteDate | Містить дату видалення, якщо список було видалено (дата, час та часовий пояс). |
POSTПерегляд контактів зі списку
БезплатноЦей метод повертає всі дані про контакти в зазначеному списку, як-от їхня email-адреса та статус.
| POST | https://api.snov.io/v1/prospect-list |
listId *обов'язковий | Унікальний ID списку. |
page | Ви можете вибрати, з якої сторінки розпочати пошук. Це поле не є обов'язковим. |
perPage | Установіть максимальну кількість контактів, яку буде включено у відповідь. Максимальне значення – 5 000. |
<?php function prospectsInList() { $token = getAccessToken(); $params = [ 'access_token' => $token, 'listId' => '1234567', 'page' => '1', 'perPage' => '2' ]; $options = [ CURLOPT_URL => ' https://api.snov.io/v1/prospect-list', CURLOPT_POSTFIELDS => $params, CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true ]; $ch = curl_init(); curl_setopt_array($ch, $options); $res = json_decode(curl_exec($ch), true); curl_close($ch); return $res; } ?>
def prospect_in_list(): token = get_access_token() params = {'access_token':token, 'listId':'1234567', 'page':'1', 'perPage':'2' } res = requests.post('https://api.snov.io/v1/prospect-list', params=params) return json.loads(res.text)
Зверніть увагу, що результати відображаються в зворотньому порядку, від останнього контакта до першого.
{
"success": true,
"list": {
"name": "Lead LIST",
"contacts": 3,
"creationDate": {
"date": "2020-05-19 17:34:39.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"emailsCount": []
},
"prospects": [
{
"id": "226db935fc93422496fda5d5209e8cbf77cc77ec685891706028009b86608f7ce5877a3faf",
"name": "Andrew Garfiled",
"firstName": "Andrew",
"lastName": "Garfiled",
"emails": [
{
"email": "andrewexp@exp.com",
"probability": 99,
"isVerified": null,
"jobStatus": "any",
"domainType": "linkedin_email",
"isValidFormat": null,
"isDisposable": null,
"isWebmail": null,
"isGibberish": null,
"smtpStatus": null
}
]
},
{
"id": "f20d30219b039d1408d837a748a1e2ab843c97e65080f6cf8fa7d948477d9093d87413f05f",
"name": "John Doe",
"firstName": "John",
"lastName": "Doe",
"emails": [
{
"email": "johndoe@gmail.com",
"probability": 99,
"isVerified": null,
"jobStatus": "any",
"domainType": "linkedin_email",
"isValidFormat": true,
"isDisposable": false,
"isWebmail": true,
"isGibberish": false,
"smtpStatus": 3
}
]
}
]
}
list | Масив з інформацією про список та контакти в ньому. |
name | Назва списку. |
contacts | Кількість контактів у списку. |
creation_date | Дата створення списку (містить інформацію про дату, час та часовий пояс). |
emailsCount | Кількість email-адрес у списку. |
prospects | Усі контакти зі списку. |
id | Унікальний id контакта. |
name | Повне ім'я контакта. |
emails | Список email-адрес, які належать контакту. |
POSTСтворення нового списку контактів
БезплатноСкористайтеся цим методом, щоб створити новий список контактів у своєму акаунті.
| POST | https://api.snov.io/v1/lists |
name | Назва нового списку контактів. |
<?php function createNewList() { $token = getAccessToken(); $params = [ 'access_token' => $token, 'name' => 'New list' ]; $options = [ CURLOPT_URL => 'https://api.snov.io/v1/lists', CURLOPT_POST => true, CURLOPT_POSTFIELDS => $params, CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true, ]; $ch = curl_init(); curl_setopt_array($ch, $options); $res = json_decode(curl_exec($ch), true); curl_close($ch); } ?>
def add_prospect_list(): token = get_access_token() params = { 'access_token':token, 'name':'New list' } res = requests.post('https://api.snov.io/v1/lists', data=params) return json.loads(res.text)
[
{
"success": true,
"data": {
"id": 1234567
}
}
]
id | ID нового списку контактів. |
GETОтримати список пайплайнів
БезплатноМетод показує список усіх пайплайнів із розділу CRM (Угоди), включно з кількістю та загальною вартістю угод у кожному пайплайні.
| GET | https://api.snov.io/v2/pipelines |
| Цей метод не має вхідних параметрів. |
<?php function getUserPipelines() { $token = getAccessToken(); $options = [ CURLOPT_URL => 'https://api.snov.io/v2/pipelines', CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTPHEADER => [ 'Authorization: Bearer ' . $token, 'Content-Type: application/json', ], ]; $ch = curl_init(); curl_setopt_array($ch, $options); $res = json_decode(curl_exec($ch), true); curl_close($ch); return $res; } ?>
def get_user_pipelines(): token = get_access_token() headers = { 'Authorization': 'Bearer ' + token, 'Content-Type': 'application/json' } res = requests.get('https://api.snov.io/v2/pipelines', headers=headers) return json.loads(res.text)
{
"data": [
{
"id": 1106350,
"name": "Test pipeline",
"deals_count": 65,
"deals_value": 1241600,
"created_at": "2022-05-27T00:00:00Z"
},
{
"id": 524548,
"name": "Pipeline",
"deals_count": 0,
"deals_value": 0,
"created_at": "2022-01-10T00:00:00Z"
}
]
}
id | Унікальний ідентифікатор пайплайну. |
name | Назва пайплайну. |
deals_count | Кількість угод, які зараз у пайплайні. |
deals_value | Загальна вартість усіх угод у пайплайні. |
created_at | Дата й час створення пайплайну у форматі ISO 8601. |
GETОтримати список етапів пайплайну
БезплатноМетод показує список усіх етапів у межах конкретного пайплайну з розділу CRM (Угоди).
| GET | https://api.snov.io/v2/pipelines/{pipeline_id}/stages |
pipeline_id | Унікальний ідентифікатор пайплайну, етапи якого потрібно отримати. |
<?php function getPipelineStages($pipelineId) { $token = getAccessToken(); $options = [ CURLOPT_URL => 'https://api.snov.io/v2/pipelines/' . $pipelineId . '/stages', CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTPHEADER => [ 'Authorization: Bearer ' . $token, 'Content-Type: application/json', ], ]; $ch = curl_init(); curl_setopt_array($ch, $options); $res = json_decode(curl_exec($ch), true); curl_close($ch); return $res; } ?>
def get_pipeline_stages(pipeline_id): token = get_access_token() headers = { 'Authorization': 'Bearer ' + token, 'Content-Type': 'application/json' } res = requests.get( f'https://api.snov.io/v2/pipelines/{pipeline_id}/stages', headers=headers ) return json.loads(res.text)
{
"data": [
{
"id": 10001,
"pipeline_id": 1106350,
"name": "Lead in",
"order": 1,
"deals_count": 54,
"deals_value": 1011
},
{
"id": 10002,
"pipeline_id": 1106350,
"name": "Contact made",
"order": 2,
"deals_count": 4,
"deals_value": 2108
}
]
}
id | Унікальний ідентифікатор етапу. |
pipeline_id | ID пайплайну, до якого належить цей етап. |
name | Назва етапу. |
order | Позиція етапу в межах пайплайну. |
deals_count | Кількість угод, які зараз на цьому етапі. |
deals_value | Загальна вартість усіх угод на цьому етапі. |
GETПеревірка балансу
БезплатноВикористовуйте цей метод, якщо вам необхідно перевірити залишок кредитів на рахунку.
| GET | https://api.snov.io/v1/get-balance |
| Для цього методу відсутні вхідні параметри |
<?php function getBalance() { $token = getAccessToken(); $params = [ 'access_token' => $token, ]; $params = http_build_query($params); $options = [ CURLOPT_URL => 'https://api.snov.io/v1/get-balance?'.$params, CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true ]; $ch = curl_init(); curl_setopt_array($ch, $options); $res = json_decode(curl_exec($ch), true); curl_close($ch); return $res; } ?>
def get_balance(): token = get_access_token() headers = {'authorization':token } res = requests.get('https://api.snov.io/v1/get-balance', headers=headers) return json.loads(res.text)
{
"success": true,
"data": {
"balance": "25000.00",
"teamwork": false,
"unique_recipients_used": 0,
"limit_resets_in": 29,
"expires_in": 359
}
}
balance | Поточний баланс користувача в кредитах. |
teamwork | true, якщо ви є учасником команди або її лідером, або false, якщо ви не в команді. |
recipients_used | Статистика використання отримувачів за поточний місяць. |
limit_resets_in | Кількість днів до оновлення ліміту. |
expires_in | Кількість днів до завершення підписки. |
Вебхуки
Вебхук дозволяє отримувати сповіщення про події, що трапилися у вашому акаунті Snov.io.
Ви можете використовувати вебхуки для виклику кінцевої точки (URL-адреси) на своєму сервері щоразу, коли в Snov.io трапляється подія, на яку ви підписалися, і надсилання даних до вашої програми в реальному часі.
Коли трапляється подія, Snov.io надсилає HTTP-запит з JSON на визначену URL-адресу кінцевої точки.
Ви можете підписатися та керувати вебхуками через комплекс викликів API.
Нижче переховані вебхуки обʼєктів та подій, що підтримуються:
| Обʼєкт вебхуку: | Подія: | Коли він активується |
|---|---|---|
campaign_email | sent | Коли будь-який емейл надсилається отримувачу в будь-якій тригерній розсилці |
| first_sent | Коли перший емейл надсилається отримувачу в будь-якій розсилці | |
| opened | Коли отримувач відкриває емейл в будь-якій тригерній розсилці | |
| bounced | Коли емейли кампанії баунсять | |
| link_clicked | Коли отримувач натиснув посилання в імейлі кампанії | |
campaign_reply | received | Коли отримувач відповідає на будь-який емейл в будь-якій тригерній розсилці |
| first_received | Коли отримувач вперше відповідає на емейл в будь-якій тригерній розсилці | |
| autoreply_received | Коли ви отримуєте автовідповідь на емейл кампанії | |
campaign_li_reply | received | Коли отримувач надсилає наступну відповідь у LinkedIn — на запит на контакт, на повідомлення або на InMail — у будь-якій з кампаній |
| first_received | Коли отримувач надсилає першу відповідь у LinkedIn — на запит на контакт, на повідомлення або на InMail — у будь-якій з кампаній | |
campaign_li | connection_request_accepted | Коли отримувач приймає запит на контакт у LinkedIn, надісланий з кампанії |
company | found_domains_by_names | Коли ви запитуєте домен компанії на основі її назви |
prospect | found_by_li_url | Коли ви запитуєте інформацію з профілю контакта на основі його посилання на LinkedIn |
| found_emails_by_name_by_domain | Коли ви шукаєте email-адресу контакта | |
| campaign_finished | Коли кампанія завершується для отримувача (статус: Завершено) | |
| campaign_unsubscribed | Коли отримувач кампанії відписався від ваших імейлів | |
email_verification | verified | Коли ви запитуєте верифікацію email-адреси |
Ліміти: користувачі на преміум-тарифах можуть створювати до 50 вебхуків.
Повторні спроби: Вебхук вважається успішним, коли ми отримуємо статус HTTP з діапазону 200-299 протягом 3 секунд.
Якщо ми отримуємо будь-який інший статус HTTP або спливає час очікування, ми робимо сім повторних спроб зі збільшенням інтервалів протягом 38 годин після події, яка активувала вебкух:
Якщо всі повторні спроби не є успішними, вебхук стає неактивним.
- 1-а: одразу після події
- 2-а: через 20 хвилин після останньої спроби (20 хвилин після події)
- 3-я: через 40 хвилин після останньої спроби (1 година після події)
- 4-а: через 60 хвилин після останньої спроби (2 години після події)
- 5-а: через 4 години після останньої спроби (6 годин після події)
- 6-а: через 8 годин після останньої спроби (14 годин після події)
- 7-а: через 24 години після останньої спроби (38 годин після події)
GETСписок всіх вебхуків
| GET | https://api.snov.io/v2/webhooks |
Content-Type: application/json |
| У цього методу відсутні вхідні параметри. |
{
"data": [
{
"data": {
"id": 8,
"end_point": "https://hooks.yourdomain.com/hooks/catch/1237321/awwwcz/",
"event_object": "campaign_email",
"event_action": "sent",
"status": "active",
"created_at": 1655847444
}
},
{
"data": {
"id": 14,
"end_point": "https://hooks.yourdomain.com/hooks/catch/1237321/abqqqpcz/",
"event_object": "campaign_email",
"event_action": "sent",
"status": "deactivated",
"created_at": 1655890563
}
},
{
"data": {
"id": 17,
"end_point": "https://hooks.yourdomain.com/hooks/catch/1237321/abwfpcz/",
"event_object": "campaign_email",
"event_action": "sent",
"status": "active",
"created_at": 1656057947
}
}
],
"meta": {
"webhooks_count": 3,
"user_id": 1313777
}
}
| Параметр | Тип даних | Тип даних |
|---|---|---|
data | array | Колекція моделей вебхуків |
id | int | ID вебхуку |
end_point | string | Поточна URL-адреса, яку ви вказали під час додавання вебхуку і на яку вебхук буде надіслано |
event_object | string | Обʼєкт, з яким трапляється подія |
event_action | string | Подія |
created_at | int | Дата створення вебхуку у форматі Unix Timestamp |
status | string | Статус вебхуку: активний, неактивний |
meta | object | Повʼязані дані |
webhooks_count | int | Загальна кількість вебхуків у вашому акаунті (максимально — 50) |
user_id | int | Ваш ID користувача |
POSTДодати вебхук
| POST | https://api.snov.io/v2/webhooks |
Content-Type: application/json |
event_object | обʼєкт, з яким трапляється подія (список обʼєктів, що підтримуються) |
event_action | подія, що трапляється з обʼєктом (список подій, що підтримуються) |
endpoint_url | URL-адреса, на яку надсилається вебхук |
{
"event_object": "campaign_email",
"event_action": "sent",
"endpoint_url": "https://hooks.yourdomain.com/hooks/catch/1237321/abwfpcz/"
}
{
"data": {
"id": 17,
"end_point": "https://hooks.yourdomain.com/hooks/catch/1237321/abwfpcz/",
"event_object": "campaign_email",
"event_action": "sent",
"created_at": 1656057947,
"status": "active"
},
"meta": {
"user_id": 1313777
}
}
| Параметр | Тип даних | Тип даних |
|---|---|---|
data | object | Дані вебхуку |
id | int | ID вебхуку |
end_point | string | Поточна URL-адреса, яку ви вказали під час додавання вебхуку і на яку вебхук буде надіслано |
event_object | string | Обʼєкт, з яким трапляється подія |
event_action | string | Подія |
created_at | int | Дата створення вебхуку у форматі Unix Timestamp |
status | string | Статус вебхуку: активний, неактивний |
meta | object | Повʼязані дані |
user_id | int | Ваш ID користувача |
PUTЗмінити статус вебхуку
Додайте унікальне значення id вибраного вебхуку в кінці URL-адреси запиту.
Скористайтеся методом «Список всіх вебхуків», щоб отримати значення id вебхуків.
| PUT | https://api.snov.io/v2/webhooks/webhook_id |
Content-Type: application/json |
status | активний або неактивний |
{
https://api.snov.io/v2/webhooks/14
"status": "deactivated"
}
{
"data": {
"id": 14,
"end_point": "https://hooks.yourdomain.com/hooks/catch/1237321/abqqqpcz/",
"event_object": "campaign_email",
"event_action": "sent",
"created_at": 1655890563,
"status": "deactivated"
},
"meta": {
"user_id": 1313777
}
}
| Параметр | Тип даних | Тип даних |
|---|---|---|
data | object | Дані вебхуку |
id | int | ID вебхуку |
end_point | string | Поточна URL-адреса, яку ви вказали під час додавання вебхуку і на яку вебхук буде надіслано |
event_object | string | Обʼєкт, з яким трапляється подія |
event_action | string | Подія |
created_at | int | Дата створення вебхуку у форматі Unix Timestamp |
status | string | Статус вебхуку: активний, неактивний |
meta | object | Повʼязані дані |
user_id | int | Ваш ID користувача |
DELETEВидалити вебхук
Додайте унікальне значення id вибраного вебхуку в кінці URL-адреси запиту.
Скористайтеся методом «Список всіх вебхуків», щоб отримати значення id вебхуків.
| DELETE | https://api.snov.io/v2/webhooks/webhook_id |
Content-Type: application/json |
{
https://api.snov.io/v2/webhooks/8
}
{
"data": {
"success": true
}
}
| Параметр | Тип даних | Тип даних |
|---|---|---|
success | boolean | Визначає, чи вебхук видалено |