Snov.io API
Z funkcji Snov.io możesz korzystać za pomocą naszego prostego REST API. Zintegruj się z API Snov.io, aby synchronizować leady, znajdować adresy e-mail, zarządzać potencjalnymi klientami i nie tylko. Limit API wynosi 60 żądań na minutę.
Jeśli korzystasz z bezpłatnego planu, możesz poprosić o dostęp testowy, rezerwując indywidualne demo z naszym zespołem. Na początek opowiedz nam o swoim konkretnym celu, abyśmy mogli lepiej zrozumieć twoje potrzeby.
Zastosowania API Snov.io
- Wzbogać listy potencjalnych klientów, aby zapewnić zespołowi sprzedaży więcej danych
Znajduj prawdziwe adresy e-mail na podstawie samego imienia i nazwiska lub domeny firmy — idealne rozwiązanie do rozbudowy list potencjalnych klientów lub wzbogacania istniejących danych. - Automatycznie dodawaj nowych użytkowników do kampanii
Połącz formularze rejestracji i zapisu na wydarzenia z API Snov.io, aby natychmiast dodawać nowych potencjalnych klientów do kampanii. - Dbaj o czystość bazy danych klientów
Zintegruj weryfikację adresów e-mail z CRM-em lub narzędziami do outreachu, aby natychmiast weryfikować adresy nowo dodanych potencjalnych klientów i utrzymywać aktualność danych obecnych klientów. - Użyj adresów URL na LinkedInie, aby automatycznie uzupełniać dane leadów
Przekształć zwykły adres URL użytkownika LinkedIna w rozbudowany profil gotowy do użycia w CRM-ie. Pożegnaj ręczne wprowadzanie danych i zyskaj wysokiej jakości leady. - Udostępniaj wyniki kampanii w czasie rzeczywistym
Pobieraj aktualne dane z kampanii cold outreach i prezentuj je w dopracowanych dashboardach lub slajdach. Dostarczaj interesariuszom potrzebne informacje bez zbędnego wysiłku. - Dbaj o zgodność z listami „do not email”
Automatycznie dodawaj potencjalnych klientów do list „do not email”, aby uniknąć przypadkowego outreachu. To idealne rozwiązanie, by zachować spójność działań zespołu sprzedaży, respektować rezygnacje z kontaktu i działać zgodnie z zasadami ochrony danych.
Zintegruj te i wiele innych metod ze swoim workflow. Dzięki elastycznemu API możliwości zastosowania są praktycznie nieograniczone.
Uwierzytelnianie
Musisz wygenerować token dostępu, aby uwierzytelniać przyszłe żądania. Podczas wysyłania żądania podaj ten token dostępu w polu Autoryzacja.
| Authorization: Bearer QSlHffXmCAILIOHNGXToq4LsP2yX64VQhEBZ7Ei4 |
Oto przykład generowania tokena.
| POST | https://api.snov.io/v1/oauth/access_token |
grant_type | Zawsze będzie to
client_credentials |
client_id | Twój identyfikator jest dostępny w ustawieniach konta https://app.snov.io/account/api |
client_secret | Twój tajny klucz jest dostępny w ustawieniach konta 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 | Twój nowy token dostępu |
token_type | Zawsze będzie Bearer |
expires_in | Czas wygaśnięcia tokena (w sekundach) |
Metody API
POSTWyszukiwanie domeny
1 kredyt za każde unikalne żądanie / 1 kredyt za każdy profil potencjalnego klienta z adresem e-mailWpisz nazwę domeny, a Snov.io zwróci informacje o firmie, adresy e-mail i profile potencjalnych klientów.
1 kredyt za każde żądanie POST. Jeśli nie otrzymasz żadnych wyników, kredyt nie zostanie naliczony.
| POST | https://api.snov.io/v2/domain-search/start |
domain | Nazwa domeny, dla której chcesz otrzymać informacje o firmie. Na przykład „snov.io”. |
<?php function companyInfoSearch() { $token = getAccessToken(); $params = [ 'domain' => 'snov.io', 'webhook_url' => 'https://hooks.yourdomain.com', ]; $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', 'webhook_url': 'https://hooks.yourdomain.com' } 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 | Domena, dla której pobierasz informacje o firmie. |
task_hash | Unikalny identyfikator rozpoczętego zadania wyszukiwania. Jest automatycznie dodawany do adresu URL kolejnego żądania, aby otrzymać wyniki. |
result | Adres URL żądania, którego należy użyć, aby otrzymać informacje o firmie. |
| 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 | Nazwa firmy powiązanej z domeną. |
city | Miasto, w którym znajduje się siedziba firmy. |
founded | Rok założenia firmy. |
website | Adres strony internetowej firmy. |
hq_phone | Numer telefonu do siedziby firmy. |
industry | Branża firmy. |
size | Liczba pracowników firmy. |
related_domains | Domeny z tą samą domeną drugiego poziomu (SLD) co domena, dla której pobierasz dane. |
domain | Nazwa domeny, dla której API zwróciło informacje o firmie. |
task_hash | Unikalny identyfikator rozpoczętego zadania wyszukiwania. |
prospects_count | Liczba profili potencjalnych klientów pobranych w wyniku żądania. |
emails_count | Liczba adresów e-mail z domeny pobranych w wyniku żądania. |
generic_contacts_count | Liczba ogólnych adresów e-mail pobranych w wyniku żądania. |
prospects | Adres URL do żądania listy z pełnymi profilami potencjalnych klientów. |
domain_emails | Adres URL do żądania listy z adresami e-mail z domeny. |
generic_contacts | Adres URL do żądania listy z ogólnymi adresami e-mail firmy. |
status | Status żądania. Może mieć wartość ukończone lub w toku. |
| POST | https://api.snov.io/v2/domain-search/prospects/start |
domain | Nazwa domeny, dla której chcesz znaleźć profile potencjalnych klientów. Na przykład „snov.io”. |
positions[] | Użyj tego parametru, aby filtrować potencjalnych klientów według stanowiska, na przykład „Software Developer”. Aby filtrować według wielu stanowisk, wprowadź tablicę wymaganych stanowisk rozdzielonych przecinkami. Możesz filtrować według maksymalnie 10 stanowisk na żądanie. |
page | Numer strony zawierającej profile potencjalnych klientów. Każda strona wyświetla maksymalnie 20 profili. Jeśli numer strony nie zostanie podany, domyślnie zostanie zwrócona pierwsza strona. |
<?php function prospectsSearch() { $token = getAccessToken(); $params = [ 'domain' => 'snov.io', 'page' => 1, 'positions' => ['Web developer','QA Engineer'], 'webhook_url' => 'https://hooks.yourdomain.com' ]; $headers = [ 'Authorization: Bearer ' . $token, ]; $options = [ CURLOPT_URL => 'https://api.snov.io/v2/domain-search/prospects/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'], 'webhook_url': 'https://hooks.yourdomain.com' } 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 | Domena, dla której pobierasz profile potencjalnych klientów. |
tab | Wyświetla typ żądanych wyników. prospects oznacza, że szukasz profili potencjalnych klientów. emails wyświetla adresy e-mail z domeny. service oznacza, że pobierasz ogólne adresy e-mail. |
task_hash | Unikalny identyfikator rozpoczętego zadania wyszukiwania. Jest automatycznie dodawany do adresu URL kolejnego żądania, aby otrzymać wyniki. |
page | Numer strony zawierającej profile potencjalnych klientów. Każda strona wyświetla maksymalnie 20 profili. |
positions | Stanowiska użyte do filtrowania wyników. |
result | Adres URL żądania, którego należy użyć, aby otrzymać profile potencjalnych klientów. |
| 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 | Imię potencjalnego klienta. |
last_name | Nazwisko potencjalnego klienta. |
position | Stanowisko potencjalnego klienta. |
source_page | Strona źródłowa pobranych danych osobowych. |
search_emails_start | Adres URL kolejnego żądania do wyszukania adresu e-mail potencjalnego klienta. |
domain | Domena, dla której pobierasz profile potencjalnych klientów. |
tab | Wyświetla typ otrzymywanych wyników. prospects oznacza, że szukasz profili potencjalnych klientów. emails wyświetla adresy e-mail z domeny. service oznacza, że pobierasz ogólne adresy e-mail. |
task_hash | Unikalny identyfikator rozpoczętego zadania wyszukiwania. |
page | Numer strony zawierającej profile potencjalnych klientów. Każda strona wyświetla maksymalnie 20 profili. |
positions | Stanowiska użyte do filtrowania wyników. |
total_count | Łączna liczba znalezionych profili potencjalnych klientów. |
next | Adres URL kolejnego żądania do pobrania wyników z następnej strony. Każda strona zawiera maksymalnie 20 potencjalnych klientów. |
status | Status żądania. Może mieć wartość ukończone lub w toku. |
| 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'; $params = [ 'webhook_url' => 'https://hooks.yourdomain.com', ]; $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_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 search_prospect_emails_start(): token = get_access_token() headers = {'authorization': f'Bearer {token}'} params = { 'webhook_url': 'https://hooks.yourdomain.com' } res = requests.post(f'https://api.snov.io/v2/domain-search/prospects/search-emails/start/' f'a811d72df2e52bd447621c4a1326e540102f3b70ba39a81bd597020ed0b9f812ee8de7e0f4ecad312716d03576fdf0af6d8277e1', params=params, 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 | Unikalny identyfikator rozpoczętego zadania wyszukiwania. |
result | Adres URL kolejnego żądania do pobrania adresu e-mail potencjalnego klienta. |
| 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 | Data wyszukania adresu e-mail. |
emails | Adresy e-mail potencjalnych klientów. |
smtp_status | Może zwrócić status prawidłowy lub nieznany (czyli Nieweryfikowalny). Więcej informacji o statusach adresów e-mail znajdziesz tutaj. |
task_hash | Unikalny identyfikator rozpoczętego zadania wyszukiwania. |
status | Status żądania. Może mieć wartość ukończone lub w toku. |
| POST | https://api.snov.io/v2/domain-search/domain-emails/start |
domain | Nazwa domeny firmy, dla której chcesz znaleźć adresy e-mail z domeny. Na przykład „snov.io”. |
<?php function domainEmailsSearch() { $token = getAccessToken(); $params = [ 'domain' => 'snov.io', 'webhook_url' => 'https://hooks.yourdomain.com', ]; $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', 'webhook_url': 'https://hooks.yourdomain.com' } 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 | Domena, dla której pobierasz adresy e-mail. |
tab | Wyświetla typ żądanych wyników. prospects oznacza, że szukasz profili potencjalnych klientów. emails wyświetla adresy e-mail z domeny. service oznacza, że pobierasz ogólne adresy e-mail. |
task_hash | Unikalny identyfikator rozpoczętego zadania wyszukiwania. Jest automatycznie dodawany do kolejnego żądania, aby otrzymać wyniki. |
next | Identyfikator kolejnego żądania strony, jeśli jest dostępna. Jeśli nie ma więcej stron, pole będzie puste. |
result | Adres URL żądania, którego należy użyć, aby otrzymać adresy e-mail z domeny. |
| 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 | Adres e-mail z domeny. Pamiętaj, że te adresy e-mail nie są zweryfikowane. Aby je zweryfikować, użyj metody Weryfikatora Adresów E-mail. |
domain | Domena, dla której pobierasz adresy e-mail. |
tab | Wyświetla typ otrzymywanych wyników. prospects oznacza, że szukasz profili potencjalnych klientów. emails wyświetla adresy e-mail z domeny. service oznacza, że pobierasz ogólne adresy e-mail. |
task_hash | Unikalny identyfikator rozpoczętego zadania wyszukiwania. |
next | Identyfikator dodawany do adresu URL żądania, aby uzyskać dostęp do kolejnej strony adresów e-mail, jeśli istnieje. |
total_count | Łączna liczba znalezionych adresów e-mail z domeny. |
next | Adres URL żądania do pobrania wyników z kolejnej strony, jeśli istnieje. Każda strona zawiera maksymalnie 50 adresów e-mail. |
status | Status żądania. Może mieć wartość ukończone lub w toku. |
| POST | https://api.snov.io/v2/domain-search/generic-contacts/start |
domain | Nazwa domeny firmy, dla której chcesz znaleźć ogólne adresy e-mail. Na przykład „snov.io”. |
<?php function genericContactsSearch() { $token = getAccessToken(); $params = [ 'domain' => 'snov.io', 'webhook_url' => 'https://hooks.yourdomain.com', ]; $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', 'webhook_url': 'https://hooks.yourdomain.com' } 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 | Domena, dla której pobierasz ogólne adresy e-mail. |
tab | Wyświetla typ żądanych wyników. prospects oznacza, że szukasz profili potencjalnych klientów. emails wyświetla adresy e-mail z domeny. service oznacza, że pobierasz ogólne adresy e-mail. |
task_hash | Unikalny identyfikator rozpoczętego zadania wyszukiwania. Jest automatycznie dodawany do kolejnego żądania, aby otrzymać wyniki. |
next | Identyfikator kolejnego żądania strony, jeśli jest dostępna. Jeśli nie ma więcej stron, pole będzie puste. |
result | Adres URL żądania, którego należy użyć, aby otrzymać ogólne adresy e-mail. |
| 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 | Adres e-mail kontaktu ogólnego. Pamiętaj, że te adresy e-mail nie są zweryfikowane. Aby je zweryfikować, użyj metody Weryfikatora Adresów E-mail. |
domain | Domena, dla której pobierasz ogólne adresy e-mail. |
tab | Wyświetla typ otrzymywanych wyników. prospects oznacza, że szukasz profili potencjalnych klientów. emails wyświetla adresy e-mail z domeny. service oznacza, że pobierasz ogólne adresy e-mail. |
task_hash | Unikalny identyfikator rozpoczętego zadania wyszukiwania. |
next | Identyfikator dodawany do adresu URL żądania, aby uzyskać dostęp do kolejnej strony adresów e-mail, jeśli istnieje. |
total_count | Łączna liczba ogólnych adresów e-mail znalezionych dla domeny. |
next | Adres URL żądania do pobrania wyników z kolejnej strony, jeśli istnieje. Każda strona zawiera maksymalnie 50 adresów e-mail. |
status | Status żądania. Może mieć wartość ukończone lub w toku. |
POSTWyszukiwarka bazy danych
Przeszukuj bazę danych pod kątem potencjalnych klientów i firm. Używaj filtrów, aby zawęzić wyszukiwanie.

| POST | https://api.snov.io/v2/database-search/prospects/start |
filters.prospect.job_titles.include | Lista stanowisk, które chcesz uwzględnić. |
filters.prospect.job_titles.exclude | Lista stanowisk do wykluczenia. |
filters.prospect.management_levels.include | Lista stanowisk według poziomu zarządzania, które chcesz uwzględnić. Dostępne opcje: poziom c, poziom vp, poziom dyrektora, poziom menedżera, pracownik. |
filters.prospect.management_levels.exclude | Lista stanowisk według poziomu zarządzania do wykluczenia. Dostępne opcje: poziom c, poziom vp, poziom dyrektora, poziom menedżera, pracownik. |
filters.prospect.departments.include | Lista działów do uwzględnienia w wyszukiwaniu. Dostępne opcje: inżynieria, zasoby ludzkie, IT/IS, finanse i administracja, marketing, operacje, sprzedaż, wsparcie, inne. |
filters.prospect.departments.exclude | Lista działów do wykluczenia z wyszukiwania. Dostępne opcje: inżynieria, zasoby ludzkie, IT/IS, finanse i administracja, marketing, operacje, sprzedaż, wsparcie, inne. |
filters.prospect.locations.include.locality | Lokalizacje do uwzględnienia, np. Londyn Jeśli nie znaleziono dopasowania, API zwraca maksymalnie 15 podobnych opcji. |
filters.prospect.locations.include.location_type | Typy lokalizacji do uwzględnienia. Dostępne opcje: miasto, stan, kraj, region, podregion. |
filters.prospect.locations.exclude.locality | Lokalizacje do wykluczenia, np. Atlanta Jeśli nie znaleziono dopasowania, API zwraca maksymalnie 15 podobnych opcji. |
filters.prospect.locations.exclude.location_type | Typy lokalizacji do wykluczenia. Dostępne opcje: miasto, stan, kraj, region, podregion. |
filters.prospect.skills.include | Lista umiejętności potencjalnego klienta, które chcesz uwzględnić w wyszukiwaniu. |
filters.prospect.skills.exclude | Lista umiejętności potencjalnego klienta, które chcesz wykluczyć z wyszukiwania. |
filters.prospect.first_name | Imię potencjalnego klienta. |
filters.prospect.last_name | Nazwisko potencjalnego klienta. |
filters.company.name.include | Lista nazw firm do uwzględnienia. |
filters.company.name.exclude | Lista nazw firm do wykluczenia. |
filters.company.locations.include.locality | Lokalizacje firm do uwzględnienia, np. Londyn Jeśli nie znaleziono dopasowania, API zwraca listę podobnych wyników. |
filters.company.locations.include.location_type | Typy lokalizacji firm do uwzględnienia. Dostępne opcje: miasto, stan, kraj, region, podregion. |
filters.company.locations.exclude.locality | Lokalizacje firm do wykluczenia, np. Atlanta Jeśli nie znaleziono dopasowania, API zwraca listę podobnych wyników. |
filters.company.locations.exclude.location_type | Typy lokalizacji firm do wykluczenia. Dostępne opcje: miasto, stan, kraj, region, podregion. |
filters.company.industries.include | Lista branż do uwzględnienia. Jeśli nie znaleziono dopasowania, API zwraca listę podobnych wyników. |
filters.company.industries.exclude | Lista branż do wykluczenia. Jeśli nie znaleziono dopasowania, API zwraca listę podobnych wyników. |
filters.company.size | Zakres wielkości firmy. Dostępne opcje: samozatrudnienie, 1-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5001-10000, 10001+ |
filters.company.revenue.min | Minimalny przychód firmy. Dostępne opcje: 0, 1, 500000, 1000000, 2500000, 5000000, 10000000, 20000000, 50000000, 100000000, 500000000, 1000000000 Pamiętaj: minimalny przychód nie może przekraczać ustawionego maksymalnego przychodu. |
filters.company.revenue.max | Maksymalny przychód firmy. Dostępne opcje: 0, 1, 500000, 1000000, 2500000, 5000000, 10000000, 20000000, 50000000, 100000000, 500000000, 1000000000, 1000000000000 |
filters.company.specialities | Lista obszarów, w których specjalizuje się firma. |
filters.company.founded.from | Rok założenia firmy (od). |
filters.company.founded.till | Rok założenia firmy (do). |
page | Numer strony. Domyślnie zwracana jest strona 1. |
<?php function prospectsSearch() { $token = getAccessToken(); $params = [ 'access_token' => $token, 'page' => 1, 'webhook_url' => 'https://hooks.yourdomain.com', 'filters' => [ 'prospect' => [ 'first_name' => 'John', 'last_name' => 'Doe', ], 'company' => [ 'name' => [ 'include' => ['Snov.io'] ], ], ], ]; $options = [ CURLOPT_URL => 'https://api.snov.io/v2/database-search/prospects/start?' . http_build_query($params), 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 prospects_search(): token = get_access_token() params = { "access_token": token, "page": 1, "webhook_url": "https://hooks.yourdomain.com", "filters": { "prospect": { "first_name": "John", "last_name": "Doe", }, "company": { "name": { "include": ["Snov.io"] } } } } response = requests.post( "https://api.snov.io/v2/database-search/prospects/start", json=params, ) return response.json()
{
"data": [],
"meta": {
"task_hash": "e8401d70910918cdb370153a306d1400",
"page": 1
},
"links": {
"result": "https://api.snov.io/v2/database-search/prospects/result/e8401d70910918cdb370153a306d1400"
}
}
task_hash | Unikalny ID rozpoczętego zadania wyszukiwania. |
result | Adres URL żądania, którego należy użyć do otrzymania wyników. |
| GET | https://api.snov.io/v2/database-search/prospects/result/{task_hash} |
<?php function prospectsResult() { $token = getAccessToken(); $task_hash = '3384369c16aad810f58609a40ad65089'; $params = [ 'access_token' => $token, ]; $options = [ CURLOPT_URL => "https://api.snov.io/v2/database-search/prospects/result/$task_hash?" . http_build_query($params), 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" response = requests.get( f"https://api.snov.io/v2/database-search/prospects/result/{task_hash}", params={ "access_token": token } ) return response.json()
{
"data": {
"total": 162,
"page": 1,
"total_pages": 4,
"prospects": [
{
"first_name": "John",
"last_name": "Sm***",
"job_title": "linkbuilder",
"location": "Kyiv, Kyiv, Ukraine",
"linkedin_url": "https://linkedin.com/in/jo******",
"industry": "Computer Software",
"list_id": 123,
"email_and_hidden_info_reveal": "https://api.snov.io/v2/database-search/prospects/search-emails/start/{task_hash}",
"company": {
"name": "Snov.io",
"domain": "snov.io",
"location": "New York, New York, United States",
"industry": "Computer Software",
"size": "51-200"
}
}
]
},
"meta": {
"task_hash": "832c2ae36ca4e80fcbddeae0dea70efd",
"page": 1
},
"links": [],
"status": "completed"
}
total | Łączna liczba znalezionych potencjalnych klientów. |
page | Numer strony. |
total_pages | Łączna liczba stron z wynikami. |
prospects | Tablica z informacjami o potencjalnych klientach. |
first_name | Imię potencjalnego klienta. |
last_name | Nazwisko potencjalnego klienta. |
job_title | Stanowisko potencjalnego klienta. |
location | Lokalizacja potencjalnego klienta. |
linkedin_url | Adres URL profilu potencjalnego klienta na LinkedInie. |
industry | Branża, w której pracuje potencjalny klient. |
list_id | Wyświetla ID listy potencjalnych klientów, do której dodano potencjalnego klienta. Wyświetla się tylko wtedy, gdy potencjalny klient został już dodany do listy. |
email_and_hidden_info_reveal | Adres URL do użycia w następnym żądaniu, aby uzyskać adres e-mail potencjalnego klienta. |
company | Tablica z informacjami o firmie. |
name | Nazwa firmy. |
domain | Domena firmy. |
location | Lokalizacja firmy. |
industry | Branża, w której działa firma. |
size | Wielkość firmy. |
task_hash | Hash zadania do użycia w następnym żądaniu, aby uzyskać adres e-mail potencjalnego klienta. |
| POST | https://api.snov.io/v2/database-search/prospects/search-emails/start/{task_hash} |
<?php function searchProspectEmailsStart() { $token = getAccessToken(); $task_hash = '5e846a1d80d95f66cfb30250a7c1881f'; $params = [ 'access_token' => $token, ]; $options = [ CURLOPT_URL => "https://api.snov.io/v2/database-search/prospects/search-emails/start/$task_hash?" . http_build_query($params), 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 search_prospect_emails_start(): token = get_access_token() task_hash = "5e846a1d80d95f66cfb30250a7c1881f" response = requests.post( f"https://api.snov.io/v2/database-search/prospects/search-emails/start/{task_hash}", json={ "access_token": token } ) return response.json()
{
"data": [],
"meta": {
"task_hash": "15e843a82ac180b5369aa97a879ae200"
},
"links": {
"result": "https://api.snov.io/v2/database-search/prospects/search-emails/result/15e843a82ac180b5369aa97a879ae200"
}
}
task_hash | Unikalny ID rozpoczętego zadania wyszukiwania. |
result | Adres URL do użycia w następnym żądaniu, aby uzyskać adres e-mail potencjalnego klienta. |
| GET | https://api.snov.io/v2/database-search/prospects/search-emails/result/{task_hash} |
<?php function searchProspectEmailsResult() { $token = getAccessToken(); $task_hash = '5e846a1d80d95f66cfb30250a7c1881f'; $params = [ 'access_token' => $token, ]; $options = [ CURLOPT_URL => "https://api.snov.io/v2/database-search/prospects/search-emails/result/$task_hash?" . http_build_query($params), 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 = "5e846a1d80d95f66cfb30250a7c1881f" response = requests.get( f"https://api.snov.io/v2/database-search/prospects/search-emails/result/{task_hash}", params={ "access_token": token } ) return response.json()
{
"data": {
"searching_date": "2026-07-09 10:07:39",
"first_name": "John",
"last_name": "Doe",
"linkedin_url": "https://www.linkedin.com/in/john-doe",
"emails": [
{
"email": "john.doe@snov.io",
"smtp_status": "valid"
}
]
},
"meta": {
"task_hash": "15e843a82ac180b5369aa97a879ae200"
},
"links": [],
"status": "completed"
}
searching_date | Data uruchomienia wyszukiwania adresu e-mail. |
first_name | Imię potencjalnego klienta. |
last_name | Nazwisko potencjalnego klienta. |
linkedin_url | Adres URL LinkedIna potencjalnego klienta. |
email | Adres e-mail potencjalnego klienta. |
smtp_status | Może zwrócić prawidłowy lub nieznany (czyli Nieweryfikowalny). Więcej informacji o statusach adresów e-mail znajdziesz tutaj. |
task_hash | Hash zadania dla rozpoczętego zadania wyszukiwania. |
| POST | https://api.snov.io/v2/database-search/companies/start |
filters.company.name.include | Lista nazw firm, które chcesz uwzględnić. |
filters.company.name.exclude | Lista nazw firm, które chcesz wykluczyć. |
filters.locations.include.locality | Lokalizacje do uwzględnienia, np. Londyn Jeśli nie znaleziono dopasowania, API zwraca maksymalnie 15 podobnych opcji. |
filters.locations.include.location_type | Typy lokalizacji do uwzględnienia. Dostępne opcje: miasto, stan, kraj, region, podregion. |
filters.locations.exclude.locality | Lokalizacje do wykluczenia, np. Atlanta Jeśli nie znaleziono dopasowania, API zwraca maksymalnie 15 podobnych opcji. |
filters.locations.exclude.location_type | Typy lokalizacji do wykluczenia. Dostępne opcje: miasto, stan, kraj, region, podregion. |
filters.company.industries.include | Lista branż do uwzględnienia. Jeśli nie znaleziono dopasowania, API zwraca listę podobnych branż. |
filters.company.industries.exclude | Lista branż do wykluczenia. Jeśli nie znaleziono dopasowania, API zwraca listę podobnych branż. |
filters.company.size | Zakres wielkości firmy. Dostępne opcje: samozatrudnienie, 1-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5001-10000, 10001+ |
filters.company.revenue.min | Minimalny przychód firmy. Dostępne opcje: 0, 1, 500000, 1000000, 2500000, 5000000, 10000000, 20000000, 50000000, 100000000, 500000000, 1000000000 Pamiętaj: minimalny przychód nie może przekraczać ustawionego maksymalnego przychodu. |
filters.company.revenue.max | Maksymalny przychód firmy. Dostępne opcje: 0, 1, 500000, 1000000, 2500000, 5000000, 10000000, 20000000, 50000000, 100000000, 500000000, 1000000000, 1000000000000 |
filters.company.specialities | Lista obszarów, w których specjalizuje się firma. |
filters.company.founded.from | Rok założenia firmy (od). |
filters.company.founded.till | Rok założenia firmy (do). |
page | Numer strony. Domyślnie zwracana jest strona 1. |
<?php function companiesSearch() { $token = getAccessToken(); $params = [ 'access_token' => $token, 'page' => 1, 'webhook_url' => 'https://hooks.yourdomain.com', 'filters' => [ 'company' => [ 'name' => [ 'include' => ['Snov.io'] ], ], ], ]; $options = [ CURLOPT_URL => 'https://api.snov.io/v2/database-search/companies/start?' . http_build_query($params), 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 companies_search(): token = get_access_token() params = { "access_token": token, "page": 1, "webhook_url": "https://hooks.yourdomain.com", "filters": { "company": { "name": { "include": ["Snov.io"] } } } } response = requests.post( "https://api.snov.io/v2/database-search/companies/start", json=params, ) return response.json()
{
"data": [],
"meta": {
"task_hash": "f263aa25a2aae80ddebec51b4ee9be23",
"page": 1
},
"links": {
"result": "https://api.snov.io/v2/database-search/companies/result/f263aa25a2aae80ddebec51b4ee9be23"
}
}
task_hash | Unikalny ID rozpoczętego zadania wyszukiwania. |
result | Adres URL żądania, którego należy użyć do otrzymania wyników. |
| GET | https://api.snov.io/v2/database-search/companies/result/{task_hash} |
<?php function companiesResult() { $token = getAccessToken(); $task_hash = '3384369c16aad810f58609a40ad65089'; $params = [ 'access_token' => $token, ]; $options = [ CURLOPT_URL => "https://api.snov.io/v2/database-search/companies/result/$task_hash?" . http_build_query($params), 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 companies_result(): token = get_access_token() task_hash = "3384369c16aad810f58609a40ad65089" response = requests.get( f"https://api.snov.io/v2/database-search/companies/result/{task_hash}", params={ "access_token": token } ) return response.json()
{
"data": {
"total": 4328524,
"page": 1,
"total_pages": 86571,
"companies": [
{
"name": "Snov.io",
"domain": "snov.io",
"location": "New York, New York, United States",
"industry": "Computer Software",
"size": "51-200",
"revenue": {
"min": 20000000,
"max": 50000000,
"reported": 0
},
"logo_url": "https://app.snov.io/media/img/companies/5811bb1a217b8c578a604e9e33055a98.jpg"
}
]
},
"meta": {
"task_hash": "bbb948e398787454a594f9f03f8f2fd0",
"page": 1
},
"links": [],
"status": "completed"
}
total | Łączna liczba znalezionych firm. |
page | Numer strony. |
total_pages | Łączna liczba stron z wynikami. |
companies | Tablica z informacjami o konkretnej firmie. |
name | Nazwa firmy. |
domain | Domena firmy. |
location | Lokalizacja firmy. |
industry | Branża, w której działa firma. |
size | Zakres wielkości firmy. |
revenue | Tablica z przychodami firmy. |
min | Minimalny przychód firmy. |
max | Maksymalny przychód firmy. |
reported | Przychód wskazany przez firmę w jej profilu. |
logo_url | Adres URL logo firmy. |
task_hash | Unikalny ID rozpoczętego zadania wyszukiwania. |
POSTSprawdź liczbę dostępnych e-maili
BezpłatneDzięki tej metodzie API możesz sprawdzić liczbę adresów e-mail z określonej domeny w naszej bazie danych. Jest całkowicie bezpłatna, więc nie potrzebujesz kredytów, aby z niej korzystać!
| POST | https://api.snov.io/v1/get-domain-emails-count |
domain | Nazwa domeny, dla której chcesz sprawdzić liczbę adresów e-mail w naszej bazie danych. |
<?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 | Nazwa domeny, dla której chcesz sprawdzić liczbę adresów e-mail w naszej bazie danych. |
webmail | To true jeśli domena, którą wyszukujesz, jest domeną webmail. |
result | Łączna liczba adresów e-mail, które znaleźliśmy dla tej domeny. Nie możemy podać wyników dla domen webmail, więc wynik dla nich zawsze będzie wynosił 0
. |
POSTZnajdź adresy e-mail na podstawie imienia i nazwiska oraz domeny
1 kredyt za każdy adres e-mail ze statusem prawidłowy lub nieznanyWprowadź imię i nazwisko potencjalnego klienta oraz domenę firmy, a Snov.io zwróci jego zweryfikowany adres e-mail.
| POST | https://api.snov.io/v2/emails-by-domain-by-name/start |
Najłatwiej wysłać to żądanie za pomocą surowego kodu JSON. Jeśli jednak wolisz używać Parametrów, tutaj znajdziesz przykład
rows | Tablica obiektów zawierających dane potencjalnych klientów (imię, nazwisko i domenę). Każde żądanie może zawierać maksymalnie 10 obiektów. |
first_name | Imię potencjalnego klienta. |
last_name | Nazwisko potencjalnego klienta. |
domain | Domena firmy, w której pracuje potencjalny klient. |
webhook_url | Wprowadź adres URL webhooka, aby otrzymywać wyniki natychmiast zamiast korzystać z zadania hash. |
<?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 | Unikalny identyfikator rozpoczętego zadania wyszukiwania. |
first_name | Imię potencjalnego klienta. |
last_name | Nazwisko potencjalnego klienta. |
domain | Domena firmy, w której pracuje potencjalny klient. |
| GET | https://api.snov.io/v2/emails-by-domain-by-name/result |
task_hash | Unikalny ID żądania otrzymany z poprzedniego żądania. |
<?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 | Status żądania. Może mieć wartość ukończone lub w toku. Możesz otrzymać status not_enough_credits, jeśli konto używane do wyszukiwania nie ma wystarczającej liczby kredytów. |
people | Pełne imię i nazwisko potencjalnego klienta. |
email | Adres e-mail potencjalnego klienta. |
smtp_status | Może zwrócić status prawidłowy lub nieznany (czyli Nieweryfikowalny). Aby sprawdzić przyczynę statusu nieznanego, sprawdź parametr unknown_status_reason. |
is_valid_format | Wskazuje, czy format adresu e-mail jest prawidłowy. Może mieć wartość fałsz lub prawda. |
is_disposable | Wskazuje, czy adres e-mail jest tymczasowy lub jednorazowy. Zwraca wartość fałsz lub prawda. |
is_webmail | Wartość prawda oznacza, że wyszukiwany adres e-mail jest adresem webmail. |
is_gibberish | Wskazuje, czy podany adres e-mail zawiera losowe lub bezsensowne znaki. Może mieć wartość fałsz lub prawda. |
unknown_status_reason | Jeśli zweryfikowany adres e-mail ma nieznany smtp_status, tutaj znajdziesz bardziej szczegółową przyczynę. Zablokowany: Wysokie ryzyko problemów z dostarczalnością – tego adresu e-mail nie udało się zweryfikować ze 100% pewnością. Catch-all: Ryzyko dla reputacji nadawcy – ten adres e-mail jest adresem catch-all. Błąd_połączenia: Potencjalne ryzyko odrzucenia – problemy techniczne po stronie odbiorcy. Greylist: Ryzyko problemów z dostarczalnością – ten serwer pocztowy używa filtrów greylistingu. |
domain | Domena firmy, w której pracuje potencjalny klient. |
first_name | Imię potencjalnego klienta. |
last_name | Nazwisko potencjalnego klienta. |
task_hash | Unikalny ID tego zadania wyszukiwania. |
POSTZnajdź domenę na podstawie nazwy firmy
1 kredyt za każdy znaleziony adres domenyWprowadź nazwy firm, a Snov.io zwróci adresy ich domen
| POST | https://api.snov.io/v2/company-domain-by-name/start |
names[] | Tablica nazw firm, dla których chcesz otrzymać domeny. Aby pobrać domeny dla wielu firm, dodaj każdą z nich jako osobny parametr. Na przykład: names[] | Snov.io names[] | Sendpulse Możesz podać jednocześnie maksymalnie 10 nazw firm. |
webhook_url | Wprowadź adres URL webhooka, aby otrzymywać wyniki natychmiast zamiast korzystać z zadania hash. |
<?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 | Unikalny identyfikator rozpoczętego zadania wyszukiwania. |
names | Tablica podanych nazw firm. |
| GET | https://api.snov.io/v2/company-domain-by-name/result?task_hash={hash_from_1} |
task_hash | Unikalny ID żądania otrzymany z poprzedniego żądania. |
<?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 | Status żądania. Może mieć wartość ukończone lub w toku. |
name | Nazwa firmy, dla której poproszono o adres domeny. |
domain | Domena firmy. |
names | Tablica podanych nazw firm. |
task_hash | Unikalny ID tego zadania wyszukiwania. |
POSTPobierz informacje z profilu na LinkedInie na podstawie adresów URL
1 kredyt za informacje o każdym profilu potencjalnego klientaWprowadź adresy URL użytkowników LinkedIna, a Snov.io pobierze pełne informacje z ich profili.
| POST | https://api.snov.io/v2/li-profiles-by-urls/start |
urls[] | Tablica adresów URL profili na LinkedInie, dla których chcesz otrzymać pełne informacje z profilu. Aby pobrać informacje z profili wielu użytkowników LinkedIna jednocześnie, dodaj każdy adres URL jako osobny parametr. Możesz podać jednocześnie maksymalnie 10 adresów URL LinkedIna. |
webhook_url | Wprowadź adres URL webhooka, aby otrzymywać wyniki natychmiast zamiast korzystać z zadania hash. |
<?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 | Unikalny identyfikator rozpoczętego zadania wyszukiwania. |
urls | Adresy URL profili, dla których żądasz informacji. |
| GET | https://api.snov.io/v2/li-profiles-by-urls/result |
task_hash | Unikalny ID żądania otrzymany z poprzedniego żądania. |
<?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 | Status żądania. Może mieć wartość ukończone lub w toku. |
url | Adres URL profilu na LinkedInie. |
name | Pełne imię i nazwisko potencjalnego klienta. |
first_name | Imię potencjalnego klienta. |
last_name | Nazwisko potencjalnego klienta. |
industry | Obszar działalności potencjalnego klienta. |
location | Lokalizacja potencjalnego klienta. |
country | Kraj, w którym znajduje się potencjalny klient, zgodnie z jego profilem na LinkedInie. |
skills | Umiejętności potencjalnego klienta. |
positions | Tablica stanowisk obecnie zajmowanych przez potencjalnego klienta. |
name | Nazwa firmy, w której pracuje potencjalny klient. |
title | Stanowisko potencjalnego klienta. |
linkedin_url | Link do strony firmy na LinkedInie. |
url | Adres strony internetowej firmy. |
industry | Branża firmy. |
country | Kraj, w którym znajduje się siedziba firmy. |
location | Lokalizacja firmy. |
specializations | Obszary specjalizacji lub działalności firmy. |
urls | Tablica podanych adresów URL profili na LinkedInie. |
task_hash | Unikalny ID tego zadania wyszukiwania. |
POSTWzbogać profil osoby na podstawie adresu e-mail
1 kredyt za każde żądaniePodaj adres e-mail, a Snov.io zwróci wszystkie informacje profilowe powiązane z właścicielem podanego adresu e-mail, dostępne w bazie danych.
Jeśli nie znajdziemy w naszej bazie danych żadnych informacji o właścicielu adresu e-mail, opłata za żądanie nie zostanie naliczona.
| POST | https://api.snov.io/v1/get-profile-by-email |
email | Adres e-mail osoby, o której chcesz znaleźć dodatkowe informacje. |
<?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 | Unikalny identyfikator profilu. |
source | Źródło pobranych danych osobowych. |
name | Pełne imię i nazwisko właściciela adresu e-mail. |
firstName | Imię osoby. |
lastName | Nazwisko osoby. |
logo | Zdjęcie profilowe osoby. |
industry | Branża osoby wskazana w źródle. |
country | Kraj osoby wskazany w źródle. |
locality | Miejscowość osoby wskazana w źródle. |
social | Linki do profili osoby w mediach społecznościowych. |
currentJobs | Tablica zawierająca informacje o obecnym stanowisku lub stanowiskach osoby. |
previousJobs | Tablica zawierająca informacje o poprzednich stanowiskach osoby. |
lastUpdateDate | Data ostatniej aktualizacji profilu w bazie danych. |
POSTWeryfikator Adresów E-mail
Wprowadź adresy e-mail, a Snov.io przeprowadzi pełną weryfikację. Możesz sprawdzić jednocześnie maksymalnie 10 adresów e-mail.Podawanie adresów e-mail
| POST | https://api.snov.io/v2/email-verification/start |
emails[] | Adresy e-mail, które chcesz zweryfikować. Aby zweryfikować wiele adresów e-mail jednocześnie, dodaj każdy adres e-mail jako osobny parametr. Na przykład: emails[] | help@snov.io emails[] | partnerships@snov.io Możesz sprawdzić jednocześnie maksymalnie 10 adresów e-mail. |
webhook_url | Wprowadź adres URL webhooka, aby otrzymywać wyniki natychmiast zamiast korzystać z zadania hash. |
<?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 | Unikalny identyfikator rozpoczętego zadania wyszukiwania. |
emails | Tablica adresów e-mail podanych do weryfikacji. |
| GET | https://api.snov.io/v2/email-verification/result |
task_hash | Unikalny ID żądania otrzymany z poprzedniego żądania. |
<?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 | Status żądania. Może mieć wartość ukończone lub w toku. |
email | Adres e-mail, który weryfikujesz. |
smtp_status | Może zwrócić status prawidłowy, nieprawidłowy lub nieznany (czyli Nieweryfikowalny). Aby sprawdzić przyczynę statusu nieznanego, sprawdź parametr unknown_status_reason. |
is_valid_format | Wskazuje, czy format adresu e-mail jest prawidłowy. Może mieć wartość fałsz lub prawda. |
is_disposable | Wskazuje, czy adres e-mail jest tymczasowy lub jednorazowy. Zwraca wartość fałsz lub prawda. |
is_webmail | Wartość prawda oznacza, że wyszukiwany adres e-mail jest adresem webmail. |
is_gibberish | Wskazuje, czy podany adres e-mail zawiera losowe lub bezsensowne znaki. Może mieć wartość fałsz lub prawda. |
unknown_status_reason | Jeśli zweryfikowany adres e-mail ma nieznany smtp_status, tutaj znajdziesz bardziej szczegółową przyczynę. Zablokowany: Wysokie ryzyko problemów z dostarczalnością – tego adresu e-mail nie udało się zweryfikować ze 100% pewnością. Catch-all: Ryzyko dla reputacji nadawcy – ten adres e-mail jest adresem catch-all. Błąd_połączenia: Potencjalne ryzyko odrzucenia – problemy techniczne po stronie odbiorcy. Greylist: Ryzyko problemów z dostarczalnością – ten serwer pocztowy używa filtrów greylistingu. Ukryty_przez_właściciela: Właściciel adresu e-mail lub firma będąca właścicielem domeny poprosiła o usunięcie go z wyników Snov.io. |
emails | Tablica adresów e-mail, które weryfikujesz. |
task_hash | Unikalny ID żądania dla tego zadania weryfikacji. |
POSTDodaj nowe konto e-mail
Ta metoda łączy nowe konto e-mail SMTP/IMAP z twoim workspace’em Snov.io, aby mogło być używane jako konto nadawcy w kampaniach. Konto jest tworzone nawet wtedy, gdy sprawdzanie połączenia SMTP/IMAP nie zostało jeszcze zakończone — status połączenia jest zwracany asynchronicznie w polach smtp.status / imap.status i można go później sprawdzać. Obsługiwane są wyłącznie konta SMTP/IMAP (typ dostawcy other); przepływy OAuth dla Gmaila i Microsoftu nie są obsługiwane.
| POST | https://api.snov.io/v2/sender-accounts/emails |
sender_name *Wymagane | Wyświetlana nazwa nadawcy, maks. 100 znaków. |
email_from *Wymagane | Adres e-mail nadawcy. |
password *Wymagane | Hasło lub hasło aplikacji do konta SMTP/IMAP. Przechowywane w formie zaszyfrowanej. |
smtp *Wymagane | Obiekt z ustawieniami SMTP. |
smtp.host *Wymagane | Host SMTP, np. smtp.gmail.com. |
smtp.port *Wymagane | Port SMTP. Dozwolone wartości: 25, 465, 587. |
smtp.encryption *Wymagane | Typ szyfrowania. Dozwolone wartości: ssl, tls, brak. Musi odpowiadać portowi: 465 → ssl, 587 → tls, 25 → brak. |
imap | Obiekt z ustawieniami IMAP. Opcjonalny, ale jeśli zostanie podany, wszystkie podpola są wymagane. |
imap.host | Host IMAP, np. imap.gmail.com. Wymagane, gdy podano imap. |
imap.port | Port IMAP. Dozwolone wartości: 143, 993. Wymagane, gdy podano imap. |
imap.encryption | Typ szyfrowania. Dozwolone wartości: ssl, tls, brak. Musi odpowiadać portowi: 993 → ssl lub tls, 143 → brak. Wymagane, gdy podano imap. |
reply_to | Adres e-mail do odpowiedzi. |
limitation | Dzienny limit wysyłania. Liczba całkowita, min. 1, maks. 1200. Domyślnie: 50. Nie może przekraczać maksymalnej liczby e-maili, które konto może wysłać w ciągu 24 godzin przy skonfigurowanym opóźnieniu. |
delay_type | Typ opóźnienia między e-mailami. Dozwolone wartości: stałe, losowe. Domyślnie: losowe. |
delay_fixed | Stałe opóźnienie w sekundach (używane, gdy typ_opóźnienia=stałe). Liczba całkowita, min. 5, maks. 3600. Domyślnie: 600. |
delay_from | Minimalne opóźnienie w sekundach (używane, gdy typ_opóźnienia=losowe). Liczba całkowita, min. 5, maks. 3600. Domyślnie: 600. |
delay_to | Maksymalne opóźnienie w sekundach (używane, gdy typ_opóźnienia=losowe). Liczba całkowita, min. 5, maks. 3600, musi być większe niż minimalne_opóźnienie. Domyślnie: 900. |
signature | Podpis HTML dołączany do wychodzących e-maili. |
bcc_email | Adres e-mail BCC. |
tags | Tablica ciągów znaków. Istniejące tagi są dopasowywane według nazwy, a nowe są tworzone i przypisywane do konta. |
timezoneId | ID strefy czasowej konta. Liczba całkowita, min. 1, maks. 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 utworzonego konta nadawcy. |
data.sender_name | Wyświetlana nazwa nadawcy. |
data.email_from | Adres e-mail nadawcy. |
data.smtp | Ustawienia SMTP: host, port, szyfrowanie oraz pole status z wynikiem sprawdzania połączenia (oczekujące, połączone, błąd). |
data.imap | Ustawienia IMAP (dostępne tylko wtedy, gdy skonfigurowano IMAP): host, port, szyfrowanie, status. |
data.limitation | Dzienny limit wysyłania. |
data.delay_type | Typ opóźnienia: stałe lub losowe. |
data.delay_from | Minimalne opóźnienie w sekundach (dla typ_opóźnienia=losowe). |
data.delay_to | Maksymalne opóźnienie w sekundach (dla typ_opóźnienia=losowe). |
data.delay_fixed | Stałe opóźnienie w sekundach (dla typ_opóźnienia=stałe). |
data.reply_to | Adres e-mail do odpowiedzi. |
data.signature | Podpis HTML (dostępny tylko, jeśli został podany). |
data.bcc_email | Adres e-mail BCC. |
data.tags | Tablica tagów przypisanych do konta. |
data.timezoneId | ID strefy czasowej (dostępny tylko, jeśli został ustawiony w żądaniu). |
data.created_at | Znacznik czasu utworzenia konta. |
PATCHAktualizuj konto e-mail
Ta metoda aktualizuje istniejące konto nadawcy SMTP/IMAP. Wszystkie pola są opcjonalne, ale należy podać co najmniej jedno prawidłowe pole — zmieniane są tylko przekazane pola, a pozostałe pozostają bez zmian. Jeśli podano dowolne pole SMTP lub IMAP, uruchamiane jest nowe asynchroniczne sprawdzanie połączenia, a wynikowy status jest zwracany w polach smtp.status / imap.status. Jeśli podano tags, nowa tablica całkowicie zastępuje bieżącą listę tagów konta (zastępuje, a nie scala).
| PATCH | https://api.snov.io/v2/sender-accounts/emails/{id} |
id *Wymagane (ścieżka) | ID konta nadawcy do zaktualizowania. |
sender_name | Nowa wyświetlana nazwa nadawcy, maks. 100 znaków. |
email_from | Nowy adres e-mail nadawcy. |
password | Nowe hasło lub hasło aplikacji do konta SMTP/IMAP. Przechowywane w formie zaszyfrowanej. |
smtp | Obiekt z nowymi ustawieniami SMTP (host, port, szyfrowanie). Gdy podano smtp, wszystkie trzy podpola są wymagane i muszą spełniać zasady zgodności portu z typem szyfrowania (465 → ssl, 587 → tls, 25 → brak). |
smtp.host | Host SMTP. Maks. 100 znaków; format: ^[a-zA-Z0-9][a-zA-Z0-9-.]*. Wymagane, gdy podano smtp. |
smtp.port | Dozwolone wartości: 25, 465, 587. Wymagane, gdy podano smtp. |
smtp.encryption | Musi odpowiadać portowi: 465 → ssl, 587 → tls, 25 → brak. Wymagane, gdy podano smtp. |
imap | Obiekt z nowymi ustawieniami IMAP (host, port, szyfrowanie). Gdy podano imap, wszystkie trzy podpola są wymagane (993 → ssl lub tls, 143 → brak) |
imap.host | Host IMAP. Maks. 100 znaków. Wymagane, gdy podano imap. |
imap.port | Dozwolone wartości: 143, 993. Wymagane, gdy podano imap. |
imap.encryption | Musi odpowiadać portowi: 993 → ssl lub tls; 143 → brak. Wymagane, gdy podano imap. |
reply_to | Nowy adres e-mail do odpowiedzi. Przekaż null, aby wyczyścić. |
limitation | Nowy dzienny limit wysyłania. Liczba całkowita, min. 1, maks. 1200. Nie może przekraczać maksymalnej liczby e-maili, które konto może wysłać w ciągu 24 godzin przy skonfigurowanym opóźnieniu. |
delay_type | Nowy typ opóźnienia. Dozwolone wartości: stałe, losowe. |
delay_fixed | Stałe opóźnienie w sekundach (używane, gdy typ_opóźnienia=stałe). Liczba całkowita, min. 5, maks. 3600. |
delay_from | Minimalne opóźnienie w sekundach (używane, gdy typ_opóźnienia=losowe). Liczba całkowita, min. 5, maks. 3600. |
delay_to | Maksymalne opóźnienie w sekundach (używane, gdy typ_opóźnienia=losowe). Liczba całkowita, min. 5, maks. 3600, musi być większe niż minimalne_opóźnienie. |
signature | Nowy podpis HTML. Przekaż null, aby wyczyścić. |
bcc_email | Nowy adres e-mail BCC. Przekaż null, aby wyczyścić. |
tags | Nowa tablica tagów. Całkowicie zastępuje bieżącą listę tagów. Przekaż null, aby usunąć wszystkie tagi. |
timezoneId | ID strefy czasowej konta. Liczba całkowita, min. 1, maks. 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 konta nadawcy. |
data.sender_name | Wyświetlana nazwa nadawcy. |
data.email_from | Adres e-mail nadawcy. |
data.smtp | Ustawienia SMTP: host, port, szyfrowanie oraz pole status z wynikiem sprawdzania połączenia (oczekujący, prawidłowy, nieprawidłowy). |
data.imap | Ustawienia IMAP (dostępne tylko wtedy, gdy IMAP jest skonfigurowany): host, port, szyfrowanie, status. |
data.limitation | Dzienny limit wysyłania. |
data.delay_type | Typ opóźnienia: stałe lub losowe. |
data.delay_from | Minimalne opóźnienie w sekundach (dla typ_opóźnienia=losowe). |
data.delay_to | Maksymalne opóźnienie w sekundach (dla typ_opóźnienia=losowe). |
data.delay_fixed | Stałe opóźnienie w sekundach (dla typ_opóźnienia=stałe). |
data.reply_to | Adres e-mail do odpowiedzi. |
data.signature | Podpis HTML (dostępny tylko, jeśli został podany). |
data.bcc_email | Adres e-mail BCC. |
data.tags | Tablica tagów przypisanych do konta. |
data.timezoneId | ID strefy czasowej (dostępny tylko, jeśli został ustawiony). |
data.updated_at | Znacznik czasu ostatniej aktualizacji. |
GETSprawdź status SMTP/IMAP nadawcy
Ta metoda sprawdza status połączenia SMTP oraz opcjonalnie IMAP połączonego konta e-mail nadawcy. Użyj jej, aby zweryfikować, czy konto nadawcy jest obecnie prawidłowe i działa poprawnie, oraz aby pobrać informacje o ewentualnych błędach połączenia.
| GET | https://api.snov.io/v2/sender-accounts/check-sender-status |
sender_account_id *Wymagane | ID konta e-mail nadawcy do sprawdzenia. Liczba całkowita, minimalna wartość: 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 | Obiekt ze szczegółami statusu połączenia konta nadawcy. |
smtp | Obiekt opisujący status połączenia SMTP: status (oczekujący, prawidłowy, nieprawidłowy) oraz błędy (tablica komunikatów o błędach, dostępna, gdy status ma wartość nieprawidłowy). |
imap | Obiekt opisujący status połączenia IMAP o takiej samej strukturze jak smtp. Zwraca null, jeśli IMAP nie został skonfigurowany podczas tworzenia konta. |
GETPobierz listę wszystkich kont e-mail
BezpłatneTa metoda wyświetla listę wszystkich połączonych kont e-mail.
| GET | https://api.snov.io/v2/sender-accounts/emails |
| Ta metoda nie ma parametrów wejściowych |
<?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 | Unikalny ID konta e-mail. |
sender_name | Nazwa nadawcy, czyli „Nazwa nadawcy”. Jest to nazwa wyświetlana w skrzynce odbiorczej odbiorcy, która wskazuje, od kogo pochodzi e-mail. |
email_from | Pełny adres e-mail. |
valid | Wskazuje prawda, jeśli konto nadawcy jest prawidłowe. Zwraca fałsz, jeśli jest nieprawidłowe. |
suspended | Wskazuje prawda, jeśli wysyłanie z konta jest wstrzymane. Zwraca fałsz, gdy konto działa prawidłowo. |
limitation | Dzienne limity wysyłania konta. |
provider | Dostawca konta e-mail. |
tags | Tagi przypisane do konta. |
imap | Tablica danych IMAP konta. |
username | Adres e-mail użytkownika wybrany do otrzymywania odpowiedzi zamiast domyślnego konta e-mail. |
valid | Wskazuje prawda, gdy IMAP jest włączony. Zwraca fałsz, gdy IMAP jest wyłączony. |
POSTUtwórz kampanię rozgrzewania skrzynek e-mail
Ta metoda tworzy i uruchamia nową kampanię rozgrzewania skrzynek e-mail dla określonego konta e-mail. Rozgrzewanie stopniowo poprawia reputację nadawcy konta poprzez wymianę krótkich e-maili ze starannie dobraną siecią odbiorców. Wybierz strategię progresywną, aby stopniowo zwiększać dzienny wolumen od niewielkiej wartości początkowej, lub strategię stałą, aby wysyłać stałą liczbę e-maili rozgrzewających dziennie; podaj własny temat i treść lub pozwól snov.io wygenerować je automatycznie.
| POST | https://api.snov.io/v2/warm-up |
email_account_id *Wymagane | Liczba całkowita. ID konta e-mail do rozgrzewania. |
strategy | Strategia wysyłania. Dozwolone wartości: progresywna, stała. Domyślnie: progresywna. |
per_day *Wymagane | Liczba całkowita. Dzienny cel wysyłki. Zakres 1–1000 w zależności od planu cenowego. |
from | Liczba całkowita. Początkowy dzienny wolumen (tylko dla strategii progresywnej). Zakres 1–5, musi być ≤ per_day. Wymagane, gdy strategy=progressive. |
increase | Liczba całkowita. Dzienny przyrost wolumenu (tylko dla strategii progresywnej). Zakres 1–5. Wymagane, gdy strategy=progressive. |
email_content | Typ treści e-maila. Dozwolone wartości: automatycznie wygenerowana (wygenerowana przez AI), niestandardowa (własna). Domyślnie: automatycznie wygenerowana. |
subject | Ciąg znaków. Temat e-maila, 1–200 znaków. Wymagane, gdy email_content=specific. |
body | Ciąg znaków. Treść e-maila, 1–10000 znaków. Wymagane, gdy email_content=specific. |
reply_rate | Liczba całkowita. Procent przychodzących e-maili rozgrzewających, na które zostanie wysłana odpowiedź. Zakres 10–45. Domyślnie: 30. |
campaign_deadline | Ciąg znaków (YYYY-MM-DD). Data zakończenia rozgrzewania. Pomiń, jeśli nie chcesz ustawiać terminu końcowego. |
providers | Tablica ciągów znaków. Docelowi dostawcy skrzynek odbiorców. Dozwolone wartości: gmail, microsoft, other. |
send_to_paid_domain | Wartość logiczna. Określa, czy wysyłać na płatne domeny. Domyślnie: fałsz. |
enable_ctd | Wartość logiczna. Włącza niestandardową domenę śledzącą. Domyślnie: fałsz. |
enable_proxy | Wartość logiczna. Włącza dynamiczne proxy. Domyślnie: fałsz. |
schedule_id | Liczba całkowita. ID harmonogramu wysyłania, który ma zostać przypisany do rozgrzewania. |
template_name | Ciąg znaków. Nazwa zapisanego szablonu e-maila, którego chcesz użyć. |
<?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 | Wartość logiczna. prawda, gdy rozgrzewanie zostało utworzone. |
data.id | ID utworzonej kampanii rozgrzewania skrzynek e-mail. |
GETPobierz listę kampanii rozgrzewania skrzynek e-mail
Ta metoda zwraca paginowaną listę wszystkich kampanii rozgrzewania skrzynek e-mail na koncie, opcjonalnie filtrowaną według statusu. Każdy element ma taką samą strukturę jak odpowiedź metody Pobierz informacje o kampanii rozgrzewania skrzynek e-mail.
| GET | https://api.snov.io/v2/warm-up |
page | Liczba całkowita. Numer strony. Domyślnie: 1. Minimum: 1. |
per_page | Liczba całkowita. Liczba wyników na stronę. Dozwolone wartości: 20, 50, 100. Domyślnie: 20. |
status | Filtruj według statusu. Dozwolone wartości: aktywny, wstrzymany, zakończony, błąd. Pomiń, aby zwrócić wszystkie. |
<?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 | Wartość logiczna. prawda, gdy żądanie zakończyło się powodzeniem. |
data | Tablica obiektów kampanii rozgrzewania skrzynek e-mail. Każdy element ma taką samą strukturę jak odpowiedź metody Pobierz informacje o kampanii rozgrzewania skrzynek e-mail (zobacz tam pola data.). |
meta.total_items | Łączna liczba elementów na wszystkich stronach. |
meta.page | Numer bieżącej strony. |
meta.per_page | Liczba elementów na stronę. |
meta.total_pages | Łączna liczba stron. |
GETPobierz informacje o kampanii rozgrzewania skrzynek e-mail
Ta metoda zwraca pełne informacje o pojedynczej kampanii rozgrzewania skrzynek e-mail na podstawie jej ID — w tym ustawienia strategii, dzienne limity, bieżące statystyki dostarczalności oraz połączone konto e-mail.
| GET | https://api.snov.io/v2/warm-up/{id} |
id *Wymagane(ścieżka) | Liczba całkowita. ID kampanii rozgrzewania skrzynek e-mail. |
<?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 | Wartość logiczna. prawda, gdy żądanie zakończyło się powodzeniem. |
data.id | ID kampanii rozgrzewania skrzynek e-mail. |
data.status | Status kampanii: aktywna, oczekująca, wstrzymana, zakończona, błąd. |
data.reply_rate | Procent otrzymanych e-maili, na które zostanie wysłana odpowiedź (10–45). |
data.send_to_paid_domain | Wskazuje, czy kampania wysyła e-maile na domeny firmowe. |
data.start_date | Data rozpoczęcia kampanii (YYYY-MM-DD). |
data.campaign_deadline | Data zakończenia kampanii (YYYY-MM-DD). Brak wartości, jeśli nie ustawiono terminu końcowego. |
data.strategy | Strategia wysyłania: progresywna lub stała. |
data.per_day | Dzienny cel wysyłki. |
data.from | Początkowy dzienny wolumen (tylko dla strategii progresywnej). |
data.increase | Dzienny przyrost wolumenu (tylko dla strategii progresywnej). |
data.subject | Temat e-maila (tylko gdy email_content=specific). |
data.body | Treść e-maila (tylko gdy email_content=specific). |
data.template_name | Nazwa szablonu. |
data.enable_ctd | Wskazuje, czy niestandardowa domena śledząca jest włączona. |
data.schedule | Harmonogram wysyłki przypisany do kampanii lub brak wartości. |
data.enable_proxy | Wskazuje, czy dynamiczne proxy jest włączone. |
data.sent_today | Liczba e-maili rozgrzewających wysłanych dzisiaj. |
data.daily_limit | Aktualnie obowiązujący dzienny limit wysyłania. |
data.total_saved_from_spam | Łączna liczba e-maili uratowanych ze spamu od rozpoczęcia kampanii. |
data.deliverability | Wskaźnik dostarczania do skrzynki odbiorczej (%). |
data.warm_up_error | Opis błędu, jeśli rozgrzewanie przeszło do stanu błąd, w przeciwnym razie brak wartości. |
data.email_account | Szczegóły połączonego konta e-mail. |
data.email_account.id | ID konta e-mail. |
data.email_account.email_from | Adres e-mail konta. |
data.email_account.type | Typ konta (np. google, microsoft). |
data.email_account.delay | Opóźnienie między e-mailami (w sekundach). |
data.email_account.limit | Łączny limit e-maili dla konta. |
data.email_account.per_day | Dzienny limit dla konta. |
data.email_account.schedule_required | Wskazuje, czy dla tego konta wymagany jest harmonogram. |
data.email_account.provider | Dostawca poczty e-mail: gmail, microsoft, hostinger, zoho, titan, godaddy, other itd. |
data.email_account.custom_tracking_domain | Niestandardowa domena śledząca lub null. |
PATCHAktualizuj kampanię rozgrzewania skrzynek e-mail
Ta metoda częściowo aktualizuje istniejącą kampanię rozgrzewania skrzynek e-mail. Zmieniane są tylko przekazane pola; wszystkie pozostałe ustawienia pozostają bez zmian. Użyj tej metody, aby zmieniać ustawienia kampanii na bieżąco, zmienić status (aktywny, wstrzymany, zakończony, usunięty) lub usunąć termin końcowy, wysyłając make_endless: prawda.
| PATCH | https://api.snov.io/v2/warm-up/{id} |
id *Wymagane(ścieżka) | Liczba całkowita. ID kampanii rozgrzewania skrzynek e-mail do zaktualizowania. |
status | Ręcznie zmień status kampanii. Dozwolone wartości: aktywny, wstrzymany, zakończony, usunięty. |
strategy | Nowa strategia wysyłania: progresywna lub stała. |
per_day | Nowy dzienny cel wysyłki. Zakres 1–1000 w zależności od planu cenowego. |
from | Nowy początkowy dzienny wolumen. Zakres 1–10. Wymagane, gdy strategia=progresywna. |
increase | Nowy dzienny przyrost wolumenu. Zakres 1–5. Wymagane, gdy strategia=progresywna. |
email_content | Typ treści e-maila: automatycznie wygenerowana lub niestandardowa. |
subject | Nowy temat e-maila, 1–200 znaków. Wymagane, gdy treść_e-maila=niestandardowa. |
body | Nowa treść e-maila, 1–10000 znaków. Wymagane, gdy treść_e-maila=niestandardowa. |
reply_rate | Nowy procent odpowiedzi. Zakres 10–45. |
campaign_deadline | Nowa data zakończenia kampanii (YYYY-MM-DD). |
make_endless | Wartość logiczna. Przekaż prawda, aby usunąć bieżący termin_kampanii i ustawić kampanię bez terminu końcowego. |
providers | Nowi docelowi dostawcy skrzynek odbiorców (te same dozwolone wartości co w metodzie Utwórz kampanię rozgrzewania skrzynek e-mail). |
send_to_paid_domain | Wartość logiczna. |
enable_ctd | Wartość logiczna. Włącza lub wyłącza niestandardową domenę śledzącą. |
enable_proxy | Wartość logiczna. Włącza lub wyłącza dynamiczne proxy. |
schedule_id | Nowy ID harmonogramu wysyłania. |
template_name | Nowa nazwa szablonu. |
<?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 | Wartość logiczna. prawda, gdy rozgrzewanie zostało zaktualizowane. |
data.id | ID zaktualizowanej kampanii rozgrzewania skrzynek e-mail. |
DELETEUsuń kampanię rozgrzewania skrzynek e-mail
Ta metoda usuwa kampanię rozgrzewania skrzynek e-mail na podstawie jej ID. Po usunięciu kampania i jej statystyki nie są już dostępne za pośrednictwem innych metod API rozgrzewania skrzynek e-mail.
| DELETE | https://api.snov.io/v2/warm-up/{id} |
id *Wymagane(ścieżka) | Liczba całkowita. ID kampanii rozgrzewania skrzynek e-mail do usunięcia. |
<?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 | Wartość logiczna. prawda, gdy rozgrzewanie zostało usunięte. |
data.id | ID usuniętej kampanii rozgrzewania skrzynek e-mail. |
GETPobierz statystyki rozgrzewania skrzynek e-mail
Ta metoda zwraca dzienne statystyki dostarczalności oraz statystyki dla poszczególnych dostawców w kampanii rozgrzewania skrzynek e-mail — dla zdefiniowanego okresu (dwa_tygodnie / miesiąc) lub niestandardowego zakresu dat. Przydatna do monitorowania postępów wskaźnika dostarczania do skrzynki odbiorczej i wykrywania dostawców, u których rozgrzewanie osiąga słabsze wyniki.
| GET | https://api.snov.io/v2/warm-up/statistics/{id} |
id *Wymagane(ścieżka) | Liczba całkowita. ID kampanii rozgrzewania skrzynek e-mail. |
period | Zdefiniowany okres. Dozwolone wartości: dwa_tygodnie, miesiąc. Wymagane, gdy nie podano data_od / data_do. |
date_from | Ciąg znaków (YYYY-MM-DD). Początek niestandardowego zakresu dat. Wymagane, gdy nie podano okres. |
date_to | Ciąg znaków (YYYY-MM-DD). Koniec niestandardowego zakresu dat. Musi być ≥ data_od i ≥ dacie rozpoczęcia kampanii. Wymagane, gdy nie podano okres. |
<?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 | Wartość logiczna. prawda, gdy żądanie zakończyło się powodzeniem. |
data.daily_statistics | Obiekt, w którym kluczami są daty (YYYY-MM-DD). Każda wartość zawiera poniższe pola dziennych statystyk. |
data.daily_statistics.{date}.emails_sent | Liczba e-maili rozgrzewających wysłanych tego dnia. |
data.daily_statistics.{date}.replies | Liczba odpowiedzi otrzymanych tego dnia. |
data.daily_statistics.{date}.bounces | Liczba odrzuconych e-maili tego dnia. |
data.daily_statistics.{date}.spam_emails | Liczba e-maili, które tego dnia trafiły do spamu. |
data.daily_statistics.{date}.inbox_emails | Liczba e-maili, które tego dnia trafiły do skrzynki odbiorczej. |
data.daily_statistics.{date}.categories_emails | Liczba e-maili, które tego dnia trafiły do kart kategorii w Gmailu. |
data.daily_statistics.{date}.scheduled | Liczba e-maili zaplanowanych do wysłania tego dnia. |
data.provider_statistics | Obiekt, w którym kluczami są nazwy dostawców (google, outlook, hostinger itd.). Każda wartość zawiera poniższe pola statystyk dla danego dostawcy. |
data.provider_statistics.{provider}.id | Wewnętrzny ID dostawcy. |
data.provider_statistics.{provider}.count | Liczba e-maili wysłanych za pośrednictwem tego dostawcy. |
data.provider_statistics.{provider}.spam | Liczba e-maili, które trafiły do spamu u tego dostawcy. |
data.provider_statistics.{provider}.percent | Wskaźnik dostarczania do skrzynki odbiorczej (%) dla tego dostawcy. |
data.provider_statistics.{provider}.categories | Liczba e-maili, które trafiły do kart kategorii w Gmailu. Pole może zostać pominięte w przypadku dostawców, którzy nie obsługują kategorii. |
data.deliverability.inbox.count | Łączna liczba e-maili dostarczonych do skrzynki odbiorczej. |
data.deliverability.inbox.percent | Wskaźnik dostarczania do skrzynki odbiorczej (%). |
data.deliverability.spam.count | Łączna liczba e-maili dostarczonych do spamu. |
data.deliverability.spam.percent | Wskaźnik trafiania do spamu (%). |
data.deliverability.categories.count | Łączna liczba e-maili dostarczonych do kart kategorii w Gmailu. |
data.deliverability.categories.percent | Wskaźnik trafiania do kart kategorii (%). |
data.is_calculated | Wartość logiczna. fałsz, gdy statystyki są nadal przetwarzane; prawda, gdy obliczenia zostały zakończone. |
Zarządzanie kampanią
Te metody pozwalają tworzyć, konfigurować i kontrolować cały cykl życia kampanii — od początkowej konfiguracji, przez uruchomienie, wstrzymanie i zakończenie, aż po usunięcie.
GETWyświetl wszystkie kampanie
BezpłatneTa metoda wyświetla listę wszystkich kampanii użytkownika. Jeśli użytkownik należy do zespołu i ma uprawnienie do wyświetlania rekordów zespołu, metoda zwróci również wszystkie kampanie utworzone w tym zespole.
| GET | https://api.snov.io/v1/get-user-campaigns |
| Ta metoda nie ma parametrów wejściowych |
<?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 | Unikalny identyfikator kampanii użytkownika. |
campaign | Nazwa kampanii. |
list_id | Unikalny identyfikator listy potencjalnych klientów użytej w kampanii. |
status | Status kampanii. |
created_at | Data i godzina utworzenia kampanii w formacie Unix Timestamp. |
updated_at | Data i godzina ostatniej aktualizacji kampanii w formacie Unix Timestamp. |
started_at | Data i godzina uruchomienia kampanii w formacie Unix Timestamp. |
POSTUtwórz kampanię
Ta metoda tworzy nową kampanię outreach w twoim workspace’ie Snov.io. Kampania jest tworzona ze statusem nowa i może zostać zapisana w dowolnym, częściowo skonfigurowanym stanie — jako wymagane walidowane są tylko pola niezbędne do uruchomienia kampanii, a pozostałe można uzupełnić później. Obsługiwane są zarówno sekwencje wyłącznie e-mailowe, wyłącznie na LinkedInie, jak i mieszane sekwencje wielokanałowe, w tym warianty A/B, triggery (otwarcie, kliknięcie, odpowiedź, Calendly, poziom kontaktu, wysłanie InMail na LinkedInie itd.), opóźnienia i bloki celów. Ta metoda tworzy kampanię bez treści w blokach wiadomości. Treść dodajesz później, wywołując metodę Utwórz treść kroku e-mail.
| POST | https://api.snov.io/v2/campaigns/create |
title *Wymagane | Ciąg znaków. Wyświetlana nazwa kampanii. Maks. 255 znaków. |
priority *Wymagane | Wyliczenie typu ciąg znaków. Priorytet wysyłania kampanii: niski, średni, wysoki. |
email_accounts *Wymagane dla kampanii e-mailowych | Tablica liczb całkowitych. ID kont e-mail nadawców, które mają zostać użyte. |
linkedin_accounts | Tablica liczb całkowitych. ID kont LinkedIna, które mają zostać użyte. |
tracking *Wymagane dla kampanii e-mailowych | Obiekt. Ustawienia śledzenia e-maili. |
tracking.open | Wartość logiczna. Śledzenie otwarć e-maili. |
tracking.link_click | Wartość logiczna. Śledzenie kliknięć linków w e-mailach. |
sending_settings *Wymagane dla kampanii e-mailowych | Obiekt. Określa sposób wysyłania e-maili oraz to, którzy odbiorcy są pomijani. |
sending_settings.sending_priority | Wyliczenie typu ciąg znaków. Które e-maile są wysyłane jako pierwsze: pierwszy_e-mail lub follow-up. |
sending_settings.daily_sending_all | Liczba całkowita lub null. Maksymalna łączna liczba e-maili wysyłanych dziennie do wszystkich odbiorców. |
sending_settings.daily_sending_new_recipients | Liczba całkowita lub null. Maksymalna liczba nowych odbiorców, z którymi można skontaktować się dziennie. |
sending_settings.skip_unverifiable | Wartość logiczna. Pomijanie odbiorców, których adresu e-mail nie można zweryfikować. |
sending_settings.skip_unverified | Wartość logiczna. Pomijanie odbiorców z niezweryfikowanymi adresami e-mail. |
sending_settings.skip_who_replied | Zatrzymanie follow-upów dla potencjalnych klientów, którzy odpowiedzą. |
sending_settings.skip_company_domain_who_replied | Wartość logiczna. Pomijanie odbiorców z domeny firmowej, jeśli ktokolwiek z tej domeny odpowiedział. |
sending_settings.skip_recipients_without_variables_data | Wartość logiczna. Pomijanie odbiorców, dla których brakuje wartości zmiennych niestandardowych. |
sending_settings.skip_other_recipients_email_addresses | Wartość logiczna. Jeśli potencjalny klient ma kilka adresów e-mail, wysyłanie tylko na pierwszy adres e-mail, jeśli wartość wynosi prawda. |
sending_settings.skip_recipients_added_to_my_another_campaign | Wartość logiczna. Pomijanie odbiorców, którzy znajdują się już w innej kampanii należącej do tego użytkownika. |
sending_settings.skip_recipients_added_to_team_another_campaign | Wartość logiczna. Pomijanie odbiorców, którzy znajdują się już w innej kampanii należącej do dowolnego członka zespołu. |
sending_settings.one_click_unsubscribe | Wartość logiczna. Włączenie nagłówka umożliwiającego rezygnację z subskrypcji jednym kliknięciem w e-mailach. |
recipients *Wymagane | Obiekt. Określa, kto otrzymuje kampanię. |
recipients.list_id *Wymagane | Liczba całkowita. ID listy potencjalnych klientów, do której ma zostać wysłana kampania. |
recipients.black_list_id | Liczba całkowita. ID Listy „Do-not-email”. Zobacz Wyświetl wszystkie Listy „Do-not-email”. |
schedule_id | Liczba całkowita. ID harmonogramu wysyłania. Zobacz Wyświetl wszystkie harmonogramy. |
start_campaign_at | Ciąg znaków (YYYY-MM-DD HH:MM:SS) lub null. Data i godzina, o której kampania powinna rozpocząć się automatycznie, np. 2027-03-25 09:00:00. |
complete_campaign_at | Ciąg znaków (YYYY-MM-DD HH:MM:SS) lub null. Data i godzina, o której kampania powinna automatycznie się zatrzymać. |
timezone | Ciąg znaków. Strefa czasowa kampanii. Listę obsługiwanych stref czasowych znajdziesz w tabeli Strefy czasowe poniżej. |
complete_campaign_after_last_step *Wymagane | Wartość logiczna. Zatrzymanie kampanii, gdy wszyscy odbiorcy przejdą przez ostatni krok sekwencji. |
archive_in_months *Wymagane | Liczba całkowita. Automatyczne archiwizowanie kampanii po podanej liczbie miesięcy. Dozwolone wartości: 1, 2, 3, 6. |
provider_matching *Wymagane dla kampanii e-mailowych | Wartość logiczna. Dopasowywanie dostawcy poczty e-mail odbiorcy do dostawcy konta nadawcy, jeśli to możliwe. Może mieć wartość prawda tylko wtedy, gdy podłączone są co najmniej dwa konta e-mail. |
deals | Obiekt lub null. Ustawienia tworzenia transakcji CRM uruchamianego przez zdarzenia kampanii. |
deals.event *Wymagane dla kampanii e-mailowych | Tablica ciągów znaków. Zdarzenia powodujące utworzenie transakcji: otwarcie, kliknięcie, odpowiedź. |
deals.pipeline_id *Wymagane dla kampanii e-mailowych | Liczba całkowita. ID pipeline’u CRM, w którym ma zostać utworzona transakcja. |
deals.stage_id *Wymagane dla kampanii e-mailowych | Liczba całkowita. ID etapu pipeline’u, w którym ma zostać umieszczona transakcja. |
deals.potential_value | Liczba całkowita. Szacowana wartość transakcji. |
deals.currency | Ciąg znaków. Kod waluty dla wartości transakcji. Listę obsługiwanych walut znajdziesz w tabeli Waluty poniżej. |
sequence *Wymagane | Obiekt. Workflow automatyzacji kroków wykonywanych przez kampanię. |
sequence.entry *Wymagane | Ciąg znaków. _ref pierwszego kroku do wykonania. |
sequence.steps *Wymagane | Tablica obiektów. Uporządkowana lista wszystkich kroków w sekwencji. |
sequence.steps._ref *Wymagane | Ciąg znaków. Unikalny identyfikator tego kroku, używany do łączenia kroków za pomocą next / yes / no. |
sequence.steps.type *Wymagane | Wyliczenie typu ciąg znaków. Typ kroku: e-mail, opóźnienie, trigger, cel, LinkedIn. |
sequence.steps.next | Ciąg znaków lub null. ref kroku, do którego należy przejść po tym kroku (bloki liniowe: e-mail, LinkedIn, opóźnienie). |
sequence.steps.yes | Ciąg znaków. ref kroku, do którego należy przejść, gdy warunek triggera zostanie spełniony (tylko dla triggera). |
sequence.steps.no | Ciąg znaków. ref kroku, do którego należy przejść, gdy warunek triggera nie zostanie spełniony (tylko dla triggera). |
sequence.steps.waiting_type *Wymagane dla opóźnienia / triggera | Wyliczenie typu ciąg znaków. Jednostka czasu okresu oczekiwania: minuty, godziny, dni. |
sequence.steps.waiting_val *Wymagane dla opóźnienia / triggera | Liczba całkowita. Liczba jednostek czasu oczekiwania. Limity dla poszczególnych jednostek: minuty ≤ 43200, godziny ≤ 720, dni ≤ 30. |
sequence.steps.action *Wymagane dla LinkedIna / triggera | Wyliczenie typu ciąg znaków. Akcja do wykonania lub zdarzenie do monitorowania. Obsługiwane wartości znajdziesz poniżej. |
sequence.steps.goal_name *Wymagane dla celu | Ciąg znaków. Etykieta tego kroku celu, np. Odpowiedział, Połączono. Blok cel musi być ostatnim krokiem w swojej gałęzi — nie może mieć next ani być pierwszym krokiem sekwencji. |
sequence.steps.content_slots *Wymagane dla e-maila | Liczba całkowita (min. 1, maks. 15). Liczba wariantów treści A/B dla tego kroku e-mail. |
sequence.steps.subject | Ciąg znaków lub null. Temat e-maila (tylko email); obsługuje {{variables}}. Wymagane dla kroku linkedin z action=in_mail. |
sequence.steps.body *Wymagane dla zaproszenia / wiadomości / InMail | Ciąg znaków (HTML). Treść wiadomości dla akcji LinkedIn wysyłających tekst. Nie może być pusta. |
sequence.steps.value *Wymagane dla endorse_skills | Liczba całkowita (1–5) dla endorse_skills. Tablica 1–2 unikalnych liczb całkowitych z [1, 2, 3] dla check_connection_level. |
| Typ kroku | Wartość akcji | Opis |
|---|---|---|
linkedin | visit | Odwiedź profil potencjalnego klienta na LinkedInie. |
linkedin | like | Polub post na profilu potencjalnego klienta. |
linkedin | follow | Obserwuj potencjalnego klienta na LinkedInie. |
linkedin | invite | Wyślij prośbę o połączenie (wymaga body). |
linkedin | message | Wyślij bezpośrednią wiadomość na LinkedInie (wymaga body). |
linkedin | in_mail | Wyślij wiadomość InMail na LinkedInie (wymaga body i subject). |
linkedin | connected_on_linkedin | Sprawdź, czy potencjalny klient zaakceptował prośbę o połączenie na LinkedInie. |
linkedin | check_connection_level | Sprawdź stopień połączenia potencjalnego klienta. |
linkedin | endorse_skills | Zatwierdź umiejętności na profilu potencjalnego klienta (wymaga value 1–5). |
trigger | open | Poczekaj, aby sprawdzić, czy potencjalny klient otworzy e-mail. |
trigger | click | Poczekaj, aby sprawdzić, czy potencjalny klient kliknie link w e-mailu. |
trigger | calendly | Poczekaj, aby sprawdzić, czy potencjalny klient dokona rezerwacji przez Calendly. |
trigger | connected_on_linkedin | Wyzwalacz systemowy. Wymagany po kroku LinkedIn connected_on_linkedin. Pole next kroku connected_on_linkedin musi wskazywać na ten wyzwalacz. |
trigger | check_connection_level | Rozgałęź na podstawie stopnia połączenia potencjalnego klienta na LinkedInie. |
trigger | linkedin_in_mail_sent | Wyzwalacz systemowy. Wymagany po kroku LinkedIn in_mail. Pole next kroku in_mail musi wskazywać na ten wyzwalacz. |
| 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 | Wartość logiczna. true, gdy kampania została utworzona. |
data.id | ID utworzonej kampanii. |
data.status | Status kampanii. Nowo utworzone kampanie są zwracane ze statusem new. |
data.title | Nazwa kampanii. |
data.email_accounts | Tablica identyfikatorów kont e-mail nadawców przypisanych do kampanii. |
data.linkedin_accounts | Tablica identyfikatorów kont LinkedIn przypisanych do kampanii. |
data.priority | Priorytet kampanii (low, medium, high). |
data.tracking | Ustawienia śledzenia e-maili (open, link_click). |
data.sending_settings | Ustawienia wysyłki zwracane dokładnie w formie zaakceptowanej przez serwer, w tym konfiguracja opóźnień. |
data.recipients | Listy odbiorców (list_id, black_list_id). |
data.schedule_id | ID harmonogramu wysyłki przypisanego do kampanii lub null. |
data.start_campaign_at | Data i godzina rozpoczęcia wysyłki kampanii. |
data.complete_campaign_at | Data i godzina zakończenia wysyłki kampanii. |
data.timezone | Identyfikator strefy czasowej, w której działa kampania. |
data.complete_campaign_after_last_step | Czy kampania kończy się automatycznie po dostarczeniu ostatniego kroku. |
data.archive_in_months | Okres automatycznej archiwizacji w miesiącach. |
data.provider_matching | Czy dopasowanie dostawcy poczty e-mail jest włączone. |
data.sequence | Schemat blokowy kampanii, zwracany z zachowaniem tej samej struktury. Każdy krok email jest wzbogacany o tablicę content opisującą wygenerowane pola treści (id, plain_text, usage. |
data.deals | Ustawienia tworzenia transakcji, dostępne tylko wtedy, gdy w żądaniu podano deals. |
GETPobierz informacje o kampanii
Ta metoda umożliwia pobranie informacji o konkretnej kampanii, takich jak: połączone konta nadawców, ustawienia wysyłki, informacje o liście odbiorców oraz szczegóły dotyczące kroków sekwencji.
| GET | https://api.snov.io/v2/campaigns/{campaign_id} |
campaign_id *Wymagane | Unikalny identyfikator kampanii, dla której chcesz wyświetlić informacje. |
<?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 | Wartość logiczna. true, gdy informacje o kampanii zostały pomyślnie pobrane. |
data.id | ID kampanii. |
data.status | Status kampanii. Nowo utworzone kampanie są zwracane ze statusem new. |
data.title | Nazwa kampanii. |
data.email_accounts | Tablica identyfikatorów kont e-mail nadawców przypisanych do kampanii. |
data.linkedin_accounts | Tablica identyfikatorów kont LinkedIn przypisanych do kampanii. |
data.priority | Priorytet kampanii (low, medium, high). |
data.tracking | Ustawienia śledzenia e-maili (open, link_click). |
data.sending_settings | Ustawienia wysyłki zwracane dokładnie w formie zaakceptowanej przez serwer, w tym konfiguracja opóźnień. |
data.recipients | Listy odbiorców (list_id, black_list_id). |
data.schedule_id | ID harmonogramu wysyłki przypisanego do kampanii lub null. |
data.start_campaign_at | Data i godzina rozpoczęcia wysyłki kampanii. |
data.complete_campaign_at | Data i godzina zakończenia wysyłki kampanii. |
data.timezone | Identyfikator strefy czasowej, w której działa kampania. |
data.complete_campaign_after_last_step | Czy kampania kończy się automatycznie po dostarczeniu ostatniego kroku. |
data.archive_in_months | Okres automatycznej archiwizacji w miesiącach. |
data.provider_matching | Czy dopasowanie dostawcy poczty e-mail jest włączone. |
data.sequence | Schemat blokowy kampanii, zwracany z zachowaniem tej samej struktury. Każdy krok email jest wzbogacany o tablicę content opisującą wygenerowane pola treści (id, plain_text, usage). |
data.deals | Ustawienia tworzenia transakcji, dostępne tylko wtedy, gdy w żądaniu podano deals. |
PATCHAktualizuj kampanię
Ta metoda częściowo aktualizuje istniejącą kampanię outreachową w obszarze roboczym snov.io. Zmieniane są tylko pola uwzględnione w treści żądania; pominięte pola pozostają bez zmian. Zagnieżdżone obiekty (tracking, sending_settings, recipients, deals) również są scalane — wysłanie {"tracking": {"open": false}} nie usuwa link_click. Akceptowana treść żądania ma taką samą strukturę jak w przypadku tworzenia kampanii, dlatego można wysłać dowolny podzbiór pól 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 i deals.
Ustawienia podstawowe (oznaczone poniżej jako (podstawowe)) można edytować tylko wtedy, gdy kampania ma status nowa (wersja robocza) — zostają zablokowane, gdy kampania przejdzie do statusu wstrzymana, aktywna, zaplanowana, zakończona lub zarchiwizowana.
Gdy podano sequence, tablica w pełni zastępuje istniejący schemat blokowy. Kroki, których _ref odpowiada istniejącemu numerycznemu ID kroku, są aktualizowane w miejscu, kroki z nienumerycznym _ref są tworzone jako nowe, a wszystkie istniejące kroki pominięte w tablicy są usuwane.
| PATCH | https://api.snov.io/v2/campaigns/{campaign_id} |
campaign_id *Wymagane (ścieżka) | Liczba całkowita. ID kampanii do aktualizacji. |
title | Ciąg znaków. Wyświetlana nazwa kampanii. Maks. 255 znaków. |
priority | Enum ciągu znaków. Priorytet wysyłki: niski, średni, wysoki. |
email_accounts | Tablica liczb całkowitych. ID kont e-mail nadawców. Kont e-mail nie można dodać, jeśli aktywna kampania nie zawiera żadnych kroków e-mailowych. |
linkedin_accounts | Tablica liczb całkowitych. ID kont LinkedIn. Kont LinkedIn nie można dodać, jeśli aktywna kampania nie zawiera żadnych kroków LinkedIn. |
provider_matching | Wartość logiczna. Dopasuj dostawcę poczty e-mail odbiorcy do dostawcy konta nadawcy. Zawsze fałsz dla kampanii tylko na LinkedInie. |
complete_campaign_after_last_step | Wartość logiczna. Zatrzymaj kampanię, gdy wszyscy odbiorcy przejdą ostatni krok sekwencji. |
archive_in_months | Liczba całkowita. Automatycznie archiwizuj po podanej liczbie miesięcy. Dozwolone wartości: 1, 2, 3, 6. |
schedule_id | Liczba całkowita lub null. ID harmonogramu wysyłki. Nieistniejący ID zwraca 404/422. |
start_campaign_at | Ciąg znaków (YYYY-MM-DD HH:MM:SS) lub brak wartości. Data i godzina automatycznego uruchomienia kampanii. Nie można dodać, jeśli pole nie zostało podane podczas tworzenia; brak wartości nie powoduje żadnej operacji (istniejąca wartość nie jest usuwana). |
complete_campaign_at | Ciąg znaków (YYYY-MM-DD HH:MM:SS) lub brak wartości. Data i godzina automatycznego zatrzymania kampanii. Musi być późniejsza niż start_campaign_at. Brak wartości nie powoduje żadnej operacji. |
timezone | Ciąg znaków lub brak wartości. Strefa czasowa używana dla pól daty, akceptuje identyfikatory stref czasowych IANA w formacie Region/City, np. America/New_York. Ma zastosowanie tylko wtedy, gdy w kampanii występuje start_campaign_at. |
recipients (podstawowe) | Obiekt. Konfiguracja odbiorców. Zablokowana w rozpoczętych kampaniach, edytowalna w wersji roboczej. |
recipients.list_id (podstawowe) | Liczba całkowita. ID listy potencjalnych klientów. |
recipients.black_list_id (podstawowe) | Liczba całkowita lub brak wartości. ID listy wykluczeń. |
tracking | Obiekt. Ustawienia śledzenia e-maili. Ignorowane w kampaniach tylko na LinkedInie. |
tracking.open | Wartość logiczna. Śledź otwarcia e-maili. |
tracking.link_click | Wartość logiczna. Śledź kliknięcia linków w e-mailach. |
sending_settings | Obiekt. Określa sposób wysyłania e-maili oraz odbiorców, którzy mają zostać pominięci. |
sending_settings.sending_priority | Enum ciągu znaków. Które e-maile są wysyłane jako pierwsze: pierwszy e-mail lub follow-up. |
sending_settings.daily_sending_all | Liczba całkowita lub brak wartości. Maksymalna łączna liczba e-maili wysyłanych dziennie do wszystkich odbiorców. Brak wartości usuwa limit. |
sending_settings.daily_sending_new_recipients | Liczba całkowita lub brak wartości. Maksymalna liczba nowych odbiorców, z którymi można skontaktować się dziennie. Brak wartości usuwa limit. |
sending_settings.skip_who_replied | Wartość logiczna. Zatrzymuje kolejne e-maile dla prospektów, którzy odpowiedzieli. |
sending_settings.skip_company_domain_who_replied | Wartość logiczna. Pomijaj odbiorców z domeny firmowej, jeśli ktokolwiek odpowiedział. |
sending_settings.skip_unverifiable (podstawowe) | Wartość logiczna. Pomijaj odbiorców, których adresu e-mail nie można zweryfikować. Zablokowane w rozpoczętych kampaniach. |
sending_settings.skip_unverified (podstawowe) | Wartość logiczna. Pomijaj odbiorców z niezweryfikowanymi adresami e-mail. Zablokowane w rozpoczętych kampaniach. |
sending_settings.skip_other_recipients_email_addresses (podstawowe) | Wartość logiczna. Jeśli potencjalny klient ma wiele adresów e-mail, wysyłaj tylko na pierwszy adres e-mail, jeśli prawda. Zablokowane w rozpoczętych kampaniach. |
sending_settings.skip_recipients_added_to_my_another_campaign (podstawowe) | Wartość logiczna. Pomijaj odbiorców, którzy są już w innej kampanii tego użytkownika. Zablokowane w rozpoczętych kampaniach. |
sending_settings.skip_recipients_added_to_team_another_campaign (podstawowe) | Wartość logiczna. Pomijaj odbiorców, którzy są już w innej kampanii dowolnego członka zespołu. Zablokowane w rozpoczętych kampaniach. |
sending_settings.skip_recipients_without_variables_data | Wartość logiczna. Pomijaj odbiorców, dla których brakuje wartości zmiennych niestandardowych. |
sending_settings.one_click_unsubscribe | Wartość logiczna. Włącz nagłówek umożliwiający wypisanie się jednym kliknięciem w e-mailach. |
deals | Obiekt lub brak wartości. Ustawienia tworzenia transakcji w CRM. Przekaż brak wartości, aby usunąć konfigurację transakcji. |
deals.event *Wymagane, gdy podano deals | Tablica ciągów znaków. Zdarzenia, które tworzą transakcję: otwarcie, kliknięcie, odpowiedź. |
deals.pipeline_id *Wymagane, gdy podano deals | Liczba całkowita. ID pipeline’u CRM. |
deals.stage_id *Wymagane, gdy podano deals | Liczba całkowita. ID etapu pipeline’u. |
deals.potential_value | Liczba całkowita. Szacowana wartość transakcji. Musi być dodatnia. |
deals.currency | Ciąg znaków. Kod waluty wartości transakcji, np. USD, EUR. |
sequence | Obiekt. Pełne zastąpienie sekwencji kampanii — po podaniu zastępuje cały schemat blokowy. |
sequence.entry *Wymagane, gdy podano sequence | Ciąg znaków. ref pierwszego kroku do wykonania. |
sequence.steps *Wymagane, gdy podano sequence | Tablica obiektów kroków. Pełna lista kroków. |
sequence.steps._ref *Wymagane | Ciąg znaków. Identyfikator kroku. Numeryczny _ref aktualizuje istniejący krok; nienumeryczny _ref tworzy nowy krok. |
sequence.steps.type *Wymagane | Enum ciągu znaków. Typ kroku: e-mail, opóźnienie, wyzwalacz, cel, LinkedIn. Nie można go zmienić w istniejących krokach (numeryczny _ref). |
sequence.steps.next | Ciąg znaków lub brak wartości. _ref kroku, do którego należy przejść po tym kroku (bloki liniowe: e-mail, LinkedIn, opóźnienie). |
sequence.steps.yes | Ciąg znaków. ref kroku, do którego należy przejść po spełnieniu warunku wyzwalacza (tylko wyzwalacz). |
sequence.steps.no | Ciąg znaków. ref kroku, do którego należy przejść, gdy warunek wyzwalacza nie zostanie spełniony (tylko wyzwalacz). |
sequence.steps.waiting_type *Wymagane, gdy podano delay / trigger | Enum ciągu znaków. Jednostka czasu: minuty, godziny, dni. |
sequence.steps.waiting_val *Wymagane, gdy podano delay / trigger | Liczba całkowita. Liczba jednostek czasu oczekiwania. Min. 1 dla kroków opóźnienie i wyzwalacz. Limity według jednostki: minuty ≤ 43200, godziny ≤ 720, dni ≤ 30. |
sequence.steps.action *Wymagane, gdy podano dla linkedin / trigger | Enum ciągu znaków. Działanie do wykonania lub zdarzenie do monitorowania. Zobacz obsługiwane wartości poniżej. |
sequence.steps.goal_name *Wymagane, gdy podano goal | Ciąg znaków. Etykieta tego kroku celu, np. Odpowiedź, Połączenie. Blok cel musi być ostatnim krokiem w swojej gałęzi — nie może mieć next ani być pierwszym krokiem sekwencji. |
sequence.steps.content_slots *Wymagane, gdy podano email | Liczba całkowita (min. 1, maks. 15). Liczba wariantów treści A/B. |
sequence.steps.content *Wymagane, gdy podano email przy aktualizacji istniejących kroków | Tablica obiektów. Metadane treści skopiowane z odpowiedzi GET; każdy element: {"id": |
sequence.steps.subject | Ciąg znaków lub brak wartości. Temat e-maila lub InMail; obsługuje {{variables}}. Opcjonalne dla e-mail; wymagane dla kroku LinkedIn z action=in_mail. |
sequence.steps.body *Wymagane, gdy podano invite / message / in_mail | Ciąg znaków (HTML). Treść wiadomości dla działań na LinkedInie, które wysyłają tekst. |
sequence.steps.value *Wymagane, gdy podano endorse_skills / check_connection_level | Liczba całkowita (1–5) dla endorse_skills; tablica liczb całkowitych (prawidłowe poziomy stopnia połączenia) dla wyzwalacza check_connection_level. |
| visit | Odwiedź profil potencjalnego klienta na LinkedInie. | |
| like | Polub post na profilu potencjalnego klienta. | |
| follow | Obserwuj potencjalnego klienta na LinkedInie. | |
| invite | Wyślij prośbę o połączenie (wymaga body). | |
| message | Wyślij bezpośrednią wiadomość na LinkedInie (wymaga body). | |
| in_mail | Wyślij wiadomość InMail na LinkedInie (wymaga body i subject; po niej musi następować wyzwalacz linkedin_in_mail_sent). | |
| connected_on_linkedin | Sprawdź, czy potencjalny klient zaakceptował prośbę o połączenie na LinkedInie. | |
| check_connection_level | Sprawdź stopień połączenia potencjalnego klienta. | |
| endorse_skills | Zatwierdź umiejętności na profilu potencjalnego klienta (wymaga value 1–5). | |
| trigger | open | Poczekaj, aby sprawdzić, czy potencjalny klient otworzy e-mail. |
| trigger | click | Poczekaj, aby sprawdzić, czy potencjalny klient kliknie link w e-mailu. |
| trigger | calendly | Poczekaj, aby sprawdzić, czy potencjalny klient dokona rezerwacji przez Calendly (musi następować po kroku e-mailowym; maks. 30 dni). |
| trigger | connected_on_linkedin | Wyzwalacz systemowy. Wymagany po kroku LinkedIn connected_on_linkedin. Pole next kroku connected_on_linkedin musi wskazywać na ten wyzwalacz. |
| trigger | check_connection_level | Rozgałęź na podstawie stopnia połączenia potencjalnego klienta na LinkedInie (wymaga value: tablica prawidłowych poziomów stopnia połączenia). |
| trigger | linkedin_in_mail_sent | Wyzwalacz systemowy. Wymagany po kroku LinkedIn in_mail. Pole next kroku in_mail musi wskazywać na ten wyzwalacz. |
<?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 | Wartość logiczna. Prawda, gdy kampania została zaktualizowana. |
data.id | ID zaktualizowanej kampanii. |
data.status | Bieżący status kampanii. |
data.title | Nazwa kampanii. |
data.email_accounts | Tablica identyfikatorów kont e-mail nadawców przypisanych do kampanii. |
data.linkedin_accounts | Tablica identyfikatorów kont LinkedIn przypisanych do kampanii. |
data.priority | Priorytet kampanii (niski, średni, wysoki). |
data.tracking | Ustawienia śledzenia e-maili (otwarcie, kliknięcie linku). |
data.sending_settings | Ustawienia wysyłki zwracane dokładnie w formie zapisanej na serwerze po aktualizacji. |
data.recipients | Listy odbiorców (list_id, black_list_id). |
data.schedule_id | ID harmonogramu wysyłki przypisanego do kampanii lub brak wartości. |
data.start_campaign_at | Data i godzina rozpoczęcia wysyłki kampanii. |
data.complete_campaign_at | Data i godzina zakończenia wysyłki kampanii. |
data.timezone | Identyfikator strefy czasowej, w której działa kampania. |
data.complete_campaign_after_last_step | Czy kampania kończy się automatycznie po dostarczeniu ostatniego kroku. |
data.archive_in_months | Okres automatycznej archiwizacji w miesiącach. |
data.provider_matching | Czy dopasowanie dostawcy poczty e-mail jest włączone. |
data.sequence | Schemat blokowy kampanii, zwracany z zachowaniem tej samej struktury po uzgodnieniu. Każdy krok e-mail jest wzbogacany o tablicę content opisującą pola treści (id, plain_text, usage). |
data.deals | Ustawienia tworzenia transakcji, dostępne tylko wtedy, gdy tworzenie transakcji jest skonfigurowane w kampanii. |
POSTZmień stan kampanii
BezpłatneTa metoda pozwala zarządzać stanem kampanii — uruchamiać ją, wstrzymywać, kończyć lub archiwizować.
| POST | https://api.snov.io/v2/campaigns/{campaign_id}/action |
campaign_id *Wymagane (ścieżka) | Unikalny identyfikator kampanii, której stan chcesz zmienić. |
action | Stan, na który można przełączyć kampanię. Dozwolone wartości: start, wstrzymanie, wznowienie, zakończenie, zarchiwizowana. |
<?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 | Może zwrócić wartość prawda lub fałsz w zależności od wyniku wykonania. |
errors | Lista błędów, które wystąpiły podczas zmiany stanu kampanii. |
DELETEUsuń kampanię
Ta metoda usuwa kampanię na podstawie jej ID. Usunięcie jest dozwolone tylko dla kampanii o statusie nowa (wersja robocza), zakończona lub zarchiwizowana — kampanii o statusie aktywna, wstrzymana lub zaplanowana nie można usunąć, dopóki nie zostaną najpierw zatrzymane.
| DELETE | https://api.snov.io/v2/campaigns/{campaign_id} |
campaign_id *Wymagane (ścieżka) | Liczba całkowita. ID kampanii do usunięcia. |
<?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 | Wartość logiczna. prawda, gdy kampania została usunięta. |
Treść kroku e-mailowego
Te metody pozwalają zarządzać blokami treści (tematem i treścią wiadomości) kroków e-mailowych w sekwencji kampanii. Treść można modyfikować tylko wtedy, gdy kampania ma status nowa, wstrzymana lub zaplanowana. Każdy krok musi zawierać co najmniej jeden blok treści.
GETWyświetl wszystkie harmonogramy
BezpłatneTa metoda wyświetla listę wszystkich harmonogramów kampanii.
| GET | https://api.snov.io/v2/campaigns/schedules |
| Ta metoda nie ma parametrów wejściowych |
<?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 | Unikalny ID harmonogramu. |
name | Nazwa harmonogramu. |
timezone | Strefa czasowa harmonogramu. |
days | Tablica możliwych dni i godzin wysyłki dla harmonogramu. |
day | Dzień tygodnia. |
enabled | Wskazuje prawda, jeśli wysyłanie jest dozwolone w danym dniu. Zwraca fałsz, jeśli wysyłanie w danym dniu jest niedozwolone. |
start_time | Godzina rozpoczęcia harmonogramu w danym dniu. |
end_time | Godzina zakończenia harmonogramu w danym dniu. |
POSTUtwórz Treść Kroku E-mailowego
BezpłatneTa metoda tworzy lub aktualizuje blok treści dla kroku e-mailowego w sekwencji kampanii. Jeśli blok treści o określonym content_id już istnieje, zostanie nadpisany. Treść można modyfikować tylko wtedy, gdy kampania ma status nowa, wstrzymana lub zaplanowana.
| POST | https://api.snov.io/v2/campaigns/{campaign_id}/steps/{step_id}/content/create |
campaign_id *Wymagane (ścieżka) | Liczba całkowita. ID kampanii. |
step_id *Wymagane (ścieżka) | Liczba całkowita. ID kroku sekwencji e-mailowej. |
content_id *Wymagane | Liczba całkowita. ID bloku treści do zapisania. Ponowne przesłanie tego samego content_id nadpisuje istniejący blok. |
subject *Wymagane | Ciąg znaków. Temat e-maila. Obsługuje {{variables}}. |
body *Wymagane | Ciąg znaków (HTML). Treść e-maila. |
plain_text *Wymagane | Wartość logiczna. prawda wysyła e-mail jako zwykły tekst, fałsz wysyła jako HTML. |
usage *Wymagane | Ciąg znaków. Stan bloku treści. Dozwolone wartości: "aktywny", "wstrzymany". |
<?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": "<p>Hi {{first_name}}, ...</p>",
"plain_text": false,
"usage": "active"
}
}success | Wartość logiczna. prawda, gdy żądanie zakończyło się powodzeniem. |
data.id | Liczba całkowita. ID bloku treści. |
data.subject | Ciąg znaków. Temat e-maila. |
data.body | Ciąg znaków (HTML). Treść e-maila. |
data.plain_text | Wartość logiczna. prawda, jeśli używany jest tryb zwykłego tekstu, fałsz, jeśli HTML. |
data.usage | Ciąg znaków. Stan bloku treści. Dozwolone wartości: "aktywny", "wstrzymany". |
GETPobierz Treść Kroku E-mailowego
BezpłatneTa metoda zwraca blok treści kroku sekwencji e-mailowej na podstawie jego content_id.
| GET | https://api.snov.io/v2/campaigns/{campaign_id}/steps/{step_id}/content/{content_id} |
campaign_id *Wymagane (ścieżka) | Liczba całkowita. ID kampanii. |
step_id *Wymagane (ścieżka) | Liczba całkowita. ID kroku sekwencji e-mailowej. |
content_id *Wymagane (ścieżka) | Liczba całkowita. ID bloku treści. |
<?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": "<p>Hi {{first_name}}, ...</p>",
"plain_text": false,
"usage": "active"
}
}data.id | Liczba całkowita. ID bloku treści. |
data.subject | Ciąg znaków. Temat e-maila. |
data.body | Ciąg znaków (HTML). Treść e-maila. |
data.plain_text | Wartość logiczna. prawda, jeśli używany jest tryb zwykłego tekstu, fałsz, jeśli HTML. |
data.usage | Ciąg znaków. Stan bloku treści. Dozwolone wartości: "aktywny", "wstrzymany". |
PATCHAktualizuj Treść Kroku E-mailowego
BezpłatneTa metoda częściowo aktualizuje blok treści kroku sekwencji e-mailowej. Aktualizowane są tylko pola podane w treści żądania; pominięte pola pozostają bez zmian. Należy uwzględnić co najmniej jedno pole. Treść można modyfikować tylko wtedy, gdy kampania ma status nowa, wstrzymana lub zaplanowana.
| PATCH | https://api.snov.io/v2/campaigns/{campaign_id}/steps/{step_id}/content/{content_id} |
campaign_id *Wymagane (ścieżka) | Liczba całkowita. ID kampanii. |
step_id *Wymagane (ścieżka) | Liczba całkowita. ID kroku sekwencji e-mailowej. |
content_id *Wymagane (ścieżka) | Liczba całkowita. ID bloku treści. |
subject | Ciąg znaków. Temat e-maila. Obsługuje {{variables}}. |
body | Ciąg znaków (HTML). Treść e-maila. |
plain_text | Wartość logiczna. Prawda dla zwykłego tekstu, fałsz dla HTML. |
usage | Ciąg znaków. Stan bloku treści. Dozwolone wartości: "aktywny", "wstrzymany". |
<?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": "<p>Hi {{first_name}}, ...</p>",
"plain_text": false,
"usage": "active"
}
}success | Wartość logiczna. Prawda, gdy żądanie zakończyło się powodzeniem. |
data.id | Liczba całkowita. ID bloku treści. |
data.subject | Ciąg znaków. Temat e-maila. |
data.body | Ciąg znaków (HTML). Treść e-maila. |
data.plain_text | Wartość logiczna. Prawda dla trybu zwykłego tekstu, fałsz dla HTML. |
data.usage | Ciąg znaków. Stan bloku treści. Dozwolone wartości: "aktywny", "wstrzymany". |
DELETEUsuń Treść Kroku E-mailowego
BezpłatneTa metoda usuwa blok treści z kroku sekwencji e-mailowej. Usunięcie ostatniego pozostałego bloku treści w kroku jest niedozwolone — każdy krok musi zawierać co najmniej jeden blok treści.
| DELETE | https://api.snov.io/v2/campaigns/{campaign_id}/steps/{step_id}/content/{content_id} |
campaign_id *Wymagane (ścieżka) | Liczba całkowita. ID kampanii. |
step_id *Wymagane (ścieżka) | Liczba całkowita. ID kroku sekwencji e-mailowej. |
content_id *Wymagane (ścieżka) | Liczba całkowita. ID bloku treści do usunięcia. |
<?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 | Wartość logiczna. prawda, gdy blok treści został pomyślnie usunięty. |
Zarządzanie odbiorcami
Te metody pozwalają zarządzać odbiorcami kampanii — sprawdzać i aktualizować ich statusy, przeglądać potencjalnych klientów, którzy ukończyli kampanię, oraz zarządzać listami Do-not-email, aby kontrolować, kto otrzymuje twoje kampanie.
GETSprawdź status odbiorcy
BezpłatneTa metoda sprawdza, czy podane adresy e-mail są obecne jako odbiorcy w określonej kampanii, i zwraca ich bieżący status. Służy do deduplikacji przed dodaniem nowych odbiorców do kampanii — np. aby uniknąć kontaktowania się z potencjalnymi klientami, którzy są już zapisani do kampanii, ją zakończyli lub zrezygnowali z subskrypcji.
| GET | https://api.snov.io/v2/campaigns/[campaign_id]/recipient |
campaign_id *Wymagane | Unikalny identyfikator kampanii. |
emails[] *Wymagane | Tablica adresów e-mail do sprawdzenia. Minimum 1, maksimum 100 na żądanie. Każdy adres e-mail musi być unikalny i mieć nie więcej niż 100 znaków. |
<?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 | Adres e-mail z żądania (zwrócony w odpowiedzi). |
exist | prawda, jeśli adres e-mail jest obecny jako odbiorca w kampanii, w przeciwnym razie fałsz. |
status | Bieżący status odbiorcy w kampanii (np. do_sprawdzenia, aktywny, zakończony, rezygnacja_z_subskrypcji, przeniesiony). null, gdy istnieje ma wartość fałsz. |
POSTZmień status odbiorcy
BezpłatneZmień status odbiorcy w określonej kampanii.
| POST | https://api.snov.io/v1/change-recipient-status |
email *Wymagane | Adres e-mail potencjalnego klienta. |
campaign_id *Wymagane | ID kampanii. Możesz je znaleźć w adresie URL podczas wyświetlania informacji o kampanii (zobacz przykład). |
status *Wymagane | Może zawierać wartości Aktywny, Wstrzymany lub Anulowano subskrypcję. Nie możesz zmienić statusu odbiorców, jeśli ich status to Zakończony lub Przeniesiony. |
<?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
}Metoda zwracasuccess: true jeśli status potencjalnego klienta został pomyślnie zmieniony. Jeśli wystąpi jakikolwiek błąd, metoda zwróci success: false z opisem błędu.
GETWyświetl listę ukończonych potencjalnych klientów
BezpłatneTa metoda zwraca potencjalnych klientów, dla których kampania została zakończona.
| GET | https://api.snov.io/v1/prospect-finished |
campaignId *Wymagane | Unikalny identyfikator kampanii do pobrania listy potencjalnych klientów. |
<?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 | Unikalny identyfikator żądania. |
prospectId | Unikalny identyfikator potencjalnego klienta. |
userName | Pełne imię i nazwisko potencjalnego klienta. |
userEmail | Adres e-mail potencjalnego klienta. |
campaign | Nazwa kampanii. |
POSTDodaj do Listy „do not email”
BezpłatneZa pomocą tej metody możesz dodać adres e-mail lub domenę do Listy „Do-not-email”. Po dodaniu adresu e-mail/domeny do listy nie będzie można wysyłać na ten adres e-mail ani do tej domeny e-maili.
| POST | https://api.snov.io/v1/do-not-email-list |
items | Adres e-mail lub domena, które chcesz dodać do swojej Listy „Do-not-email”. |
listId *Wymagane | Identyfikator Listy „Do-not-email”, do której należą adresy e-mail i domeny. |
<?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 | Ten parametr pokazuje, które adresy e-mail/domeny zostały wcześniej dodane do Listy „Do-not-email”. |
GETWyświetl wszystkie listy „Do-not-email”
BezpłatneTa metoda zwraca listę wszystkich list „do-not-email”.
| GET | https://api.snov.io/v2/blacklists |
| Ta metoda nie ma parametrów wejściowych |
<?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 | Unikalny ID listy „Do-not-email”. |
name | Nazwa listy. |
owner | Imię i nazwisko osoby, która utworzyła listę. |
total | Łączna liczba rekordów na liście (adresów e-mail i stron internetowych). |
Analityka i raportowanie
Te metody tylko do odczytu zapewniają wgląd w wyniki kampanii — dostarczenia, otwarcia, kliknięcia i odpowiedzi. Używaj ich do monitorowania zaangażowania i eksportowania danych do analizy.
GETPobierz analitykę kampanii
BezpłatneTa metoda wyświetla statystyki kampanii na podstawie zastosowanych filtrów.
| GET | https://api.snov.io/v2/statistics/campaign-analytics |
campaign_id | ID kampanii. Możesz je znaleźć w adresie URL podczas wyświetlania informacji o kampanii (przykład).
Jeśli pozostawisz to pole puste, otrzymasz dane dla wszystkich aktywnych kampanii w określonym przedziale czasu. Aby uzyskać dane dla wielu kampanii, oddziel ich identyfikatory przecinkami. |
sender_email | ID konta nadawcy e-maili. Możesz je znaleźć w adresie URL podczas wyświetlania lub edytowania informacji o koncie e-mail (przykład).
Aby wyświetlić analitykę dla wielu kont e-mail, oddziel ich identyfikatory przecinkami. Możesz też pozostawić ten parametr pusty, jeśli nie chcesz stosować filtra konta e-mail. |
sender_linkedin | ID konta nadawcy na LinkedInie. Możesz je znaleźć w adresie URL podczas wyświetlania lub edytowania informacji o koncie na LinkedInie. Aby wyświetlić analitykę dla wielu kont, oddziel ich identyfikatory przecinkami. Pozostaw ten parametr pusty, jeśli nie chcesz stosować filtra konta na LinkedInie. |
campaign_owner | Aby wyświetlić dane kampanii dla konkretnego członka zespołu, wpisz jego adres e-mail. Aby filtrować według wielu właścicieli kampanii, podaj adresy e-mail rozdzielone przecinkami (bez spacji). Przykład: example1@gmail.com,example2@gmail.com Pamiętaj, że aby użyć tego filtra, twoje konto musi mieć włączone uprawnienie „Wyświetlanie rekordów zespołu”, a twój plan musi być na poziomie Pro lub wyższym. |
date_from *Wymagane | Data rozpoczęcia okresu, dla którego chcesz otrzymać statystyki. Format: yyyy-mm-dd. |
date_to *Wymagane | Data zakończenia okresu, dla którego chcesz otrzymać statystyki. Format: yyyy-mm-dd. |
<?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 | Łączna liczba odbiorców, z którymi nawiązano kontakt przez e-mail lub LinkedIn (zaproszenie do kontaktów, wiadomość lub InMail). |
emails_sent | Łączna liczba e-maili wysłanych w ramach kampanii. Pamiętaj, że nie obejmuje to e-maili wysłanych poza kampaniami. |
first_emails | Liczba pierwszych e-maili w sekwencji kampanii wysłanych w określonym przedziale czasu. |
first_emails_rate | Procent pierwszych e-maili w stosunku do łącznej liczby wysłanych e-maili. |
follow_ups | Liczba e-maili uzupełniających w sekwencji kampanii wysłanych w określonym przedziale czasu. |
follow_ups_rate | Procent e-maili uzupełniających w stosunku do łącznej liczby wysłanych e-maili. |
delivered | Liczba wysłanych e-maili, które nie zostały odrzucone. |
delivered_rate | Procent e-maili, które nie zostały odrzucone, w stosunku do łącznej liczby wysłanych e-maili. |
bounced | Liczba e-maili, które zostały odrzucone. |
bounced_rate | Procent e-maili, które zostały odrzucone, w stosunku do łącznej liczby wysłanych e-maili. |
contacted_by_email | Liczba odbiorców, którzy otrzymali co najmniej jeden e-mail, który nie został odrzucony. |
email_opens | Liczba odbiorców, którzy otworzyli twój e-mail co najmniej raz. |
email_opens_rate | Procent odbiorców, którzy otworzyli twój e-mail co najmniej raz, w stosunku do wszystkich odbiorców, z którymi nawiązano kontakt. |
link_clicks | Liczba odbiorców, którzy kliknęli co najmniej jeden link w twoich kampaniach. |
link_clicks_rate | Procent odbiorców, którzy kliknęli co najmniej jeden link w kampaniach, w stosunku do wszystkich odbiorców, z którymi nawiązano kontakt. |
email_replies | Liczba odbiorców, którzy odpowiedzieli co najmniej raz. |
email_replies_rate | Procent odbiorców, którzy odpowiedzieli co najmniej raz, w stosunku do wszystkich odbiorców, z którymi nawiązano kontakt. |
unsubscribed | Liczba odbiorców, którzy kliknęli link „Anuluj subskrypcję” w twoich kampaniach, rezygnując z otrzymywania kolejnych e-maili. |
unsubscribed_rate | Procent odbiorców, którzy kliknęli link „Anuluj subskrypcję” w twoich kampaniach, w stosunku do wszystkich odbiorców, z którymi nawiązano kontakt. |
auto_replied | Liczba odbiorców, którzy wysłali automatyczną odpowiedź na e-maile z twojej kampanii. |
auto_replied_rate | Procent odbiorców, którzy wysłali automatyczną odpowiedź, w stosunku do wszystkich odbiorców, z którymi nawiązano kontakt. |
contacted_by_linkedin | Liczba odbiorców, do których wysłano co najmniej jedną wiadomość lub zaproszenie do kontaktów na LinkedInie. |
linkedin_total_replies | Liczba odbiorców, którzy odpowiedzieli co najmniej raz na dowolną wiadomość wysłaną na LinkedInie (wiadomość na LinkedInie, wiadomość w zaproszeniu do kontaktów lub InMail). |
linkedin_total_replies_rate | Procent odbiorców, którzy odpowiedzieli co najmniej raz na dowolną wiadomość wysłaną na LinkedInie (wiadomość na LinkedInie, wiadomość w zaproszeniu do kontaktów lub InMail). |
connection_request_replies | Liczba odbiorców, którzy odpowiedzieli na wiadomość w zaproszeniu do kontaktów. |
connection_request_replies_rate | Procent odbiorców, którzy odpowiedzieli na wiadomość w zaproszeniu do kontaktów, w stosunku do wszystkich odbiorców, z którymi nawiązano kontakt. |
message_replies | Liczba odbiorców, którzy odpowiedzieli na zwykłą wiadomość na LinkedInie. |
message_replies_rate | Procent odbiorców, którzy odpowiedzieli na zwykłą wiadomość na LinkedInie, w stosunku do wszystkich odbiorców, z którymi nawiązano kontakt. |
in_mail_replies | Liczba odbiorców, którzy odpowiedzieli na wiadomość InMail na LinkedInie. |
in_mail_replies_rate | Procent odbiorców, którzy odpowiedzieli na wiadomość InMail na LinkedInie. |
connection_requests | Liczba zaproszeń do kontaktów wysłanych do potencjalnych klientów za pośrednictwem kampanii Snov.io. |
accepted_requests | Liczba zaproszeń do kontaktów zaakceptowanych przez użytkowników LinkedIna. |
accepted_requests_rate | Procent zaakceptowanych zaproszeń do kontaktów w stosunku do wszystkich wysłanych zaproszeń. |
failed_connection_requests | Liczba zaproszeń do kontaktów na LinkedInie, które nie zostały wysłane, ponieważ:
|
messages_sent | Liczba wysłanych wiadomości na LinkedInie. |
linkedin_views | Liczba wyświetlonych profili potencjalnych klientów. |
linkedin_likes | Liczba polubionych postów potencjalnych klientów na LinkedInie. |
linkedin_follows | Liczba obserwowanych profili potencjalnych klientów. |
in_mail_sent | Łączna liczba wysłanych wiadomości InMail. |
interested | Liczba odbiorców, którzy wykazali zainteresowanie w swoich odpowiedziach. |
interested_rate | Procent odbiorców, którzy wykazali zainteresowanie w swoich odpowiedziach. |
maybe | Liczba odbiorców, którzy w swoich odpowiedziach nie wyrazili jednoznacznie ani zainteresowania, ani jego braku. |
maybe_rate | Procent odbiorców, którzy w swoich odpowiedziach nie wyrazili jednoznacznie ani zainteresowania, ani jego braku. |
not_interested | Liczba odbiorców, którzy w swoich odpowiedziach wykazali brak zainteresowania. |
not_interested_rate | Procent odbiorców, którzy w swoich odpowiedziach wykazali brak zainteresowania. |
GETWyświetl postęp kampanii
BezpłatneTa metoda zwraca postęp i status kampanii.
| GET | https://api.snov.io/v2/campaigns/[campaign_id]/progress |
campaign_id *Wymagane | ID kampanii. Możesz je znaleźć w adresie URL podczas wyświetlania informacji o kampanii (przykład). |
<?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 | Procent odbiorców, którzy:
|
unfinished | Liczba odbiorców w kampanii, którzy nie dotarli do końca sekwencji lub dla których sekwencja nie została zatrzymana. |
status | Status kampanii. Dowiedz się więcej |
GETPobierz raport aktywności odbiorców kampanii
BezpłatneTa metoda zwraca szczegółowy raport aktywności wszystkich odbiorców kampanii — obejmujący zdarzenia wysłania, otwarcia, kliknięcia, odpowiedzi, odrzucenia i rezygnacji z subskrypcji — wraz ze szczegółami potencjalnych klientów. Odpowiada raportowi aktywności odbiorców dostępnym w interfejsie kampanii i nadaje się do synchronizowania aktywności kampanii z zewnętrznymi dashboardami lub systemami CRM.
| GET | https://api.snov.io/v2/campaigns/[campaignId]/recipients-activity |
campaignId *Wymagane | Unikalny identyfikator kampanii. |
dateFrom *Wymagane | Początek zakresu dat w formacie Y-m-d (UTC). |
dateTo *Wymagane | Koniec zakresu dat w formacie Y-m-d (UTC). Maksymalny zakres między dateFrom a dateTo wynosi 31 dni. |
offset | Przesunięcie paginacji (domyślnie: 0). |
limit | Liczba rekordów na stronę (domyślnie: 100, maksymalnie: 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 | Czas zdarzenia w formacie ISO 8601 (UTC). |
event_type | Typ zdarzenia: wysłanie, otwarcie, kliknięcie, odpowiedź, odrzucenie, rezygnacja z subskrypcji. |
sender_email | Adres e-mail nadawcy (skrzynka e-mail kampanii). |
email_subject | Temat e-maila w sekwencji kampanii. |
recipient_email | Adres e-mail odbiorcy. |
recipient_name | Pełne imię i nazwisko odbiorcy. |
phone | Numer telefonu odbiorcy (z profilu potencjalnego klienta). |
country | Kraj odbiorcy. |
location | Lokalizacja odbiorcy (miasto, region). |
industry | Branża firmy odbiorcy. |
company | Nazwa firmy odbiorcy. |
job_position | Stanowisko odbiorcy. |
website | Strona internetowa firmy odbiorcy. |
hq_phone | Numer telefonu do siedziby firmy odbiorcy. |
total | Łączna liczba rekordów pasujących do żądania. |
offset | Bieżące przesunięcie paginacji. |
limit | Rozmiar strony użyty w odpowiedzi. |
has_more | prawda, jeśli po bieżącej stronie są jeszcze kolejne rekordy. |
GETWyświetl wysłane e-maile
BezpłatneTa metoda wyświetla informacje o e-mailach wysłanych w ramach kampanii.
| GET | https://api.snov.io/v1/emails-sent |
campaignId *Wymagane | Unikalny identyfikator kampanii, dla której chcesz wyświetlić wysłane e-maile. |
offset | W każdym żądaniu możesz pobrać maksymalnie 10 000 wysłanych e-maili. Jeśli w twojej kampanii wysłano więcej e-maili, użyj parametru offset, aby określić, ile wcześniejszych e-maili chcesz pominąć. Na przykład, jeśli w kampanii wysłano 20 000 e-maili i chcesz pobrać e-maile 10 001–20 000, ustaw offset na 10 000. Jeśli offset nie zostanie określony, otrzymasz ostatnie 10 000 e-maili wysłanych w ramach kampanii. |
<?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 | Dokładny czas wysłania e-maila. |
userName | Pełne imię i nazwisko potencjalnego klienta, do którego wysłano e-mail. |
userEmail | Adres e-mail potencjalnego klienta. |
campaign | Nazwa kampanii. |
GETPobierz informacje o otwarciach w kampanii
BezpłatneTa metoda wyświetla informacje o otwartych e-mailach w kampanii.
| GET | https://api.snov.io/v1/get-emails-opened |
campaignId *Wymagane | Unikalny identyfikator kampanii, dla której chcesz wyświetlić informacje o otwarciach e-maili. |
offset | W każdym żądaniu możesz pobrać maksymalnie 10 000 otwarć. Jeśli w twojej kampanii otwarto więcej e-maili, użyj parametru offset, aby określić, ile wcześniejszych otwarć chcesz pominąć. Na przykład, jeśli twoja kampania ma 20 000 otwarć i chcesz pobrać otwarcia 10 001–20 000, ustaw offset na 10 000. Jeśli offset nie zostanie określony, otrzymasz ostatnie 10 000 otwartych e-maili. |
<?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 | Unikalny identyfikator kampanii. |
campaign | Nazwa kampanii. |
prospectName | Pełne imię i nazwisko potencjalnego klienta, który otworzył e-mail. |
emailSubject | Temat otwartego e-maila. |
visitedAt | Dokładny czas otwarcia e-maila przez potencjalnego klienta. |
GETSprawdź kliknięcia linków
BezpłatneTa metoda zwraca informacje o wszystkich odbiorcach kampanii, którzy kliknęli link w jednym z e-maili kampanii.
| GET | https://api.snov.io/v1/get-emails-clicked |
campaignId *Wymagane | Unikalny identyfikator kampanii, dla której chcesz wyświetlić kliknięcia linków. |
offset | W każdym żądaniu możesz pobrać maksymalnie 10 000 kliknięć. Jeśli twoja kampania ma więcej kliknięć, użyj parametru offset, aby określić, ile wcześniejszych kliknięć chcesz pominąć. Na przykład, jeśli twoja kampania ma 20 000 kliknięć i chcesz pobrać kliknięcia 10 001–20 000, ustaw offset na 10 000. Jeśli offset nie zostanie określony, otrzymasz ostatnie 10 000 e-maili, w których kliknięto link w ramach kampanii. |
<?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 | Unikalny identyfikator kampanii. |
campaign | Nazwa kampanii. |
prospectName | Pełne imię i nazwisko potencjalnego klienta, który kliknął link w e-mailu z kampanii. |
prospectEmail | Adres e-mail potencjalnego klienta. |
emailSubject | Temat e-maila zawierającego kliknięty link. |
emailBody | Treść e-maila. |
visitedAt | Dokładny czas kliknięcia linku w e-mailu przez potencjalnego klienta. |
GETWyświetl wszystkie odpowiedzi w kampanii
BezpłatneTa metoda wyświetla listę wszystkich odpowiedzi otrzymanych w ramach kampanii — zarówno odpowiedzi e-mail, jak i odpowiedzi na LinkedInie (odpowiedzi na zaproszenia do kontaktów, wiadomości na LinkedInie i wiadomości InMail). Każdy rekord reprezentuje unikalną parę (potencjalny klient, typ odpowiedzi); odpowiedzi w obrębie rekordu są sortowane chronologicznie, dzięki czemu wątek można czytać od góry do dołu.
| GET | https://api.snov.io/v2/campaigns/[campaign_id]/all-replies |
campaign_id *Wymagane | Unikalny identyfikator kampanii. |
offset | Przesunięcie paginacji (domyślnie: 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 | Unikalny identyfikator kampanii. |
campaign | Nazwa kampanii. |
prospectId | Unikalny identyfikator potencjalnego klienta. |
prospectName | Pełne imię i nazwisko potencjalnego klienta. |
prospectEmail | Adres e-mail potencjalnego klienta. |
linkedInProfile | Adres URL profilu potencjalnego klienta na LinkedInie (jeśli jest dostępny). |
replyType | Typ odpowiedzi: e-mail, wiadomośćLinkedIn, zaproszenieLinkedIn, InMailLinkedIn. |
receivedAt | Data i godzina najwcześniejszej odpowiedzi w tej parze (potencjalny klient, typ odpowiedzi). |
replies[].subject | Temat odpowiedzi (pusty ciąg znaków w przypadku odpowiedzi na LinkedInie bez tematu). |
replies[].message | Treść odpowiedzi. |
replies[].receivedAt | Data i godzina otrzymania danej odpowiedzi. |
GETWyświetl odpowiedzi e-mail w kampanii
BezpłatneTa metoda zwraca odpowiedzi e-mail otrzymane w ramach kampanii, w tym imię i nazwisko potencjalnego klienta, jego ID, kampanię itp. Aby oprócz odpowiedzi e-mail uzyskać także odpowiedzi z LinkedIna (na zaproszenie do kontaktów, wiadomość bezpośrednią lub InMail), użyj metody Wyświetl wszystkie odpowiedzi w kampanii.
| GET | https://api.snov.io/v1/get-emails-replies |
campaignId *Wymagane | Unikalny identyfikator kampanii, dla której chcesz wyświetlić odpowiedzi. |
offset | W każdym żądaniu możesz pobrać maksymalnie 10 000 odpowiedzi. Jeśli twoja kampania ma więcej odpowiedzi, użyj parametru offset, aby określić, ile wcześniejszych odpowiedzi chcesz pominąć. Na przykład, jeśli twoja kampania ma 20 000 odpowiedzi i chcesz pobrać odpowiedzi 10 001–20 000, ustaw offset na 10 000. Jeśli offset nie zostanie określony, otrzymasz ostatnie 10 000 otrzymanych odpowiedzi. |
<?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 | Unikalny identyfikator kampanii. |
campaign | Nazwa kampanii. |
prospectName | Pełne imię i nazwisko potencjalnego klienta. |
emailSubject | Temat e-maila, na który otrzymano odpowiedź. |
emailBody | Treść e-maila, na który otrzymano odpowiedź. |
POSTDodaj potencjalnego klienta do listy
BezpłatneDodaj potencjalnego klienta do określonej listy. Ta metoda będzie przydatna dla osób, które chcą zautomatyzować dodawanie potencjalnych klientów do list z aktywnymi kampaniami drip e-mail. Dzięki temu po automatycznym dodaniu potencjalnego klienta do wybranej listy kampania drip e-mail zostanie dla niego uruchomiona automatycznie.
| POST | https://api.snov.io/v1/add-prospect-to-list |
email | Adres e-mail potencjalnego klienta. |
fullName | Pełne imię i nazwisko potencjalnego klienta. |
firstName | Imię potencjalnego klienta. |
lastName | Nazwisko potencjalnego klienta. |
phones | Tablica zawierająca numery telefonów potencjalnego klienta. |
country | Kraj potencjalnego klienta. Nazwy krajów są zdefiniowanetutaj. Prosimy używać wyłącznie krajów z tej listy. |
locality | Miejscowość potencjalnego klienta. |
position | Stanowisko potencjalnego klienta. |
companyName | Nazwa firmy potencjalnego klienta. |
companySite | Strona internetowa firmy potencjalnego klienta. Prosimy użyć
http://example.com formatu. |
updateContact | Aktualizuje istniejącego potencjalnego klienta. Przyjmuje wartość true lub false.
|
createDuplicates | Tworzy duplikat potencjalnego klienta. Przyjmuje wartość prawda lub fałsz.
Tylko jeden parametr, updateContact lub createDuplicates, może mieć wartość prawda. |
customFields[specialization] | Możesz dodawać niestandardowe wartości do wcześniej utworzonych pól niestandardowych. Aby to zrobić, podaj nazwę pola niestandardowego w [nawiasach]. |
socialLinks[linkedIn] *Wymagane, jeśli email nie ma wartości | Link do profilu potencjalnego klienta w mediach społecznościowych. Podaj nazwę sieci społecznościowej w [nawiasach] (LinkedIn, Facebook lub X). |
listId *Wymagane | Identyfikator listy, do której należy potencjalny klient. |
<?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 | To true jeśli potencjalny klient został pomyślnie dodany do listy. |
id | Identyfikator dodanego potencjalnego klienta. |
added | To true jeśli potencjalny klient został dodany do listy. |
updated | To true jeśli dane istniejącego potencjalnego klienta zostały zaktualizowane. |
errors | Wystąpił błąd podczas dodawania potencjalnego klienta do listy. |
POSTZnajdź potencjalnego klienta według ID
BezpłatneZnajduj potencjalnych klientów ze swoich list według ID. Znając ID konkretnego potencjalnego klienta, możesz uzyskać pełne informacje na jego temat, w tym listy i kampanie, do których został dodany.
| POST | https://api.snov.io/v1/get-prospect-by-id |
id *Wymagane | Identyfikator potencjalnego klienta. Możesz go zobaczyć w odpowiedzi po dodaniu potencjalnego klienta za pomocąDodaj potencjalnego klienta do listy metody API lub w adresie URL podczas wyświetlania strony potencjalnego klienta (zobacz przykład). |
<?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 | To true jeśli potencjalny klient został znaleziony |
id | Unikalny identyfikator profilu |
name | Pełne imię i nazwisko potencjalnego klienta |
firstName | Imię potencjalnego klienta |
lastName | Nazwisko potencjalnego klienta |
industry | Branża wskazana w profilu potencjalnego klienta |
country | Kraj potencjalnego klienta |
locality | Miejscowość potencjalnego klienta |
social | Linki do profili potencjalnego klienta w mediach społecznościowych |
currentJobs | Tablica zawierająca informacje o obecnym stanowisku potencjalnego klienta |
previousJobs | Tablica zawierająca informacje o poprzednich stanowiskach prospekta |
lastUpdateDate | Data ostatniej aktualizacji profilu |
lists | Listy, do których dodano potencjalnego klienta |
campaigns | Lista kampanii, do których potencjalny klient został dodany jako odbiorca. Zawiera krótkie statystyki, takie jak status, liczba wysłanych wiadomości, otwarć i odpowiedzi. |
POSTZnajdź potencjalnego klienta według adresu e-mail
BezpłatneZnajdź potencjalnego klienta na swoich listach według adresu e-mail. Wyszukując według adresu e-mail, otrzymasz listę wszystkich potencjalnych klientów powiązanych z tym adresem. Każdy element listy zawiera pełne informacje o potencjalnym kliencie, w tym listy i kampanie, do których został dodany.
| POST | https://api.snov.io/v1/get-prospects-by-email |
email *Wymagane | Adres e-mail potencjalnego klienta. |
<?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 | To true jeśli potencjalny klient został znaleziony |
id | Unikalny identyfikator profilu |
name | Pełne imię i nazwisko potencjalnego klienta |
firstName | Imię potencjalnego klienta |
lastName | Nazwisko potencjalnego klienta |
industry | Branża wskazana w profilu potencjalnego klienta |
country | Kraj potencjalnego klienta |
locality | Miejscowość potencjalnego klienta |
social | Linki do profili potencjalnego klienta w mediach społecznościowych |
currentJobs | Tablica zawierająca informacje o obecnym stanowisku potencjalnego klienta |
previousJobs | Tablica zawierająca informacje o poprzednich stanowiskach potencjalnego klienta |
lastUpdateDate | Data ostatniej aktualizacji profilu |
lists | Listy, do których dodano potencjalnego klienta |
campaigns | Lista kampanii, do których potencjalny klient został dodany jako odbiorca. Zawiera krótkie statystyki, takie jak status, liczba wysłanych wiadomości, otwarć i odpowiedzi. |
GETZnajdź pola niestandardowe potencjalnego klienta
BezpłatneTa metoda zwraca listę wszystkich pól niestandardowych utworzonych przez użytkownika, w tym nazwę pola, informację o tym, czy pole jest opcjonalne czy wymagane, oraz typ danych pola.
| GET | https://api.snov.io/v1/prospect-custom-fields |
| Ta metoda nie ma parametrów wejściowych |
<?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 | Klucz pola w tablicy customFields . |
label | Nazwa pola. |
required | To true jeśli pole niestandardowe jest wymagane. |
type | Typ danych pola niestandardowego (ciąg znaków, liczba lub data). |
GETWyświetl listy użytkownika
BezpłatneTa metoda zwraca wszystkie listy utworzone przez użytkownika. Możesz jej użyć, aby przejrzeć listy, które można wykorzystać w kampanii drip e-mail.
| GET | https://api.snov.io/v1/get-user-lists |
| Ta metoda nie ma parametrów wejściowych |
<?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 | Unikalny identyfikator listy użytkownika. |
name | Nazwa listy |
contacts | Liczba potencjalnych klientów na liście. |
isDeleted | Status listy. Jest true jeśli lista została usunięta. |
creationDate | Data i godzina utworzenia listy (obejmuje datę, godzinę i informacje o strefie czasowej). |
deleteDate | Jeśli lista została usunięta, zawiera datę i godzinę jej usunięcia (obejmuje datę, godzinę i informacje o strefie czasowej). |
POSTWyświetl potencjalnych klientów na liście
BezpłatneTa metoda zwraca wszystkie dane potencjalnych klientów z określonej listy, w tym dane takie jak adresy e-mail i ich status.
| POST | https://api.snov.io/v1/prospect-list |
listId *Wymagane | Unikalny identyfikator listy. |
page | Możesz wybrać, od której strony listy chcesz rozpocząć wyszukiwanie. To pole jest opcjonalne. |
perPage | Ustaw maksymalną liczbę potencjalnych klientów, którzy mają zostać uwzględnieni w odpowiedzi. Maksymalna wartość to 5000. |
<?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)
Pamiętaj, że wyniki dotyczące potencjalnych klientów są wyświetlane w odwrotnej kolejności — od ostatniego do pierwszego.
{
"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 | Tablica zawierająca informacje o liście i znajdujących się na niej potencjalnych klientach. |
name | Nazwa listy. |
contacts | Liczba potencjalnych klientów na liście. |
creation_date | Data utworzenia listy (obejmuje datę, godzinę i informacje o strefie czasowej). |
emailsCount | Liczba adresów e-mail na liście. |
prospects | Lista potencjalnych klientów na liście. |
id | Unikalny identyfikator potencjalnego klienta. |
name | Pełne imię i nazwisko potencjalnego klienta. |
emails | Lista adresów e-mail należących do potencjalnego klienta. |
POSTUtwórz nową listę potencjalnych klientów
BezpłatneUżyj tej metody, aby tworzyć nowe listy potencjalnych klientów na swoim koncie.
| POST | https://api.snov.io/v1/lists |
name | Nazwa nowej listy potencjalnych klientów. |
<?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 utworzonej listy potencjalnych klientów. |
GETPobierz listę pipeline’ów
BezpłatneTa metoda wyświetla listę wszystkich pipeline’ów z sekcji CRM (Transakcje), w tym liczbę i łączną wartość transakcji w każdym pipeline’ie.
| GET | https://api.snov.io/v2/pipelines |
| Ta metoda nie ma parametrów wejściowych |
<?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 | Unikalny identyfikator pipeline’u. |
name | Nazwa pipeline’u. |
deals_count | Liczba transakcji obecnie znajdujących się w pipeline’ie. |
deals_value | Łączna wartość wszystkich transakcji w pipeline’ie. |
created_at | Data i godzina utworzenia pipeline’u w formacie ISO 8601. |
GETPobierz listę etapów pipeline’u
BezpłatneTa metoda wyświetla listę wszystkich etapów w określonym pipeline’ie z sekcji CRM (Transakcje).
| GET | https://api.snov.io/v2/pipelines/{pipeline_id}/stages |
pipeline_id | Unikalny identyfikator pipeline’u, którego etapy chcesz pobrać. |
<?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 | Unikalny identyfikator etapu. |
pipeline_id | ID pipeline’u, do którego należy ten etap. |
name | Nazwa etapu. |
order | Pozycja etapu w pipeline’ie. |
deals_count | Liczba transakcji obecnie znajdujących się na tym etapie. |
deals_value | Łączna wartość wszystkich transakcji na tym etapie. |
GETSprawdź saldo użytkownika
BezpłatneUżyj tej metody, aby sprawdzić saldo kredytów.
| GET | https://api.snov.io/v1/get-balance |
| Ta metoda nie ma parametrów wejściowych |
<?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 | Aktualne saldo kredytów użytkownika. |
teamwork | Wartość prawda oznacza, że obecnie jesteś członkiem lub liderem zespołu, a fałsz — że nie należysz do zespołu. |
recipients_used | Liczba unikalnych odbiorców wykorzystanych w tym miesiącu. |
limit_resets_in | Liczba dni do zresetowania limitu. |
expires_in | Liczba dni do końca subskrypcji. |
Webhooki
Webhooki pozwalają otrzymywać powiadomienia o zdarzeniach, które miały miejsce na twoim koncie Snov.io.
Możesz używać webhooków, aby wywoływać endpoint (URL) na swoim serwerze za każdym razem, gdy w Snov.io wystąpi subskrybowane zdarzenie, i przesyłać dane w czasie rzeczywistym do swojej aplikacji.
Za każdym razem, gdy wystąpi zdarzenie, Snov.io wysyła żądanie HTTP z treścią JSON do określonego adresu URL (endpointu).
Możesz subskrybować webhooki i zarządzać nimi za pomocą zestawu wywołań API.
Obecnie obsługiwane obiekty i działania webhooków są wymienione poniżej:
| Obiekt webhooka | Akcja | Po uruchomieniu |
|---|---|---|
campaign_email | wysłany | Gdy dowolny e-mail zostanie wysłany do odbiorcy w dowolnej kampanii drip |
| first_sent | Gdy pierwszy e-mail zostanie wysłany do odbiorcy w dowolnej kampanii drip | |
| otwarty | Gdy odbiorca otworzy dowolny e-mail z dowolnej kampanii drip | |
| odbity | Gdy e-mail z kampanii zostanie odrzucony | |
| clicked | Gdy odbiorca kliknie link w e-mailu z kampanii | |
campaign_reply | otrzymany | Gdy odbiorca odpowie na dowolny e-mail w dowolnej kampanii |
| first_received | Gdy odbiorca po raz pierwszy odpowie na e-mail w dowolnej kampanii | |
| autoreply_received | Gdy otrzymasz automatyczną odpowiedź na e-mail z kampani | |
campaign_li_reply | received | Gdy odbiorca wyśle kolejną odpowiedź na LinkedInie — na zaproszenie do kontaktów, wiadomość bezpośrednią lub InMail — w dowolnej kampanii |
| first_received | Gdy odbiorca wyśle pierwszą odpowiedź na LinkedInie — na zaproszenie do kontaktów, wiadomość bezpośrednią lub InMail — w dowolnej kampanii | |
campaign_li | connection_request_accepted | Gdy odbiorca zaakceptuje zaproszenie do kontaktów na LinkedInie wysłane z kampanii |
company | found_domains_by_names | Gdy poprosisz o domenę firmy na podstawie jej nazwy |
| found_company_by_domain | Gdy wyszukujesz firmę według jej domeny | |
prospect | found_by_li_url | Gdy poprosisz o informacje z profilu potencjalnego klienta na podstawie jego adresu URL na LinkedInie |
| found_emails_by_name_by_domain | Gdy wyszukujesz adres e-mail potencjalnego klienta | |
| campaign_finished | Gdy kampania zostanie zakończona dla odbiorcy (status: Zakończony) | |
| unsubscribed | Gdy odbiorca kampanii zrezygnuje z subskrypcji twoich e-maili | |
| found_company_by_domain | Gdy wyszukujesz potencjalnych klientów według domeny firmy | |
email_verification | verified | Gdy poprosisz o weryfikację adresu e-mail |
email | found_emails_by_domain | Gdy wyszukujesz wszystkie adresy e-mail według domeny |
| found_generic_contacts_by_domain | Gdy wyszukujesz ogólne adresy e-mail według domeny | |
| found_prospect_emails | Gdy wyszukujesz adresy e-mail potencjalnych klientów | |
database_search | task_result | Gdy wyszukujesz potencjalnego klienta lub firmę |
Limity: użytkownicy planu premium mogą utworzyć maksymalnie 50 webhooków.
Zasady ponawiania: webhook zostaje uznany za pomyślny, jeśli w ciągu 3 sekund otrzymamy w odpowiedzi status HTTP z zakresu 200–299.
Jeśli otrzymamy inny status HTTP lub wystąpi przekroczenie limitu czasu, podejmiemy siedem prób ponowienia z coraz dłuższymi odstępami, maksymalnie do 38 godzin od zdarzenia, które uruchomiło webhook:
Jeśli wszystkie próby ponowienia zakończą się niepowodzeniem, webhook zostanie dezaktywowany.
- 1.: natychmiast po zdarzeniu
- 2.: 20 minut po ostatniej próbie (20 minut po zdarzeniu)
- 3.: 40 minut po ostatniej próbie (1 godzinę po zdarzeniu)
- 4.: 60 minut po ostatniej próbie (2 godziny po zdarzeniu)
- 5.: 4 godziny po ostatniej próbie (6 godzin po zdarzeniu)
- 6.: 8 godzin po ostatniej próbie (14 godzin po zdarzeniu)
- 7.: 24 godziny po ostatniej próbie (38 godzin po zdarzeniu)
GETWyświetl wszystkie webhooki
| GET | https://api.snov.io/v2/webhooks |
Typ zawartości: application/json |
| Ta metoda nie ma parametrów wejściowych. |
{
"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
}
}
| Parametr | Typ danych | Typ danych |
|---|---|---|
data | array | Kolekcja modeli webhooków |
id | int | ID Webhooka |
end_point | string | Rzeczywisty adres URL podany podczas dodawania webhooka, na który będzie on wysyłany |
event_object | string | Obiekt, na którym wykonywane jest działanie |
event_action | string | Działanie na obiekcie |
created_at | int | Data utworzenia webhooka w formacie Unix Timestamp |
status | string | Status webhooka: aktywny, dezaktywowany |
meta | object | Powiązane dane |
webhooks_count | int | Łączna liczba webhooków na twoim koncie (maks. 50) |
user_id | int | Twój ID użytkownika |
POSTDodaj webhook
| POST | https://api.snov.io/v2/webhooks |
Typ zawartości: application/json |
event_object | obiekt, na którym wykonywane jest działanie (lista obsługiwanych obiektów) |
event_action | działanie wykonywane na obiekcie (lista obsługiwanych działań) |
endpoint_url | adres URL, na który wysyłany jest webhook |
{
"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
}
}
| Parametr | Typ danych | Typ danych |
|---|---|---|
data | object | Dane webhooka |
id | int | ID Webhooka |
end_point | string | Rzeczywisty adres URL podany podczas dodawania webhooka, na który będzie on wysyłany |
event_object | string | Obiekt, na którym wykonywane jest działanie |
event_action | string | Działanie na obiekcie |
created_at | int | Data utworzenia webhooka w formacie Unix Timestamp |
status | string | Status webhooka: aktywny, dezaktywowany |
meta | object | Powiązane dane |
user_id | int | Twój ID użytkownika |
PUTZmień status webhooka
Uwzględnij unikalną wartość „id” wybranego webhooka na końcu adresu URL żądania.
Użyj metody Wyświetl wszystkie webhooki, aby uzyskać wartości id swoich webhooków.
| PUT | https://api.snov.io/v2/webhooks/webhook_id |
Typ zawartości: application/json |
status | aktywny lub dezaktywowany |
{
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
}
}
| Parametr | Typ danych | Typ danych |
|---|---|---|
data | object | Dane webhooka |
id | int | ID Webhooka |
end_point | string | Rzeczywisty adres URL podany podczas dodawania webhooka, na który będzie on wysyłany |
event_object | string | Obiekt, na którym wykonywane jest działanie |
event_action | string | Działanie na obiekcie |
created_at | int | Data utworzenia webhooka w formacie Unix Timestamp |
status | string | Status webhooka: aktywny, dezaktywowany |
meta | object | Powiązane dane |
user_id | int | Twój ID użytkownika |
DELETEUsuń webhook
Uwzględnij unikalną wartość „id” wybranego webhooka na końcu adresu URL żądania.
Użyj metody Wyświetl wszystkie webhooki, aby uzyskać wartości id swoich webhooków.
| DELETE | https://api.snov.io/v2/webhooks/webhook_id |
Typ zawartości: application/json |
{
https://api.snov.io/v2/webhooks/8
}
{
"data": {
"success": true
}
}
| Parametr | Typ danych | Typ danych |
|---|---|---|
success | boolean | Wskazuje, czy webhook został usunięty |

