Snov.io API

用户可以通过我们简单的 REST API 使用 Snov.io 功能。 与 Snov.io API 集成以同步您的潜在客户、查找邮箱地址、管理潜在客户等。 API 速率限制为每分钟 60 个请求。

如果您使用的是免费套餐,可与我们预约个人演示以申请测试权限。开始前请告知您的具体目标,以便我们更好地理解您的需求。

Snov.io 的 API 用例

  1. 丰富您的潜在客户列表,扩展销售团队数据
    根据姓名或公司域名查找真实邮箱地址 —— 非常适合扩展潜在客户列表或丰富现有数据。
  2. 自动将新注册用户加入到营销活动中
    将您的注册和活动注册表单与 Snov.io API 连接起来,即可实时将新的潜在客户添加到您的营销活动中。
  3. 保持客户数据库整洁
    将邮箱验证功能接入到您的客户关系管理(CRM)或客户开发工具中,以便即时验证新潜在客户的邮箱地址,确保现有客户数据始终有效。
  4. 使用领英 URL 自动填写潜在客户信息
    将基本的领英会员 URL 转换为丰富的、可直接用于 CRM 的个人资料。告别手动数据输入 —— 迎接高质量潜在客户。
  5. 实时分享营销结果
    从您的营销中提取实时数据,导入精美仪表板或幻灯片中。为您的利益相关者提供他们需要的分析,且无需繁琐的操作。
  6. 遵守“禁止发送邮件”列表相关规定
    自动将潜在客户添加到禁止发送邮件列表,避免意外触达。非常适合销售团队保持一致,尊重退订请求,并遵守数据隐私规则。

将这些方法 —— 以及更多 —— 集成到您的工作流程中。借助我们灵活的 API,几乎可以实现无限的应用场景。

认证

您需要生成访问口令以认证未来的请求。发出请求时,请在“授权”字段中指定此访问口令。

Authorization: Bearer QSlHffXmCAILIOHNGXToq4LsP2yX64VQhEBZ7Ei4

这是口令生成的示例。

请求
POSThttps://api.snov.io/v1/oauth/access_token
输入参数
grant_type
将始终是
client_credentials
client_id
您的 ID 在帐户设置中可用 https://app.snov.io/account/api
client_secret
您的密钥在帐户设置中可用 https://app.snov.io/account/api
代码示例
<?php
function getAccessToken()
{
    $params = [
        'grant_type'    => 'client_credentials',
        'client_id'     => 'c57a0459f6t141659ea75cccb393c5111',
        'client_secret' => '77cbf92b71553e85ce3bfd505214f40b'
    ];

    $options = [
        CURLOPT_URL            => 'https://api.snov.io/v1/oauth/access_token',
        CURLOPT_POST           => true,
        CURLOPT_POSTFIELDS     => $params,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true
    ];

    $ch = curl_init();

    curl_setopt_array($ch, $options);

    $res = json_decode(curl_exec($ch), true);
    curl_close($ch);

    return $res['access_token'];

}
?>
def get_access_token():
params = {
    'grant_type':'client_credentials',
    'client_id':'c57a0459f6t141659ea75cccb393c111',
    'client_secret': '77cbf92b71553e85ce3bfd505214f40b'
}

res = requests.post('https://api.snov.io/v1/oauth/access_token', data=params)
resText = res.text.encode('ascii','ignore')

return json.loads(resText)['access_token']
回执示例
{
"access_token":"3yUyQZdks0Ej7T2fXzjUWzwlTcO4dWisKkeMpESz",
"token_type":"Bearer",
"expires_in":3600
}
输出参数
access_token
您的新访问口令
token_type
将始终是 Bearer
expires_in
口令到期时间(秒)

API 方法

POST域名搜索

每个唯一搜索请求需消耗 1 个点数,每个潜在客户资料邮箱地址需消耗 1 个点数

输入域名,Snov.io 将提供公司信息、邮箱地址和潜在客户资料。

点数消耗
公司信息、邮箱地址和潜在客户资料搜索请求

每个 POST 请求需消耗 1 个点数。如果没有结果,则不会扣除您的额度。

潜在客户资料邮箱地址

每份带有邮箱地址的潜在客户资料需消耗 1 个点数。

Domain search schema
公司信息 (请求结果)
每个搜索请求需消耗 1 个点数。
POSThttps://api.snov.io/v2/domain-search/start
输入参数
domain
您想获取公司信息的域名。例如,“snov.io”。
代码示例
<?php
function companyInfoSearch()
{
    $token = getAccessToken();

    $params = [
        'domain' => 'snov.io',
    ];
    $headers = [
        'Authorization: Bearer ' . $token,
    ];

    $options = [
        CURLOPT_URL            => 'https://api.snov.io/v2/domain-search/start',
        CURLOPT_HTTPHEADER     => $headers,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_POST           => true,
        CURLOPT_POSTFIELDS     => $params,
        CURLOPT_FOLLOWLOCATION => true
    ];

    $ch = curl_init();

    curl_setopt_array($ch, $options);

    $response = json_decode(curl_exec($ch), true);

    curl_close($ch);

    return $response;
}
?>
def company_info_search():
token = get_access_token()
headers = {'authorization': f'Bearer {token}'}
params = {
  'domain': 'snov.io',
}

res = requests.post('https://api.snov.io/v2/domain-search/start', params=params, headers=headers)

return json.loads(res.text)
回执示例
{
  "data": [],
  "meta": {
    "domain": "snov.io",
    "task_hash": "6f15de14db954c761f8e7507547b3bd7"
  },
  "links": {
    "result": "https://api.snov.io/v2/domain-search/result/6f15de14db954c761f8e7507547b3bd7"
  }
}
输出参数
domain
您正在检索公司信息的域名。
task_hash
您启动的搜索任务的唯一 ID。它会自动添加到您的下一次请求 URL 中,以便接收结果。
result
用于接收公司信息的请求 URL。
公司信息 (获取结果)
从您上次请求中收到的 URL。
GEThttps://api.snov.io/v2/domain-search/result/{task_hash}
代码示例
<?php
function companyInfoResult()
{
    $token = getAccessToken();

    $task_hash = 'b10e4c47693dbf87cc8de16edcc8ae22';
    $headers = [
        'Authorization: Bearer ' . $token,
    ];

    $options = [
        CURLOPT_URL            => 'https://api.snov.io/v2/domain-search/result/$task_hash',
        CURLOPT_HTTPHEADER     => $headers,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true
    ];

    $ch = curl_init();

    curl_setopt_array($ch, $options);

    $response = json_decode(curl_exec($ch), true);

    curl_close($ch);

    return $response;
}
?>
def company_info_result():
token = get_access_token()
task_hash = '86586db9ac64ae5471eb18fc71b0dd5e'
headers = {'authorization': f'Bearer {token}'}

res = requests.get(f'https://api.snov.io/v2/domain-search/result/{task_hash}', headers=headers)

return json.loads(res.text)
回执示例
{
  "data": {
    "company_name": "Snov.io",
    "city": "New York",
    "founded": "2017",
    "website": "snov.io",
    "hq_phone": "13477050819",
    "industry": "Computer Software",
    "size": "51-200",
    "related_domains": [
      "snov.me",
      "snov.com",
      "snov.nl",
      "snov.com.ua",
      "snov.cl"
    ]
  },
  "meta": {
    "domain": "snov.io",
    "task_hash": "6f15de14db954c761f8e7507547b3bd7",
    "prospects_count": 196,
    "emails_count": 108,
    "generic_contacts_count": 9
  },
  "links": {
    "prospects": "https://api.snov.io/v2/domain-search/prospects/start?domain=snov.io",
    "domain_emails": "https://api.snov.io/v2/domain-search/domain-emails/start?domain=snov.io",
    "generic_contacts": "https://api.snov.io/v2/domain-search/generic-contacts/start?domain=snov.io"
  },
  "status": "completed"
}
输出参数
company_name
与域名相关的公司名称。
city
公司总部所在城市。
founded
公司成立年份。
website
公司网站地址。
hq_phone
公司总部的电话号码。
industry
公司所在行业。
size
公司员工数量。
related_domains
与您请求数据的域名具有相同 SLD (二级域名) 的域名。
domain
API 已提供公司信息的域名。
task_hash
您启动搜索任务的唯一 ID。
prospects_count
从您的请求中检索到的潜在客户资料数量。
emails_count
从您的请求中检索到的域名邮箱地址数量。
generic_contacts_count
从您的请求中检索到的通用邮箱地址数量。
prospects
请求包含完整潜在客户资料的列表的 URL。
domain_emails
请求包含域名邮箱地址的列表的 URL。
generic_contacts
请求包含通用公司邮箱地址的列表的 URL。
status
请求状态。可以是已完成进行中
潜在客户资料 (请求结果)
每个搜索请求需消耗 1 个点数。
POSThttps://api.snov.io/v2/domain-search/prospects/start
输入参数
domain
您要查找潜在客户资料的域名。例如,“snov.io”。
positions[]
使用此参数可按职位筛选潜在客户,例如“软件开发人员”。要按多个职位进行筛选,请输入包含所需职位的数组,并以逗号分隔。

每次搜索请求最多可以筛选 10 个职位。
page
包含潜在客户资料的页码。每页最多显示 20 个资料。

如果未指定页码,则默认返回第一页。
代码示例
<?php
function prospectsSearch()
{
    $token = getAccessToken();

    $params = [
        'domain'       => 'snov.io',
        'page'         => 1,
        'positions'    => ['Web developer','QA Engineer']
    ];

    $headers = [
        'Authorization: Bearer ' . $token,
    ];

    $options = [
        CURLOPT_URL            => 'https://api.snov.io/v2/domain-search/start',
        CURLOPT_HTTPHEADER     => $headers,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_POST           => true,
        CURLOPT_POSTFIELDS     => http_build_query($params),
        CURLOPT_FOLLOWLOCATION => true
    ];

    $ch = curl_init();

    curl_setopt_array($ch, $options);

    $response = json_decode(curl_exec($ch), true);

    curl_close($ch);

    return $response;
}
?>
def prospects_search():
token = get_access_token()
headers = {'authorization': f'Bearer {token}'}
params = {
  'domain': 'snov.io',
  'page': 1,
  'positions[]': ['Web developer', 'QA Engineer']
}

res = requests.post('https://api.snov.io/v2/domain-search/prospects/start', params=params, headers=headers)

return json.loads(res.text)
回执示例
{
  "data": [],
  "meta": {
    "domain": "snov.io",
    "tab": "prospects",
    "task_hash": "3384369c16aad810f58609a40ad65089",
    "page": 1,
    "positions": [
      "Web developer",
      "QA Engineer"
    ]
  },
  "links": {
    "result": "https://api.snov.io/v2/domain-search/prospects/result/3384369c16aad810f58609a40ad65089"
  }
}
输出参数
domain
您正在检索潜在客户资料的域名。
tab
显示您请求的结果类型。

prospects表示您正在查找潜在客户资料。

emails显示域名邮箱地址。

service显示您正在获取通用邮箱地址。
task_hash
您启动的搜索任务的唯一 ID。它会自动添加到您的下一次请求 URL 中,以便接收结果。
page
包含潜在客户资料的页码。每页最多显示 20 个资料。
positions
用于筛选结果的职位信息。
result
用于接收潜在客户资料的请求 URL。
潜在客户资料 (获取结果)
从您上次请求中收到的 URL。
GEThttps://api.snov.io/v2/domain-search/prospects/result/{task_hash}
代码示例
<?php
function prospectsResult()
{
    $token = getAccessToken();

    $task_hash = '3384369c16aad810f58609a40ad65089';
    $headers = [
        'Authorization: Bearer ' . $token,
    ];

    $options = [
        CURLOPT_URL            => 'https://api.snov.io/v2/domain-search/prospects/result/$task_hash',
        CURLOPT_HTTPHEADER     => $headers,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true
    ];

    $ch = curl_init();

    curl_setopt_array($ch, $options);

    $response = json_decode(curl_exec($ch), true);

    curl_close($ch);

    return $response;
}
?>
def prospects_result():
token = get_access_token()
task_hash = '3384369c16aad810f58609a40ad65089'
headers = {'authorization': f'Bearer {token}'}

res = requests.get(f'https://api.snov.io/v2/domain-search/prospects/result/{task_hash}', headers=headers)

return json.loads(res.text)
回执示例
{
  "data": [
    {
      "first_name": "John",
      "last_name": "Doe",
      "position": "Web developer",
      "source_page": "https://www.linkedin.com/in/john-doe/",
      "search_emails_start": "https://api.snov.io/v2/domain-search/prospects/search-emails/start/41627edbfff8ba9c0819a1aa51d232baf3fa1763e5813dc86e027ccbbefd7a16b0522391086776b8764c94d02bab1257df392"
    }
  ],
  "meta": {
    "domain": "snov.io",
    "tab": "prospects",
    "task_hash": "3384369c16aad810f58609a40ad65089",
    "page": 1,
    "positions": [
      "Web developer",
      "QA Engineer"
    ],
    "total_count": 18
  },
  "links": {
    "next": ""
  },
  "status": "completed"
}
输出参数
first_name
潜在客户的名字。
last_name
潜在客户的姓氏。
position
潜在客户的职位。
source_page
检索到的个人数据的源页面。
search_emails_start
用于您下一次搜索潜在客户邮箱地址的请求 URL。
domain
您正在检索潜在客户资料的域名。
tab
显示您获得的结果类型。

prospects表示您正在查找潜在客户资料。

emails显示域名邮箱地址。

service显示您正在获取通用邮箱地址。
task_hash
您启动搜索任务的唯一 ID。
page
包含潜在客户资料的页码。每页最多显示 20 个资料。
positions
用于筛选结果的职位信息。
total_count
找到的潜在客户资料总数。
next
用于您检索下一页结果的请求 URL。每页最多包含 20 个潜在客户。
status
请求状态。可以是已完成进行中
潜在客户的邮箱地址 (请求结果)
从您之前的请求中收到的 URL。每个带有邮箱地址的潜在客户需消耗 1 个点数。
POSThttps://api.snov.io/v2/domain-search/prospects/search-emails/start/{prospect_hash}
代码示例
<?php
function searchProspectEmailsStart()
{
    $token = getAccessToken();

    $headers = [
        'Authorization: Bearer ' . $token,
    ];
    $task = '41627edbfff8ba9c0819a1aa51d232baf3fa1763e5813dc86e027ccbbefd7a16b0522391086776b8764c94d02bab1257df392';

    $options = [
        CURLOPT_URL            => 'https://api.snov.io/v2/domain-search/prospects/search-emails/start/$task',
        CURLOPT_HTTPHEADER     => $headers,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_POST           => true,
        CURLOPT_FOLLOWLOCATION => true
    ];

    $ch = curl_init();

    curl_setopt_array($ch, $options);

    $response = json_decode(curl_exec($ch), true);

    curl_close($ch);

    return $response;
}
?>
def search_prospect_emails_start():
token = get_access_token()
headers = {'authorization': f'Bearer {token}'}

res = requests.post(f'https://api.snov.io/v2/domain-search/prospects/search-emails/start/'
  f'a811d72df2e52bd447621c4a1326e540102f3b70ba39a81bd597020ed0b9f812ee8de7e0f4ecad312716d03576fdf0af6d8277e1', headers=headers)

return json.loads(res.text)
回执示例
{
  "data": [],
  "meta": {
    "task_hash": "5e846a1d80d95f66cfb30250a7c1881f"
  },
  "links": {
    "result": "https://api.snov.io/v2/domain-search/prospects/search-emails/result/5e846a1d80d95f66cfb30250a7c1881f"
  }
}
输出参数
task_hash
您启动搜索任务的唯一 ID。
result
用于您下次请求检索潜在客户邮箱地址的 URL。
潜在客户的邮箱地址 (获取结果)
从您上次请求中收到的 URL。
GEThttps://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
搜索邮箱地址的日期。
emails
潜在客户邮箱地址。
smtp_status
可返回有效未知 (又称无法验证)。您可以在此处了解有关邮箱地址状态的更多信息。
task_hash
您启动搜索任务的唯一 ID。
status
请求状态。可以是已完成进行中
域名邮箱地址 (请求结果)
每个搜索请求需消耗 1 个点数。
POSThttps://api.snov.io/v2/domain-search/domain-emails/start
输入参数
domain
您要查找其域名邮箱地址的公司域名。例如,“snov.io”。
代码示例
<?php
function domainEmailsSearch()
{
    $token = getAccessToken();

    $params = [
        'domain' => 'snov.io',
    ];
    $headers = [
        'Authorization: Bearer ' . $token,
    ];

    $options = [
        CURLOPT_URL            => 'https://api.snov.io/v2/domain-search/domain-emails/start',
        CURLOPT_HTTPHEADER     => $headers,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_POST           => true,
        CURLOPT_POSTFIELDS     => $params,
        CURLOPT_FOLLOWLOCATION => true
    ];

    $ch = curl_init();

    curl_setopt_array($ch, $options);

    $response = json_decode(curl_exec($ch), true);

    curl_close($ch);

    return $response;
}
?>
def domain_emails_search():
token = get_access_token()
headers = {'authorization': f'Bearer {token}'}
params = {
  'domain': 'snov.io'
}

res = requests.post('https://api.snov.io/v2/domain-search/domain-emails/start', params=params, headers=headers)

return json.loads(res.text)
回执示例
{
  "data": [],
  "meta": {
    "domain": "snov.io",
    "tab": "emails",
    "task_hash": "36fce9ac2667a827f6c5ab954e288bed",
    "next": ""
  },
  "links": {
    "result": "https://api.snov.io/v2/domain-search/domain-emails/result/36fce9ac2667a827f6c5ab954e288bed"
  }
}
输出参数
domain
您正在检索邮箱地址的域名。
tab
显示您请求的结果类型。

prospects表示您正在查找潜在客户资料。

emails显示域名邮箱地址。

service显示您正在获取通用邮箱地址。
task_hash
您启动的搜索任务的唯一 ID。它会自动添加到您的下一次请求 URL 中,以便接收结果。
next
下一个页面请求的 ID (如果有的话)。如果没有更多页面可用,则此字段将为空。
result
用于接收域名邮箱地址的请求 URL。
域名邮箱地址 (获取结果)
从您上次请求中收到的 URL。
GEThttps://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
域名邮箱地址:

请注意,这些邮箱地址未经验证。要验证它们,请使用邮箱地址验证工具
domain
您正在检索邮箱地址的域名。
tab
显示您获得的结果类型。

prospects表示您正在查找潜在客户资料。

emails显示域名邮箱地址。

service显示您正在获取通用邮箱地址。
task_hash
您启动搜索任务的唯一 ID。
next
将 ID 添加到请求 URL 中,以便访问下一页邮箱地址 (如果存在的话)。
total_count
找到的域名邮箱地址总数。
next
用于检索下一页结果(如果存在)的请求 URL。每页最多包含 50 个邮箱地址。
status
请求状态。可以是已完成进行中
通用联系人 (请求结果)
每个搜索请求需消耗 1 个点数。
POSThttps://api.snov.io/v2/domain-search/generic-contacts/start
输入参数
domain
您要查找通用邮箱地址的公司域名。例如,“snov.io”。
代码示例
<?php
function genericContactsSearch()
{
    $token = getAccessToken();

    $params = [
        'domain' => 'snov.io',
    ];
    $headers = [
        'Authorization: Bearer ' . $token,
    ];

    $options = [
        CURLOPT_URL            => 'https://api.snov.io/v2/domain-search/generic-contacts/start',
        CURLOPT_HTTPHEADER     => $headers,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_POST           => true,
        CURLOPT_POSTFIELDS     => $params,
        CURLOPT_FOLLOWLOCATION => true
    ];

    $ch = curl_init();

    curl_setopt_array($ch, $options);

    $response = json_decode(curl_exec($ch), true);

    curl_close($ch);

    return $response;
}
?>
def generic_contacts_search():
token = get_access_token()
headers = {'authorization': f'Bearer {token}'}
params = {
  'domain': 'snov.io'
}

res = requests.post('https://api.snov.io/v2/domain-search/generic-contacts/start', params=params, headers=headers)

return json.loads(res.text)
回执示例
{
  "data": [],
  "meta": {
    "domain": "snov.io",
    "tab": "service",
    "task_hash": "0e36e43b9b91a9b20d14b82c1ee141f2",
    "next": ""
  },
  "links": {
    "result": "https://api.snov.io/v2/domain-search/generic-contacts/result/0e36e43b9b91a9b20d14b82c1ee141f2"
  }
}
输出参数
domain
您正在检索通用邮箱地址的域名。
tab
显示您请求的结果类型。

prospects表示您正在查找潜在客户资料。

emails显示域名邮箱地址。

service显示您正在获取通用邮箱地址。
task_hash
您启动的搜索任务的唯一 ID。它会自动添加到您的下一次请求 URL 中,以便接收结果。
next
下一个页面请求的 ID (如果有的话)。如果没有更多页面可用,则此字段将为空。
result
用于接收通用邮箱地址的请求 URL。
通用联系人 (获取结果)
从您上次请求中收到的 URL。
GEThttps://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
通用联系人的邮箱地址:

请注意,这些邮箱地址未经验证。要验证它们,请使用邮箱地址验证工具
domain
您正在检索通用邮箱地址的域名。
tab
显示您获得的结果类型。

prospects表示您正在查找潜在客户资料。

emails显示域名邮箱地址。

service显示您正在获取通用邮箱地址。
task_hash
您启动搜索任务的唯一 ID。
next
将 ID 添加到请求 URL 中,以便访问下一页邮箱地址 (如果存在的话)。
total_count
在该域名下找到的通用邮箱地址总数。
next
用于检索下一页结果(如果存在)的请求 URL。每页最多包含 50 个邮箱地址。
status
请求状态。可以是已完成进行中

POST检查可用邮箱数量

免费

使用此 API 方法,您可以在我们的数据库中了解来自某个域名的邮箱地址数量。它完全免费,因此您不需要任何信用点数!

请求
POSThttps://api.snov.io/v1/get-domain-emails-count
输入参数
domain
您想知道我们数据库中邮箱地址数量的域名的名称。
代码示例
<?php
function getEmailCount()
{
    $token = getAccessToken();

    $params = [
        'access_token' => $token,
        'domain'       => 'octagon.com',
    ];

    $options = [
        CURLOPT_URL            => 'https://api.snov.io/v1/get-domain-emails-count',
        CURLOPT_POST           => true,
        CURLOPT_POSTFIELDS     => $params,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true
    ];

    $ch = curl_init();

    curl_setopt_array($ch, $options);

    $res = json_decode(curl_exec($ch), true);
    curl_close($ch);

    return $res;

}
?>
def get_email_count():
token = get_access_token()
params = {'access_token':token,
        'domain':'octagon.com'

}

res = requests.post('https://api.snov.io/v1/get-domain-emails-count', data=params)

return json.loads(res.text)
回执示例
{
"success":true,
"domain":"octagon.com",
"webmail":false,
"result":1369
}
输出参数
domain
您想知道我们数据库中邮箱地址数量的域名的名称。
webmail
true
如果您正在搜索的域名是webmail。
result
我们已找到该域的电子邮箱地址总数。我们无法提供网络邮件域的结果,因此网络邮件的结果将始终是
0
.

POST根据姓名和域名查找邮箱

每个有效或未知状态的邮箱地址均需消耗 1 个点数。

输入潜在客户的姓名和公司域名,Snov.io 将返回其经过验证的邮箱地址。

提供姓名和域名
POSThttps://api.snov.io/v2/emails-by-domain-by-name/start
输入参数

发送此请求的最简单方法是通过原始 JSON 主体。如果您更喜欢使用参数,这里有一个示例

rows
包含潜在客户详细信息(名字、姓氏和域名)的对象数组。
每个请求最多可以包含 10 个对象。
first_name
潜在客户的名字。
last_name
潜在客户的姓氏。
domain
潜在客户所在公司的域名。
webhook_url
输入您的 Webhook URL,以便即时接收结果,而无需查询任务队列(不依赖 hash task)。
代码示例
<?php
function emailsByDomainByNameSearch()
{
    $token = getAccessToken();

    $headers = [
        'Authorization: Bearer ' . $token,
    ];

    $params = [
        'rows' => [
              [
               'first_name' => 'John',
               'last_name' => 'Doe',
               'domain' => 'yourdomain.com',
              ],
              [
               'first_name' => 'John',
               'last_name' => 'Doe',
               'domain' => 'yourdomain.com',
              ]
         ],
        'webhook_url' => 'https://hooks.yourdomain.com',
    ];

    $options = [
        CURLOPT_URL            => 'https://api.snov.io/v2/emails-by-domain-by-name/start',
        CURLOPT_HTTPHEADER     => $headers,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_POST           => true,
        CURLOPT_POSTFIELDS     => http_build_query($params),
        CURLOPT_FOLLOWLOCATION => true
    ];

    $ch = curl_init();

    curl_setopt_array($ch, $options);

    $response = json_decode(curl_exec($ch), true);

    curl_close($ch);

    return $response;
}
?>
def emails_by_domain_by_name_search():
token = get_access_token()
headers = {
    'authorization': f'Bearer {token}',
    'Content-Type': 'application/json'
}

payload = json.dumps({
    'rows': [
        {
            'first_name': 'John',
            'last_name': 'Doe',
            'domain': 'yourdomain.com'
        },
        {
            'first_name': 'Jane',
            'last_name': 'Doe',
            'domain': 'yourdomain.com'
        },
    ],
    'webhook_url': 'https://hooks.yourdomain.com'
})

res = requests.post('https://api.snov.io/v2/emails-by-domain-by-name/start', data=payload, headers=headers)

return json.loads(res.text)
回执示例
{
  "data": {
    "task_hash": "005ffad65aad581943cf65a45112ca7a"
  },
  "meta": {
    "rows": [
      {
        "first_name": "John",
        "last_name": "Doe",
        "domain": "yourdomain.com"
      },
      {
        "first_name": "Jane",
        "last_name": "Doe",
        "domain": "yourdomain.com"
      }
    ]
  }
}
输出参数
task_hash
您启动搜索任务的唯一 ID。
first_name
潜在客户的名字。
last_name
潜在客户的姓氏。
domain
潜在客户所在公司的域名。
接收邮件
GEThttps://api.snov.io/v2/emails-by-domain-by-name/result
输入参数
task_hash
您从上一个请求中收到的唯一请求 ID。
代码示例
<?php
function emailsByDomainByNameResult()
{
    $token = getAccessToken();

    $task_hash = '475d03ac6f98c124349b0f2efb506702';
    $headers = [
        'Authorization: Bearer ' . $token,
    ];

    $options = [
        CURLOPT_URL            => 'https://api.snov.io/v2/emails-by-domain-by-name/result?task_hash=$task_hash',
        CURLOPT_HTTPHEADER     => $headers,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true
    ];

    $ch = curl_init();

    curl_setopt_array($ch, $options);

    $response = json_decode(curl_exec($ch), true);

    curl_close($ch);

    return $response;
}
?>
def emails_by_domain_by_name_result():
token = get_access_token()
task_hash = '0d0c862099b22bdf300b8c8e67754e49'
headers = {'authorization': f'Bearer {token}'}

params = {'task_hash': task_hash}

res = requests.get(f'https://api.snov.io/v2/emails-by-domain-by-name/result', params=params, headers=headers)

return json.loads(res.text)
回执示例
{
  "status": "completed",
  "data": [
    {
      "people": "John Doe",
      "result": [
        {
          "email": "john.doe@yourdomain.com",
          "smtp_status": "valid",
          "is_valid_format": true,
          "is_disposable": false,
          "is_webmail": false,
          "is_gibberish": false
        }
      ]
    },
    {
      "people": "Jane Doe",
      "result": [
        {
          "email": "jane.doe@yourdomain.com",
          "smtp_status": "unknown",
          "is_valid_format": true,
          "is_disposable": false,
          "is_webmail": false,
          "is_gibberish": false,
          "unknown_status_reason": "catchall"
        }
      ]
    }
  ],
  "meta": {
    "rows": [
      {
        "domain": "yourdomain.com",
        "last_name": "Doe",
        "first_name": "John"
      },
      {
        "domain": "yourdomain.com",
        "last_name": "Doe",
        "first_name": "Jane"
      }
    ],
    "task_hash": "af50fb238757ad092ad6e57e130b0dea"
  }
}
输出参数
status
请求的状态。可能是completedin_progress
如果用于搜索的账户没有足够的点数,您可能会收到 not_enough_credits 状态。
people
潜在客户的全名。
email
潜在客户的邮箱地址。
smtp_status
可能会返回 validunknown(即无法验证)。
要了解未知状态的原因,请检查unknown_status_reason参数。
is_valid_format
显示邮箱格式是否有效。可能的值为 falsetrue
is_disposable
指示邮箱是否为临时或一次性,返回值为falsetrue
is_webmail
如果返回值为true,则表示您正在搜索的邮箱是 Webmail。
is_gibberish
显示所提供的邮箱地址是否包含随机或无意义的字符。可能返回的值为 falsetrue
unknown_status_reason
如果经过验证的邮箱具有未知的 smtp_status,您可以在此找到更详细的原因。
Banned:高送达风险 —— 此邮箱地址无法 100% 确认其有效性。
Catchall:发件人声誉风险 —— 该邮箱为全接收邮箱。
Connection_error:可能存在退信风险 —— 收件方存在技术问题。
Greylist: 送达风险 —— 该邮件服务器使用灰名单过滤器。
domain
潜在客户所在公司的域名。
first_name
潜在客户的名字。
last_name
潜在客户的姓氏。
task_hash
此搜索任务的唯一 ID。

POST根据公司名称查找域名

每找到 1 个域名地址需消耗 1 个点数

输入公司名称,Snov.io 将返回其域名地址。

提供公司名称
POSThttps://api.snov.io/v2/company-domain-by-name/start
输入参数
names[]
您希望获取域名的公司名称数组。
要检索多个公司的域名,请将每个公司作为单独参数添加。例如:
names[] | Snov.io
names[] | Sendpulse
您最多可以同时提供 10 个公司名称。
webhook_url
输入您的 Webhook URL,以便即时接收结果,而无需查询任务队列(不依赖 hash task)。
代码示例
<?php
function companyDomainByNameStart()
{
    $token = getAccessToken();

    $params = [
        'names'    => ['Snov.io','SendPulse'],
        'webhook_url'         => 'https://hooks.yourdomain.com',
    ];

    $headers = [
        'Authorization: Bearer ' . $token,
    ];

    $options = [
        CURLOPT_URL            => 'https://api.snov.io/v2/company-domain-by-name/start',
        CURLOPT_HTTPHEADER     => $headers,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_POST           => true,
        CURLOPT_POSTFIELDS     => http_build_query($params),
        CURLOPT_FOLLOWLOCATION => true
    ];

    $ch = curl_init();

    curl_setopt_array($ch, $options);

    $response = json_decode(curl_exec($ch), true);

    curl_close($ch);

    return $response;
}
?>
def company_domain_by_name_start():
token = get_access_token()
headers = {'authorization': f'Bearer {token}'}
params = {
  'webhook_url': 'https://hooks.yourdomain.com',
  'names[]': ['Snov.io', 'Sendpulse']
}

res = requests.post('https://api.snov.io/v2/company-domain-by-name/start', params=params, headers=headers)

return json.loads(res.text)
回执示例
{
  "data": {
    "task_hash": "959c0f60facb8629bba746e091a26f7b"
  },
  "meta": {
    "names": [
      "Snov.io",
      "Sendpulse"
    ]
  }
}
输出参数
task_hash
您启动搜索任务的唯一 ID。
names
您提供的公司名称数组。
接收公司域名
GEThttps://api.snov.io/v2/company-domain-by-name/result?task_hash={hash_from_1}
输入参数
task_hash
您从上一个请求中收到的唯一请求 ID。
代码示例
<?php
function companyDomainByNameResult()
{
    $token = getAccessToken();

    $task_hash = '48c156a785cfc1f3b0edab2cc28b3774';

    $headers = [
        'Authorization: Bearer ' . $token,
    ];

    $options = [
        CURLOPT_URL            => 'https://api.snov.io/v2/company-domain-by-name/result?task_hash=$task_hash',
        CURLOPT_HTTPHEADER     => $headers,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true
    ];

    $ch = curl_init();

    curl_setopt_array($ch, $options);

    $response = json_decode(curl_exec($ch), true);

    curl_close($ch);

    return $response;
}
?>
def company_domain_by_name_result():
token = get_access_token()
task_hash = '959c0f60facb8629bba746e091a26f7b'
headers = {'authorization': f'Bearer {token}'}
params = {
  'task_hash': task_hash
}

res = requests.get(f'https://api.snov.io/v2/company-domain-by-name/result', params=params, headers=headers)

return json.loads(res.text)
回执示例
{
  "status": "completed",
  "data": [
    {
      "name": "Snov.io",
      "result": {
        "domain": "snov.io"
      }
    },
    {
      "name": "Sendpulse",
      "result": {
        "domain": "sendpulse.com"
      }
    }
  ],
  "meta": {
    "names": [
      "Snov.io",
      "Sendpulse"
    ],
    "task_hash": "959c0f60facb8629bba746e091a26f7b"
  }
}
输出参数
status
请求的状态。可能是completedin_progress
name
您请求域名地址的公司名称。
domain
公司域名。
names
您提供的公司名称数组。
task_hash
此搜索任务的唯一 ID。

POST从 URL 获取领英个人资料信息

每提供 1 个潜在客户的个人资料信息需消耗 1 个点数

输入领英会员的 URL,Snov.io 将检索其完整的个人资料信息。

提供领英 URL
POSThttps://api.snov.io/v2/li-profiles-by-urls/start
输入参数
urls[]
您希望获取完整个人资料信息的领英个人资料 URL 数组。
要同时检索多个领英会员的个人资料信息,请将每个 URL 作为单独的参数添加。
您最多可以同时提供 10 个领英 URL。
webhook_url
输入您的 Webhook URL,以便即时接收结果,而无需查询任务队列(不依赖 hash task)。
代码示例
<?php
function linkedInProfilesByUrlsStart()
{
    $token = getAccessToken();

    $params = [
        'urls'    => ['https://www.linkedin.com/in/oleksii-kratko-6a0544187/','https://www.linkedin.com/in/atahualpamaia/'],
        'webhook_url'         => 'https://hooks.yourdomain.com',
    ];

    $headers = [
        'Authorization: Bearer ' . $token,
    ];

    $options = [
        CURLOPT_URL            => 'https://api.snov.io/v2/li-profiles-by-urls/start',
        CURLOPT_HTTPHEADER     => $headers,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_POST           => true,
        CURLOPT_POSTFIELDS     => http_build_query($params),
        CURLOPT_FOLLOWLOCATION => true
    ];

    $ch = curl_init();

    curl_setopt_array($ch, $options);

    $response = json_decode(curl_exec($ch), true);

    curl_close($ch);

    return $response;
}
?>
def linkedin_profiles_by_urls_start():
token = get_access_token()
headers = {'authorization': f'Bearer {token}'}
params = {
  'urls[]': ['https://www.linkedin.com/in/atahualpamaia/', 'https://www.linkedin.com/in/oleksii-kratko-6a0544187/'],
  'webhook_url': 'https://hooks.yourdomain.com',
}

res = requests.post('https://api.snov.io/v2/li-profiles-by-urls/start', params=params, headers=headers)

return json.loads(res.text)
回执示例
{
  "data": {
    "task_hash": "ef005a4f6d82e7e88384de7c72ee198d"
  },
  "meta": {
    "urls": [
      "https://www.linkedin.com/in/john-doe-32a416248/",
      "https://www.linkedin.com/in/john-doe-04bb56b1/",
      "https://www.linkedin.com/in/john-jungwoo-do/"
    ]
  }
}
输出参数
task_hash
您启动搜索任务的唯一 ID。
urls
您正在请求信息的个人资料 URL。
接收个人资料信息
GEThttps://api.snov.io/v2/li-profiles-by-urls/result
输入参数
task_hash
您从上一个请求中收到的唯一请求 ID。
代码示例
<?php
function linkedInProfilesByUrlsResult()
{
    $token = getAccessToken();

    $task_hash = 'ef005a4f6d82e7e88384de7c72ee198d';

    $headers = [
        'Authorization: Bearer ' . $token,
    ];

    $options = [
        CURLOPT_URL            => 'https://api.snov.io/v2/li-profiles-by-urls/result?task_hash=$task_hash',
        CURLOPT_HTTPHEADER     => $headers,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true
    ];

    $ch = curl_init();

    curl_setopt_array($ch, $options);

    $response = json_decode(curl_exec($ch), true);

    curl_close($ch);

    return $response;
}
?>
def linkedin_profiles_by_urls_result():
token = get_access_token()
task_hash = '879788bd889b0b9aa447278ce184e2ad'
headers = {'authorization': f'Bearer {token}'}
params = {
  'task_hash': task_hash
}

res = requests.get(f'https://api.snov.io/v2/li-profiles-by-urls/result', params=params, headers=headers)

return json.loads(res.text)
回执示例
{
  "status": "completed",
  "data": [
    {
      "url": "https://www.linkedin.com/in/john-doe-32a416248/",
      "result": {
        "name": "John Doe",
        "first_name": "John",
        "last_name": "Doe",
        "industry": "Internet",
        "location": "Chicago, Illinois, United States",
        "country": "United States",
        "positions": [
          {
            "name": "Stealth Startup",
            "title": "CEO",
            "linkedin_url": "https://www.linkedin.com/company/18583501",
            "url": "https://www.linkedin.com/in/ruhbirsingh/",
            "industry": "Computer Software",
            "country": "India",
            "location": "Gurugram, Haryana, India"
          },
          {
            "name": "TikTok",
            "title": "Influencer",
            "linkedin_url": "https://www.linkedin.com/company/33246798",
            "url": "https://www.tiktok.com/about?lang=en",
            "industry": "Entertainment",
            "country": "United States",
            "location": "Los Angeles, California, United States"
          }
        ]
      }
    },
    {
      "url": "https://www.linkedin.com/in/john-doe-04bb56b1/",
      "result": []
    },
    {
      "url": "https://www.linkedin.com/in/john-jungwoo-do/",
      "result": {
        "name": "John Do",
        "first_name": "John",
        "last_name": "Do",
        "location": "Vancouver, British Columbia, Canada",
        "country": "Canada",
        "skills": [
          "communication",
          "java"
        ],
        "positions": [
          {
            "name": "UBC Electrical and Computer Engineering",
            "title": "Undergraduate Research Assistant",
            "linkedin_url": "https://www.linkedin.com/company/15134449",
            "url": "http://www.ece.ubc.ca",
            "industry": "Higher Education",
            "country": "Canada",
            "location": "Vancouver, British Columbia, Canada"
          },
          {
            "name": "The University of British Columbia",
            "title": "Undergraduate Teaching Assistant",
            "linkedin_url": "https://www.linkedin.com/company/4373",
            "url": "http://www.ubc.ca",
            "industry": "Higher Education",
            "country": "Canada",
            "location": "Vancouver, British Columbia, Canada",
            "specializations": [
              "Aboriginal Engagement",
              "Alumni Engagement",
              "Community Engagement",
              "Intercultural Understanding",
              "International Engagement",
              "Outstanding Work Environment",
              "Research Excellence",
              "Student Learning",
              "sustainability"
            ]
          }
        ]
      }
    },
    {
      "url": "https://www.linkedin.com/in/john-doe-474006162/",
      "result": []
    }
  ],
  "meta": {
    "urls": [
      "https://www.linkedin.com/in/john-doe-32a416248/",
      "https://www.linkedin.com/in/john-doe-04bb56b1/",
      "https://www.linkedin.com/in/john-jungwoo-do/",
      "https://www.linkedin.com/in/john-doe-474006162/"
    ],
    "task_hash": "8a60c72133d0ea94767e4a978355c630"
  }
}
输出参数
status
请求的状态。可能是completedin_progress
url
领英个人资料的 URL。
name
潜在客户的全名。
first_name
潜在客户的名字。
last_name
潜在客户的姓氏。
industry
潜在客户的工作领域。
location
潜在客户的位置。
country
根据领英个人资料显示的潜在客户所在国家/地区。
skills
潜在客户的技能。
positions
潜在客户当前担任的职位数组。
name
潜在客户所在公司的名称。
title
潜在客户的职位。
linkedin_url
公司领英页面的链接。
url
公司的网站地址。
industry
公司所在行业。
country
公司总部所在的国家/地区。
location
公司的位置。
specializations
公司的专业或重点领域。
urls
您提供的领英个人资料 URL 数组。
task_hash
此搜索任务的唯一 ID。

POST通过邮箱地址丰富个人资料

每个请求 1 个信用点数

提供一个邮箱地址,Snov.io 将从数据库中返回连接到提供的邮箱地址所有者的所有配置文件信息。

如果我们在数据库中找不到有关邮箱地址所有者的信息,则不会向您收取该请求的费用。

请求
POSThttps://api.snov.io/v1/get-profile-by-email
输入参数
email
您想要查找其他信息的人的邮箱地址。
代码示例
<?php
function getProfileByEmail()
{
    $token = getAccessToken();

    $params = [
        'access_token'    => $token,
        'email'           => 'gavin.vanrooyen@octagon.com'
    ];

    $options = [
        CURLOPT_URL            => 'https://api.snov.io/v1/get-profile-by-email',
        CURLOPT_POST           => true,
        CURLOPT_POSTFIELDS     => $params,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true
    ];

    $ch = curl_init();

    curl_setopt_array($ch, $options);

    $res = json_decode(curl_exec($ch), true);
    curl_close($ch);
    
    return $res;

}
?>
def get_profile_by_email():
token = get_access_token()
params = {'access_token':token,
        'email':'gavin.vanrooyen@octagon.com'
}

res = requests.post('https://api.snov.io/v1/get-profile-by-email', data=params)

return json.loads(res.text)
回执示例
{
"success": true,
"id": 301592,
"source": "linkedIn",
"name": "Lizi Hamer",
"firstName": "Lizi",
"lastName": "Hamer",
"logo": "https://app.snov.io/img/peoples/010fcf23c70dfa68d880545ec89a9215.jpg",
"industry": null,
"country": "Singapore",
"locality": "Singapore",
"social": [
    {
        "link": "https://www.linkedin.com/in/lizihamer/",
        "type": "linkedIn"
    },
    {
        "link": "https://twitter.com/LiziHamer",
        "type": "twitter"
    }
],
"currentJobs": [
    {
        "companyName": "Octagon",
        "position": "Regional Creative Director",
        "socialLink": "https://www.linkedin.com/company/165282",
        "site": "www.octagon.com",
        "locality": "Greater New York City Area",
        "state": "Connecticut",
        "city": "Stamford",
        "street": "290 Harbor Dr",
        "street2": "2nd Floor",
        "postal": "06902",
        "founded": "1983",
        "startDate": "2016-01-31",
        "endDate": null,
        "size": "1-10",
        "industry": "Marketing and Advertising",
        "companyType": "Public Company",
        "country": "United States"
    },
    {
        "companyName": "SisuGirls",
        "position": "Co Founder",
        "socialLink": "https://www.linkedin.com/company/3841118",
        "site": "http://www.sisugirls.org",
        "locality": null,
        "state": "SG",
        "city": "Singapore",
        "street": "33-03 Hong Leong Building",
        "street2": null,
        "postal": null,
        "founded": "2014",
        "startDate": "2015-07-31",
        "endDate": null,
        "size": "1-10",
        "industry": "Health, Wellness and Fitness",
        "companyType": null,
        "country": "Singapore"
    }
],
"previousJobs": [
    {
        "companyName": "Fusion Co-innovation Labs",
        "position": "Creative Entrepreneur",
        "socialLink": null,
        "site": null,
        "locality": null,
        "state": null,
        "city": null,
        "street": null,
        "street2": null,
        "postal": null,
        "founded": null,
        "startDate": "2013-05-31",
        "endDate": "2013-10-31",
        "size": null,
        "industry": null,
        "companyType": null,
        "country": null
    },
    {
        "companyName": "Russell Commission",
        "position": "Youth Advisory Board Member",
        "socialLink": null,
        "site": null,
        "locality": null,
        "state": null,
        "city": null,
        "street": null,
        "street2": null,
        "postal": null,
        "founded": null,
        "startDate": "2004-06-30",
        "endDate": "2006-06-30",
        "size": null,
        "industry": null,
        "companyType": null,
        "country": null
    }
],
"lastUpdateDate": "2018-02-07 10:12:28"
}
输出参数
id
唯一的配置文件标识符。
source
检索到的个人数据的来源。
name
邮箱地址所有者的全名。
firstName
此人的名字。
lastName
此人的姓氏。
logo
此人的资料照片。
industry
来源中显示的此人所在行业。
country
来源中显示的此人所在国家/地区。
locality
来源中显示的此人所在地点。
social
到此人社交资料链接。
currentJobs
包含有关此人当前工作职位信息的数组。
previousJobs
一个包含有关此人以前工作职位信息的数组。
lastUpdateDate
数据库中最后一份资料的更新日期。

POST邮箱地址验证工具

输入邮箱地址,Snov.io 将运行完整的验证检查。您最多可以同时验证 10 个邮箱地址。

提供邮箱地址

POSThttps://api.snov.io/v2/email-verification/start
输入参数
emails[]
您要验证的邮箱地址。
要同时验证多个邮箱地址,请将每个邮箱地址作为单独参数添加。例如:
emails[] | help@snov.io
emails[] | partnerships@snov.io
您最多可以同时验证10 个邮箱地址。
webhook_url
输入您的 Webhook URL,以便即时接收结果,而无需查询任务队列(不依赖 hash task)。
代码示例
<?php
function emailVerificationStart()
{
    $token = getAccessToken();

    $params = [
        'emails'    => ['gavin.vanrooyen@octagon.com','lizi.hamer@octagon.com','admin@snov.io','test@snov.io','ivalid_format_snov.io'],
        'webhook_url'         => 'https://hooks.yourdomain.com',
    ];

    $headers = [
        'Authorization: Bearer ' . $token,
    ];

    $options = [
        CURLOPT_URL            => 'https://api.snov.io/v2/email-verification/start',
        CURLOPT_HTTPHEADER     => $headers,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_POST           => true,
        CURLOPT_POSTFIELDS     => http_build_query($params),
        CURLOPT_FOLLOWLOCATION => true
    ];

    $ch = curl_init();

    curl_setopt_array($ch, $options);

    $response = json_decode(curl_exec($ch), true);

    curl_close($ch);

    return $response;
}
?>
def email_verification_start():
token = get_access_token()
headers = {'authorization': f'Bearer {token}'}
params = {
  'emails[]': ['gavin.vanrooyen@octagon.com', 'lizi.hamer@octagon.com', 'admin@snov.io', 'test@snov.io', 'ivalid_format_snov.io'],
  'webhook_url': 'https://hooks.yourdomain.com',
}
res = requests.post('https://api.snov.io/v2/email-verification/start', params=params, headers=headers)

return json.loads(res.text)
回执示例
{
  "data": {
    "task_hash": "0110437df6811068197577a538849a4b"
  },
  "meta": {
    "emails": [
      "gavin.vanrooyen@octagon.com",
      "lizi.hamer@octagon.com",
      "admin@snov.io",
      "test@snov.io",
      "ivalid_format_snov.io"
    ]
  }
}
输出参数
task_hash
您启动搜索任务的唯一 ID。
emails
您提供的用于验证的邮箱地址数组。
接收验证结果
GEThttps://api.snov.io/v2/email-verification/result
输入参数
task_hash
您从上一个请求中收到的唯一请求 ID。
代码示例
<?php
function emailVerificationResult()
{
    $token = getAccessToken();

    $task_hash = '0110437df6811068197577a538849a4b';

    $headers = [
        'Authorization: Bearer ' . $token,
    ];

    $options = [
        CURLOPT_URL            => 'https://api.snov.io/v2/email-verification/result?task_hash=$task_hash',
        CURLOPT_HTTPHEADER     => $headers,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true
    ];

    $ch = curl_init();

    curl_setopt_array($ch, $options);

    $response = json_decode(curl_exec($ch), true);

    curl_close($ch);

    return $response;
}
?>
def email_verification_result():
token = get_access_token()
task_hash = 'b55b28d5419a1c3ec310f21916e4e271'
headers = {'authorization': f'Bearer {token}'}
params = {
  'task_hash': task_hash
}

res = requests.get(f'https://api.snov.io/v2/email-verification/result', params=params, headers=headers)

return json.loads(res.text)
回执示例
{
  "status": "completed",
  "data": [
    {
      "email": "gavin.vanrooyen@octagon.com",
      "result": {
        "is_webmail": false,
        "smtp_status": "unknown",
        "is_gibberish": false,
        "is_disposable": false,
        "is_valid_format": true,
        "unknown_status_reason": "catchall"
      }
    },
    {
      "email": "admin@snov.io",
      "result": {
        "is_webmail": false,
        "smtp_status": "valid",
        "is_gibberish": false,
        "is_disposable": false,
        "is_valid_format": true
      }
    },
    {
      "email": "ivalid_format_snov.io",
      "result": {
        "is_webmail": false,
        "smtp_status": "not_valid",
        "is_gibberish": false,
        "is_disposable": false,
        "is_valid_format": false
      }
    },
    {
      "email": "lizi.hamer@octagon.com",
      "result": {
        "is_webmail": false,
        "smtp_status": "unknown",
        "is_gibberish": false,
        "is_disposable": false,
        "is_valid_format": true,
        "unknown_status_reason": "catchall"
      }
    },
    {
      "email": "test@snov.io",
      "result": {
        "smtp_status": "unknown",
        "is_valid_format": true,
        "is_disposable": false,
        "is_webmail": false,
        "is_gibberish": true,
        "unknown_status_reason": "banned"
      }
    }
  ],
  "meta": {
    "emails": [
      "gavin.vanrooyen@octagon.com",
      "lizi.hamer@octagon.com",
      "admin@snov.io",
      "test@snov.io",
      "ivalid_format_snov.io"
    ],
    "task_hash": "0110437df6811068197577a538849a4b"
  }
}
输出参数
status
请求的状态。可能是completedin_progress
email
您正在验证的电子邮箱地址。
smtp_status
可能返回validnot_validunknown(即无法验证)。
要了解未知状态的原因,请检查unknown_status_reason参数。
is_valid_format
显示邮箱格式是否有效。可能的值为 falsetrue
is_disposable
指示邮箱是否为临时或一次性,返回值为falsetrue
is_webmail
如果返回值为true,则表示您正在搜索的邮箱是 Webmail。
is_gibberish
显示所提供的邮箱地址是否包含随机或无意义的字符。可能返回的值为 falsetrue
unknown_status_reason
如果经过验证的邮箱具有未知的 smtp_status,您可以在此找到更详细的原因。
Banned:高送达风险 —— 此邮箱地址无法 100% 确认其有效性。
Catchall:发件人声誉风险 —— 该邮箱为全接收邮箱。
Connection_error:可能存在退信风险 —— 收件方存在技术问题。
Greylist: 送达风险 —— 该邮件服务器使用灰名单过滤器。
Hidden_by_owner: 邮箱所有者或拥有该域名的公司要求其从 Snov.io 结果中删除。
emails
您正在验证的邮箱数组。
task_hash
该验证任务的唯一请求 ID。

POST添加新邮箱账户

此方法将一个新的 SMTP/IMAP 邮箱账户连接到您的 snov.io 工作区,以便将其用作营销活动中的发件人。即使 SMTP/IMAP 连接检查尚未完成,账户也会被创建——连接状态会以异步方式在 smtp.status / imap.status 字段中返回,之后可进行轮询。仅支持 SMTP/IMAP 账户(other 提供商类型);Gmail 和 Microsoft 的 OAuth 流程不在支持范围内。

请求
POSThttps://api.snov.io/v2/sender-accounts/emails
输入参数
sender_name
*必需
发件人显示名称,最多 100 个字符。
email_from
*必需
发件人邮箱地址。
password
*必需
SMTP/IMAP 账户的密码或应用专用密码。加密存储。
smtp
*必需
包含 SMTP 设置的对象。
smtp.host
*必需
SMTP 主机,例如 smtp.gmail.com
smtp.port
*必需
SMTP 端口。允许的值:25465587
smtp.encryption
*必需
加密类型。允许的值:ssltlsnone。必须与端口匹配:465ssl587tls25none
imap
包含 IMAP 设置的对象。可选,但如果提供,则所有子字段均为必填。
imap.host
IMAP 主机,例如 imap.gmail.com。当存在 imap 时为必填。
imap.port
IMAP 端口。允许的值:143993。当存在 imap 时为必填。
imap.encryption
加密类型。允许的值:ssltlsnone。必须与端口匹配:993ssltls143none。当存在 imap 时为必填。
reply_to
reply-to 邮箱地址。
limitation
每日发送限制。整数,最小 1,最大 1200。默认值:50。不得超过账户在配置的延迟下 24 小时内可发送的最大邮件数量。
delay_type
邮件之间的延迟类型。允许的值:fixedrandom。默认值:random
delay_fixed
固定延迟(秒)(当 delay_type=fixed 时使用)。整数,最小 5,最大 3600。默认值:600
delay_from
最小延迟(秒)(当 delay_type=random 时使用)。整数,最小 5,最大 3600。默认值:600
delay_to
最大延迟(秒)(当 delay_type=random 时使用)。整数,最小 5,最大 3600,必须大于 delay_from。默认值:900
signature
附加到发出邮件的 HTML 签名。
bcc_email
BCC 邮箱地址。
tags
字符串数组。已存在的标签按名称匹配,新标签会被创建并附加到账户。
timezoneId
账户时区的整数 ID。最小 1,最大 458
代码示例
<?php
function createEmailAccount()
{
    $token = getAccessToken();
    $params = json_encode([
        'sender_name' => 'John Smith',
        'email_from'  => 'john@example.com',
        'password'    => 'app_password_here',
        'smtp' => [
            'host'       => 'smtp.gmail.com',
            'port'       => 465,
            'encryption' => 'ssl'
        ],
        'imap' => [
            'host'       => 'imap.gmail.com',
            'port'       => 993,
            'encryption' => 'ssl'
        ],
        'limitation'  => 50,
        'delay_type'  => 'random',
        'delay_from'  => 600,
        'delay_to'    => 900,
        'reply_to'    => 'replies@example.com',
        'bcc_email'   => 'bcc@example.com',
        'tags'        => ['Canada campaign 2025']
    ]);
    $options = [
        CURLOPT_URL            => 'https://api.snov.io/v2/sender-accounts/emails',
        CURLOPT_POST           => true,
        CURLOPT_POSTFIELDS     => $params,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_HTTPHEADER     => [
            'Authorization: Bearer ' . $token,
            'Content-Type: application/json'
        ]
    ];
    $ch = curl_init();
    curl_setopt_array($ch, $options);
    $res = json_decode(curl_exec($ch), true);
    curl_close($ch);
    return $res;
}
?>
def create_email_account():
    token = get_access_token()
    headers = {
        'Authorization': 'Bearer ' + token,
        'Content-Type': 'application/json'
    }
    params = {
        'sender_name': 'John Smith',
        'email_from': 'john@example.com',
        'password': 'app_password_here',
        'smtp': {
            'host': 'smtp.gmail.com',
            'port': 465,
            'encryption': 'ssl'
        },
        'imap': {
            'host': 'imap.gmail.com',
            'port': 993,
            'encryption': 'ssl'
        },
        'limitation': 50,
        'delay_type': 'random',
        'delay_from': 600,
        'delay_to': 900,
        'reply_to': 'replies@example.com',
        'bcc_email': 'bcc@example.com',
        'tags': ['Canada campaign 2025']
    }
    res = requests.post(
        'https://api.snov.io/v2/sender-accounts/emails',
        headers=headers,
        json=params
    )
    return json.loads(res.text)
回执示例
{
    "data": {
        "id": 869852,
        "sender_name": "John Smith",
        "email_from": "john@example.com",
        "smtp": {
            "host": "smtp.gmail.com",
            "port": 465,
            "encryption": "ssl",
            "status": "pending"
        },
        "imap": {
            "host": "imap.gmail.com",
            "port": 993,
            "encryption": "ssl",
            "status": "pending"
        },
        "limitation": 50,
        "delay_type": "random",
        "delay_from": 600,
        "delay_to": 900,
        "reply_to": "replies@example.com",
        "bcc_email": "bcc@example.com",
        "tags": ["Canada campaign 2025"],
        "created_at": "2026-03-20T10:00:00+00:00"
    }
}
输出参数
data.id
所创建发件人账户的 ID。
data.sender_name
发件人显示名称。
data.email_from
发件人邮箱地址。
data.smtp
SMTP 设置:hostportencryption,以及包含连接检查结果的 status 字段(pendingconnectederror)。
data.imap
IMAP 设置(仅在配置了 IMAP 时存在):hostportencryptionstatus
data.limitation
每日发送限制。
data.delay_type
延迟类型:fixedrandom
data.delay_from
最小延迟(秒)(用于 delay_type=random)。
data.delay_to
最大延迟(秒)(用于 delay_type=random)。
data.delay_fixed
固定延迟(秒)(用于 delay_type=fixed)。
data.reply_to
reply-to 邮箱地址。
data.signature
HTML 签名(仅在提供时存在)。
data.bcc_email
BCC 邮箱地址。
data.tags
附加到账户的标签数组。
data.timezoneId
时区 ID(仅在请求中设置时返回)。
data.created_at
账户创建时间戳。

PATCH更新邮箱账户

此方法更新一个现有的 SMTP/IMAP 发件人账户。所有字段均为可选,但至少须提供一个有效字段——仅会更改所提供的字段,其余字段保持不变。当包含任何 SMTP 或 IMAP 字段时,会触发一次新的异步连接检查,并在 smtp.status / imap.status 中返回相应的状态。如果提供了 tags,则新数组将完全替换账户当前的标签列表(替换,而非合并)。

请求
PATCHhttps://api.snov.io/v2/sender-accounts/emails/{id}
输入参数
id
*必需(path)
要更新的发件人账户的 ID。
sender_name
新的发件人显示名称,最多 100 个字符。
email_from
新的发件人邮箱地址。
password
SMTP/IMAP 账户的新密码或应用专用密码。加密存储。
smtp
包含新 SMTP 设置(hostportencryption)的对象。当存在 smtp 时,三个子字段均为必填,且必须满足端口/加密配对规则(465ssl587tls25none)。
smtp.host
SMTP 主机。最多 100 个字符;格式:^[a-zA-Z0-9][a-zA-Z0-9-.]*。当存在 smtp 时为必填。
smtp.port
允许的值:25、465、587。当存在 smtp 时为必填。
smtp.encryption
必须与端口匹配:465 → ssl,587 → tls,25 → none。当存在 smtp 时为必填。
imap
包含新 IMAP 设置(hostportencryption)的对象。当存在 imap 时,三个子字段均为必填(993ssltls143none
imap.host
IMAP 主机。最多 100 个字符。当存在 imap 时为必填。
imap.port
允许的值:143、993。当存在 imap 时为必填。
imap.encryption
必须与端口匹配:993 → ssl 或 tls;143 → none。当存在 imap 时为必填。
reply_to
新的 reply-to 邮箱地址。传入 null 可清除。
limitation
新的每日发送限制。整数,最小 1,最大 1200。不得超过账户在配置的延迟下 24 小时内可发送的最大邮件数量。
delay_type
新的延迟类型。允许的值:fixedrandom
delay_fixed
固定延迟(秒)(当 delay_type=fixed 时使用)。整数,最小 5,最大 3600
delay_from
最小延迟(秒)(当 delay_type=random 时使用)。整数,最小 5,最大 3600
delay_to
最大延迟(秒)(当 delay_type=random 时使用)。整数,最小 5,最大 3600,必须大于 delay_from
signature
新的 HTML 签名。传入 null 可清除。
bcc_email
新的 BCC 邮箱地址。传入 null 可清除。
tags
新的标签数组。完全替换当前的标签列表。传入 null 可清除所有标签。
timezoneId
账户时区的整数 ID。最小 1,最大 458
代码示例
<?php
function updateEmailAccount($accountId)
{
    $token = getAccessToken();
    $params = json_encode([
        'sender_name' => 'John Smith Updated',
        'limitation'  => 100,
        'delay_type'  => 'fixed',
        'delay_fixed' => 600,
        'tags'        => ['Canada campaign 2025', 'Q2']
    ]);
    $options = [
        CURLOPT_URL            => 'https://api.snov.io/v2/sender-accounts/emails/' . $accountId,
        CURLOPT_CUSTOMREQUEST  => 'PATCH',
        CURLOPT_POSTFIELDS     => $params,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_HTTPHEADER     => [
            'Authorization: Bearer ' . $token,
            'Content-Type: application/json'
        ]
    ];
    $ch = curl_init();
    curl_setopt_array($ch, $options);
    $res = json_decode(curl_exec($ch), true);
    curl_close($ch);
    return $res;
}
?>
def update_email_account(account_id):
    token = get_access_token()
    headers = {
        'Authorization': 'Bearer ' + token,
        'Content-Type': 'application/json'
    }
    params = {
        'sender_name': 'John Smith Updated',
        'limitation': 100,
        'delay_type': 'fixed',
        'delay_fixed': 600,
        'tags': ['Canada campaign 2025', 'Q2']
    }
    res = requests.patch(
        f'https://api.snov.io/v2/sender-accounts/emails/{account_id}',
        headers=headers,
        json=params
    )
    return json.loads(res.text)
回执示例
{
    "data": {
        "id": 869852,
        "sender_name": "John Smith Updated",
        "email_from": "john@example.com",
        "smtp": {
            "host": "smtp.gmail.com",
            "port": 465,
            "encryption": "ssl",
            "status": "pending"
        },
        "imap": {
            "host": "imap.gmail.com",
            "port": 993,
            "encryption": "ssl",
            "status": "pending"
        },
        "limitation": 100,
        "delay_type": "fixed",
        "delay_fixed": 600,
        "reply_to": "replies@example.com",
        "bcc_email": "bcc@example.com",
        "tags": ["Canada campaign 2025", "Q2"],
        "updated_at": "2026-04-22T11:04:37+00:00"
    }
}
输出参数
data.id
发件人账户的 ID。
data.sender_name
发件人显示名称。
data.email_from
发件人邮箱地址。
data.smtp
SMTP 设置:hostportencryption,以及包含连接检查结果的 status 字段(pendingvalidinvalid)。
data.imap
IMAP 设置(仅在配置了 IMAP 时存在):hostportencryptionstatus
data.limitation
每日发送限制。
data.delay_type
延迟类型:fixedrandom
data.delay_from
最小延迟(秒)(用于 delay_type=random)。
data.delay_to
最大延迟(秒)(用于 delay_type=random)。
data.delay_fixed
固定延迟(秒)(用于 delay_type=fixed)。
data.reply_to
reply-to 邮箱地址。
data.signature
HTML 签名(仅在提供时存在)。
data.bcc_email
BCC 邮箱地址。
data.tags
附加到账户的标签数组。
data.timezoneId
时区 ID(仅在设置时返回)。
data.updated_at
上次更新的时间戳。

GET检查发件人 SMTP/IMAP 状态

此方法检查已连接的邮箱发件人账户的 SMTP 以及(可选的)IMAP 连接状态。使用它来验证发件人账户当前是否有效且可正常运行,并获取任何连接错误。

请求
GEThttps://api.snov.io/v2/sender-accounts/check-sender-status
输入参数
sender_account_id
*必需
要检查的发件人邮箱账户的 ID。整数,最小值: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"
        }
    }
}
带有 SMTP 错误且未配置 IMAP 的响应示例:
{
    "data": {
        "smtp": {
            "status": "invalid",
            "errors": [
                "Connection refused"
            ]
        },
        "imap": null
    }
}
输出参数
data
包含发件人账户连接状态详情的对象。
smtp
描述 SMTP 连接状态的对象:statuspendingvalidinvalid)和 errors(错误消息数组,当 statusinvalid 时存在)。
imap
描述 IMAP 连接状态的对象,结构与 smtp 相同。当账户创建时未配置 IMAP,则返回 null

GET获取所有邮箱账户列表

免费

该方法显示所有已连接邮箱账户的列表。

请求
GEThttps://api.snov.io/v2/sender-accounts/emails
输入参数
此方法没有输入参数。
代码示例
<?php
function getSenderEmails()
{
    $token = getAccessToken();
    $options = [
        CURLOPT_URL            => 'https://api.snov.io/v2/sender-accounts/emails',
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_HTTPHEADER     => [
            'Authorization: Bearer ' . $token,
            'Content-Type: application/json',
        ],
    ];
    $ch = curl_init();
    curl_setopt_array($ch, $options);
    $res = json_decode(curl_exec($ch), true);

    curl_close($ch);

    return $res;

}
?>
def get_sender_emails():
    token = get_access_token()

    headers = {
        'Authorization': 'Bearer ' + token,
        'Content-Type': 'application/json'
    }

    res = requests.get('https://api.snov.io/v2/sender-accounts/emails', headers=headers)

    return json.loads(res.text)
回执示例
{
    "data": [
        {
            "id": 11980,
            "sender_name": "Den Johnson",
            "email_from": "den.johnson@snov.io",
            "valid": true,
            "suspended": false,
            "limitation": 50,
            "provider": "hostinger",
            "tags": [
                "Den's account"
            ],
            "imap": {
                "username": "den.johnson@snov.io",
                "valid": true
            }
        },
        {
            "id": 12355,
            "sender_name": "Anna",
            "email_from": "anna@snov.io",
            "valid": false,
            "suspended": false,
            "limitation": 50,
            "provider": "godaddy",
            "tags": [
                "Work"
            ],
            "imap": {
                "username": "anna@snov.io",
                "valid": false
            }
        }
    ]
}
输出参数
id
邮箱账户的唯一ID。
sender_name
发件人姓名,或"发件人名称"。这是收件人收件箱中显示的发件人名称。
email_from
完整电子邮箱地址。
valid
如果发件人账户有效,则显示 true。账户无效时返回 false
suspended
如果账户暂停发送,则显示 true。账户正常运行时返回 false
limitation
账户的每日发送限制。
provider
邮箱账户的服务商。
tags
分配给该账户的标签。
imap
账户的IMAP详情数组。
username
选择用于接收回复的用户名邮箱(替代默认邮箱账户)。
valid
启用IMAP时显示 true。禁用IMAP时返回 false

POST创建预热活动

此方法为指定的电子邮件账户创建并启动一个新的预热活动。预热通过与精选收件人网络交换简短邮件,逐步提升账户的发送声誉。选择progressive策略从较小的起始点逐步增加每日发送量,或选择steady策略每天发送固定数量的预热邮件;提供您自己的subjectbody,或让snov.io自动生成。

请求
POSThttps://api.snov.io/v2/warm-up
输入参数
email_account_id
*必需
Integer。要预热的电子邮件账户ID。
strategy
发送策略。允许的值:progressivesteady。默认值:progressive
per_day
*必需
Integer。每日发送目标。范围11000,取决于定价计划。
from
Integer。起始每日发送量(仅限progressive策略)。范围15,必须≤ per_day。当strategy=progressive时必填。
increase
Integer。每日发送量增量(仅限progressive策略)。范围15。当strategy=progressive时必填。
email_content
邮件内容类型。允许的值:autogenerated(AI生成)、specific(自定义)。默认值:autogenerated
subject
String。邮件主题,1–200个字符。当email_content=specific时必填。
body
String。邮件正文,1–10000个字符。当email_content=specific时必填。
reply_rate
Integer。将收到回复的收件预热邮件百分比。范围1045。默认值:30
campaign_deadline
String(YYYY-MM-DD)。预热停止的日期。省略则表示无截止日期。
providers
字符串数组。目标收件人提供商。允许的值:gmailmicrosoftaliyunhostingerprivate emailzohotitangodaddyother
send_to_paid_domain
Boolean。是否向付费域名发送。默认值:false
enable_ctd
Boolean。启用自定义跟踪域。默认值:false
enable_proxy
Boolean。启用动态代理。默认值:false
schedule_id
Integer。要附加到预热的发送计划ID。
template_name
String。要使用的已保存邮件模板名称。
代码示例
<?php
function createWarmUp()
{
    $token = getAccessToken();
    $params = json_encode([
        'email_account_id'    => 123,
        'strategy'            => 'progressive',
        'per_day'             => 50,
        'from'                => 2,
        'increase'            => 2,
        'reply_rate'          => 30,
        'campaign_deadline'   => '2026-12-31',
        'send_to_paid_domain' => false,
        'enable_proxy'        => false
    ]);
    $options = [
        CURLOPT_URL            => 'https://api.snov.io/v2/warm-up',
        CURLOPT_POST           => true,
        CURLOPT_POSTFIELDS     => $params,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_HTTPHEADER     => [
            'Authorization: Bearer ' . $token,
            'Content-Type: application/json'
        ],
    ];
    $ch = curl_init();
    curl_setopt_array($ch, $options);
    $res = json_decode(curl_exec($ch), true);

    curl_close($ch);

    return $res;

}
?>
def create_warm_up():
    token = get_access_token()

    headers = {
        'Authorization': 'Bearer ' + token,
        'Content-Type': 'application/json'
    }

    params = {
        'email_account_id': 123,
        'strategy': 'progressive',
        'per_day': 50,
        'from': 2,
        'increase': 2,
        'reply_rate': 30,
        'campaign_deadline': '2026-12-31',
        'send_to_paid_domain': False,
        'enable_proxy': False
    }

    res = requests.post(
        'https://api.snov.io/v2/warm-up',
        headers=headers,
        json=params
    )

    return json.loads(res.text)
回执示例
{
    "data": {
        "id": 123
    },
    "success": true
}
输出参数
success
Boolean。预热创建成功时为true
data.id
已创建的预热活动ID。

GET获取预热活动列表

此方法返回账户中所有预热活动的分页列表,可选择按状态过滤。每个条目的结构与获取预热活动信息的响应相同。

请求
GEThttps://api.snov.io/v2/warm-up
输入参数
page
Integer。页码。默认值:1。最小值:1
per_page
Integer。每页结果数。允许的值:2050100。默认值:20
status
按状态过滤。允许的值:activepausedcompletederror。省略则返回全部。
代码示例
<?php
function getWarmUpList()
{
    $token = getAccessToken();
    $params = http_build_query([
        'page'     => 1,
        'per_page' => 20,
        'status'   => 'active'
    ]);
    $options = [
        CURLOPT_URL            => 'https://api.snov.io/v2/warm-up?' . $params,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_HTTPHEADER     => [
            'Authorization: Bearer ' . $token,
            'Content-Type: application/json'
        ],
    ];
    $ch = curl_init();
    curl_setopt_array($ch, $options);
    $res = json_decode(curl_exec($ch), true);

    curl_close($ch);

    return $res;

}
?>
def get_warm_up_list():
    token = get_access_token()

    headers = {
        'Authorization': 'Bearer ' + token,
        'Content-Type': 'application/json'
    }

    params = {
        'page': 1,
        'per_page': 20,
        'status': 'active'
    }

    res = requests.get(
        'https://api.snov.io/v2/warm-up',
        headers=headers,
        params=params
    )

    return json.loads(res.text)
回执示例
{
    "data": [
        {
            "id": 1,
            "status": "active",
            "reply_rate": 30,
            "send_to_paid_domain": false,
            "start_date": "2026-03-26",
            "campaign_deadline": "2026-12-21",
            "strategy": "progressive",
            "per_day": 2,
            "from": 2,
            "increase": 2,
            "subject": null,
            "body": null,
            "template_name": null,
            "enable_ctd": false,
            "schedule": null,
            "email_account": {
                "id": 732745,
                "email_from": "john@example.com",
                "type": "microsoft",
                "delay": 30,
                "limit": 15,
                "per_day": 50,
                "schedule_required": false,
                "provider": "gmail",
                "custom_tracking_domain": null
            },
            "enable_proxy": false,
            "sent_today": 2,
            "daily_limit": 2,
            "total_saved_from_spam": 5,
            "deliverability": 88,
            "warm_up_error": null
        }
    ],
    "success": true,
    "meta": {
        "total_items": 1,
        "page": 1,
        "per_page": 20,
        "total_pages": 1
    }
}
输出参数
success
Boolean。请求成功时为true
data
预热活动对象数组。每个条目的结构与获取预热活动信息的响应相同(请参阅那里的data.*字段)。
meta.total_items
所有页面的总条目数。
meta.page
当前页码。
meta.per_page
每页条目数。
meta.total_pages
总页数。

GET获取预热活动信息

此方法通过ID返回单个预热活动的完整详情——包括策略设置、每日限制、当前送达率统计和已连接的电子邮件账户。

请求
GEThttps://api.snov.io/v2/warm-up/{id}
输入参数
id
*必需(path)
Integer。预热活动ID。
代码示例
<?php
function getWarmUpById($warmUpId)
{
    $token = getAccessToken();
    $options = [
        CURLOPT_URL            => 'https://api.snov.io/v2/warm-up/' . $warmUpId,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_HTTPHEADER     => [
            'Authorization: Bearer ' . $token,
            'Content-Type: application/json'
        ],
    ];
    $ch = curl_init();
    curl_setopt_array($ch, $options);
    $res = json_decode(curl_exec($ch), true);

    curl_close($ch);

    return $res;

}
?>
def get_warm_up_by_id(warm_up_id):
    token = get_access_token()

    headers = {
        'Authorization': 'Bearer ' + token,
        'Content-Type': 'application/json'
    }

    res = requests.get(
        f'https://api.snov.io/v2/warm-up/{warm_up_id}',
        headers=headers
    )

    return json.loads(res.text)
回执示例
{
    "data": {
        "id": 123,
        "status": "active",
        "reply_rate": 30,
        "send_to_paid_domain": false,
        "start_date": "2026-03-26",
        "campaign_deadline": "2026-12-21",
        "strategy": "progressive",
        "per_day": 2,
        "from": 2,
        "increase": 2,
        "subject": null,
        "body": null,
        "template_name": null,
        "enable_ctd": false,
        "schedule": null,
        "email_account": {
            "id": 732745,
            "email_from": "john@example.com",
            "type": "google",
            "delay": 30,
            "limit": 15,
            "per_day": 50,
            "schedule_required": false,
            "provider": "gmail",
            "custom_tracking_domain": null
        },
        "enable_proxy": false,
        "sent_today": 2,
        "daily_limit": 2,
        "total_saved_from_spam": 106,
        "deliverability": 88,
        "warm_up_error": null
    },
    "success": true
}
输出参数
success
Boolean。请求成功时为true
data.id
预热活动ID。
data.status
活动状态:activependingpausedcompletederror
data.reply_rate
将被回复的已接收邮件百分比(10–45)。
data.send_to_paid_domain
活动是否向付费域名发送。
data.start_date
活动开始日期(YYYY-MM-DD)。
data.campaign_deadline
活动结束日期(YYYY-MM-DD)。未设置截止日期时为null
data.strategy
发送策略:progressivesteady
data.per_day
每日发送目标。
data.from
起始每日发送量(仅限progressive策略)。
data.increase
每日发送量增量(仅限progressive策略)。
data.subject
邮件主题(仅当email_content=specific时)。
data.body
邮件正文(仅当email_content=specific时)。
data.template_name
模板名称。
data.enable_ctd
是否启用自定义跟踪域。
data.schedule
附加到活动的发送计划,或null
data.enable_proxy
是否启用动态代理。
data.sent_today
今日已发送的预热邮件数。
data.daily_limit
当前应用的每日发送限制。
data.total_saved_from_spam
活动开始以来从垃圾邮件中救回的邮件总数。
data.deliverability
收件箱送达率(%)。
data.warm_up_error
如果预热进入error状态则为错误描述,否则为null
data.email_account
已连接电子邮件账户的详情。
data.email_account.id
电子邮件账户ID。
data.email_account.email_from
账户的电子邮件地址。
data.email_account.type
账户类型(例如googlemicrosoft)。
data.email_account.delay
邮件之间的延迟(秒)。
data.email_account.limit
账户的总邮件限制。
data.email_account.per_day
账户的每日限制。
data.email_account.schedule_required
此账户是否需要计划。
data.email_account.provider
邮件提供商:gmailmicrosofthostingerzohotitangodaddyother等。
data.email_account.custom_tracking_domain
自定义跟踪域,或null

PATCH更新预热活动

此方法对现有预热活动进行部分更新。只有您传入的字段会被更改;所有其他设置保持不变。使用此方法实时更改活动设置、切换状态(activepausedcompleteddeleted),或通过发送make_endless: true来移除截止日期。

请求
PATCHhttps://api.snov.io/v2/warm-up/{id}
输入参数
id
*必需(path)
Integer。要更新的预热活动ID。
status
手动更改活动状态。允许的值:activepausedcompleteddeleted
strategy
新的发送策略:progressivesteady
per_day
新的每日发送目标。范围11000,取决于定价计划。
from
新的起始每日发送量。范围110。当strategy=progressive时必填。
increase
新的每日发送量增量。范围15。当strategy=progressive时必填。
email_content
邮件内容类型:autogeneratedspecific
subject
新的邮件主题,1–200个字符。当email_content=specific时必填。
body
新的邮件正文,1–10000个字符。当email_content=specific时必填。
reply_rate
新的回复率百分比。范围1045
campaign_deadline
新的活动结束日期(YYYY-MM-DD)。
make_endless
Boolean。传入true以移除当前的campaign_deadline并使活动无限期进行。
providers
新的目标收件人提供商(允许的值与创建预热活动相同)。
send_to_paid_domain
Boolean。
enable_ctd
Boolean。启用或禁用自定义跟踪域。
enable_proxy
Boolean。启用或禁用动态代理。
schedule_id
新的发送计划ID。
template_name
新的模板名称。
代码示例
<?php
function updateWarmUp($warmUpId)
{
    $token = getAccessToken();
    $params = json_encode([
        'reply_rate'        => 10,
        'campaign_deadline' => '2027-06-30',
        'enable_proxy'      => true
    ]);
    $options = [
        CURLOPT_URL            => 'https://api.snov.io/v2/warm-up/' . $warmUpId,
        CURLOPT_CUSTOMREQUEST  => 'PATCH',
        CURLOPT_POSTFIELDS     => $params,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_HTTPHEADER     => [
            'Authorization: Bearer ' . $token,
            'Content-Type: application/json'
        ],
    ];
    $ch = curl_init();
    curl_setopt_array($ch, $options);
    $res = json_decode(curl_exec($ch), true);

    curl_close($ch);

    return $res;

}
?>
def update_warm_up(warm_up_id):
    token = get_access_token()

    headers = {
        'Authorization': 'Bearer ' + token,
        'Content-Type': 'application/json'
    }

    params = {
        'reply_rate': 10,
        'campaign_deadline': '2027-06-30',
        'enable_proxy': True
    }

    res = requests.patch(
        f'https://api.snov.io/v2/warm-up/{warm_up_id}',
        headers=headers,
        json=params
    )

    return json.loads(res.text)
回执示例
{
    "data": {
        "id": 123
    },
    "success": true
}
输出参数
success
Boolean。预热更新成功时为true
data.id
已更新的预热活动ID。

DELETE删除预热活动

此方法通过ID删除预热活动。删除后,该活动及其统计数据将无法通过其他预热API方法访问。

请求
DELETEhttps://api.snov.io/v2/warm-up/{id}
输入参数
id
*必需(path)
Integer。要删除的预热活动ID。
代码示例
<?php
function deleteWarmUp($warmUpId)
{
    $token = getAccessToken();
    $options = [
        CURLOPT_URL            => 'https://api.snov.io/v2/warm-up/' . $warmUpId,
        CURLOPT_CUSTOMREQUEST  => 'DELETE',
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_HTTPHEADER     => [
            'Authorization: Bearer ' . $token,
            'Content-Type: application/json'
        ],
    ];
    $ch = curl_init();
    curl_setopt_array($ch, $options);
    $res = json_decode(curl_exec($ch), true);

    curl_close($ch);

    return $res;

}
?>
def delete_warm_up(warm_up_id):
    token = get_access_token()

    headers = {
        'Authorization': 'Bearer ' + token,
        'Content-Type': 'application/json'
    }

    res = requests.delete(
        f'https://api.snov.io/v2/warm-up/{warm_up_id}',
        headers=headers
    )

    return json.loads(res.text)
回执示例
{
    "data": {
        "id": 123
    },
    "success": true
}
输出参数
success
Boolean。预热删除成功时为true
data.id
已删除的预热活动ID。

GET获取预热统计数据

此方法返回预热活动的每日和按提供商分类的送达率统计数据——可以是预设时间窗口(two_weeks/month)或自定义日期范围。适用于监控收件箱率进度并发现预热效果不佳的提供商。

请求
GEThttps://api.snov.io/v2/warm-up/statistics/{id}
输入参数
id
*必需(path)
Integer。预热活动ID。
period
预设时间段。允许的值:two_weeksmonth。未提供date_from/date_to时必填。
date_from
String(YYYY-MM-DD)。自定义日期范围的开始日期。未提供period时必填。
date_to
String(YYYY-MM-DD)。自定义日期范围的结束日期。必须≥ date_from且≥活动开始日期。未提供period时必填。
代码示例
<?php
function getWarmUpStatistics($warmUpId)
{
    $token = getAccessToken();
    $params = http_build_query([
        'period' => 'two_weeks'
    ]);
    $options = [
        CURLOPT_URL            => 'https://api.snov.io/v2/warm-up/statistics/' . $warmUpId . '?' . $params,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_HTTPHEADER     => [
            'Authorization: Bearer ' . $token,
            'Content-Type: application/json'
        ],
    ];
    $ch = curl_init();
    curl_setopt_array($ch, $options);
    $res = json_decode(curl_exec($ch), true);

    curl_close($ch);

    return $res;

}
?>
def get_warm_up_statistics(warm_up_id):
    token = get_access_token()

    headers = {
        'Authorization': 'Bearer ' + token,
        'Content-Type': 'application/json'
    }

    params = {
        'period': 'two_weeks'
    }

    res = requests.get(
        f'https://api.snov.io/v2/warm-up/statistics/{warm_up_id}',
        headers=headers,
        params=params
    )

    return json.loads(res.text)
回执示例
{
    "data": {
        "daily_statistics": {
            "2026-05-30": {
                "emails_sent": 2,
                "replies": 0,
                "bounces": 0,
                "spam_emails": 0,
                "inbox_emails": 2,
                "categories_emails": 0,
                "scheduled": 0
            },
            "2026-05-31": {
                "emails_sent": 2,
                "replies": 0,
                "bounces": 0,
                "spam_emails": 0,
                "inbox_emails": 2,
                "categories_emails": 0,
                "scheduled": 0
            }
        },
        "provider_statistics": {
            "google": {
                "id": 1,
                "count": 6,
                "spam": 2,
                "percent": 75,
                "categories": 0
            },
            "outlook": {
                "id": 2,
                "count": 2,
                "spam": 0,
                "percent": 100
            },
            "hostinger": {
                "id": 4,
                "count": 2,
                "spam": 0,
                "percent": 100
            },
            "other": {
                "id": 9,
                "count": 4,
                "spam": 0,
                "percent": 100
            }
        },
        "deliverability": {
            "inbox": {
                "count": 14,
                "percent": 88
            },
            "spam": {
                "count": 2,
                "percent": 13
            },
            "categories": {
                "count": 0,
                "percent": 0
            }
        },
        "is_calculated": false
    },
    "success": true
}
输出参数
success
Boolean。请求成功时为true
data.daily_statistics
以日期(YYYY-MM-DD)为键的对象。每个值包含以下每日统计字段。
data.daily_statistics.{date}.emails_sent
当天发送的预热邮件数。
data.daily_statistics.{date}.replies
当天收到的回复数。
data.daily_statistics.{date}.bounces
当天退回的邮件数。
data.daily_statistics.{date}.spam_emails
当天进入垃圾邮件的邮件数。
data.daily_statistics.{date}.inbox_emails
当天进入收件箱的邮件数。
data.daily_statistics.{date}.categories_emails
当天进入Gmail分类标签的邮件数。
data.daily_statistics.{date}.scheduled
当天计划发送的邮件数。
data.provider_statistics
以提供商名称(googleoutlookhostinger等)为键的对象。每个值包含以下按提供商分类的统计字段。
data.provider_statistics.{provider}.id
提供商内部ID。
data.provider_statistics.{provider}.count
通过此提供商发送的邮件数。
data.provider_statistics.{provider}.spam
在此提供商中进入垃圾邮件的邮件数。
data.provider_statistics.{provider}.percent
此提供商的收件箱送达率(%)。
data.provider_statistics.{provider}.categories
进入Gmail分类标签的邮件数。不支持分类的提供商可能省略此字段。
data.deliverability.inbox.count
投递到收件箱的邮件总数。
data.deliverability.inbox.percent
收件箱送达率(%)。
data.deliverability.spam.count
投递到垃圾邮件的邮件总数。
data.deliverability.spam.percent
垃圾邮件率(%)。
data.deliverability.categories.count
投递到Gmail分类标签的邮件总数。
data.deliverability.categories.percent
分类率(%)。
data.is_calculated
Boolean。统计数据仍在处理中时为false;计算完成时为true

营销活动管理

这些方法允许您创建、配置和控制营销活动的整个生命周期——从初始设置到启动、暂停、完成和删除。

GET查看所有营销

免费

此方法显示所有用户营销的列表。如果用户属于某个团队并拥有查看团队记录的权限,则该方法也会返回在该团队中创建的所有营销。

请求
GEThttps://api.snov.io/v1/get-user-campaigns
输入参数
这个方法没有输入参数
代码示例
<?php
function userCampaigns()
{
    $token = getAccessToken();

    $params = [
        'access_token' => $token
    ];

    $params = http_build_query($params);

    $options = [
        CURLOPT_URL            => 'https://api.snov.io/v1/get-user-campaigns?'.$params,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true,
    ];

    $ch = curl_init();

    curl_setopt_array($ch, $options);

    $res = json_decode(curl_exec($ch), true);

    curl_close($ch);

    return $res;

}
?>
def user_lists():
token = get_access_token()

headers = {'Authorization': token}

url = 'https://api.snov.io/v1/get-user-campaigns'

response = requests.request('GET', url, headers=headers)

return json.loads(res.text)
回执示例
[
    {
        "id": 237945,
        "campaign": "New Campaign",
        "list_id": 8512947,
        "status": "Paused",
        "created_at": 1639469976,
        "updated_at": 1639470026,
        "started_at": 1639470021,
        "hash": "e272be8f9a6894f5b5894fe2ef77095e"
    },
    {
        "id": 237956,
        "campaign": "Test campaign",
        "list_id": 7654321,
        "status": "Draft",
        "created_at": 1638808262,
        "updated_at": 1638808262,
        "started_at": null,
        "hash": "f97fce248b77e9a1ae770b21c7bd783d"
    }
]
输出参数
id
用户营销的唯一标识符。
campaign
营销名称。
list_id
营销中使用的潜在客户列表唯一标识符。
status
营销状态。
created_at
Unix 时间戳格式的营销创建日期和时间。
updated_at
Unix 时间戳格式的最近营销更新日期和时间。
started_at
Unix 时间戳格式的营销启动日期和时间。

POST创建营销活动

此方法在您的 snov.io 工作区中创建一个新的外联营销活动。活动以 new 状态创建,可以在任何部分配置状态下保存——只有运行活动所需的字段才会被验证为必填项,其余字段可以稍后填写。支持纯邮件、纯 LinkedIn 和混合多渠道序列,包括 A/B 变体、触发器(打开、点击、回复、calendly、连接级别、LinkedIn in-mail 发送等)、延迟和目标块。此方法创建的营销活动在其消息块中没有内容。您之后通过调用 Create Email Step Content 方法来添加内容。

请求
POSThttps://api.snov.io/v2/campaigns/create
输入参数
title
*必需
String。营销活动显示名称,最多 255 个字符。
priority
*必需
String enum。营销活动发送优先级:lowmediumhigh
email_accounts
*邮件营销活动必填
Array of integers。要使用的邮件发件人账户 ID 列表。
linkedin_accounts
Array of integers。要使用的 LinkedIn 账户 ID 列表。
tracking
*邮件营销活动必填
Object。邮件跟踪设置。
tracking.open
Boolean。跟踪邮件打开情况。
tracking.link_click
Boolean。跟踪邮件中的链接点击情况。
sending_settings
*邮件营销活动必填
Object。控制邮件发送方式及跳过哪些收件人。
sending_settings.sending_priority
String enum。哪些邮件优先发送:first_emailfollow_up
sending_settings.daily_sending_all
Integer 或 null。每天向所有收件人发送的最大邮件总数。
sending_settings.daily_sending_new_recipients
Integer 或 null。每天联系的最大新收件人数量。
sending_settings.skip_unverifiable
Boolean。跳过无法验证邮件的收件人。
sending_settings.skip_unverified
Boolean。跳过邮件未经验证的收件人。
sending_settings.skip_who_replied
对已回复的潜在客户停止后续跟进。
sending_settings.skip_company_domain_who_replied
Boolean。跳过来自有人回复过的公司域名的收件人。
sending_settings.skip_recipients_without_variables_data
Boolean。跳过缺少自定义变量值的收件人。
sending_settings.skip_other_recipients_email_addresses
Boolean。如果潜在客户有多个邮箱地址,当值为 true 时仅向第一个邮箱发送。
sending_settings.skip_recipients_added_to_my_another_campaign
Boolean。跳过已加入该用户其他营销活动的收件人。
sending_settings.skip_recipients_added_to_team_another_campaign
Boolean。跳过已加入任何团队成员其他营销活动的收件人。
sending_settings.one_click_unsubscribe
Boolean。在邮件中启用一键退订标头。
recipients
*必需
Object。定义谁接收营销活动。
recipients.list_id
*必需
Integer。要发送的潜在客户列表 ID。
recipients.black_list_id
Integer。禁止发送列表的 ID。请参阅 查看所有免发送电子邮件列表
schedule_id
Integer。发送计划的 ID。请参阅 查看所有时间表
start_campaign_at
String(YYYY-MM-DD HH:MM:SS)或 null。营销活动自动开始的日期时间,例如 2027-03-25 09:00:00
complete_campaign_at
String(YYYY-MM-DD HH:MM:SS)或 null。营销活动自动停止的日期时间。
timezone
String。活动时区。支持的时区列表请参阅下方 时区 表。
complete_campaign_after_last_step
*必需
Boolean。所有收件人完成最后一个序列步骤后停止营销活动。
archive_in_months
*必需
Integer。在此月数后自动归档营销活动。允许值:1236
provider_matching
*邮件营销活动必填
Boolean。尽可能将收件人邮件提供商与发件人账户提供商匹配。只有在至少连接了两个邮件账户时才能设置为 true
deals
Object 或 null。由营销活动事件触发的 CRM 商机创建设置。
deals.event
*提供 deals 时必填
Array of strings。创建商机的事件:openclickreply
deals.pipeline_id
*提供 deals 时必填
Integer。在其中创建商机的 CRM 管道 ID。
deals.stage_id
*提供 deals 时必填
Integer。放置商机的管道阶段 ID。
deals.potential_value
Integer。预计商机价值。
deals.currency
String。交易金额的货币代码。支持的货币列表请参阅下方 货币 表。
sequence
*必需
Object。营销活动执行的步骤自动化流程。
sequence.entry
*必需
String。要执行的第一个步骤的 _ref
sequence.steps
*必需
Array of objects。序列中所有步骤的有序列表。
sequence.steps._ref
*必需
String。此步骤的唯一标识符,用于通过 next / yes / no 链接步骤。
sequence.steps.type
*必需
String enum。步骤类型:emaildelaytriggergoallinkedin
sequence.steps.next
String 或 null。此步骤之后要继续的步骤的 _ref(线性块:emaillinkedindelay)。
sequence.steps.yes
String。触发条件满足时要转到的步骤的 _ref(仅限 trigger)。
sequence.steps.no
String。触发条件不满足时要转到的步骤的 _ref(仅限 trigger)。
sequence.steps.waiting_type
*delay / trigger 必填
String enum。等待期的时间单位:minuteshoursdays
sequence.steps.waiting_val
*delay / trigger 必填
Integer。要等待的时间单位数量。每单位限制:minutes ≤ 43200hours ≤ 720days ≤ 30
sequence.steps.action
*linkedin / trigger 必填
String enum。要执行的操作或要监视的事件。请参阅下面的支持值。
sequence.steps.goal_name
*goal 必填
String。此目标步骤的标签,例如 RepliedConnectedgoal 块必须是其分支中的最后一个步骤——它不能有 next,也不能是序列的第一个步骤。
sequence.steps.content_slots
*email 必填
Integer(最小 1,最大 15)。此邮件步骤的 A/B 内容变体数量。
sequence.steps.subject
String 或 null。邮件主题行(仅限 email);支持 {{variables}}linkedin 步骤中 action=in_mail 时为必填项。
sequence.steps.body
*invite / message / in_mail 必填
String(HTML)。发送文本的 LinkedIn 操作的消息正文。不能为空。
sequence.steps.value
*endorse_skills 必填
Integer(15)用于 endorse_skills。来自 [1, 2, 3] 的 1–2 个唯一整数的数组用于 check_connection_level
sequence.steps.action 的支持值
步骤类型Action 值描述
linkedin
visit
访问潜在客户的 LinkedIn 个人资料。
linkedin
like
点赞潜在客户个人资料上的帖子。
linkedin
follow
在 LinkedIn 上关注潜在客户。
linkedin
invite
发送连接请求(需要 body)。
linkedin
message
发送 LinkedIn 私信(需要 body)。
linkedin
in_mail
发送 LinkedIn InMail(需要 bodysubject)。
linkedin
connected_on_linkedin
检查潜在客户是否已接受 LinkedIn 连接请求。
linkedin
check_connection_level
检查潜在客户的连接程度级别。
linkedin
endorse_skills
在潜在客户的个人资料上认可技能(需要 value 1–5)。
trigger
open
等待查看潜在客户是否打开了邮件。
trigger
click
等待查看潜在客户是否点击了邮件中的链接。
trigger
calendly
等待查看潜在客户是否通过 Calendly 预约。
trigger
connected_on_linkedin
系统触发器。LinkedIn connected_on_linkedin 步骤之后必须使用。connected_on_linkedin 步骤的 next 字段必须指向此触发器。
trigger
check_connection_level
根据潜在客户的 LinkedIn 连接程度进行分支。
trigger
linkedin_in_mail_sent
系统触发器。LinkedIn in_mail 步骤之后必须使用。in_mail 步骤的 next 字段必须指向此触发器。
时区
idzonezone_time
1Pacific/Midway-11:00
2US/Samoa-11:00
3US/Hawaii-10:00
4US/Alaska-09:00
5America/Los Angeles-08:00
6America/Tijuana-08:00
7PST8PDT-08:00
8America/Chihuahua-07:00
9America/Mazatlan-07:00
10Canada/Mountain-07:00
11US/Arizona-07:00
12US/Mountain-07:00
13Canada/Saskatchewan-06:00
14America/Mexico City-06:00
15America/Monterrey-06:00
16US/Central-06:00
17America/Bogota-05:00
18America/Lima-05:00
19America/Chicago-06:00
20America/Toronto-05:00
21America/New York-05:00
22Canada/Eastern-05:00
23US/East-Indiana-05:00
24US/Eastern-05:00
25America/La Paz-04:00
26America/Santiago-03:00
27Canada/Atlantic-04:00
28America/Buenos Aires-03:00
29America/Sao Paulo-03:00
30America/Montevideo-03:00
31Canada/Newfoundland-03:30
32Atlantic/South Georgia-02:00
33Atlantic/Cape Verde-01:00
34Atlantic/Azores-01:00
35Africa/Monrovia+00:00
36UTC+00:00
37Africa/Casablanca+00:00
38Europe/Dublin+00:00
39Europe/Lisbon+00:00
40Europe/London+00:00
41Europe/Amsterdam+01:00
42Europe/Belgrade+01:00
43Europe/Berlin+01:00
44Europe/Bratislava+01:00
45Europe/Brussels+01:00
46Europe/Budapest+01:00
47Europe/Copenhagen+01:00
48Europe/Ljubljana+01:00
49Europe/Madrid+01:00
50Europe/Paris+01:00
51Europe/Prague+01:00
52Europe/Rome+01:00
53Europe/Sarajevo+01:00
54Europe/Skopje+01:00
55Europe/Stockholm+01:00
56Europe/Vienna+01:00
57Europe/Warsaw+01:00
58Europe/Zagreb+01:00
59Africa/Cairo+02:00
60Africa/Harare+02:00
61Asia/Jerusalem+02:00
62Europe/Athens+02:00
63Europe/Bucharest+02:00
64Europe/Helsinki+02:00
65Europe/Istanbul+03:00
66Europe/Kyiv+02:00
67Europe/Riga+02:00
68Europe/Sofia+02:00
69Europe/Tallinn+02:00
70Europe/Vilnius+02:00
71Africa/Nairobi+03:00
72Asia/Baghdad+03:00
73Asia/Kuwait+03:00
74Asia/Riyadh+03:00
75Europe/Minsk+03:00
76Europe/Moscow+03:00
77Europe/Volgograd+03:00
78Asia/Baku+04:00
79Asia/Dubai+04:00
80Asia/Muscat+04:00
81Asia/Tbilisi+04:00
82Asia/Yerevan+04:00
83Asia/Kabul+04:30
84Asia/Karachi+05:00
85Asia/Tashkent+05:00
86Asia/Calcutta+05:30
87Asia/Kolkata+05:30
88Asia/Kathmandu+05:45
89Asia/Almaty+06:00
90Asia/Dhaka+06:00
91Asia/Urumqi+06:00
92Asia/Rangoon+06:30
93Asia/Bangkok+07:00
94Asia/Jakarta+07:00
95Asia/Novosibirsk+07:00
96Asia/Krasnoyarsk+07:00
97Asia/Shanghai+08:00
98Asia/Hong Kong+08:00
99Asia/Chongqing+08:00
100Asia/Kuala Lumpur+08:00
101Asia/Taipei+08:00
102Asia/Ulan Bator+08:00
103Australia/Perth+08:00
104Hongkong+08:00
105Singapore+08:00
106Asia/Irkutsk+08:00
107Asia/Seoul+09:00
108Asia/Tokyo+09:00
109Asia/Yakutsk+09:00
110Australia/Adelaide+10:30
111Australia/Darwin+09:30
112Australia/Brisbane+10:00
113Australia/Canberra+11:00
114Australia/Hobart+11:00
115Australia/Melbourne+11:00
116Australia/Sydney+11:00
117Pacific/Guam+10:00
118Pacific/Port Moresby+10:00
119Asia/Vladivostok+10:00
120Asia/Magadan+11:00
121Asia/Kamchatka+12:00
122Pacific/Auckland+13:00
123Pacific/Fiji+12:00
124Pacific/Wallis+12:00
125Pacific/Tongatapu+13:00
126Pacific/Kiritimati+14:00
127Africa/Abidjan+00:00
128Africa/Accra+00:00
129Africa/Addis Ababa+03:00
130Africa/Algiers+01:00
131Africa/Asmara+03:00
132Africa/Bamako+00:00
133Africa/Bangui+01:00
134Africa/Banjul+00:00
135Africa/Bissau+00:00
136Africa/Blantyre+02:00
137Africa/Brazzaville+01:00
138Africa/Bujumbura+02:00
139Africa/Ceuta+02:00
140Africa/Conakry+00:00
141Africa/Dakar+00:00
142Africa/Dar es Salaam+03:00
143Africa/Djibouti+03:00
144Africa/Douala+01:00
145Africa/El Aaiun+01:00
146Africa/Freetown+00:00
147Africa/Gaborone+02:00
148Africa/Johannesburg+02:00
149Africa/Juba+03:00
150Africa/Kampala+03:00
151Africa/Khartoum+02:00
152Africa/Kigali+02:00
153Africa/Kinshasa+01:00
154Africa/Lagos+01:00
155Africa/Libreville+01:00
156Africa/Lome+00:00
157Africa/Luanda+01:00
158Africa/Lubumbashi+02:00
159Africa/Lusaka+02:00
160Africa/Malabo+01:00
161Africa/Maputo+02:00
162Africa/Maseru+02:00
163Africa/Mbabane+02:00
164Africa/Mogadishu+03:00
165Africa/Ndjamena+01:00
166Africa/Niamey+01:00
167Africa/Nouakchott+00:00
168Africa/Ouagadougou+00:00
169Africa/Porto-Novo+01:00
170Africa/Sao Tome+00:00
171Africa/Tripoli+02:00
172Africa/Tunis+01:00
173Africa/Windhoek+02:00
174America/Adak-09:00
175America/Anchorage-08:00
176America/Anguilla-04:00
177America/Antigua-04:00
178America/Araguaina-03:00
179America/Argentina/Buenos Aires-03:00
180America/Argentina/Catamarca-03:00
181America/Argentina/Cordoba-03:00
182America/Argentina/Jujuy-03:00
183America/Argentina/La Rioja-03:00
184America/Argentina/Mendoza-03:00
185America/Argentina/Rio Gallegos-03:00
186America/Argentina/Salta-03:00
187America/Argentina/San Juan-03:00
188America/Argentina/San Luis-03:00
189America/Argentina/Tucuman-03:00
190America/Argentina/Ushuaia-03:00
191America/Aruba-04:00
192America/Asuncion-04:00
193America/Atikokan-05:00
194America/Bahia-03:00
195America/Bahia Banderas-05:00
196America/Barbados-04:00
197America/Belem-03:00
198America/Belize-06:00
199America/Blanc-Sablon-04:00
200America/Boa Vista-04:00
201America/Boise-06:00
202America/Cambridge Bay-06:00
203America/Campo Grande-04:00
204America/Cancun-05:00
205America/Caracas-04:00
206America/Cayenne-03:00
207America/Cayman-05:00
208America/Costa Rica-06:00
209America/Creston-07:00
210America/Cuiaba-04:00
211America/Curacao-04:00
212America/Danmarkshavn+00:00
213America/Dawson-07:00
214America/Dawson Creek-07:00
215America/Denver-06:00
216America/Detroit-04:00
217America/Dominica-04:00
218America/Edmonton-06:00
219America/Eirunepe-05:00
220America/El Salvador-06:00
221America/Fort Nelson-07:00
222America/Fortaleza-03:00
223America/Glace Bay-03:00
224America/Godthab-02:00
225America/Goose Bay-03:00
226America/Grand Turk-04:00
227America/Grenada-04:00
228America/Guadeloupe-04:00
229America/Guatemala-06:00
230America/Guayaquil-05:00
231America/Guyana-04:00
232America/Halifax-03:00
233America/Havana-04:00
234America/Hermosillo-07:00
235America/Indiana/Indianapolis-04:00
236America/Indiana/Knox-05:00
237America/Indiana/Marengo-04:00
238America/Indiana/Petersburg-04:00
239America/Indiana/Tell City-05:00
240America/Indiana/Vevay-04:00
241America/Indiana/Vincennes-04:00
242America/Indiana/Winamac-04:00
243America/Inuvik-06:00
244America/Iqaluit-04:00
245America/Jamaica-05:00
246America/Juneau-08:00
247America/Kentucky/Louisville-04:00
248America/Kentucky/Monticello-04:00
249America/Kralendijk-04:00
252America/Lower Princes-04:00
253America/Maceio-03:00
254America/Managua-06:00
255America/Manaus-04:00
256America/Marigot-04:00
257America/Martinique-04:00
258America/Matamoros-05:00
259America/Menominee-05:00
260America/Merida-05:00
261America/Metlakatla-08:00
263America/Miquelon-02:00
264America/Moncton-03:00
265America/Montserrat-04:00
266America/Nassau-04:00
268America/Nipigon-04:00
269America/Nome-08:00
270America/Noronha-02:00
271America/North Dakota/Beulah-05:00
272America/North Dakota/Center-05:00
273America/North Dakota/New Salem-05:00
274America/Ojinaga-06:00
275America/Panama-05:00
276America/Pangnirtung-04:00
277America/Paramaribo-03:00
278America/Phoenix-07:00
279America/Port-au-Prince-04:00
280America/Port of Spain-04:00
281America/Porto Velho-04:00
282America/Puerto Rico-04:00
283America/Punta Arenas-03:00
284America/Rainy River-05:00
285America/Rankin Inlet-05:00
286America/Recife-03:00
287America/Regina-06:00
288America/Resolute-05:00
289America/Rio Branco-05:00
290America/Santarem-03:00
291America/Santo Domingo-04:00
293America/Scoresbysund+00:00
294America/Sitka-08:00
295America/St Barthelemy-04:00
296America/St Johns-02:30
297America/St Kitts-04:00
298America/St Lucia-04:00
299America/St Thomas-04:00
300America/St Vincent-04:00
301America/Swift Current-06:00
302America/Tegucigalpa-06:00
303America/Thule-03:00
304America/Thunder Bay-04:00
305America/Tortola-04:00
306America/Vancouver-07:00
307America/Whitehorse-07:00
308America/Winnipeg-05:00
309America/Yakutat-08:00
310America/Yellowknife-06:00
311Antarctica/Casey+08:00
312Antarctica/Davis+07:00
313Antarctica/DumontDUrville+10:00
314Antarctica/Macquarie+11:00
315Antarctica/Mawson+05:00
316Antarctica/McMurdo+12:00
317Antarctica/Palmer-03:00
318Antarctica/Rothera-03:00
319Antarctica/Syowa+03:00
320Antarctica/Troll+02:00
321Antarctica/Vostok+06:00
322Arctic/Longyearbyen+02:00
323Asia/Aden+03:00
324Asia/Amman+03:00
325Asia/Anadyr+12:00
326Asia/Aqtau+05:00
327Asia/Aqtobe+05:00
328Asia/Ashgabat+05:00
329Asia/Atyrau+05:00
330Asia/Bahrain+03:00
331Asia/Barnaul+07:00
332Asia/Beirut+03:00
333Asia/Bishkek+06:00
334Asia/Brunei+08:00
335Asia/Chita+09:00
336Asia/Choibalsan+08:00
337Asia/Colombo+05:30
338Asia/Damascus+03:00
339Asia/Dili+09:00
340Asia/Dushanbe+05:00
341Asia/Famagusta+03:00
342Asia/Gaza+03:00
343Asia/Hebron+03:00
344Asia/Ho Chi Minh+07:00
346Asia/Hovd+07:00
347Asia/Jayapura+09:00
348Asia/Khandyga+09:00
350Asia/Kuching+08:00
351Asia/Macau+08:00
352Asia/Makassar+08:00
353Asia/Manila+08:00
354Asia/Nicosia+03:00
355Asia/Novokuznetsk+07:00
356Asia/Omsk+06:00
357Asia/Oral+05:00
358Asia/Phnom Penh+07:00
359Asia/Pontianak+07:00
360Asia/Pyongyang+09:00
361Asia/Qatar+03:00
362Asia/Qostanay+06:00
363Asia/Qyzylorda+05:00
364Asia/Sakhalin+11:00
365Asia/Samarkand+05:00
366Asia/Singapore+08:00
367Asia/Srednekolymsk+11:00
368Asia/Tehran+04:30
369Asia/Thimphu+06:00
370Asia/Tomsk+07:00
371Asia/Ulaanbaatar+08:00
372Asia/Ust-Nera+10:00
373Asia/Vientiane+07:00
374Asia/Yangon+06:30
375Asia/Yekaterinburg+05:00
376Atlantic/Bermuda-03:00
377Atlantic/Canary+01:00
379Atlantic/Faroe+01:00
380Atlantic/Madeira+01:00
381Atlantic/Reykjavik+00:00
383Atlantic/St Helena+00:00
384Atlantic/Stanley-03:00
385Australia/Broken Hill+09:30
386Australia/Currie+10:00
387Australia/Eucla+08:45
388Australia/Lindeman+10:00
389Australia/Lord Howe+10:30
390Europe/Andorra+02:00
391Europe/Astrakhan+04:00
392Europe/Busingen+02:00
393Europe/Chisinau+03:00
394Europe/Gibraltar+02:00
395Europe/Guernsey+01:00
396Europe/Isle of Man+01:00
397Europe/Jersey+01:00
398Europe/Kaliningrad+02:00
399Europe/Kirov+03:00
400Europe/Luxembourg+02:00
401Europe/Malta+02:00
402Europe/Mariehamn+03:00
403Europe/Monaco+02:00
404Europe/Oslo+02:00
405Europe/Podgorica+02:00
406Europe/Samara+04:00
407Europe/San Marino+02:00
408Europe/Saratov+04:00
409Europe/Simferopol+03:00
410Europe/Tirane+02:00
411Europe/Ulyanovsk+04:00
412Europe/Uzhgorod+03:00
413Europe/Vaduz+02:00
414Europe/Vatican+02:00
415Europe/Zaporozhye+03:00
416Europe/Zurich+02:00
417Indian/Antananarivo+03:00
418Indian/Chagos+06:00
419Indian/Christmas+07:00
420Indian/Cocos+06:30
421Indian/Comoro+03:00
422Indian/Kerguelen+05:00
423Indian/Mahe+04:00
424Indian/Maldives+05:00
425Indian/Mauritius+04:00
426Indian/Mayotte+03:00
427Indian/Reunion+04:00
428Pacific/Apia+13:00
429Pacific/Bougainville+11:00
430Pacific/Chatham+12:45
431Pacific/Chuuk+10:00
432Pacific/Easter-06:00
433Pacific/Efate+11:00
434Pacific/Enderbury+13:00
435Pacific/Fakaofo+13:00
436Pacific/Funafuti+12:00
437Pacific/Galapagos-06:00
438Pacific/Gambier-09:00
439Pacific/Guadalcanal+11:00
440Pacific/Honolulu-10:00
441Pacific/Kosrae+11:00
442Pacific/Kwajalein+12:00
443Pacific/Majuro+12:00
444Pacific/Marquesas-09:30
445Pacific/Nauru+12:00
446Pacific/Niue-11:00
447Pacific/Norfolk+11:00
448Pacific/Noumea+11:00
449Pacific/Pago Pago-11:00
450Pacific/Palau+09:00
451Pacific/Pitcairn-08:00
452Pacific/Pohnpei+11:00
454Pacific/Rarotonga-10:00
455Pacific/Saipan+10:00
456Pacific/Tahiti-10:00
457Pacific/Tarawa+12:00
458Pacific/Wake+12:00
货币
idnamecodesymbol
1US DollarUSD$
2Canadian DollarCADCA$
3EuroEUR
4United Arab Emirates DirhamAEDAED
5Afghan AfghaniAFNAf
6Albanian LekALLALL
7Armenian DramAMDAMD
8Argentine PesoARSAR$
9Australian DollarAUDAU$
10Azerbaijani ManatAZNman.
11Bosnia-Herzegovina Convertible MarkBAMKM
12Bangladeshi TakaBDTTk
13Bulgarian LevBGNBGN
14Bahraini DinarBHDBD
15Burundian FrancBIFFBu
16Brunei DollarBNDBN$
17Bolivian BolivianoBOBBs
18Brazilian RealBRLR$
19Botswanan PulaBWPBWP
20Belarusian RubleBYNBr
21Belize DollarBZDBZ$
22Congolese FrancCDFCDF
23Swiss FrancCHFCHF
24Chilean PesoCLPCL$
25Chinese YuanCNYCN¥
26Colombian PesoCOPCO$
27Costa Rican ColónCRC
28Cape Verdean EscudoCVECV$
29Czech Republic KorunaCZK
30Djiboutian FrancDJFFdj
31Danish KroneDKKDkr
32Dominican PesoDOPRD$
33Algerian DinarDZDDA
34Estonian KroonEEKEkr
35Egyptian PoundEGPEGP
36Eritrean NakfaERNNfk
37Ethiopian BirrETBBr
38British Pound SterlingGBP£
39Georgian LariGELGEL
40Ghanaian CediGHSGH₵
41Guinean FrancGNFFG
42Guatemalan QuetzalGTQGTQ
43Hong Kong DollarHKDHK$
44Honduran LempiraHNLHNL
45Croatian KunaHRKkn
46Hungarian ForintHUFFt
47Indonesian RupiahIDRRp
48Israeli New SheqelILS
49Indian RupeeINRRs
50Iraqi DinarIQDIQD
51Iranian RialIRRIRR
52Icelandic KrónaISKIkr
53Jamaican DollarJMDJ$
54Jordanian DinarJODJD
55Japanese YenJPY¥
56Kenyan ShillingKESKsh
57Cambodian RielKHRKHR
58Comorian FrancKMFCF
59South Korean WonKRW
60Kuwaiti DinarKWDKD
61Kazakhstani TengeKZTKZT
62Lebanese PoundLBPLB£
63Sri Lankan RupeeLKRSLRs
64Lithuanian LitasLTLLt
65Latvian LatsLVLLs
66Libyan DinarLYDLD
67Moroccan DirhamMADMAD
68Moldovan LeuMDLMDL
69Malagasy AriaryMGAMGA
70Macedonian DenarMKDMKD
71Myanma KyatMMKMMK
72Macanese PatacaMOPMOP$
73Mauritian RupeeMURMURs
74Mexican PesoMXNMX$
75Malaysian RinggitMYRRM
76Mozambican MeticalMZNMTn
77Namibian DollarNADN$
78Nigerian NairaNGN
79Nicaraguan CórdobaNIOC$
80Norwegian KroneNOKNkr
81Nepalese RupeeNPRNPRs
82New Zealand DollarNZDNZ$
83Omani RialOMROMR
84Panamanian BalboaPABB/.
85Peruvian Nuevo SolPENS/.
86Philippine PesoPHP
87Pakistani RupeePKRPKRs
88Polish ZlotyPLN
89Paraguayan GuaraniPYG
90Qatari RialQARQR
91Romanian LeuRONRON
92Serbian DinarRSDdin.
93Russian RubleRUBRUB
94Rwandan FrancRWFRWF
95Saudi RiyalSARSR
96Sudanese PoundSDGSDG
97Swedish KronaSEKSkr
98Singapore DollarSGDS$
99Somali ShillingSOSSsh
100Syrian PoundSYPSY£
101Thai BahtTHB฿
102Tunisian DinarTNDDT
103Tongan PaʻangaTOPT$
104Turkish LiraTRYTL
105Trinidad and Tobago DollarTTDTT$
106New Taiwan DollarTWDNT$
107Tanzanian ShillingTZSTSh
108Ukrainian HryvniaUAH
109Ugandan ShillingUGXUSh
110Uruguayan PesoUYU$U
111Uzbekistan SomUZSUZS
112Venezuelan BolívarVEFBs.F.
113Vietnamese DongVND
114CFA Franc BEACXAFFCFA
115CFA Franc BCEAOXOFCFA
116Yemeni RialYERYR
117South African RandZARR
118Zambian KwachaZMKZK
119Zimbabwean DollarZWLZWL$
代码示例
<?php
function createCampaign() {
    $token = getAccessToken();

    $requestParameters = [
        'title'             => 'My top campaign',
        'email_accounts'    => [649079],
        'linkedin_accounts' => [],
        'priority'          => 'high',
        'tracking' => [
            'open'       => true,
            'link_click' => true
        ],
        'sending_settings' => [
            'sending_priority'                               => 'first_email',
            'daily_sending_all'                              => 10,
            'daily_sending_new_recipients'                   => 5,
            'skip_unverifiable'                              => true,
            'skip_unverified'                                => false,
            'skip_who_replied'                               => true,
            'skip_company_domain_who_replied'                => false,
            'skip_recipients_without_variables_data'         => true,
            'skip_other_recipients_email_addresses'          => true,
            'skip_recipients_added_to_my_another_campaign'   => false,
            'skip_recipients_added_to_team_another_campaign' => false,
            'one_click_unsubscribe'                          => true,
            'delay_type'                                     => 'random',
            'delay_from'                                     => 600,
            'delay_to'                                       => 900
        ],
        'recipients' => [
            'list_id'       => 32,
            'black_list_id' => 8
        ],
        'schedule_id'                       => 4,
        'start_campaign_at'                 => '2027-03-25 09:00:00',
        'complete_campaign_at'              => '2027-03-28 06:00:00',
        'timezone'                          => 'America/New_York',
        'complete_campaign_after_last_step' => false,
        'archive_in_months'                 => 3,
        'provider_matching'                 => false,
        'sequence' => [
            'entry' => '1773996379996',
            'steps' => [
                [
                    '_ref'          => '1773996379996',
                    'type'          => 'email',
                    'content_slots' => 3,
                    'next'          => '1774364404811'
                ],
                [
                    '_ref'      => '1774364404811',
                    'type'      => 'goal',
                    'goal_name' => 'end'
                ]
            ]
        ]
    ];

    $options = [
        CURLOPT_URL            => 'https://api.snov.io/v2/campaigns/create',
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_POST           => true,
        CURLOPT_POSTFIELDS     => json_encode($requestParameters),
        CURLOPT_HTTPHEADER     => [
            'Authorization: Bearer ' . $token,
            'Content-Type: application/json',
        ],
    ];

    $ch = curl_init();
    curl_setopt_array($ch, $options);
    $res = json_decode(curl_exec($ch), true);
    curl_close($ch);

    return $res;
}
?>
import json
import requests

def create_campaign():
    token = get_access_token()

    headers = {
        'Authorization': 'Bearer ' + token,
        'Content-Type': 'application/json'
    }

    request_parameters = {
        'title': 'My top campaign',
        'email_accounts': [649079],
        'linkedin_accounts': [],
        'priority': 'high',
        'tracking': {
            'open': True,
            'link_click': True
        },
        'sending_settings': {
            'sending_priority': 'first_email',
            'daily_sending_all': 10,
            'daily_sending_new_recipients': 5,
            'skip_unverifiable': True,
            'skip_unverified': False,
            'skip_who_replied': True,
            'skip_company_domain_who_replied': False,
            'skip_recipients_without_variables_data': True,
            'skip_other_recipients_email_addresses': True,
            'skip_recipients_added_to_my_another_campaign': False,
            'skip_recipients_added_to_team_another_campaign': False,
            'one_click_unsubscribe': True,
            'delay_type': 'random',
            'delay_from': 600,
            'delay_to': 900
        },
        'recipients': {
            'list_id': 32,
            'black_list_id': 8
        },
        'schedule_id': 4,
        'start_campaign_at': '2027-03-25 09:00:00',
        'complete_campaign_at': '2027-03-28 06:00:00',
        'timezone': 'America/New_York',
        'complete_campaign_after_last_step': False,
        'archive_in_months': 3,
        'provider_matching': False,
        'sequence': {
            'entry': '1773996379996',
            'steps': [
                {
                    '_ref': '1773996379996',
                    'type': 'email',
                    'content_slots': 3,
                    'next': '1774364404811'
                },
                {
                    '_ref': '1774364404811',
                    'type': 'goal',
                    'goal_name': 'end'
                }
            ]
        }
    }

    res = requests.post(
        'https://api.snov.io/v2/campaigns/create',
        json=request_parameters,
        headers=headers
    )

    return json.loads(res.text)
回执示例
{
    "success": true,
    "data": {
        "id": 37505,
        "status": "new",
        "title": "My top campaign",
        "email_accounts": [649079],
        "linkedin_accounts": [],
        "priority": "high",
        "tracking": {
            "open": true,
            "link_click": true
        },
        "sending_settings": {
            "sending_priority": "first_email",
            "daily_sending_all": 10,
            "daily_sending_new_recipients": 5,
            "skip_unverifiable": true,
            "skip_unverified": false,
            "skip_who_replied": true,
            "skip_company_domain_who_replied": false,
            "skip_recipients_without_variables_data": true,
            "skip_other_recipients_email_addresses": true,
            "skip_recipients_added_to_my_another_campaign": false,
            "skip_recipients_added_to_team_another_campaign": false,
            "one_click_unsubscribe": true,
            "delay_type": "random",
            "delay_from": 600,
            "delay_to": 900
        },
        "recipients": {
            "list_id": 32,
            "black_list_id": 8
        },
        "schedule_id": 4,
        "start_campaign_at": "2027-03-25 09:00:00",
        "complete_campaign_at": "2027-03-28 06:00:00",
        "timezone": "America/New_York",
        "complete_campaign_after_last_step": false,
        "archive_in_months": 3,
        "provider_matching": false,
        "sequence": {
            "entry": "1773996379996",
            "steps": [
                {
                    "_ref": "1773996379996",
                    "type": "email",
                    "content_slots": 3,
                    "content": [
                        { "id": 17739963799960, "plain_text": false, "usage": "active" },
                        { "id": 17739963799961, "plain_text": false, "usage": "active" },
                        { "id": 17739963799962, "plain_text": false, "usage": "active" }
                    ],
                    "next": "1774364404811"
                },
                {
                    "_ref": "1774364404811",
                    "type": "goal",
                    "goal_name": "end"
                }
            ]
        }
    }
}
输出参数
success
Boolean。营销活动创建成功时为 true
data.id
已创建营销活动的 ID。
data.status
营销活动状态。新创建的营销活动以 new 状态返回。
data.title
营销活动名称。
data.email_accounts
附加到营销活动的发件人邮件账户 ID 数组。
data.linkedin_accounts
附加到营销活动的 LinkedIn 账户 ID 数组。
data.priority
营销活动优先级(lowmediumhigh)。
data.tracking
邮件跟踪设置(openlink_click)。
data.sending_settings
发送设置,按服务器接受的原样回传,包括延迟配置。
data.recipients
收件人列表(list_idblack_list_id)。
data.schedule_id
附加到营销活动的发送计划 ID,或 null
data.start_campaign_at
营销活动开始发送的日期时间。
data.complete_campaign_at
营销活动停止发送的日期时间。
data.timezone
营销活动运行的时区标识符。
data.complete_campaign_after_last_step
营销活动是否在最后一个步骤交付后自动完成。
data.archive_in_months
自动归档期(月)。
data.provider_matching
是否启用邮件提供商匹配。
data.sequence
营销活动流程图,以相同结构回传。每个 email 步骤都通过描述生成的内容插槽(idplain_textusage)的 content 数组进行丰富。
data.deals
商机创建设置,仅在请求中提供了 deals 时才存在。

GET获取营销活动信息

此方法允许您检索特定营销活动的信息,例如:已连接的发件人账户、发送设置、收件人列表信息以及序列步骤的详细信息。

请求
GEThttps://api.snov.io/v2/campaigns/{campaign_id}
输入参数
campaign_id
*必需
您想要查看信息的营销活动的唯一标识符。
代码示例
<?php
function getCampaign(int $campaignId)
{
    $token = getAccessToken();

    $url = 'https://api.snov.io/v2/campaigns/' . $campaignId;

    $options = [
        CURLOPT_URL            => $url,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_HTTPHEADER     => [
            'Authorization: Bearer ' . $token,
            'Content-Type: application/json',
        ],
    ];

    $ch = curl_init();

    curl_setopt_array($ch, $options);

    $res = json_decode(curl_exec($ch), true);

    curl_close($ch);

    return $res;
}
?>
import requests, json

def get_campaign(campaign_id):
    token = get_access_token()

    headers = {
        'Authorization': 'Bearer ' + token,
        'Content-Type': 'application/json'
    }

    url = 'https://api.snov.io/v2/campaigns/' + str(campaign_id)

    res = requests.get(url, headers=headers)

    return json.loads(res.text)
回执示例
{
    "success": true,
    "data": {
        "id": 37505,
        "status": "new",
        "title": "My top campaign",
        "email_accounts": [649079],
        "linkedin_accounts": [],
        "priority": "high",
        "tracking": {
            "open": true,
            "link_click": true
        },
        "sending_settings": {
            "sending_priority": "first_email",
            "daily_sending_all": 10,
            "daily_sending_new_recipients": 5,
            "skip_unverifiable": true,
            "skip_unverified": false,
            "skip_who_replied": true,
            "skip_company_domain_who_replied": false,
            "skip_recipients_without_variables_data": true,
            "skip_other_recipients_email_addresses": true,
            "skip_recipients_added_to_my_another_campaign": false,
            "skip_recipients_added_to_team_another_campaign": false,
            "one_click_unsubscribe": true
        },
        "recipients": {
            "list_id": 32,
            "black_list_id": 8
        },
        "schedule_id": 4,
        "start_campaign_at": "2027-03-25 09:00:00",
        "complete_campaign_at": "2027-03-28 06:00:00",
        "timezone": "America/New_York",
        "complete_campaign_after_last_step": false,
        "archive_in_months": 3,
        "provider_matching": false,
        "sequence": {
            "entry": "1773996379996",
            "steps": [
                {
                    "_ref": "1773996379996",
                    "type": "email",
                    "content_slots": 3,
                    "content": [
                        { "id": 17739963799960, "plain_text": false, "usage": "active" },
                        { "id": 17739963799961, "plain_text": false, "usage": "active" },
                        { "id": 17739963799962, "plain_text": false, "usage": "active" }
                    ],
                    "next": "1774364404811"
                },
                {
                    "_ref": "1774364404811",
                    "type": "goal",
                    "goal_name": "end"
                }
            ]
        }
    }
}
输出参数
success
布尔值。成功获取营销活动信息时返回 true
data.id
营销活动的 ID。
data.status
营销活动状态。新创建的营销活动将以 new 状态返回。
data.title
营销活动名称。
data.email_accounts
附加到营销活动的发件人邮箱账户 ID 数组。
data.linkedin_accounts
附加到营销活动的 LinkedIn 账户 ID 数组。
data.priority
营销活动优先级(lowmediumhigh)。
data.tracking
邮件追踪设置(openlink_click)。
data.sending_settings
发送设置将原样返回,与服务器接受的内容完全一致,包括延迟配置。
data.recipients
收件人列表(list_idblack_list_id)。
data.schedule_id
附加到营销活动的发送计划 ID,或 null
data.start_campaign_at
营销活动开始发送的日期和时间。
data.complete_campaign_at
营销活动停止发送的日期和时间。
data.timezone
营销活动运行的时区标识符。
data.complete_campaign_after_last_step
营销活动是否在最后一步发送后自动完成。
data.archive_in_months
自动归档周期(月)。
data.provider_matching
是否启用邮件提供商匹配。
data.sequence
营销活动流程图,以相同的结构原样返回。每个 email 步骤都会附带一个 content 数组,描述生成的内容槽(idplain_textusage)。
data.deals
交易创建设置,仅在请求中提供了 deals 时才会出现。

PATCH更新营销活动

此方法对 snov.io 工作区中现有推广活动进行局部更新。仅修改请求体中包含的字段;未提及的字段保持不变。嵌套对象(trackingsending_settingsrecipientsdeals)同样执行合并操作——发送 {"tracking": {"open": false}} 不会清除 link_click。请求体与创建营销活动的结构相同,因此可以发送 titlepriorityemail_accountslinkedin_accountstrackingsending_settingsrecipientsschedule_idstart_campaign_atcomplete_campaign_attimezonecomplete_campaign_after_last_steparchive_in_monthsprovider_matchingsequencedeals 中的任意子集。

核心设置(下方标注 (core) 的字段)仅在营销活动处于 new(草稿)状态时可写——一旦活动进入 pausedactivescheduledcompletedarchived 状态,这些字段将被锁定。

提供 sequence 时,该数组将完全替换现有流程图。_ref 与现有数字步骤 ID 匹配的步骤将原地更新;非数字 _ref 的步骤将被创建为新步骤;数组中缺失的现有步骤将被删除。

请求
PATCHhttps://api.snov.io/v2/campaigns/{campaign_id}
输入参数
campaign_id
*必需(path)
整数。要更新的营销活动 ID。
title
字符串。营销活动显示名称。最多 255 个字符。
priority
字符串枚举。发送优先级:lowmediumhigh
email_accounts
整数数组。邮件发送账户 ID 列表。如果活动营销活动中不包含任何邮件步骤,则无法添加邮件账户。
linkedin_accounts
整数数组。LinkedIn 账户 ID 列表。如果活动营销活动中不包含任何 LinkedIn 步骤,则无法添加 LinkedIn 账户。
provider_matching
布尔值。将收件人邮件提供商与发件账户提供商匹配。仅 LinkedIn 活动始终为 false
complete_campaign_after_last_step
布尔值。所有收件人通过最后一个序列步骤后自动停止营销活动。
archive_in_months
整数。经过指定月数后自动归档。允许值:1236
schedule_id
整数或 null。发送计划 ID。不存在的 ID 返回 404/422
start_campaign_at
字符串(YYYY-MM-DD HH:MM:SS)或 null。营销活动应自动启动的日期时间。如果创建时该字段不存在,则无法添加;null 无效(不会清除现有值)。
complete_campaign_at
字符串(YYYY-MM-DD HH:MM:SS)或 null。营销活动应自动停止的日期时间。必须晚于 start_campaign_atnull 无效。
timezone
字符串或 null。用于日期字段的时区,接受 IANA 时区标识符,格式为 Region/City,例如 America/New_York。仅在营销活动存在 start_campaign_at 时生效。
recipients
(core)
对象。收件人配置。已启动的营销活动中被锁定,草稿中可编辑。
recipients.list_id
(core)
整数。潜在客户列表 ID。
recipients.black_list_id
(core)
整数或 null。要排除的黑名单 ID。
tracking
对象。邮件跟踪设置。仅 LinkedIn 活动将忽略此字段。
tracking.open
布尔值。跟踪邮件打开情况。
tracking.link_click
布尔值。跟踪邮件中的链接点击。
sending_settings
对象。控制邮件发送方式及跳过哪些收件人。
sending_settings.sending_priority
字符串枚举。哪些邮件优先发送:first_emailfollow_up
sending_settings.daily_sending_all
整数或 null。每天发送给所有收件人的最大邮件数。null 取消限制。
sending_settings.daily_sending_new_recipients
整数或 null。每天联系新收件人的最大数量。null 取消限制。
sending_settings.skip_who_replied
布尔值。对已回复的潜在客户停止跟进。
sending_settings.skip_company_domain_who_replied
布尔值。跳过已有人回复的公司域名下的收件人。
sending_settings.skip_unverifiable
(core)
布尔值。跳过无法验证邮件的收件人。已启动的营销活动中被锁定。
sending_settings.skip_unverified
(core)
布尔值。跳过邮件未经验证的收件人。已启动的营销活动中被锁定。
sending_settings.skip_other_recipients_email_addresses
(core)
布尔值。如果潜在客户有多个邮件地址,当值为 true 时仅发送至第一个邮件。已启动的营销活动中被锁定。
sending_settings.skip_recipients_added_to_my_another_campaign
(core)
布尔值。跳过已在该用户另一个营销活动中的收件人。已启动的营销活动中被锁定。
sending_settings.skip_recipients_added_to_team_another_campaign
(core)
布尔值。跳过在团队任何成员的另一个营销活动中的收件人。已启动的营销活动中被锁定。
sending_settings.skip_recipients_without_variables_data
布尔值。跳过缺少自定义变量值的收件人。
sending_settings.one_click_unsubscribe
布尔值。在邮件中启用一键退订标头。
deals
对象或 null。CRM 商机创建设置。传递 null 可移除商机配置。
deals.event
*deals 时必填
字符串数组。触发商机创建的事件:openclickreply
deals.pipeline_id
*deals 时必填
整数。CRM 管道 ID。
deals.stage_id
*deals 时必填
整数。管道阶段 ID。
deals.potential_value
整数。预计商机价值。必须为正数。
deals.currency
字符串。商机价值的货币代码,例如 USDEUR
sequence
对象。完整替换营销活动序列——提供时将替换整个流程图。
sequence.entry
*sequence 时必填
字符串。要执行的第一个步骤的 _ref
sequence.steps
*sequence 时必填
步骤对象数组。完整步骤列表。
sequence.steps._ref
*必需
字符串。步骤标识符。数字 _ref 更新现有步骤;非数字 _ref 创建新步骤。
sequence.steps.type
*必需
字符串枚举。步骤类型:emaildelaytriggergoallinkedin。现有步骤(数字 _ref)不可更改类型。
sequence.steps.next
字符串或 null。此步骤后继步骤的 _ref(线性块:emaillinkedindelay)。
sequence.steps.yes
字符串。触发条件满足时跳转步骤的 _ref(仅 trigger)。
sequence.steps.no
字符串。触发条件不满足时跳转步骤的 _ref(仅 trigger)。
sequence.steps.waiting_type
*delay / trigger 时必填
字符串枚举。时间单位:minuteshoursdays
sequence.steps.waiting_val
*delay / trigger 时必填
整数。等待的时间单位数。delaytrigger 步骤最小为 1。各单位限制:minutes ≤ 43200hours ≤ 720days ≤ 30
sequence.steps.action
*linkedin / trigger 时必填
字符串枚举。要执行的操作或要监听的事件。请参阅下方支持的值。
sequence.steps.goal_name
*goal 时必填
字符串。该目标步骤的标签,例如 RepliedConnectedgoal 块必须是其分支中的最后一步——不能有 next,也不能是序列的第一步。
sequence.steps.content_slots
*email 时必填
整数(最小 1,最大 15)。A/B 内容变体数量。
sequence.steps.content
*更新现有步骤时 email 必填
对象数组。从 GET 响应复制的内容元数据;每项为:{"id": <int>, "plain_text": <bool>, "usage": "active"}
sequence.steps.subject
字符串或 null。邮件或 InMail 主题行;支持 {{variables}}email 步骤可选;action=in_maillinkedin 步骤必填。
sequence.steps.body
*invite / message / in_mail 时必填
字符串(HTML)。发送文本的 LinkedIn 操作的消息正文。
sequence.steps.value
*endorse_skills / check_connection_level 时必填
endorse_skills 时为整数(15);check_connection_level 触发器时为整数数组(有效连接度级别)。
sequence.steps.action 的支持值
linkedinvisit访问潜在客户的 LinkedIn 主页。
linkedinlike为潜在客户主页上的帖子点赞。
linkedinfollow在 LinkedIn 上关注潜在客户。
linkedininvite发送连接请求(需要 body)。
linkedinmessage发送 LinkedIn 私信(需要 body)。
linkedinin_mail发送 LinkedIn InMail(需要 bodysubject;后面必须跟一个 linkedin_in_mail_sent 触发器)。
linkedinconnected_on_linkedin检查潜在客户是否已接受 LinkedIn 上的连接请求。
linkedincheck_connection_level检查潜在客户的人脉度。
linkedinendorse_skills在潜在客户主页上为技能背书(需要 value 1–5)。
triggeropen等待查看潜在客户是否打开邮件。
triggerclick等待查看潜在客户是否点击邮件中的链接。
triggercalendly等待查看潜在客户是否通过 Calendly 预约(必须跟在邮件步骤后面;最多 30 天)。
triggerconnected_on_linkedin系统触发器。在 LinkedIn connected_on_linkedin 步骤之后必须添加。connected_on_linkedin 步骤的 next 字段必须指向此触发器。
triggercheck_connection_level根据潜在客户的 LinkedIn 人脉度进行分支(需要 value:有效度级别的数组)。
triggerlinkedin_in_mail_sent系统触发器。LinkedIn in_mail 步骤后必须使用。in_mail 步骤的 next 字段必须指向此触发器。
代码示例
<?php
function updateCampaign($campaignId)
{
    $token = getAccessToken();

    $requestParameters = [
        'title'    => 'Updated title via API',
        'priority' => 'medium',
        'tracking' => [
            'open'       => true,
            'link_click' => false
        ],
        'sending_settings' => [
            'sending_priority'             => 'follow_up',
            'daily_sending_all'            => null,
            'daily_sending_new_recipients' => 15,
            'skip_who_replied'             => true
        ]
    ];

    $options = [
        CURLOPT_URL            => 'https://api.snov.io/v2/campaigns/' . $campaignId,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_CUSTOMREQUEST  => 'PATCH',
        CURLOPT_POSTFIELDS     => json_encode($requestParameters),
        CURLOPT_HTTPHEADER     => [
            'Authorization: Bearer ' . $token,
            'Content-Type: application/json',
        ],
    ];

    $ch = curl_init();
    curl_setopt_array($ch, $options);
    $res = json_decode(curl_exec($ch), true);
    curl_close($ch);

    return $res;
}
?>
def update_campaign(campaign_id):
    token = get_access_token()
    headers = {
        'Authorization': 'Bearer ' + token,
        'Content-Type': 'application/json'
    }

    request_parameters = {
        'title': 'Updated title via API',
        'priority': 'medium',
        'tracking': {
            'open': True,
            'link_click': False
        },
        'sending_settings': {
            'sending_priority': 'follow_up',
            'daily_sending_all': None,
            'daily_sending_new_recipients': 15,
            'skip_who_replied': True
        }
    }

    res = requests.patch(
        f'https://api.snov.io/v2/campaigns/{campaign_id}',
        json=request_parameters,
        headers=headers
    )
    return json.loads(res.text)
回执示例
{
    "success": true,
    "data": {
        "id": 41816,
        "status": "new",
        "title": "Updated title via API",
        "email_accounts": [18061],
        "linkedin_accounts": [],
        "priority": "medium",
        "tracking": {
            "open": true,
            "link_click": false
        },
        "sending_settings": {
            "sending_priority": "follow_up",
            "daily_sending_all": null,
            "daily_sending_new_recipients": 15,
            "skip_unverifiable": true,
            "skip_unverified": true,
            "skip_who_replied": true,
            "skip_company_domain_who_replied": false,
            "skip_recipients_without_variables_data": false,
            "skip_other_recipients_email_addresses": false,
            "skip_recipients_added_to_my_another_campaign": false,
            "skip_recipients_added_to_team_another_campaign": false,
            "one_click_unsubscribe": false
        },
        "recipients": {
            "list_id": 857538,
            "black_list_id": 392812
        },
        "schedule_id": 1074,
        "start_campaign_at": "2030-06-01 00:00:00",
        "complete_campaign_at": "2030-10-01 01:00:00",
        "timezone": "UTC",
        "complete_campaign_after_last_step": false,
        "archive_in_months": 3,
        "provider_matching": false,
        "sequence": {
            "entry": "1778676939",
            "steps": [
                {
                    "_ref": "1778676939",
                    "type": "email",
                    "content_slots": 1,
                    "content": [
                        { "id": 17786769390, "plain_text": false, "usage": "active" }
                    ],
                    "next": "1778676940"
                },
                {
                    "_ref": "1778676940",
                    "type": "goal",
                    "goal_name": "end"
                }
            ]
        }
    }
}
输出参数
success
布尔值。营销活动更新成功时为 true
data.id
已更新营销活动的 ID。
data.status
营销活动当前状态。
data.title
营销活动名称。
data.email_accounts
附加到营销活动的发件邮件账户 ID 数组。
data.linkedin_accounts
附加到营销活动的 LinkedIn 账户 ID 数组。
data.priority
营销活动优先级(lowmediumhigh)。
data.tracking
邮件跟踪设置(openlink_click)。
data.sending_settings
更新后服务器上存储的发送设置原样返回。
data.recipients
收件人列表(list_idblack_list_id)。
data.schedule_id
附加到营销活动的发送计划 ID,或 null
data.start_campaign_at
营销活动开始发送的日期时间。
data.complete_campaign_at
营销活动停止发送的日期时间。
data.timezone
营销活动运行的时区标识符。
data.complete_campaign_after_last_step
最后一步交付后营销活动是否自动完成。
data.archive_in_months
自动归档周期(月)。
data.provider_matching
是否启用邮件提供商匹配。
data.sequence
营销活动流程图,对账后以相同结构返回。每个 email 步骤都会附带 content 数组,描述其内容插槽(idplain_textusage)。
data.deals
商机创建设置,仅在营销活动配置了商机创建时存在。

POST更改营销活动状态

免费

此方法允许您管理营销活动的状态——启动、暂停、完成或存档。

请求
POSThttps://api.snov.io/v2/campaigns/{campaign_id}/action
输入参数
campaign_id
*必需(path)
您想更改状态的营销活动的唯一标识符。
action
营销活动可转换到的状态。允许的值:start、pause、resume、complete、archived。
代码示例
<?php

$campaignId = 123;
$apiUrl = 'https://api.snov.io/v2/campaigns/' . $campaignId . '/action';

$ch = curl_init($apiUrl);

curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer ' . $accessToken,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode(['action' => 'start']),
]);

$response = curl_exec($ch);
curl_close($ch);

$result = json_decode($response, true);
print_r($result);
import requests

campaign_id = 123
api_url = f'https://api.snov.io/v2/campaigns/{campaign_id}/action'

response = requests.post(
    api_url,
    headers={'Authorization': f'Bearer {access_token}'},
    json={'action': 'start'},
)

print(response.json())
回执示例
{
  "success": true
}
输出参数
success
根据执行结果,可返回 true 或 false。
errors
更改营销活动状态时发生的错误列表。

DELETE删除营销活动

此方法通过 ID 删除营销活动。仅允许删除状态为 new(草稿)、completearchived 的营销活动——状态为 activepausescheduled 的营销活动必须先停止才能删除。

请求
DELETEhttps://api.snov.io/v2/campaigns/{campaign_id}
输入参数
campaign_id
*必需(path)
整数。要删除的营销活动 ID。
代码示例
<?php
function deleteCampaign($campaignId)
{
    $token = getAccessToken();

    $options = [
        CURLOPT_URL            => 'https://api.snov.io/v2/campaigns/' . $campaignId,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_CUSTOMREQUEST  => 'DELETE',
        CURLOPT_HTTPHEADER     => [
            'Authorization: Bearer ' . $token,
            'Content-Type: application/json',
        ],
    ];

    $ch = curl_init();
    curl_setopt_array($ch, $options);
    $res = json_decode(curl_exec($ch), true);
    curl_close($ch);

    return $res;
}
?>
def delete_campaign(campaign_id):
    token = get_access_token()
    headers = {
        'Authorization': 'Bearer ' + token,
        'Content-Type': 'application/json'
    }

    res = requests.delete(
        f'https://api.snov.io/v2/campaigns/{campaign_id}',
        headers=headers
    )
    return json.loads(res.text)
回执示例
{
    "success": true
}
输出参数
success
布尔值。营销活动删除成功时为 true

电子邮件步骤内容

这些方法允许您管理营销活动序列中电子邮件步骤的内容块(主题行和正文)。只有当营销活动处于 newpausedscheduled 状态时,才能修改内容。每个步骤必须至少有一个内容块。

GET查看所有时间表

免费

该方法显示所有营销活动时间表的列表。

请求
GEThttps://api.snov.io/v2/campaigns/schedules
输入参数
此方法没有输入参数。
代码示例
<?php
function getCampaignSchedules()
{
    $token = getAccessToken();
    $options = [
        CURLOPT_URL            => 'https://api.snov.io/v2/campaigns/schedules',
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_HTTPHEADER     => [
            'Authorization: Bearer ' . $token,
            'Content-Type: application/json',
        ],
    ];
    $ch = curl_init();
    curl_setopt_array($ch, $options);
    $res = json_decode(curl_exec($ch), true);

    curl_close($ch);

    return $res;

}
?>
def get_campaign_schedules():
    token = get_access_token()

    headers = {
        'Authorization': 'Bearer ' + token,
        'Content-Type': 'application/json'
    }

    res = requests.get('https://api.snov.io/v2/campaigns/schedules', headers=headers)

    return json.loads(res.text)
回执示例
{
    "data": [
        {
            "id": 1074,
            "name": "UA Monday & Saturday",
            "timezone": "Europe/Kyiv",
            "days": [
                {
                    "day": "sunday",
                    "enabled": false,
                    "start_time": "09:00",
                    "end_time": "18:00"
                },
                {
                    "day": "monday",
                    "enabled": true,
                    "start_time": "09:00",
                    "end_time": "17:00"
                },
                {
                    "day": "tuesday",
                    "enabled": false,
                    "start_time": "09:00",
                    "end_time": "18:00"
                },
                {
                    "day": "wednesday",
                    "enabled": false,
                    "start_time": "09:00",
                    "end_time": "18:00"
                },
                {
                    "day": "thursday",
                    "enabled": false,
                    "start_time": "09:00",
                    "end_time": "18:00"
                },
                {
                    "day": "friday",
                    "enabled": false,
                    "start_time": "09:00",
                    "end_time": "18:00"
                },
                {
                    "day": "saturday",
                    "enabled": true,
                    "start_time": "11:00",
                    "end_time": "16:30"
                }
            ]
        }
    ]
}
输出参数
id
时间表的唯一ID。
name
时间表名称。
timezone
时间表所遵循的时区。
days
该时间表中的可发送日期和时间组。
day
星期几。
enabled
如果该天允许发送,则显示 true。不允许发送时返回 false
start_time
该日程当天的开始时间。
end_time
该日程当天的结束时间。

POST创建邮件步骤内容

免费

此方法为营销活动中的邮件序列步骤创建或更新内容块。如果指定 content_id 的内容块已存在,则将被覆盖。内容只能在营销活动处于 newpausedscheduled 状态时修改。

请求
POSThttps://api.snov.io/v2/campaigns/{campaign_id}/steps/{step_id}/content/create
输入参数
campaign_id
*必需(path)
整数。营销活动 ID。
step_id
*必需(path)
整数。邮件序列步骤 ID。
content_id
*必需
整数。要写入的内容块 ID。再次发送相同的 content_id 将覆盖现有块。
subject
*必需
字符串。邮件主题行。支持 {{variables}}
body
*必需
字符串(HTML)。邮件正文。
plain_text
*必需
布尔值。true 以纯文本格式发送邮件,false 以 HTML 格式发送。
usage
*必需
字符串。内容块状态。允许值:"active""pause"
代码示例
<?php

function createEmailContent(int $campaignId, int $stepId)
{
    $token = getAccessToken();

    $requestParameters = [
        'content_id' => 1,
        'subject'    => 'Hey, I have something for you',
        'body'       => '<p>Hi {{first_name}}, ...</p>',
        'plain_text' => false,
        'usage'      => 'active',
    ];

    $url = 'https://api.snov.io/v2/campaigns/' . $campaignId . '/steps/' . $stepId . '/content/create';

    $options = [
        CURLOPT_URL            => $url,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_CUSTOMREQUEST  => 'POST',
        CURLOPT_POSTFIELDS     => json_encode($requestParameters),
        CURLOPT_HTTPHEADER     => [
            'Authorization: Bearer ' . $token,
            'Content-Type: application/json',
        ],
    ];

    $ch = curl_init();
    curl_setopt_array($ch, $options);
    $res = json_decode(curl_exec($ch), true);
    curl_close($ch);

    return $res;
}
?>
def create_email_content(campaign_id, step_id):
    token = get_access_token()
    headers = {
        'Authorization': 'Bearer ' + token,
        'Content-Type': 'application/json'
    }

    request_parameters = {
        'content_id': 1,
        'subject': 'Hey, I have something for you',
        'body': '<p>Hi {{first_name}}, ...</p>',
        'plain_text': False,
        'usage': 'active'
    }

    url = 'https://api.snov.io/v2/campaigns/' + str(campaign_id) + '/steps/' + str(step_id) + '/content/create'
    res = requests.post(url, json=request_parameters, headers=headers)

    return json.loads(res.text)
回执示例
{
    "success": true,
    "data": {
        "id": 11111,
        "subject": "Hey, I have something for you",
        "body": "

Hi {{first_name}}, ...

", "plain_text": false, "usage": "active" } }
输出参数
success
布尔值。请求成功时为 true
data.id
整数。内容块 ID。
data.subject
字符串。邮件主题行。
data.body
字符串(HTML)。邮件正文。
data.plain_text
布尔值。纯文本模式时为 true,HTML 时为 false
data.usage
字符串。内容块状态。允许值:"active""pause"

GET获取邮件步骤内容

免费

此方法通过 content_id 返回邮件序列步骤的内容块。

请求
GEThttps://api.snov.io/v2/campaigns/{campaign_id}/steps/{step_id}/content/{content_id}
输入参数
campaign_id
*必需(path)
整数。营销活动 ID。
step_id
*必需(path)
整数。邮件序列步骤 ID。
content_id
*必需(path)
整数。内容块 ID。
代码示例
<?php

function getEmailContent(int $campaignId, int $stepId, int $contentId)
{
    $token = getAccessToken();

    $url = 'https://api.snov.io/v2/campaigns/' . $campaignId . '/steps/' . $stepId . '/content/' . $contentId;

    $options = [
        CURLOPT_URL            => $url,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_HTTPHEADER     => [
            'Authorization: Bearer ' . $token,
            'Content-Type: application/json',
        ],
    ];

    $ch = curl_init();
    curl_setopt_array($ch, $options);
    $res = json_decode(curl_exec($ch), true);
    curl_close($ch);

    return $res;
}
?>
def get_email_content(campaign_id, step_id, content_id):
    token = get_access_token()
    headers = {
        'Authorization': 'Bearer ' + token,
        'Content-Type': 'application/json'
    }

    url = 'https://api.snov.io/v2/campaigns/' + str(campaign_id) + '/steps/' + str(step_id) + '/content/' + str(content_id)
    res = requests.get(url, headers=headers)

    return json.loads(res.text)
回执示例
{
    "data": {
        "id": 11111,
        "subject": "Hey, I have something for you",
        "body": "

Hi {{first_name}}, ...

", "plain_text": false, "usage": "active" } }
输出参数
data.id
整数。内容块 ID。
data.subject
字符串。邮件主题行。
data.body
字符串(HTML)。邮件正文。
data.plain_text
布尔值。纯文本模式时为 true,HTML 时为 false
data.usage
字符串。内容块状态。允许值:"active""pause"

PATCH更新邮件步骤内容

免费

此方法局部更新邮件序列步骤的内容块。仅更新请求体中提供的字段;未提及的字段保持不变。至少需要包含一个字段。内容只能在营销活动处于 newpausedscheduled 状态时修改。

请求
PATCHhttps://api.snov.io/v2/campaigns/{campaign_id}/steps/{step_id}/content/{content_id}
输入参数
campaign_id
*必需(path)
整数。营销活动 ID。
step_id
*必需(path)
整数。邮件序列步骤 ID。
content_id
*必需(path)
整数。内容块 ID。
subject
字符串。邮件主题行。支持 {{variables}}
body
字符串(HTML)。邮件正文。
plain_text
布尔值。true 为纯文本,false 为 HTML。
usage
字符串。内容块状态。允许值:"active""pause"
代码示例
<?php

function updateEmailContent(int $campaignId, int $stepId, int $contentId)
{
    $token = getAccessToken();

    $requestParameters = [
        'subject' => 'Updated subject',
    ];

    $url = 'https://api.snov.io/v2/campaigns/' . $campaignId . '/steps/' . $stepId . '/content/' . $contentId;

    $options = [
        CURLOPT_URL            => $url,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_CUSTOMREQUEST  => 'PATCH',
        CURLOPT_POSTFIELDS     => json_encode($requestParameters),
        CURLOPT_HTTPHEADER     => [
            'Authorization: Bearer ' . $token,
            'Content-Type: application/json',
        ],
    ];

    $ch = curl_init();
    curl_setopt_array($ch, $options);
    $res = json_decode(curl_exec($ch), true);
    curl_close($ch);

    return $res;
}
?>
def update_email_content(campaign_id, step_id, content_id):
    token = get_access_token()
    headers = {
        'Authorization': 'Bearer ' + token,
        'Content-Type': 'application/json'
    }

    request_parameters = {
        'subject': 'Updated subject'
    }

    url = 'https://api.snov.io/v2/campaigns/' + str(campaign_id) + '/steps/' + str(step_id) + '/content/' + str(content_id)
    res = requests.patch(url, json=request_parameters, headers=headers)

    return json.loads(res.text)
回执示例
{
    "success": true,
    "data": {
        "id": 11111,
        "subject": "Updated subject",
        "body": "

Hi {{first_name}}, ...

", "plain_text": false, "usage": "active" } }
输出参数
success
布尔值。请求成功时为 true
data.id
整数。内容块 ID。
data.subject
字符串。邮件主题行。
data.body
字符串(HTML)。邮件正文。
data.plain_text
布尔值。纯文本模式时为 true,HTML 时为 false
data.usage
字符串。内容块状态。允许值:"active""pause"

DELETE删除邮件步骤内容

免费

此方法从邮件序列步骤中移除内容块。不允许删除步骤中最后剩余的内容块——每个步骤必须至少有一个内容块。

请求
DELETEhttps://api.snov.io/v2/campaigns/{campaign_id}/steps/{step_id}/content/{content_id}
输入参数
campaign_id
*必需(path)
整数。营销活动 ID。
step_id
*必需(path)
整数。邮件序列步骤 ID。
content_id
*必需(path)
整数。要删除的内容块 ID。
代码示例
<?php

function deleteEmailContent(int $campaignId, int $stepId, int $contentId)
{
    $token = getAccessToken();

    $url = 'https://api.snov.io/v2/campaigns/' . $campaignId . '/steps/' . $stepId . '/content/' . $contentId;

    $options = [
        CURLOPT_URL            => $url,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_CUSTOMREQUEST  => 'DELETE',
        CURLOPT_HTTPHEADER     => [
            'Authorization: Bearer ' . $token,
            'Content-Type: application/json',
        ],
    ];

    $ch = curl_init();
    curl_setopt_array($ch, $options);
    $res = json_decode(curl_exec($ch), true);
    curl_close($ch);

    return $res;
}
?>
def delete_email_content(campaign_id, step_id, content_id):
    token = get_access_token()
    headers = {
        'Authorization': 'Bearer ' + token,
        'Content-Type': 'application/json'
    }

    url = 'https://api.snov.io/v2/campaigns/' + str(campaign_id) + '/steps/' + str(step_id) + '/content/' + str(content_id)
    res = requests.delete(url, headers=headers)

    return json.loads(res.text)
回执示例
{
    "data": {
        "success": true
    }
}
输出参数
data.success
布尔值。内容块成功删除时为 true

收件人管理

这些方法允许您管理营销活动收件人——检查和更新其状态、查看已完成的潜在客户,并维护"禁止发送电子邮件"列表,以控制谁接收您的营销活动。

GET检查收件人状态

免费

此方法检查指定邮箱是否作为收件人存在于特定营销活动中,并返回其当前状态。适用于在向营销活动添加新收件人之前进行去重——例如,避免联系已注册、已完成或已取消订阅的潜在客户。

请求
GEThttps://api.snov.io/v2/campaigns/[campaign_id]/recipient
输入参数
campaign_id
*必需
营销活动的唯一标识符。
emails[]
*必需
要检查的邮箱地址数组。每次请求最少 1 个,最多 100 个。每个邮箱必须唯一且不超过 100 个字符。
代码示例
<?php
function checkRecipientStatus($campaignId, array $emails)
{
    $token = getAccessToken();
    $query = http_build_query([
        'access_token' => $token,
        'emails'       => $emails,
    ]);
    $options = [
        CURLOPT_URL            => "https://api.snov.io/v2/campaigns/{$campaignId}/recipient?{$query}",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true,
    ];
    $ch = curl_init();
    curl_setopt_array($ch, $options);
    $res = json_decode(curl_exec($ch), true);
    curl_close($ch);
    return $res;
}
?>
def check_recipient_status(campaign_id, emails):
    token = get_access_token()
    params = [('access_token', token)] + [('emails[]', email) for email in emails]
    res = requests.get(
        f'https://api.snov.io/v2/campaigns/{campaign_id}/recipient',
        params=params,
    )
    return json.loads(res.text)
回执示例
{
    "data": [
        {
            "email": "admin@snov.io",
            "exist": true,
            "status": "tocheck"
        },
        {
            "email": "jn@snov.io",
            "exist": false,
            "status": null
        },
        {
            "email": "dennis@snov.io",
            "exist": true,
            "status": "unsubscribe"
        }
    ]
}
输出参数
email
请求中的邮箱地址(原样返回)。
exist
如果邮箱作为收件人存在于营销活动中,则为 true,否则为 false
status
收件人在营销活动中的当前状态(例如 tocheckactivefinishedunsubscribemoved)。当 existfalse 时为 null

POST更改收件人状态

免费

更改特定营销邮件中收件人的状态。

请求
POSThttps://api.snov.io/v1/change-recipient-status
输入参数
email
*必需
潜在客户邮箱地址。
campaign_id
*必需
营销邮件 id。查看营销信息时可以在网址里找到(显示一个示例).
status
*必需
可以包含“活动”、“已暂停”或“已取消订阅”。如果收件人的状态为“已完成”或“已移除”,则您无法更改其状态。
代码示例
<?php
function changeRecipientStatus()
{
    $token = getAccessToken();

    $params = [
        'access_token' => $token,
        'email'       => 'gavin.vanrooyen@octagon.com',
        'campaign_id'    => '179025',
        'status'     => 'Paused'
    ];


    $options = [
        CURLOPT_URL            => 'https://api.snov.io/v1/change-recipient-status',
        CURLOPT_POST           => true,
        CURLOPT_POSTFIELDS     => $params,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true
    ];

    $ch = curl_init();

    curl_setopt_array($ch, $options);

    $res = json_decode(curl_exec($ch), true);
    curl_close($ch);

    return $res;

}
?>
def change_recipient_status():
token = get_access_token()
params = {'access_token':token,
          'email':'gavin.vanrooyen@octagon.com',
          'campaign_id': '179025',
          'status':'Paused'
}

res = requests.post('https://api.snov.io/v1/change-recipient-status', data=params)

return json.loads(res.text)
回执示例
{
  "success": true
}
输出参数

方法返回 success: true如果潜在客户的状态已成功更改。如果发生任何错误,方法将返回success: false连同一个错误描述。

GET查看已完成潜在客户列表

免费

此方法返回已完成营销的潜在客户。

请求
GEThttps://api.snov.io/v1/prospect-finished
输入参数
campaignId
*必需
用于检索潜在客户列表的营销的唯一标识符。
代码示例
<?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
请求的唯一标识符。
prospectId
潜在客户的唯一标识符。
userName
潜在客户全名。
userEmail
潜在客户邮箱地址。
campaign
营销名称。

POST添加到免发送邮箱列表

免费

使用该方法,您可将邮箱地址或域名,添加到免发送邮箱列表中。在列表中添加此邮箱地址/域名后,您将无法向其发送邮件。

请求
POSThttps://api.snov.io/v1/do-not-email-list
输入参数
items
您想要添加到免发送邮箱列表中的邮箱地址或域名。
listId
*必需
邮箱和域名归属的免发送邮件列表标识符。
代码示例
<?php
function addToBlackList()
{
    $token = getAccessToken();

    $params = [
        'access_token' => $token
    ];

    $data = http_build_query([
      'items' => [
          'gavin.vanrooyen@octagon.com',
          'octagon.com'
      ]
  ]);

    $options = [
        CURLOPT_URL => 'https://api.snov.io/v1/do-not-email-list?'. $data,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_POST => true,
        CURLOPT_POSTFIELDS => $params,
        CURLOPT_FOLLOWLOCATION => true,
    ];

    $ch = curl_init();

    curl_setopt_array($ch, $options);

    $res = json_decode(curl_exec($ch), true);

    curl_close($ch);
}
?>
def do_not_email_list():
    token = get_access_token()
    params = {
        'access_token':token,
        'items[]':['gavin.vanrooyen@octagon.com','octagon.com']
    }

    res = requests.post('https://api.snov.io/v1/do-not-email-list', data=params)

    return json.loads(res.text)
回执示例
[
    {
        "success": true,
        "data": {
            "duplicates": []
        }
    }
]
输出参数
duplicates
该参数显示了之前被添加到免发送邮箱列表中的邮箱地址/域名。

GET查看所有免发送电子邮件列表

免费

该方法返回所有免发送电子邮件列表。

请求
GEThttps://api.snov.io/v2/blacklists
输入参数
此方法没有输入参数。
代码示例
<?php
function getBlacklists()
{
    $token = getAccessToken();
    $options = [
        CURLOPT_URL            => 'https://api.snov.io/v2/blacklists',
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_HTTPHEADER     => [
            'Authorization: Bearer ' . $token,
            'Content-Type: application/json',
        ],
    ];
    $ch = curl_init();
    curl_setopt_array($ch, $options);
    $res = json_decode(curl_exec($ch), true);

    curl_close($ch);

    return $res;

}
?>
def get_blacklists():
    token = get_access_token()

    headers = {
        'Authorization': 'Bearer ' + token,
        'Content-Type': 'application/json'
    }

    res = requests.get('https://api.snov.io/v2/blacklists', headers=headers)

    return json.loads(res.text)
回执示例
{
    "data": [
        {
            "id": 8,
            "name": "Do-not-email List",
            "owner": "Rob Patison",
            "total": 100
        }
    ]
}
输出参数
id
免发送电子邮件列表的唯一ID。
name
列表名称。
owner
创建列表的人员姓名。
total
列表中的记录总数(电子邮件和网站)。

分析与报告

这些只读方法提供营销活动效果的可见性——投递、打开、点击和回复。使用它们监控参与度并导出数据进行分析。

GET获取营销分析

免费

此方法根据应用的筛选条件显示营销统计信息。

请求
GEThttps://api.snov.io/v2/statistics/campaign-analytics
输入参数
campaign_id
营销 ID。在查看营销信息时,您可以在 URL 中找到该 ID (示例). 如果将此字段留空,系统将提供在指定时间段内所有活动营销的数据。

要获取多个营销的数据,请用逗号分隔 ID。
sender_email
邮箱发件人账户 ID。在查看或编辑邮箱账户信息时,您可以在 URL 中找到该 ID (示例). 要查看多个邮箱账户的分析,请用逗号分隔 ID。

或者,如果您不想应用邮箱账户筛选器,可以将此参数留空。
sender_linkedin
领英发件人账户 ID。在查看或编辑领英账户信息时,您可以在 URL 中找到该 ID。要查看多个账户的分析,请用逗号分隔 ID。

如果不想应用领英账户筛选器,可以将此参数留空。
campaign_owner
要查看特定团队成员的营销数据,请输入其邮箱地址。要按多个营销所有者进行过滤,请列出用逗号 (无空格) 分隔的邮箱地址。

示例:example1@gmail.com,example2@gmail.com

请注意,要使用此筛选条件,您的账户必须启用“查看团队记录 ”权限,并且您需要使用 Pro 套餐或更高级别的套餐。
date_from
*必需
您希望接收统计信息的时间段的开始日期。格式:yyyy-mm-dd。
date_to
*必需
您希望接收统计信息的时间段的结束日期。格式: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
通过邮件或领英 (连接请求、消息或站内信) 联系的收件人总数。
emails_sent
通过营销发送的邮件总数。

请注意,这不包括在营销之外发送的邮件。
first_emails
在指定时间段内发送的营销邮件序列中的首封邮件的数量。
first_emails_rate
首封邮件占已发送邮件总数的百分比。
follow_ups
在指定时间段内发送的营销邮件序列中的跟进邮件的数量。
follow_ups_rate
跟进邮件占已发送邮件总数的百分比。
delivered
未退回的已发送邮件的数量。
delivered_rate
未退回邮件占已发送邮件总数的百分比。
bounced
退回的邮件数量。
bounced_rate
退回邮件占已发送邮件总数的百分比。
contacted_by_email
至少收到一封未被退回的邮件的收件人数量。
email_opens
至少打开过一次邮件的收件人数量。
email_opens_rate
在所有联系的收件人中,至少打开过您的邮件一次的收件人百分比。
link_clicks
在您的营销中至少点击过一个链接的收件人数量。
link_clicks_rate
在所有联系的收件人中,至少点击过营销中一个链接的收件人百分比。
email_replies
至少回复过一次的收件人数量。
email_replies_rate
在所有联系的收件人中,至少回复过一次的收件人百分比。
unsubscribed
点击了营销中的“退订”链接并选择不再接收邮件的收件人数量。
unsubscribed_rate
在所有联系的收件人中,点击了营销中的“退订”链接的收件人百分比。
auto_replied
自动回复营销邮件的收件人数量。
auto_replied_rate
在所有联系的收件人中,自动回复的收件人百分比。
contacted_by_linkedin
您在领英上向其发送了至少一条消息或一次连接请求的收件人数量。
linkedin_total_replies
对领英上发送的任何消息 (领英消息、连接请求消息和站内信) 至少回复过一次的收件人数量。
linkedin_total_replies_rate
对领英上发送的任何消息 (领英消息、连接请求消息和站内信) 至少回复过一次的收件人百分比。
connection_request_replies
回复连接请求消息的收件人数量。
connection_request_replies_rate
在所有联系的收件人中,回复连接请求消息的收件人百分比。
message_replies
回复常规领英消息的收件人数量。
message_replies_rate
在所有联系的收件人中,回复常规领英消息的收件人百分比。
in_mail_replies
回复领英站内信消息的收件人数量。
in_mail_replies_rate
回复领英站内信消息的收件人百分比。
connection_requests
通过 Snov.io 营销发送给潜在客户的连接请求数量。
accepted_requests
领英会员接受的连接请求数量。
accepted_requests_rate
在所有发送的请求中,被接受的连接请求百分比。
failed_connection_requests
由于以下原因未发送的领英连接请求数:
  • 潜在客户的领英 URL 不存在
  • 您之前已向他们发送过连接请求,但该请求处于待处理状态
  • 您已经与该潜在客户建立了联系
messages_sent
发送的领英信息数量。
linkedin_views
浏览的潜在客户个人资料数量。
linkedin_likes
在领英上点赞的潜在客户帖子数量。
linkedin_follows
关注的潜在客户个人资料数量。
in_mail_sent
发送的领英站内信消息总数。
interested
在回复中表现出感兴趣的收件人数量。
interested_rate
在回复中表现出感兴趣的收件人百分比。
maybe
在回复中没有直接表现出感兴趣或不感兴趣的收件人数量。
maybe_rate
在回复中没有直接表现出感兴趣或不感兴趣的收件人百分比。
not_interested
在回复中表现出不感兴趣的收件人数量。
not_interested_rate
在回复中表现出不感兴趣的收件人百分比。

GET查看营销进度

免费

通过这样的方式您可以了解到营销进度和状态。

请求
GEThttps://api.snov.io/v2/campaigns/[campaign_id]/progress
输入参数
campaign_id
*必需
营销 ID。在查看营销信息时,您可以在 URL 中找到该 ID (示例).
代码示例

<?php

function getCampaignProgress()

{

   $token = getAccessToken();

   $campaignId = 1;

   $params = [

       'access_token' => $token,

   ];

   $params = http_build_query($params);

   $options = [

       CURLOPT_URL => "https://api.snov.io/v2/campaigns/$campaignId/progress?" . $params,

       CURLOPT_RETURNTRANSFER => true,

       CURLOPT_FOLLOWLOCATION => true

   ];

   $ch = curl_init();

   curl_setopt_array($ch, $options);

   $res = json_decode(curl_exec($ch), true);

   curl_close($ch);

   return $res;

}

?>

def get_campaign_progress():

   token = get_access_token()

   campaign_id = 1

   params = {

       'access_token': token,

   }

   res = requests.get(f"https://api.snov.io/v2/campaigns/{campaign_id}/progress", params=params)

   return json.loads(res.text)

回执示例
{
    "status":"Active",
    "unfinished":1,
    "progress":"90%"
}
输出参数
progress
以下情况的收件人百分比:
  • 到达序列末尾
  • 退信、回复、自动回复、退订、删除或从营销中移出,因此营销对其停止。
unfinished
营销中未到达序列末尾或未停止序列的收件人数量。
status
营销状态。了解更多

GET获取营销活动收件人活动报告

免费

此方法返回营销活动所有收件人的详细活动报告——包括发送、打开、点击、回复、退回和取消订阅事件——以及潜在客户详情。它与营销活动界面中可用的收件人活动报告相对应,适合将营销活动数据同步到外部仪表板或 CRM 系统。

请求
GEThttps://api.snov.io/v2/campaigns/[campaignId]/recipients-activity
输入参数
campaignId
*必需
营销活动的唯一标识符。
dateFrom
*必需
日期范围的开始,格式为 Y-m-d(UTC)。
dateTo
*必需
日期范围的结束,格式为 Y-m-d(UTC)。dateFromdateTo 之间的最大范围为 31 天。
offset
分页偏移量(默认:0)。
limit
每页记录数(默认:100,最大:1000)。
代码示例
<?php
function getCampaignRecipientsActivity($campaignId, $dateFrom, $dateTo, $offset = 0, $limit = 100)
{
    $token = getAccessToken();
    $params = http_build_query([
        'access_token' => $token,
        'dateFrom'     => $dateFrom,
        'dateTo'       => $dateTo,
        'offset'       => $offset,
        'limit'        => $limit,
    ]);
    $options = [
        CURLOPT_URL            => "https://api.snov.io/v2/campaigns/{$campaignId}/recipients-activity?{$params}",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true,
    ];
    $ch = curl_init();
    curl_setopt_array($ch, $options);
    $res = json_decode(curl_exec($ch), true);
    curl_close($ch);
    return $res;
}
?>
def get_campaign_recipients_activity(campaign_id, date_from, date_to, offset=0, limit=100):
    token = get_access_token()
    params = {
        'access_token': token,
        'dateFrom':     date_from,
        'dateTo':       date_to,
        'offset':       offset,
        'limit':        limit,
    }
    res = requests.get(
        f'https://api.snov.io/v2/campaigns/{campaign_id}/recipients-activity',
        params=params,
    )
    return json.loads(res.text)
回执示例
{
    "data": [
        {
            "event_time": "2025-12-15 10:58:52",
            "event_type": "sent",
            "sender_email": "sender@snov.io",
            "email_subject": "About our plans",
            "recipient_email": "recipient@snov.io",
            "recipient_name": "Den Johnson",
            "phone": "380631234567",
            "industry": "Information Technology & Services",
            "country": "Ukraine",
            "location": "Kyiv",
            "company": "Snov.io",
            "job_position": "Quality assurance engineer",
            "hq_phone": "380631234567",
            "website": "snov.io"
        },
        {
            "event_time": "2025-12-15 10:58:58",
            "event_type": "open",
            "sender_email": "sender@snov.io",
            "email_subject": "About our plans",
            "recipient_email": "recipient@snov.io",
            "recipient_name": "Den Johnson",
            "phone": "380631122333",
            "industry": "Information Technology & Services",
            "country": "Ukraine",
            "location": "Kyiv",
            "company": "Snov.io",
            "job_position": "Quality assurance engineer",
            "hq_phone": "380631234567",
            "website": "snov.io"
        }
    ],
    "pagination": {
        "total": 2,
        "offset": 0,
        "limit": 100,
        "has_more": false
    }
}
输出参数
event_time
事件时间,ISO 8601 格式(UTC)。
event_type
事件类型:sentopenclickreplybounceunsubscribe
sender_email
发件人的邮箱地址(营销活动邮箱)。
email_subject
营销活动序列中的邮件主题行。
recipient_email
收件人的邮箱地址。
recipient_name
收件人的全名。
phone
收件人的电话号码(来自潜在客户档案)。
country
收件人所在国家。
location
收件人所在地(城市、地区)。
industry
收件人公司所属行业。
company
收件人的公司名称。
job_position
收件人的职位。
website
收件人公司的网站。
hq_phone
收件人公司总部的电话号码。
total
与请求匹配的记录总数。
offset
当前分页偏移量。
limit
响应中使用的页面大小。
has_more
如果当前页面之后还有更多记录,则为 true

GET查看已发送电子邮件

免费

此方法显示有关营销中已发送电子邮件的信息。

请求
GEThttps://api.snov.io/v1/emails-sent
输入参数
campaignId
*必需
您要查看其已发送电子邮件的营销的唯一标识符。
offset
每次请求最多可收集 10,000 封已发送的邮件。 如果您的营销发送了更多邮件,请使用偏移量来表示您要跳过的先前邮件的数量。 例如,如果您的营销已发送 20,000 封邮件,而您希望请求第 10,001封到第 20,000 封邮件,请将偏移量设置为 10,000。 如果未指定偏移量,您将获得营销中发送的最后 10,000 封邮件。
代码示例
<?php
function emailsSended()
{
    $token = getAccessToken();

    $params = [
        'access_token' => $token,
        'campaignId'   => 1234567
    ];

    $params = http_build_query($params);

    $options = [
        CURLOPT_URL            => 'https://api.snov.io/v1/emails-sent?'.$params,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true,
    ];

    $ch = curl_init();

    curl_setopt_array($ch, $options);

    $res = json_decode(curl_exec($ch), true);

    curl_close($ch);

    return $res;

}
?>
def user_lists():
token = get_access_token()
params = {'access_token':token,
        'campaignId':1234567
}

res = requests.get('https://api.snov.io/v1/emails-sent', data=params)

return json.loads(res.text)
回执示例
[
    {
        "sentDate": {
            "date": "2020-07-06 06:58:10.000000",
            "timezone_type": 3,
            "timezone": "UTC"
        },
        "userName": "John Doe",
        "userEmail": "johndoe@snov.io",
        "campaign": "Test",
        "hash": "be8fd412b793c15ccab9f1a6573d6595",
        "id": "010f091d81860753a19867ba1dd805d1"
    },
    {
        "sentDate": {
            "date": "2020-07-06 06:56:44.000000",
            "timezone_type": 3,
            "timezone": "UTC"
        },
        "userName": "Mister Smith",
        "userEmail": "mistersmith@snov.io",
        "campaign": "Test",
        "hash": "55bb20def471e630c539935cb0efcbf8",
        "id": "00e3df8427477a21d64bbe959ff95471"
    }
]
输出参数
sentDate
电子邮件发送的确切时间。
userName
向其发送邮件的潜在客户的全名。
userEmail
潜在客户邮箱地址。
campaign
营销名称。

GET获取营销邮件打开数信息

免费

此方法显示有关营销中已打开电子邮件的信息。

请求
GEThttps://api.snov.io/v1/get-emails-opened
输入参数
campaignId
*必需
您想要查看邮件打开信息的营销的唯一标识符。
offset
每次请求最多可收集 10,000 次打开。 如果您的营销有更多的邮件打开次数,请使用偏移量来表示您要跳过的先前打开的次数。 例如,如果您的营销有 20,000 次打开,而您希望请求第 10,001 次到第 20,000 次打开,请将偏移量设置为 10,000。 如果未指定偏移量,您将获得最近 10,000 封被打开的邮件。
代码示例
<?php
function emailsOpen()
{
    $token = getAccessToken();

    $params = [
        'access_token' => $token,
        'campaignId'   => 1234567
    ];

    $params = http_build_query($params);

    $options = [
        CURLOPT_URL            => 'https://api.snov.io/v1/get-emails-opened?'.$params,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true,
    ];

    $ch = curl_init();

    curl_setopt_array($ch, $options);

    $res = json_decode(curl_exec($ch), true);

    curl_close($ch);

    return $res;

}
?>
def user_lists():
token = get_access_token()
params = {'access_token':token,
        'campaignId':1234567
}

res = requests.get('https://api.snov.io/v1/get-emails-opened', data=params)

return json.loads(res.text)
回执示例
[
    {
        "visitedAt": {
            "date": "2020-01-08 21:48:14.000000",
            "timezone_type": 3,
            "timezone": "UTC"
        },
        "campaignId": 1234567
        "campaign": "My top campaign",
        "prospectId": "a9e58c3eecff94e617815a90ca412c4c305045102be1312b41fd0073c9c9f3eee30e090bbc3e3",
        "prospectFirstName": "John",
        "prospectLastName": "Doe",
        "prospectName": "John Doe",
        "sourcePage": null,
        "source": "copy",
        "locality": null,
        "industry": null,
        "country": null,
        "prospectEmail": "Johndoe@snov.io",
        "hash": "20b1aeb0e2949fdf7e58363f84b7aff1",
        "emailSubject": "\"Special content for you\"",
        "emailBody": "\"<\p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.<\/p>\"",
	"skills": "",
        "links": null,
        "customFields": null,
        "id": "c2a67a47d59745f548ea7b0213c3a81d",
        "customField_Phone": ""
    }
]
输出参数
campaignId
营销的唯一标识符。
campaign
营销名称。
prospectName
打开电子邮件的潜在客户的全名。
emailSubject
被打开的电子邮件的邮件标题。
visitedAt
潜在客户打开电子邮件的确切时间。

GET检查链接点击数

免费

此方法返回所有点击过营销邮件中链接的营销收件人的信息。

请求
GEThttps://api.snov.io/v1/get-emails-clicked
输入参数
campaignId
*必需
您要查看其链接点击情况的营销的唯一标识符。
offset
每次请求最多可收集 10,000 次点击。 如果您的营销有更多点击次数,请使用偏移量来表示您要跳过的先前点击的次数。 例如,如果您的营销有 20,000 次点击,而您希望请求第10,001次到第 20,000 次点击,请将偏移量设置为 10,000。 如果未指定偏移量,您将获得营销中的点击链接的最后 10,000 封邮件。
代码示例
<?php
function emailsClicked()
{
    $token = getAccessToken();

    $params = [
        'access_token' => $token,
        'campaignId'   => 1234567
    ];

    $params = http_build_query($params);

    $options = [
        CURLOPT_URL            => 'https://api.snov.io/v1/get-emails-clicked?'.$params,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true,
    ];

    $ch = curl_init();

    curl_setopt_array($ch, $options);

    $res = json_decode(curl_exec($ch), true);

    curl_close($ch);

    return $res;

}
?>
def user_lists():
token = get_access_token()
params = {'access_token':token,
        'campaignId':1234567
}

res = requests.get('https://api.snov.io/v1/get-emails-clicked', data=params)

return json.loads(res.text)
回执示例
[
    {
        "visitedAt": {
            "date": "2020-01-08 21:48:14.000000",
            "timezone_type": 3,
            "timezone": "UTC"
        },
        "campaignId": 1234567
        "campaign": "My top campaign",
        "prospectId": "a9e58c3eecff94e617815a90ca412c4c305045102be1312b41fd0073c9c9f3eee30e090bbc3e3",
        "prospectFirstName": "John",
        "prospectLastName": "Doe",
        "prospectName": "John Doe",
        "sourcePage": null,
        "source": "copy",
        "locality": null,
        "industry": null,
        "country": null,
        "prospectEmail": "Johndoe@snov.io",
        "hash": "20b1aeb0e2949fdf7e58363f84b7aff1",
        "emailSubject": "\"Special content for you\"",
        "emailBody": "\"<\p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.<\/p>\"",
	"skills": "",
        "links": null,
        "customFields": null,
        "id": "c2a67a47d59745f548ea7b0213c3a81d",
        "customField_Phone": ""
    }
]
输出参数
campaignId
营销的唯一标识符。
campaign
营销名称。
prospectName
在营销中点击电子邮件链接的潜在客户的全名。
prospectEmail
潜在客户邮箱地址。
emailSubject
包含被点击链接的邮件的邮件标题。
emailBody
邮件内容。
visitedAt
潜在客户点击电子邮件中链接的确切时间。

GET查看营销活动所有回复

免费

此方法显示营销活动中收到的所有回复列表——包括邮件回复和 LinkedIn 回复(连接请求回复、LinkedIn 消息回复和 InMail 回复)。每条记录代表一个唯一的(潜在客户,回复类型)对;记录中的回复按时间顺序排列。

请求
GEThttps://api.snov.io/v2/campaigns/[campaign_id]/all-replies
输入参数
campaign_id
*必需
营销活动的唯一标识符。
offset
分页偏移量(默认:0)。
代码示例
<?php
function campaignAllReplies($campaignId, $offset = 0)
{
    $token = getAccessToken();
    $params = http_build_query([
        'access_token' => $token,
        'offset'       => $offset,
    ]);
    $options = [
        CURLOPT_URL            => "https://api.snov.io/v2/campaigns/{$campaignId}/all-replies?{$params}",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true,
    ];
    $ch = curl_init();
    curl_setopt_array($ch, $options);
    $res = json_decode(curl_exec($ch), true);
    curl_close($ch);
    return $res;
}
?>
def get_campaign_all_replies(campaign_id, offset=0):
    token = get_access_token()
    params = {
        'access_token': token,
        'offset': offset,
    }
    res = requests.get(
        f'https://api.snov.io/v2/campaigns/{campaign_id}/all-replies',
        params=params,
    )
    return json.loads(res.text)
回执示例
{
    "data": [
        {
            "campaignId": 38573,
            "campaign": "All replies campaign",
            "prospectId": "aed674fa6404b38954b4ed68f4fd4901b15c9ca9b9393522a052a420aa2690df99614e277d",
            "prospectName": "Snov.io",
            "prospectEmail": "office@snov.io",
            "linkedInProfile": "https://www.linkedin.com/in/snovio",
            "replyType": "email",
            "receivedAt": "2026-04-29 10:09:42",
            "replies": [
                {
                    "subject": "Re: All replies campaign",
                    "message": "This is reply to email",
                    "receivedAt": "2026-04-29 10:09:42"
                }
            ]
        },
        {
            "campaignId": 38573,
            "campaign": "All replies campaign",
            "prospectId": "504d37faada2989dda5f7621393ed9b07e4dccaba44b7332e48fd425c75a77e3d653d24b60",
            "prospectName": "Snov.io",
            "prospectEmail": "office@snov.io",
            "linkedInProfile": "https://www.linkedin.com/in/snovio",
            "replyType": "linkedinMessage",
            "receivedAt": "2026-04-29 09:26:07",
            "replies": [
                {
                    "subject": "",
                    "message": "Hello! This is reply to Li message",
                    "receivedAt": "2026-04-29 09:26:07"
                }
            ]
        }
    ]
}
输出参数
campaignId
营销活动的唯一标识符。
campaign
营销活动名称。
prospectId
潜在客户的唯一标识符。
prospectName
潜在客户的全名。
prospectEmail
潜在客户的邮箱地址。
linkedInProfile
潜在客户的 LinkedIn 档案 URL(如有)。
replyType
回复类型:emaillinkedinMessagelinkedinInvitelinkedinInMail
receivedAt
此(潜在客户,回复类型)对中最早回复的日期和时间。
replies[].subject
回复的主题(LinkedIn 无主题回复为空字符串)。
replies[].message
回复正文。
replies[].receivedAt
收到特定回复的日期和时间。

GET查看营销邮件回复

免费

此方法返回营销活动中收到的邮件回复,包括潜在客户姓名、ID、营销活动等信息。要在邮件回复之外获取 LinkedIn 回复(连接请求、私信、InMail),请使用 查看营销活动所有回复方法。

请求
GEThttps://api.snov.io/v1/get-emails-replies
输入参数
campaignId
*必需
您想要查看邮件回复情况的营销的唯一标识符。
offset
每次请求最多可收集 10,000 条回复。如果您的营销有更多回复,请使用偏移量来表示您要跳过的先前回复的数量。 例如,如果您的营销有 20,000 条回复,而您希望请求第 10,001 条到第 20,000 条回复,则将偏移量设为 10,000。 如果未指定偏移量,您将获得最近收到的 10,000 条回复。
代码示例
<?php
function campaignReplies()
{
    $token = getAccessToken();

    $params = [
        'access_token' => $token,
        'campaignId'   => 1234567
    ];

    $params = http_build_query($params);

    $options = [
        CURLOPT_URL            => 'https://api.snov.io/v1/get-emails-replies?'.$params,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true,
    ];

    $ch = curl_init();

    curl_setopt_array($ch, $options);

    $res = json_decode(curl_exec($ch), true);

    curl_close($ch);

    return $res;

}
?>
def user_lists():
token = get_access_token()
params = {'access_token':token,
        'campaignId':1234567
}

res = requests.get('https://api.snov.io/v1/get-emails-replies', data=params)

return json.loads(res.text)
回执示例
[
    {
        "visitedAt": {
            "date": "2020-07-14 13:10:46.000000",
            "timezone_type": 3,
            "timezone": "UTC"
        },
        "campaignId": 1234567,
        "campaign": "My top campaign",
        "prospectId": "7a941739b09f1187532d52a684df545f3a223e432c7f53662264db8d33db80ee5fc19e573416a",
        "prospectFirstName": "John",
        "prospectLastName": "Doe",
        "prospectName": "John Doe",
        "sourcePage": null,
        "source": "copy",
        "locality": null,
        "industry": "Airlines/Aviation",
        "country": null,
        "prospectEmail": "Johndoe@snov.io",
        "hash": "6745f8162ecadbe325693345d1a53976",
        "emailSubject": "\"Special content for you\"",
        "emailBody": "\"<\p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.<\/p>\"",
        "skills": "",
        "links": null,
        "customFields": null,
        "id": "f676edc5de58f341dc7bf4e75c0c8580",
        "customField_Phone": "",
        "customField_Birthday": ""
    }
]
输出参数
campaignId
营销的唯一标识符。
campaign
营销名称。
prospectName
潜在客户全名。
emailSubject
收到回复的电子邮件的标题。
emailBody
收到回复的电子邮件的内容。

POST将潜在客户添加到列表

免费

将潜在客户添加到特定列表。对于希望将潜在客户自动添加到列表中以进行邮件自动化营销的人士,这种方法非常实用。在将潜在客户自动添加到所选列表之后,便会自动开始邮件自动化营销。

请求
POSThttps://api.snov.io/v1/add-prospect-to-list
输入参数
email
潜在客户邮箱地址。
fullName
潜在客户全名。
firstName
潜在客户名字。
lastName
潜在客户姓氏。
phones
包含潜在客户电话号码的数组。
country
潜在客户国家。国家名称定义此处。请仅使用此列表中的国家
locality
潜在客户所在地点。
position
潜在客户职务。
companyName
潜在客户公司名称。
companySite
潜在客户公司网站。请使用
http://example.com
格式。
updateContact
更新现有潜在客户。该参数可接受值为 truefalse
  • 如果设置为 true,且列表中已存在具有该邮箱地址的潜在客户,系统将更新该现有档案。
  • 如果设置为 false,系统将不更新现有资料。
createDuplicates
创建重复的潜在客户。该参数可接受值为 truefalse
  • 如果设置为 true,且列表中已存在具有该邮箱地址的潜在客户,系统将创建一个重复档案。
  • 如果设置为 false,系统将不创建重复资料。

参数 updateContactcreateDuplicates 只能有一个设置为 true
customFields[specialization]
您可以在先前创建的自定义字段中添加自定义值。 为此,请在[brackets]中指定自定义字段的名称。
socialLinks[linkedIn]
*Required if email is null
潜在客户社交媒体资料的链接。 在 [括号] 中指定社交网络的名称 (领英、Facebook 或 X) 。
listId
*必需
潜在客户所属列表的标识符。
代码示例
<?php
function addProspectToList()
{
  $token = getAccessToken();

  $params = [
    'access_token'                => $token,
    'email'                       => 'john.doe@example.com',
    'fullName'                    => 'John Doe',
    'firstName'                   => 'John',
    'lastName'                    => 'Doe',
    'phones'                      => ['+18882073333', '+18882074444'],
    'country'                     => 'United States',
    'locality'                    => 'Woodbridge, New Jersey',
    'socialLinks' => [
      'linkedIn'  => 'https://www.linkedin.com/in/johndoe/&social',
      'twiiter' => 'https://twitter.com/johndoe&social',
    ],
    'customFields[specialization]'=> 'Software Engineering',
    'position'                    => 'Vice President of Sales',
    'companyName'                 => 'GoldenRule',
    'companySite'                 => 'https://goldenrule.com',
    'updateContact'               => true,
    'listId'                      => '12345',
  ];

  $options = [
    CURLOPT_URL            => 'https://api.snov.io/v1/add-prospect-to-list',
    CURLOPT_POST           => true,
    CURLOPT_POSTFIELDS     => $params,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_FOLLOWLOCATION => true
  ];

  $ch = curl_init();

  curl_setopt_array($ch, $options);

  $res = json_decode(curl_exec($ch), true);
  curl_close($ch);

  return $res;

}
?>
def add_prospect_to_list():
token = get_access_token()
params = {'access_token':token,
          'email':'john.doe@example.com',
          'fullName': 'John Doe',
          'firstName':'John',
          'lastName':'Doe',
          'phones':['+18882073333', '+18882074444'],
          'country':'United States',
          'locality':'Woodbridge, New Jersey',
          'socialLinks[linkedIn]':'https://www.linkedin.com/in/johndoe/&social',
          'social[twiiter]':'https://twitter.com/johndoe&social',
          'customFields[specialization]':'Software Engineering',
          'position':'Vice President of Sales',
          'companyName':'GoldenRule',
          'companySite':'https://goldenrule.com',
          'updateContact':1,
          'listId':'12345'
}

res = requests.post('https://api.snov.io/v1/add-prospect-to-list', data=params)

return json.loads(res.text)
{
  "email": "john.doe@example.com",
  "listId": 12345678,
  "createDuplicates": false,
  "updateContact": true,
  "fullName": "John Doe",
  "firstName": "John",
  "lastName": "Doe",
  "position": "Vice President of Sales",
  "companyName": "GoldenRule",
  "companySite": "https://goldenrule.com",
  "phones": [
    "+18882073333",
    "+18882074444"
  ],
  "country": "United States",
  "locality": "Woodbridge, New Jersey",
  "customFields": {
    "specialization": "Software Engineering"
  },
  "socialLinks": {
    "linkedIn": "https://www.linkedin.com/in/johndoe/&social",
    "twitter": "https://twitter.com/johndoe&social"
  }
}
回执示例
{
    "success": true,
    "id": "0Y2QzowWL1rHpIptwaRp0Q==",
    "added": true,
    "updated": false
}
输出参数
success
true
如果潜在客户已成功添加到列表中。
id
添加潜在客户标识符。
added
true
如果潜在客户已添加到列表中。
updated
true
如果现有潜在客户的数据已更新。
errors
将潜在客户添加到列表中时出错。

POST通过 ID 查找潜在客户

免费

根据 ID 从您的列表中找到潜在客户。了解特定潜在客户的 ID 之后,您可以获得有关该潜在客户的完整信息,包括已添加到这些潜在客户的列表和营销邮件。

请求
POSThttps://api.snov.io/v1/get-prospect-by-id
输入参数
id
*必需
潜在客户的 ID。您可以在回执中看到它当您添加一个潜在客户通过将潜在客户添加到列表API 方法或网址当您查看潜在客户页面时(参见一个示例).
代码示例
<?php
function getProspectById()
{
    $token = getAccessToken();

    $params = [
        'access_token'    => $token,
        'id'           => 'xusD3-T_K5IktGoaa8Jc8A=='
    ];

    $options = [
        CURLOPT_URL            => 'https://api.snov.io/v1/get-prospect-by-id',
        CURLOPT_POST           => true,
        CURLOPT_POSTFIELDS     => $params,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true
    ];

    $ch = curl_init();

    curl_setopt_array($ch, $options);

    $res = json_decode(curl_exec($ch), true);
    curl_close($ch);
    
    return $res;

}
?>
def getProspectById():
token = get_access_token()
params = {'access_token':token,
        'id':'xusD3-T_K5IktGoaa8Jc8A=='
}

res = requests.post('https://api.snov.io/v1/get-prospect-by-id', data=params)

return json.loads(res.text)
回执示例
{
  "success": true,
  "data": {
    "id": "xusD3-T_K5IktGoaa8Jc8A==",
    "name": "Gavin Vanrooyen",
    "firstName": "Gavin",
    "lastName": "Vanrooyen",
    "industry": "Entertainment",
    "country": "United States",
    "locality": "Greater Atlanta Area",
    "social": [
      {
        "link": "https:\/\/www.linkedin.com\/in\/gavin-vanrooyen-8090738\/",
        "type": "linkedIn"
      }
    ],
    "lastUpdateDate": {
      "date": "2019-09-11 12:37:58.000000",
      "timezone_type": 3,
      "timezone": "UTC"
    },
    "currentJob": [
      {
        "companyName": "Octagon",
        "position": "Senior Brand Director",
        "socialLink": "https:\/\/www.linkedin.com\/company\/659312",
        "site": "http:\/\/octagon.com",
        "locality": "United States",
        "state": null,
        "city": null,
        "street": null,
        "street2": null,
        "postal": null,
        "founded": null,
        "startDate": "2018-07-31",
        "endDate": null,
        "size": "1-10",
        "industry": "Entertainment",
        "companyType": "Public Company",
        "country": "United States"
      }
    ],
    "previousJob": [
      {
        "companyName": "UPS",
        "position": "Manager, Sponsorships and Events",
        "socialLink": "https:\/\/www.linkedin.com\/company\/152322",
        "site": "http:\/\/www.ups.com\/",
        "locality": "United States",
        "state": "GA",
        "city": "Atlanta",
        "street": "55 Glenlake Parkway, NE",
        "street2": null,
        "postal": "30328",
        "founded": "1907",
        "startDate": null,
        "endDate": null,
        "size": "10001+",
        "industry": "Logistics and Supply Chain",
        "companyType": "Public Company",
        "country": "United States"
      }
    ],
    "lists": [
      {
        "id": 1250344,
        "name": "People List"
      }
    ],
    "campaigns": []
  }
}
输出参数
success
true
如果已经找到潜在客户
id
唯一的配置文件标识符
name
潜在客户全名
firstName
潜在客户名字
lastName
潜在客户姓氏
industry
潜在客户资料中显示的行业
country
潜在客户所在国家
locality
潜在客户所在地点
social
潜在客户的社交资料链接
currentJobs
数组包含有关潜在客户当前职务的信息
previousJobs
数组包含有关潜在客户以前职务的信息
lastUpdateDate
上次资料更新日期
lists
已添加潜在客户的列表
campaigns
此潜在客户已作为收件人添加到的营销列表。包含简短的统计信息,如状态、发出的邮件数量、打开数和回复数。

POST通过邮箱地址查找潜在客户

免费

通过邮箱地址从您的列表中查找潜在客户。当您通过邮箱地址搜索时,您会收到与此邮箱地址关联的所有潜在客户列表。列表中的每个元素都包含潜在客户的完整信息,包括他们添加到的列表和营销邮件。

请求
POSThttps://api.snov.io/v1/get-prospects-by-email
输入参数
email
*必需
潜在客户邮箱地址。
代码示例
<?php
function getProspectsByEmail()
{
    $token = getAccessToken();

    $params = [
        'access_token'    => $token,
        'email'           => 'gavin.vanrooyen@octagon.com'
    ];

    $options = [
        CURLOPT_URL            => 'https://api.snov.io/v1/get-prospects-by-email',
        CURLOPT_POST           => true,
        CURLOPT_POSTFIELDS     => $params,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true
    ];

    $ch = curl_init();

    curl_setopt_array($ch, $options);

    $res = json_decode(curl_exec($ch), true);
    curl_close($ch);
    
    return $res;

}
?>
def getProspectsByEmail():
token = get_access_token()
params = {'access_token':token,
        'email':'gavin.vanrooyen@octagon.com'
}

res = requests.post('https://api.snov.io/v1/get-prospects-by-email', data=params)

return json.loads(res.text)
回执示例
{
  "success": true,
  "data": [
    {
      "id": "xusD3-T_K5IktGoaa8Jc8A==",
      "name": "Gavin Vanrooyen",
      "firstName": "Gavin",
      "lastName": "Vanrooyen",
      "industry": "Entertainment",
      "country": "United States",
      "locality": "Greater Atlanta Area",
      "social": [
        {
          "link": "https:\/\/www.linkedin.com\/in\/gavin-vanrooyen-809073755\/",
          "type": "linkedIn"
        }
      ],
      "lastUpdateDate": {
        "date": "2019-09-11 12:37:58.000000",
        "timezone_type": 3,
        "timezone": "UTC"
      },
      "currentJob": [
        {
          "companyName": "Octagon",
          "position": "Senior Brand Director",
          "socialLink": "https:\/\/www.linkedin.com\/company\/659333",
          "site": "http:\/\/octagon.com",
          "locality": "United States",
          "state": null,
          "city": null,
          "street": null,
          "street2": null,
          "postal": null,
          "founded": null,
          "startDate": "2018-07-31",
          "endDate": null,
          "size": "1-10",
          "industry": "Entertainment",
          "companyType": "Public Company",
          "country": "United States"
        }
      ],
      "previousJob": [
        {
          "companyName": "UPS",
          "position": "Manager, Sponsorships and Events",
          "socialLink": "https:\/\/www.linkedin.com\/company\/1523574",
          "site": "http:\/\/www.ups.com\/",
          "locality": "United States",
          "state": "GA",
          "city": "Atlanta",
          "street": "55 Glenlake Parkway, NE",
          "street2": null,
          "postal": "30328",
          "founded": "1907",
          "startDate": null,
          "endDate": null,
          "size": "10001+",
          "industry": "Logistics and Supply Chain",
          "companyType": "Public Company",
          "country": "United States"
        }
      ],
      "lists": [
        {
          "id": 1250344,
          "name": "People List"
        }
      ],
      "campaigns": []
    }
  ]
}
输出参数
success
true
如果已经找到潜在客户
id
唯一的配置文件标识符
name
潜在客户全名
firstName
潜在客户名字
lastName
潜在客户姓氏
industry
潜在客户资料中显示的行业
country
潜在客户所在国家
locality
潜在客户所在地点
social
潜在客户的社交资料链接
currentJobs
数组包含有关潜在客户当前职务的信息
previousJobs
数组包含有关潜在客户以前职务的信息
lastUpdateDate
上次资料更新日期
lists
已添加潜在客户的列表
campaigns
此潜在客户已作为收件人添加到的营销邮件列表。包含简短的统计信息,如状态、发出的邮件数量、打开数和回复数。

GET查找潜在客户的自定义字段

免费

此方法返回用户创建的所有自定义字段的列表,包括字段的名称、字段为可选或必填,以及字段的数据类型。

请求
GEThttps://api.snov.io/v1/prospect-custom-fields
输入参数
这个方法没有输入参数
代码示例
<?php
function customFields()
{
    $token = getAccessToken();

    $params = [
        'access_token' => $token,
    ];

    $params = http_build_query($params);

    $options = [
        CURLOPT_URL            => 'https://api.snov.io/v1/prospect-custom-fields?'.$params,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true
    ];

    $ch = curl_init();

    curl_setopt_array($ch, $options);

    $res = json_decode(curl_exec($ch), true);

    curl_close($ch);

    return $res;

}
?>
def custom_fields():
token = get_access_token()
params = {'access_token':token
}

res = requests.get('https://api.snov.io/v1/prospect-custom-fields', data=params)

return json.loads(res.text)
回执示例
  [
    {
        "key": "customFields['company']",
        "label": "company",
        "required": false,
        "type": "string"
    },
    {
        "key": "customFields['Project name']",
        "label": "Project name",
        "required": false,
        "type": "string"
    },
    {
        "key": "customFields['SEO']",
        "label": "SEO",
        "required": false,
        "type": "string"
    }
  ]
输出参数
key
customFields
数组中的字段关键字。
label
字段名称。
required
true
如果自定义字段为必填项。
type
自定义字段的数据类型(字符串、数字或日期)。

GET查看用户列表

免费

此方法返回用户创建的所有列表。您可以使用此方法来查看可用于邮件自动化营销的列表。

请求
GEThttps://api.snov.io/v1/get-user-lists
输入参数
这个方法没有输入参数
代码示例
<?php
function getUserLists()
{
    $token = getAccessToken();

    $params = [
        'access_token' => $token,
    ];

    $params = http_build_query($params);

    $options = [
        CURLOPT_URL            => 'https://api.snov.io/v1/get-user-lists?'.$params,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true
    ];

    $ch = curl_init();

    curl_setopt_array($ch, $options);

    $res = json_decode(curl_exec($ch), true);

    curl_close($ch);

    return $res;

}
?>
def user_lists():
token = get_access_token()
params = {'access_token':token
}

res = requests.get('https://api.snov.io/v1/get-user-lists', params=params)

return json.loads(res.text)
回执示例
[
    {
        "id": 1818597,
        "name": "FirstSend",
        "contacts": 1,
        "isDeleted": false,
        "creationDate": {
            "date": "2020-04-07 08:25:44.000000",
            "timezone_type": 3,
            "timezone": "UTC"
        },
        "deletionDate": null
    },
    {
        "id": 1505383,
        "name": "All prospects",
        "contacts": 10,
        "isDeleted": true,
        "creationDate": {
            "date": "2019-12-17 15:07:30.000000",
            "timezone_type": 3,
            "timezone": "UTC"
        },
        "deletionDate": {
            "date": "2020-02-17 14:05:44.000000",
            "timezone_type": 3,
            "timezone": "UTC"
        }
    },
    {
        "id": 1479070,
        "name": "EMAIL",
        "contacts": 13,
        "isDeleted": true,
        "creationDate": {
            "date": "2019-12-06 10:51:01.000000",
            "timezone_type": 3,
            "timezone": "UTC"
        },
        "deletionDate": {
            "date": "2020-02-17 14:05:48.000000",
            "timezone_type": 3,
            "timezone": "UTC"
        }
    }
]

输出参数
id
用户列表的唯一标识符。
name
列表名称
contacts
列表中的潜在客户数目。
isDeleted
列表状态。为
true
如果列表已被删除。
creationDate
列表创建的日期和时间(包括日期、时间和时区信息)。
deleteDate
如果列表已被删除,则包含列表删除的日期和时间(包括日期、时间和时区信息)。

POST在列表中查看潜在客户

免费

此方法返回特定列表中的潜在客户的所有数据,包括潜在客户的电子邮件地址和状态等数据。

请求
POSThttps://api.snov.io/v1/prospect-list
输入参数
listId
*必需
列表的唯一标识符。
page
您可以选择在列表中的哪一页开始搜索。该字段为可选项。
perPage
设置单次请求中返回的潜在客户数量上限。最大值为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)
回执示例

请注意,潜在客户结果是按照从最后一位到第一位的倒序显示。

{
    "success": true,
    "list": {
        "name": "Lead LIST",
        "contacts": 3,
        "creationDate": {
            "date": "2020-05-19 17:34:39.000000",
            "timezone_type": 3,
            "timezone": "UTC"
        },
        "emailsCount": []
    },
    "prospects": [
        {
            "id": "226db935fc93422496fda5d5209e8cbf77cc77ec685891706028009b86608f7ce5877a3faf",
            "name": "Andrew Garfiled",
            "firstName": "Andrew",
            "lastName": "Garfiled",
            "emails": [
                {
                    "email": "andrewexp@exp.com",
                    "probability": 99,
                    "isVerified": null,
                    "jobStatus": "any",
                    "domainType": "linkedin_email",
                    "isValidFormat": null,
                    "isDisposable": null,
                    "isWebmail": null,
                    "isGibberish": null,
                    "smtpStatus": null
                }
            ]
        },
        {
            "id": "f20d30219b039d1408d837a748a1e2ab843c97e65080f6cf8fa7d948477d9093d87413f05f",
            "name": "John Doe",
            "firstName": "John",
            "lastName": "Doe",
            "emails": [
                {
                    "email": "johndoe@gmail.com",
                    "probability": 99,
                    "isVerified": null,
                    "jobStatus": "any",
                    "domainType": "linkedin_email",
                    "isValidFormat": true,
                    "isDisposable": false,
                    "isWebmail": true,
                    "isGibberish": false,
                    "smtpStatus": 3
                }
            ]
        }
    ]
}

输出参数
list
一个包含有关列表及潜在客户信息的数组。
name
列表名称。
contacts
列表中的潜在客户数目。
creation_date
列表创建的日期(包括日期、时间和时区信息)。
emailsCount
列表中的电子邮件数目。
prospects
列表中的潜在客户列表。
id
一个潜在客户的唯一标识符。
name
一个潜在客户的全名。
emails
一个属于潜在客户的电子邮件列表。

POST创建新的潜在用户列表

免费

使用该方法,在您的账户中创建新的潜在用户列表。

请求
POSThttps://api.snov.io/v1/lists
输入参数
name
新潜在用户列表名称。
代码示例
<?php
function createNewList()
{
    $token = getAccessToken();

    $params = [
        'access_token' => $token,
        'name' => 'New list'
    ];

    $options = [
        CURLOPT_URL => 'https://api.snov.io/v1/lists',
        CURLOPT_POST => true,
        CURLOPT_POSTFIELDS => $params,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true,
    ];

    $ch = curl_init();

    curl_setopt_array($ch, $options);

    $res = json_decode(curl_exec($ch), true);

    curl_close($ch);
}
?>
def add_prospect_list():
    token = get_access_token()
    params = {
        'access_token':token,
        'name':'New list'
    }

    res = requests.post('https://api.snov.io/v1/lists', data=params)

    return json.loads(res.text)
回执示例
[
    {
        "success": true,
        "data": {
            "id": 1234567
        }
    }
]
输出参数
id
已创建的潜在用户列表ID。

GET获取销售漏斗列表

免费

该方法显示 CRM(交易)部分中所有销售漏斗的列表,包括每个销售漏斗中的交易数量和总金额。

请求
GEThttps://api.snov.io/v2/pipelines
输入参数
此方法没有输入参数。
代码示例
<?php
function getUserPipelines()
{
    $token = getAccessToken();
    $options = [
        CURLOPT_URL            => 'https://api.snov.io/v2/pipelines',
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_HTTPHEADER     => [
            'Authorization: Bearer ' . $token,
            'Content-Type: application/json',
        ],
    ];
    $ch = curl_init();
    curl_setopt_array($ch, $options);
    $res = json_decode(curl_exec($ch), true);

    curl_close($ch);

    return $res;

}
?>
def get_user_pipelines():
    token = get_access_token()

    headers = {
        'Authorization': 'Bearer ' + token,
        'Content-Type': 'application/json'
    }

    res = requests.get('https://api.snov.io/v2/pipelines', headers=headers)

    return json.loads(res.text)
回执示例
{
    "data": [
        {
            "id": 1106350,
            "name": "Test pipeline",
            "deals_count": 65,
            "deals_value": 1241600,
            "created_at": "2022-05-27T00:00:00Z"
        },
        {
            "id": 524548,
            "name": "Pipeline",
            "deals_count": 0,
            "deals_value": 0,
            "created_at": "2022-01-10T00:00:00Z"
        }
    ]
}
输出参数
id
销售漏斗的唯一标识符。
name
销售漏斗名称。
deals_count
当前销售漏斗中的交易数量。
deals_value
销售漏斗中所有交易的总金额。
created_at
销售漏斗创建日期和时间,采用 ISO 8601 格式。

GET获取销售漏斗阶段列表

免费

该方法显示 CRM(交易)部分中特定销售漏斗内所有阶段的列表。

请求
GEThttps://api.snov.io/v2/pipelines/{pipeline_id}/stages
输入参数
pipeline_id
您想要获取阶段的销售漏斗的唯一标识符。
代码示例
<?php
function getPipelineStages($pipelineId)
{
    $token = getAccessToken();
    $options = [
        CURLOPT_URL            => 'https://api.snov.io/v2/pipelines/' . $pipelineId . '/stages',
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_HTTPHEADER     => [
            'Authorization: Bearer ' . $token,
            'Content-Type: application/json',
        ],
    ];
    $ch = curl_init();
    curl_setopt_array($ch, $options);
    $res = json_decode(curl_exec($ch), true);

    curl_close($ch);

    return $res;

}
?>
def get_pipeline_stages(pipeline_id):
    token = get_access_token()

    headers = {
        'Authorization': 'Bearer ' + token,
        'Content-Type': 'application/json'
    }

    res = requests.get(
        f'https://api.snov.io/v2/pipelines/{pipeline_id}/stages',
        headers=headers
    )

    return json.loads(res.text)
回执示例
{
    "data": [
        {
            "id": 10001,
            "pipeline_id": 1106350,
            "name": "Lead in",
            "order": 1,
            "deals_count": 54,
            "deals_value": 1011
        },
        {
            "id": 10002,
            "pipeline_id": 1106350,
            "name": "Contact made",
            "order": 2,
            "deals_count": 4,
            "deals_value": 2108
        }
    ]
}
输出参数
id
阶段的唯一标识符。
pipeline_id
此阶段所属销售漏斗的 ID。
name
阶段名称。
order
阶段在销售漏斗中的位置。
deals_count
当前此阶段中的交易数量。
deals_value
此阶段中所有交易的总金额。

GET查看用户余额

免费

用此方法查看您的信用点数余额。

请求
GEThttps://api.snov.io/v1/get-balance
输入参数
这个方法没有输入参数
代码示例
<?php
function getBalance()
{
    $token = getAccessToken();

    $params = [
        'access_token' => $token,
    ];

    $params = http_build_query($params);

    $options = [
        CURLOPT_URL            => 'https://api.snov.io/v1/get-balance?'.$params,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true
    ];

    $ch = curl_init();

    curl_setopt_array($ch, $options);

    $res = json_decode(curl_exec($ch), true);

    curl_close($ch);

    return $res;

}
?>
def get_balance():
token = get_access_token()
headers = {'authorization':token
}

res = requests.get('https://api.snov.io/v1/get-balance', headers=headers)

return json.loads(res.text)
回执示例
{
    "success": true,
    "data": {
        "balance": "25000.00",
        "teamwork": false,
        "unique_recipients_used": 0,
        "limit_resets_in": 29,
        "expires_in": 359
    }
}

输出参数
balance
用户当前的信用点数余额。
teamwork
若您目前是团队成员或领导,则为“true”,若您不属于任何团队,则为“false”。
recipients_used
本月已使用的唯一收件人数量。
limit_resets_in
距离限额重置的天数。
expires_in
距离订阅结束的天数。

Webhook

描述

Webhook 可让您收到 Snov.io 账户中的事件通知。

每当 Snov.io 中有新的订阅事件时,您都可以使用 webhook 调用服务器上的端点 (URL),并将实时数据发送到您的应用程序。

事件发生时,Snov.io 会向指定的 URL 端点发送一个带有 JSON 内容的 HTTP 请求。

您可以通过一组 API 调用来订阅和管理 webhook。

目前支持的 webhook 对象和操作如下:

Webhook 对象操作触发后
campaign_email
sent在任何自动化营销中向收件人发送任何邮件时
first_sent在任何自动化营销中向收件人发送第一封邮件时
opened当收件人打开任何自动化营销中的任何邮件时
bounced当营销邮件被退回
link_clicked当收件人在营销邮件中点击一个链接
campaign_reply
received当收件人回复任何营销中的任何邮件时
first_received当收件人在任何营销中首次回复邮件时
autoreply_received当您收到营销邮件的自动回复时
campaign_li_reply
received当收件人在任何营销中通过领英对连接请求、消息或领英站内信进行后续回复时
first_received当收件人在任何营销中通过领英首次对连接请求、消息或领英站内信进行回复时
campaign_li
connection_request_accepted当收件人接受从营销中发送的领英连接请求时
company
found_domains_by_names当您根据公司名称请求其域名时
prospect
found_by_li_url当您根据潜在客户的 领英 URL 请求其个人资料信息时
found_emails_by_name_by_domain当您搜索潜在客户的邮箱地址时
campaign_finished当某个收件人的营销完成时(状态:已完成
campaign_unsubscribed当营销邮件的接收者退订你的邮件
email_verification
verified当您请求邮箱验证时

限制: 高级套餐用户最多可以创建 50 个 webhook。

重试策略:如果系统在 3 秒内收到 200-299 范围内的 HTTP 状态 作为响应,则 webhook 成功。

如果出现了任何其他的HTTP状态或者超时错误,我们将在事件触发了webhook之后尝试7次,每次间隔高达38小时:

如果所有重试均不成功,webhook 将会停用。

  • 第 1 次:事件发生后第一时间
  • 第 2 次:最近一次尝试后 20 分钟(事件发生后 20 分钟)
  • 第 3 次:最近一次尝试后 40 分钟(事件发生后 1 小时)
  • 第 4 次:最近一次尝试后 60 分钟(事件发生后 2 小时)
  • 第 5 次:最近一次尝试后 4 小时(事件发生后 6 小时)
  • 第 6 次:最近一次尝试后 8 分钟(事件发生后 14 小时)
  • 第 7 次:最近一次尝试后 24 分钟(事件发生后 38 小时)

GET列出所有 webhook

您可以使用这种 API 方法来获取账户的 webhook 列表。
请求
GEThttps://api.snov.io/v2/webhooks
请求标题

内容- 类型:application/json

输入参数
此方法没有输入参数。
回执示例
{
    "data": [
        {
            "data": {
                "id": 8,
                "end_point": "https://hooks.yourdomain.com/hooks/catch/1237321/awwwcz/",
                "event_object": "campaign_email",
                "event_action": "sent",
                "status": "active",
                "created_at": 1655847444
            }
        },
        {
            "data": {
                "id": 14,
                "end_point": "https://hooks.yourdomain.com/hooks/catch/1237321/abqqqpcz/",
                "event_object": "campaign_email",
                "event_action": "sent",
                "status": "deactivated",
                "created_at": 1655890563
            }
        },
        {
            "data": {
                "id": 17,
                "end_point": "https://hooks.yourdomain.com/hooks/catch/1237321/abwfpcz/",
                "event_object": "campaign_email",
                "event_action": "sent",
                "status": "active",
                "created_at": 1656057947
            }
        }
    ],
    "meta": {
        "webhooks_count": 3,
        "user_id": 1313777
    }
}
输出参数
回执会返回一组 webhook 模型集合。 模型的属性如下:
参数数据类型数据类型
data
arraywebhook 模型集合
id
intWebhook ID
end_point
string您在添加 webhook 时提供的实际 URL 地址及其发送位置
event_object
string执行操作的对象
event_action
string对象的操作
created_at
intUnix Timestamp 格式的 Webhook 创建日期
status
stringWebhook 状态:启用、停用
meta
object相关数据
webhooks_count
int您的账户中的 webhook 总数(最多 50 个)
user_id
int用户 ID

POST添加 webhook

您可以使用这种 API 方法来创建 webhook 订阅并接收取指定端点 URL 的事件通知。
请求
POSThttps://api.snov.io/v2/webhooks
请求标题

内容- 类型:application/json

输入参数
event_object
执行操作的对象(支持的对象列表
event_action
对对象执行的操作(支持的操作列表
endpoint_url
发送 Webhook 的 URL 地址
请求示例
{
  "event_object": "campaign_email",
  "event_action": "sent",
  "endpoint_url": "https://hooks.yourdomain.com/hooks/catch/1237321/abwfpcz/"
}
回执示例
{
    "data": {
        "id": 17,
        "end_point": "https://hooks.yourdomain.com/hooks/catch/1237321/abwfpcz/",
        "event_object": "campaign_email",
        "event_action": "sent",
        "created_at": 1656057947,
        "status": "active"
    },
    "meta": {
        "user_id": 1313777
    }
}
输出参数
回执会返回一个添加的 webhook 模型。 模型的属性如下:
参数数据类型数据类型
data
objectWebhook 数据
id
intWebhook ID
end_point
string您在添加 webhook 时提供的实际 URL 地址及其发送位置
event_object
string执行操作的对象
event_action
string对象的操作
created_at
intUnix Timestamp 格式的 Webhook 创建日期
status
stringWebhook 状态:启用、停用
meta
object相关数据
user_id
int用户 ID

PUT更改 webhook 状态

更改所选 webhook 订阅的状态。

在请求 URL 地址的末尾包含所选 webhook 的唯一“id”值。

使用“列出所有 webhooks”的方法获取 webhooks 的 id 值。

请求
PUThttps://api.snov.io/v2/webhooks/webhook_id
请求标题

内容- 类型:application/json

输入参数
status
启用或停用
请求示例
{
    https://api.snov.io/v2/webhooks/14
    "status": "deactivated"
}
回执示例
{
    "data": {
        "id": 14,
        "end_point": "https://hooks.yourdomain.com/hooks/catch/1237321/abqqqpcz/",
        "event_object": "campaign_email",
        "event_action": "sent",
        "created_at": 1655890563,
        "status": "deactivated"
    },
    "meta": {
        "user_id": 1313777
    }
}
输出参数
回执会返回一个添加的 webhook 模型。 模型的属性如下:
参数数据类型数据类型
data
objectWebhook 数据
id
intWebhook ID
end_point
string您在添加 webhook 时提供的实际 URL 地址及其发送位置
event_object
string执行操作的对象
event_action
string对象的操作
created_at
intUnix Timestamp 格式的 Webhook 创建日期
status
stringWebhook 状态:启用、停用
meta
object相关数据
user_id
int用户 ID

DELETE删除一个 webhook

删除一个选定的 webhook。

在请求 URL 地址的末尾包含所选 webhook 的唯一“id”值。

使用“列出所有 webhooks”的方法获取 webhooks 的 id 值。

请求
DELETEhttps://api.snov.io/v2/webhooks/webhook_id
请求标题

内容- 类型:application/json

请求示例
{
    https://api.snov.io/v2/webhooks/8
}
回执示例
{
    "data": {
        "success": true
    }
}
输出参数
回执会返回一组 webhook 模型集合。 模型的属性如下:
参数数据类型数据类型
success
boolean显示是否删除了 webhook

DEEPSEEK爆火,外贸人如何用AI挖掘客户?用AI找客户,写邮件,回复询盘,10倍专业和效率。点击阅读详情!