API de Snov.io

Las funciones de Snov.io se pueden utilizar a través de nuestra sencilla API REST. Integra con la API de Snov.io para sincronizar tus leads, encontrar emails, gestionar prospectos y más. La tasa de la API está limitada a 60 solicitudes por minuto.

Si estás en el plan gratuito, puedes solicitar un acceso de prueba reservando una demo personalizada con nuestro equipo. Para comenzar, cuéntanos cuál es tu objetivo específico para que podamos comprender mejor tus necesidades.

Casos de uso para las APIs de Snov.io

  1. Enriquece tus listas de prospectos para ampliar los datos para tu equipo de ventas
    Encuentra direcciones de correo electrónico reales a partir de un nombre o dominio de empresa—ideal para expandir listas de prospectos o enriquecer datos existentes.
  2. Inscripción automática de nuevos registros en campañas
    Conecta tus formularios de registro y de eventos con la API de Snov.io para añadir instantáneamente nuevos prospectos a tus campañas.
  3. Mantén tu base de datos de clientes limpia
    Integra la verificación de correos electrónicos en tu CRM o herramientas de prospección para validar instantáneamente correos electrónicos de prospectos añadidos recientemente y mantener la información de los clientes existentes relevante.
  4. Usa URLs de LinkedIn para completar automáticamente los detalles de los leads
    Convierte la URL de un miembro básico de LinkedIn en un perfil rico, listo para CRM. Di adiós a la entrada de datos manual—hola a leads de alta calidad.
  5. Comparte los resultados de la campaña en tiempo real
    Extrae datos en vivo de tus campañas frías a paneles o diapositivas pulidas. Ofrece a tus interesados la información que necesitan, sin complicaciones.
  6. Respeta las listas de no enviar correos
    Añade automáticamente a los prospectos a las listas de no enviar correos para evitar contactos accidentales. Perfecto para mantener en línea a tu equipo de ventas, respetar las bajas y cumplir con las normas de privacidad de datos.

Integra estos métodos—y muchos más—en tu flujo de trabajo. Con nuestra API flexible, los casos de uso son prácticamente infinitos.

Autenticación

Es necesario generar un token de acceso para autenticar futuras solicitudes. Al realizar una solicitud, especifica este token de acceso en el campo Autorización.

Authorization: Bearer QSlHffXmCAILIOHNGXToq4LsP2yX64VQhEBZ7Ei4

Este es un ejemplo de generación de tokens.

Solicitud
POSThttps://api.snov.io/v1/oauth/access_token
Parámetros de entrada
grant_type
Siempre será
client_credentials
client_id
Tu identificación está disponible en la configuración de la cuenta https://app.snov.io/account/api
client_secret
Tu clave secreta está disponible en la configuración de la cuenta https://app.snov.io/account/api
Ejemplos de código
<?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']
Ejemplo de respuesta
{
"access_token":"3yUyQZdks0Ej7T2fXzjUWzwlTcO4dWisKkeMpESz",
"token_type":"Bearer",
"expires_in":3600
}
Parámetros de salida
access_token
Tu nuevo token de acceso
token_type
Siempre será Bearer
expires_in
Tiempo de expiración del token (en segundos)

Métodos API

POSTBúsqueda de dominio

1 crédito por cada solicitud única / 1 crédito por cada email del perfil de prospecto

Ingresa un nombre de dominio y Snov.io te devolverá información de la empresa, emails y perfiles de prospectos.

Costo de crédito
Solicitudes de información de la empresa, emails y perfiles de prospectos

1 crédito por cada solicitud POST. No se te cobrará si no obtienes resultados.

Emails del perfil de prospecto

1 crédito por cada perfil de prospecto con un email.

Domain search schema
Información de la empresa (solicitando resultados)
1 crédito por cada solicitud única.
POSThttps://api.snov.io/v2/domain-search/start
Parámetros de entrada
domain
El nombre de dominio para el cual deseas recibir información de la empresa. Por ejemplo, "snov.io".
Ejemplos de código
<?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)
Ejemplo de respuesta
{
  "data": [],
  "meta": {
    "domain": "snov.io",
    "task_hash": "6f15de14db954c761f8e7507547b3bd7"
  },
  "links": {
    "result": "https://api.snov.io/v2/domain-search/result/6f15de14db954c761f8e7507547b3bd7"
  }
}
Parámetros de salida
domain
Dominio para el cual estás obteniendo información de la empresa.
task_hash
ID único para la tarea de búsqueda que iniciaste. Se añade automáticamente a la URL de tu próxima solicitud para recibir los resultados.
result
URL de solicitud que debes utilizar para recibir la información de la empresa.
Información de la empresa (obteniendo resultados)
URL recibida de tu solicitud anterior.
GEThttps://api.snov.io/v2/domain-search/result/{task_hash}
Ejemplos de código
<?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)
Ejemplo de respuesta
{
  "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"
}
Parámetros de salida
company_name
El nombre de la empresa asociado con el dominio.
city
La ciudad en la que se encuentra la sede de la empresa.
founded
El año en que se fundó la empresa.
website
La dirección del sitio web de la empresa.
hq_phone
El número de teléfono de la sede de la empresa.
industry
Industria de la empresa.
size
El número de empleados que tiene la empresa.
related_domains
Dominios con el mismo SLD (dominio de segundo nivel) que el dominio para el que estás solicitando datos.
domain
El nombre de dominio para el cual la API ha proporcionado la información de la empresa.
task_hash
ID único para la tarea de búsqueda que iniciaste.
prospects_count
El número de perfiles de prospectos recuperados de tu solicitud.
emails_count
El número de emails de dominio recuperados de tu solicitud.
generic_contacts_count
El número de emails genéricos recuperados de tu solicitud.
prospects
URL para solicitar una lista con perfiles completos de prospectos.
domain_emails
URL para solicitar una lista con emails de dominio.
generic_contacts
URL para solicitar una lista con emails genéricos de la empresa.
status
Estado de la solicitud. Puede ser completado o en progreso.
Perfiles de prospectos (solicitando resultados)
1 crédito por cada solicitud única.
POSThttps://api.snov.io/v2/domain-search/prospects/start
Parámetros de entrada
domain
El nombre de dominio para el cual deseas encontrar perfiles de prospectos. Por ejemplo, "snov.io".
positions[]
Utiliza este parámetro para filtrar prospectos por puesto de trabajo, por ejemplo, "Desarrollador de Software". Para filtrar por múltiples puestos, ingresa un array con los puestos necesarios, separados por coma.

Puedes filtrar hasta 10 puestos por solicitud.
page
Número de página que contiene los perfiles de prospectos. Cada página muestra hasta 20 perfiles.

Si no se indica la página, por defecto se devolverá la primera página.
Ejemplos de código
<?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)
Ejemplo de respuesta
{
  "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"
  }
}
Parámetros de salida
domain
Dominio para el cual estás obteniendo perfiles de prospectos.
tab
Muestra el tipo de resultados que estás solicitando.

prospectos indica que estás buscando perfiles de prospectos.

emails muestra emails de dominio.

servicio indica que estás obteniendo emails genéricos.
task_hash
ID único para la tarea de búsqueda que iniciaste. Se añade automáticamente a la URL de tu próxima solicitud para recibir los resultados.
page
Número de página que contiene los perfiles de prospectos. Cada página muestra hasta 20 perfiles.
positions
Puestos de trabajo utilizados para filtrar los resultados.
result
URL de solicitud que debes utilizar para recibir perfiles de prospectos.
Perfiles de prospectos (obteniendo resultados)
URL recibida de tu solicitud anterior.
GEThttps://api.snov.io/v2/domain-search/prospects/result/{task_hash}
Ejemplos de código
<?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)
Ejemplo de respuesta
{
  "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"
}
Parámetros de salida
first_name
Nombre del prospecto.
last_name
Apellido del prospecto.
position
Puesto de trabajo del prospecto.
source_page
La página de origen de los datos personales recuperados.
search_emails_start
URL para tu próxima solicitud para buscar el email del prospecto.
domain
Dominio para el cual estás obteniendo perfiles de prospectos.
tab
Muestra el tipo de resultados que estás obteniendo.

prospectos indica que estás buscando perfiles de prospectos.

emails muestra emails de dominio.

servicio indica que estás obteniendo emails genéricos.
task_hash
ID único para la tarea de búsqueda que iniciaste.
page
Número de página que contiene los perfiles de prospectos. Cada página muestra hasta 20 perfiles.
positions
Puestos de trabajo utilizados para filtrar los resultados.
total_count
Número total de perfiles de prospectos encontrados.
next
URL para tu próxima solicitud para recuperar resultados de la siguiente página. Cada página tiene hasta 20 prospectos.
status
Estado de la solicitud. Puede ser completado o en progreso.
Email del prospecto (solicitando resultados)
URL recibida de tu solicitud anterior. Se te cobrará 1 crédito por cada prospecto con un email.
POSThttps://api.snov.io/v2/domain-search/prospects/search-emails/start/{prospect_hash}
Ejemplos de código
<?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)
Ejemplo de respuesta
{
  "data": [],
  "meta": {
    "task_hash": "5e846a1d80d95f66cfb30250a7c1881f"
  },
  "links": {
    "result": "https://api.snov.io/v2/domain-search/prospects/search-emails/result/5e846a1d80d95f66cfb30250a7c1881f"
  }
}
Parámetros de salida
task_hash
ID único para la tarea de búsqueda que iniciaste.
result
URL para tu próxima solicitud para obtener el email del prospecto.
Email del prospecto (obteniendo resultados)
URL recibida de tu solicitud anterior.
GEThttps://api.snov.io/v2/domain-search/prospects/search-emails/result/{task_hash}
Ejemplos de código
<?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)
Ejemplo de respuesta
{
  "data": {
    "searching_date": "2025-01-01 11:11:11",
    "emails": [
      {
        "email": "example@snov.io",
        "smtp_status": "valid"
      }
    ]
  },
  "meta": {
    "task_hash": "5e846a1d80d95f66cfb30250a7c1881f"
  },
  "links": [],
  "status": "completed"
}
Parámetros de salida
searching_date
Fecha en la que se realizó la búsqueda del email.
emails
Emails de prospectos.
smtp_status
Puede devolver válido, o desconocido (también conocido como no verificable). Puedes aprender más sobre los estados de los correos electrónicos aquí.
task_hash
ID único para la tarea de búsqueda que iniciaste.
status
Estado de la solicitud. Puede ser completado o en progreso.
Emails de dominio (solicitando resultados)
1 crédito por cada solicitud única.
POSThttps://api.snov.io/v2/domain-search/domain-emails/start
Parámetros de entrada
domain
Nombre de dominio de la empresa para el cual deseas encontrar emails de dominio. Por ejemplo, "snov.io".
Ejemplos de código
<?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)
Ejemplo de respuesta
{
  "data": [],
  "meta": {
    "domain": "snov.io",
    "tab": "emails",
    "task_hash": "36fce9ac2667a827f6c5ab954e288bed",
    "next": ""
  },
  "links": {
    "result": "https://api.snov.io/v2/domain-search/domain-emails/result/36fce9ac2667a827f6c5ab954e288bed"
  }
}
Parámetros de salida
domain
Dominio para el cual estás obteniendo emails.
tab
Muestra el tipo de resultados que estás solicitando.

prospectos indica que estás buscando perfiles de prospectos.

emails muestra emails de dominio.

servicio indica que estás obteniendo emails genéricos.
task_hash
ID único para la tarea de búsqueda que iniciaste. Se añade automáticamente a la URL de tu próxima solicitud para recibir los resultados.
next
ID para la siguiente solicitud de página, si existe una. Si no hay más páginas disponibles, estará vacío.
result
URL de solicitud que debes utilizar para recibir emails de dominio.
Emails de dominio (obteniendo resultados)
URL recibida de tu solicitud anterior.
GEThttps://api.snov.io/v2/domain-search/domain-emails/result/{task_hash}
Ejemplos de código
<?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)
Ejemplo de respuesta
{
  "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"
}
Parámetros de salida
email
Dirección de email del dominio.

Ten en cuenta que estos emails no están verificados. Para verificarlos, utiliza el método de Verificación de Emails.
domain
Dominio para el cual estás obteniendo emails.
tab
Muestra el tipo de resultados que estás obteniendo.

prospectos indica que estás buscando perfiles de prospectos.

emails muestra emails de dominio.

servicio indica que estás obteniendo emails genéricos.
task_hash
ID único para la tarea de búsqueda que iniciaste.
next
ID añadido a la URL de solicitud para acceder a la siguiente página de emails en caso de que exista.
total_count
Número total de emails de dominio encontrados.
next
URL de la solicitud para recuperar los resultados de la siguiente página en caso de que exista. Cada página tiene hasta 50 emails.
status
Estado de la solicitud. Puede ser completado o en progreso.
Contactos genéricos (solicitando resultados)
1 crédito por cada solicitud única.
POSThttps://api.snov.io/v2/domain-search/generic-contacts/start
Parámetros de entrada
domain
Nombre de dominio de la empresa para la cual deseas encontrar emails genéricos. Por ejemplo, "snov.io".
Ejemplos de código
<?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)
Ejemplo de respuesta
{
  "data": [],
  "meta": {
    "domain": "snov.io",
    "tab": "service",
    "task_hash": "0e36e43b9b91a9b20d14b82c1ee141f2",
    "next": ""
  },
  "links": {
    "result": "https://api.snov.io/v2/domain-search/generic-contacts/result/0e36e43b9b91a9b20d14b82c1ee141f2"
  }
}
Parámetros de salida
domain
Dominio para el cual estás obteniendo emails genéricos.
tab
Muestra el tipo de resultados que estás solicitando.

prospectos indica que estás buscando perfiles de prospectos.

emails muestra emails de dominio.

servicio indica que estás obteniendo emails genéricos.
task_hash
ID único para la tarea de búsqueda que iniciaste. Se añade automáticamente a la URL de tu próxima solicitud para recibir los resultados.
next
ID para la siguiente solicitud de página, si existe una. Si no hay más páginas disponibles, estará vacío.
result
URL de solicitud que debes utilizar para recibir emails genéricos.
Contactos genéricos (obteniendo resultados)
URL recibida de tu solicitud anterior.
GEThttps://api.snov.io/v2/domain-search/generic-contacts/result/{task_hash}
Ejemplos de código
<?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)
Ejemplo de respuesta
{
  "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"
}
Parámetros de salida
email
Dirección de email del contacto genérico.

Ten en cuenta que estos emails no están verificados. Para verificarlos, utiliza el método de Verificación de Emails.
domain
Dominio para el cual estás obteniendo emails genéricos.
tab
Muestra el tipo de resultados que estás obteniendo.

prospectos indica que estás buscando perfiles de prospectos.

emails muestra emails de dominio.

servicio indica que estás obteniendo emails genéricos.
task_hash
ID único para la tarea de búsqueda que iniciaste.
next
ID añadido a la URL de solicitud para acceder a la siguiente página de emails en caso de que exista.
total_count
Número total de emails genéricos encontrados para el dominio.
next
URL de la solicitud para recuperar los resultados de la siguiente página en caso de que exista. Cada página tiene hasta 50 emails.
status
Estado de la solicitud. Puede ser completado o en progreso.

POSTVerificar el número de correos disponibles

Gratis

Con este método de la API, puedes averiguar el número de direcciones de email de un determinado dominio en nuestra base de datos. Es completamente gratuito, por lo que no necesitas créditos para utilizarlo.

Solicitud
POSThttps://api.snov.io/v1/get-domain-emails-count
Parámetros de entrada
domain
El nombre del dominio para el que deseas conocer el número de emails en nuestra base de datos.
Ejemplos de código
<?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)
Ejemplo de respuesta
{
"success":true,
"domain":"octagon.com",
"webmail":false,
"result":1369
}
Parámetros de salida
domain
El nombre del dominio para el que deseas conocer el número de emails en nuestra base de datos.
webmail
Es
true
si el dominio que buscas es webmail.
result
Número total de direcciones de emails que hemos encontrado para este dominio. No podemos proporcionar resultados para dominios de webmail, por lo que el resultado para webmail siempre será
0
.

POSTEncontrar correos a partir del nombre y el dominio

1 crédito por cada email con un estado válido o desconocido.

Ingresa el nombre del prospecto y el dominio de la empresa, y Snov.io devolverá su dirección de email verificada.

Proporcionar nombre y dominio
POSThttps://api.snov.io/v2/emails-by-domain-by-name/start
Parámetros de entrada

La forma más fácil de enviar esta solicitud es a través de un cuerpo de JSON en bruto. Dicho esto, aquí tienes un ejemplo si prefieres usar Parámetros

rows
Un array de objetos que contienen detalles del prospecto (nombre, apellido y dominio).
Cada solicitud puede tener hasta 10 objetos.
first_name
Nombre del prospecto.
last_name
Apellido del prospecto.
domain
El dominio de la empresa para la que trabaja el prospecto.
webhook_url
Ingresa tu URL de webhook para recibir resultados de inmediato en lugar de usar una tarea de hash.
Ejemplos de código
<?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)
Ejemplo de respuesta
{
  "data": {
    "task_hash": "005ffad65aad581943cf65a45112ca7a"
  },
  "meta": {
    "rows": [
      {
        "first_name": "John",
        "last_name": "Doe",
        "domain": "yourdomain.com"
      },
      {
        "first_name": "Jane",
        "last_name": "Doe",
        "domain": "yourdomain.com"
      }
    ]
  }
}
Parámetros de salida
task_hash
ID único para la tarea de búsqueda que iniciaste.
first_name
Nombre del prospecto.
last_name
Apellido del prospecto.
domain
El dominio de la empresa para la que trabaja el prospecto.
Recibir emails
GEThttps://api.snov.io/v2/emails-by-domain-by-name/result
Parámetros de entrada
task_hash
ID de solicitud único que recibiste de la solicitud anterior.
Ejemplos de código
<?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)
Ejemplo de respuesta
{
  "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"
  }
}
Parámetros de salida
status
Estado de la solicitud. Puede ser completed o in_progress.
Puedes recibir el estado not_enough_credits si la cuenta que estás utilizando para la búsqueda no tiene suficientes créditos.
people
Nombre completo del prospecto.
email
Email del prospecto.
smtp_status
Puede devolver valid, o unknown (también conocido como No verificable).
Para ver la razón del estado desconocido, revisa el parámetro unknown_status_reason.
is_valid_format
Muestra si el formato del email es válido. Puede ser false o true.
is_disposable
Indica si un email es temporal o desechable, devolviendo false o true.
is_webmail
Es true si el email que estás buscando es webmail.
is_gibberish
Muestra si la dirección de email proporcionada tiene caracteres aleatorios o sin sentido. Será false o true.
unknown_status_reason
Si un email verificado tiene un smtp_status desconocido, puedes encontrar una razón más detallada aquí.
Banned: Alto riesgo de entregabilidad - este email no se pudo verificar con un 100% de certeza.
Catchall: Riesgo de reputación del remitente - este email es un catch-all.
Connection_error: Riesgo de rebote potencial - problemas técnicos del lado del destinatario.
Greylist: Riesgo de entregabilidad - este servidor de email utiliza filtros de lista gris.
domain
Dominio de la empresa para la que trabaja el prospecto.
first_name
Nombre del prospecto.
last_name
Apellido del prospecto.
task_hash
ID único para esta tarea de búsqueda.

POSTEncuentra el dominio del nombre de la empresa

1 crédito por cada dirección de dominio encontrada

Ingresa los nombres de las empresas y Snov.io devolverá sus direcciones de dominio.

Proporcionando nombres de empresas
POSThttps://api.snov.io/v2/company-domain-by-name/start
Parámetros de entrada
names[]
Un array de nombres de empresas para las que deseas recibir los dominios.
Para recuperar dominios de múltiples empresas, agrega cada una como un parámetro separado. Por ejemplo:
names[] | Snov.io
names[] | Sendpulse
Puedes proporcionar hasta 10 nombres de empresas al mismo tiempo.
webhook_url
Ingresa tu URL de webhook para recibir resultados de inmediato en lugar de usar una tarea de hash.
Ejemplos de código
<?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)
Ejemplo de respuesta
{
  "data": {
    "task_hash": "959c0f60facb8629bba746e091a26f7b"
  },
  "meta": {
    "names": [
      "Snov.io",
      "Sendpulse"
    ]
  }
}
Parámetros de salida
task_hash
ID único para la tarea de búsqueda que iniciaste.
names
Un array de nombres de empresas que proporcionaste.
Recibiendo dominios de empresas
GEThttps://api.snov.io/v2/company-domain-by-name/result?task_hash={hash_from_1}
Parámetros de entrada
task_hash
ID de solicitud único que recibiste de la solicitud anterior.
Ejemplos de código
<?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)
Ejemplo de respuesta
{
  "status": "completed",
  "data": [
    {
      "name": "Snov.io",
      "result": {
        "domain": "snov.io"
      }
    },
    {
      "name": "Sendpulse",
      "result": {
        "domain": "sendpulse.com"
      }
    }
  ],
  "meta": {
    "names": [
      "Snov.io",
      "Sendpulse"
    ],
    "task_hash": "959c0f60facb8629bba746e091a26f7b"
  }
}
Parámetros de salida
status
Estado de la solicitud. Puede ser completed o in_progress.
name
Nombre de la empresa para la que solicitaste una dirección de dominio.
domain
Dominio de la empresa.
names
Un array de nombres de empresas que proporcionaste.
task_hash
ID único para esta tarea de búsqueda.

POSTObtener información del perfil de LinkedIn desde URLs

1 crédito por cada información del perfil de prospecto proporcionada

Ingresa las URLs de los miembros de LinkedIn y Snov.io recuperará su información de perfil completa.

Proporcionando URLs de LinkedIn
POSThttps://api.snov.io/v2/li-profiles-by-urls/start
Parámetros de entrada
urls[]
Un array de URLs de perfiles de LinkedIn para las que deseas recibir la información completa del perfil.
Para recuperar información de perfil de múltiples miembros de LinkedIn al mismo tiempo, agrega cada URL como un parámetro separado.
Puedes proporcionar hasta 10 URLs de LinkedIn al mismo tiempo.
webhook_url
Ingresa tu URL de webhook para recibir resultados de inmediato en lugar de usar una tarea de hash.
Ejemplos de código
<?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)
Ejemplo de respuesta
{
  "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/"
    ]
  }
}
Parámetros de salida
task_hash
ID único para la tarea de búsqueda que iniciaste.
urls
URLs de perfiles para los que estás solicitando la información.
Recibiendo información del perfil
GEThttps://api.snov.io/v2/li-profiles-by-urls/result
Parámetros de entrada
task_hash
ID de solicitud único que recibiste de la solicitud anterior.
Ejemplos de código
<?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)
Ejemplo de respuesta
{
  "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"
  }
}
Parámetros de salida
status
Estado de la solicitud. Puede ser completed o in_progress.
url
URL del perfil de LinkedIn.
name
Nombre completo del prospecto.
first_name
Nombre del prospecto.
last_name
Apellido del prospecto.
industry
Campo de trabajo del prospecto.
location
Ubicación del prospecto.
country
País donde se basa el prospecto, según su perfil de LinkedIn.
skills
Habilidades del prospecto.
positions
Array de roles laborales que ocupa actualmente el prospecto.
name
El nombre de la empresa para la que trabaja el prospecto.
title
Título del trabajo del prospecto.
linkedin_url
Enlace a la página de LinkedIn de la empresa.
url
Dirección del sitio web de la empresa.
industry
Industria de la empresa.
country
País donde se encuentran las oficinas centrales de la empresa.
location
Ubicación de la empresa.
specializations
Áreas de especialización o enfoque de la empresa.
urls
1 crédito por cada verificación
task_hash
ID único para esta tarea de búsqueda.

POSTEnriquecer el perfil de una persona a partir del correo

1 crédito por solicitud

Proporcionar una dirección de correo electrónico y Snov.io devolverá toda la información del perfil conectado al propietario de la dirección de correo electrónico proporcionada de la base de datos.

Si no encontramos información sobre el propietario del correo electrónico en nuestra base de datos, no se le cobrará por la solicitud.

Solicitud
POSThttps://api.snov.io/v1/get-profile-by-email
Parámetros de entrada
email
La dirección de correo electrónico de la persona sobre la que desea encontrar información adicional.
Ejemplos de código
<?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)
Ejemplo de respuesta
{
"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"
}
Parámetros de salida
id
Un identificador de perfil único.
source
La fuente de los datos personales recuperados.
name
El nombre completo del propietario de la dirección de correo electrónico.
firstName
El nombre de la persona.
lastName
El apellido de la persona.
logo
La foto de perfil de la persona.
industry
El sector de la persona indicado en la fuente.
country
El país de la persona como se indica en la fuente.
locality
La localidad de la persona como se indica en la fuente.
social
Enlaces a los perfiles sociales de la persona.
currentJobs
Una matriz que contiene información sobre el o los puestos de trabajo actuales de la persona.
previousJobs
Una matriz que contiene información sobre los puestos de trabajo anteriores de la persona.
lastUpdateDate
La fecha de la última actualización del perfil en la base de datos.

POSTVerificador de email

Ingresa direcciones de email y Snov.io realizará una verificación completa. Puedes verificar hasta 10 emails al mismo tiempo.

Proporcionando emails

POSThttps://api.snov.io/v2/email-verification/start
Parámetros de entrada
emails[]
Emails que deseas verificar.
Para verificar múltiples emails al mismo tiempo, agrega cada email como un parámetro separado. Por ejemplo:
emails[] | help@snov.io
emails[] | partnerships@snov.io
Puedes verificar hasta 10 emails al mismo tiempo.
webhook_url
Ingresa tu URL de webhook para recibir resultados de inmediato en lugar de usar una tarea de hash.
Ejemplos de código
<?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)
Ejemplo de respuesta
{
  "data": {
    "task_hash": "0110437df6811068197577a538849a4b"
  },
  "meta": {
    "emails": [
      "gavin.vanrooyen@octagon.com",
      "lizi.hamer@octagon.com",
      "admin@snov.io",
      "test@snov.io",
      "ivalid_format_snov.io"
    ]
  }
}
Parámetros de salida
task_hash
ID único para la tarea de búsqueda que iniciaste.
emails
Un array de emails que proporcionaste para verificación.
Recibiendo resultados de verificación.
GEThttps://api.snov.io/v2/email-verification/result
Parámetros de entrada
task_hash
ID de solicitud único que recibiste de la solicitud anterior.
Ejemplos de código
<?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)
Ejemplo de respuesta
{
  "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"
  }
}
Parámetros de salida
status
Estado de la solicitud. Puede ser completed o in_progress.
email
Dirección de email que estás verificando.
smtp_status
Puede devolver valid, not_valid o unknown (también conocido como no verificable).
Para ver la razón del estado desconocido, revisa el parámetro unknown_status_reason.
is_valid_format
Muestra si el formato del email es válido. Puede ser false o true.
is_disposable
Indica si un email es temporal o desechable, devolviendo false o true.
is_webmail
Es true si el email que estás buscando es webmail.
is_gibberish
Muestra si la dirección de email proporcionada tiene caracteres aleatorios o sin sentido. Será false o true.
unknown_status_reason
Si un email verificado tiene un smtp_status desconocido, puedes encontrar una razón más detallada aquí.
Banned: Alto riesgo de entregabilidad - este email no se pudo verificar con un 100% de certeza.
Catchall: Riesgo de reputación del remitente - este email es un catch-all.
Connection_error: Riesgo de rebote potencial - problemas técnicos del lado del destinatario.
Greylist: Riesgo de entregabilidad - este servidor de email utiliza filtros de lista gris.
Hidden_by_owner: El propietario del email o la empresa que posee el dominio solicitó su eliminación de los resultados de Snov.io.
emails
Un array de emails que estás verificando.
task_hash
ID de solicitud único para esta tarea de verificación.

POSTAñadir nueva cuenta de correo electrónico

Este método conecta una nueva cuenta de correo electrónico SMTP/IMAP a tu espacio de trabajo de snov.io para que pueda usarse como remitente en las campañas. La cuenta se crea incluso si la comprobación de la conexión SMTP/IMAP aún no ha finalizado: el estado de la conexión se devuelve de forma asíncrona en los campos smtp.status / imap.status y puede consultarse posteriormente. Solo se admiten cuentas SMTP/IMAP (tipo de proveedor other); los flujos OAuth de Gmail y Microsoft quedan fuera del alcance.

Solicitud
POSThttps://api.snov.io/v2/sender-accounts/emails
Parámetros de entrada
sender_name
*Requerido
Nombre visible del remitente, máximo 100 caracteres.
email_from
*Requerido
Dirección de correo electrónico del remitente.
password
*Requerido
Contraseña o contraseña de aplicación para la cuenta SMTP/IMAP. Se almacena cifrada.
smtp
*Requerido
Objeto con la configuración de SMTP.
smtp.host
*Requerido
Host SMTP, p. ej. smtp.gmail.com.
smtp.port
*Requerido
Puerto SMTP. Valores permitidos: 25, 465, 587.
smtp.encryption
*Requerido
Tipo de cifrado. Valores permitidos: ssl, tls, none. Debe coincidir con el puerto: 465ssl, 587tls, 25none.
imap
Objeto con la configuración de IMAP. Opcional, pero si se proporciona, todos los subcampos son obligatorios.
imap.host
Host IMAP, p. ej. imap.gmail.com. Obligatorio cuando imap está presente.
imap.port
Puerto IMAP. Valores permitidos: 143, 993. Obligatorio cuando imap está presente.
imap.encryption
Tipo de cifrado. Valores permitidos: ssl, tls, none. Debe coincidir con el puerto: 993ssl o tls, 143none. Obligatorio cuando imap está presente.
reply_to
Dirección de correo electrónico de respuesta (reply-to).
limitation
Límite de envío diario. Entero, mín. 1, máx. 1200. Predeterminado: 50. No puede superar la cantidad máxima de correos electrónicos que la cuenta podría enviar en 24 horas según el retardo configurado.
delay_type
Tipo de retardo entre correos electrónicos. Valores permitidos: fixed, random. Predeterminado: random.
delay_fixed
Retardo fijo en segundos (se usa cuando delay_type=fixed). Entero, mín. 5, máx. 3600. Predeterminado: 600.
delay_from
Retardo mínimo en segundos (se usa cuando delay_type=random). Entero, mín. 5, máx. 3600. Predeterminado: 600.
delay_to
Retardo máximo en segundos (se usa cuando delay_type=random). Entero, mín. 5, máx. 3600, debe ser mayor que delay_from. Predeterminado: 900.
signature
Firma HTML añadida a los correos electrónicos salientes.
bcc_email
Dirección de correo electrónico para CCO (BCC).
tags
Array de cadenas. Las etiquetas existentes se asocian por nombre, las nuevas se crean y se adjuntan a la cuenta.
timezoneId
ID entero de la zona horaria de la cuenta. Mín. 1, máx. 458.
Ejemplos de código
<?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)
Ejemplo de respuesta
{
    "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"
    }
}
Parámetros de salida
data.id
ID de la cuenta de remitente creada.
data.sender_name
Nombre visible del remitente.
data.email_from
Dirección de correo electrónico del remitente.
data.smtp
Configuración de SMTP: host, port, encryption, más un campo status con el resultado de la comprobación de la conexión (pending, connected, error).
data.imap
Configuración de IMAP (solo presente si se configuró IMAP): host, port, encryption, status.
data.limitation
Límite de envío diario.
data.delay_type
Tipo de retardo: fixed o random.
data.delay_from
Retardo mínimo en segundos (para delay_type=random).
data.delay_to
Retardo máximo en segundos (para delay_type=random).
data.delay_fixed
Retardo fijo en segundos (para delay_type=fixed).
data.reply_to
Dirección de correo electrónico de respuesta (reply-to).
data.signature
Firma HTML (solo presente si se proporciona).
data.bcc_email
Dirección de correo electrónico para CCO (BCC).
data.tags
Array de etiquetas adjuntas a la cuenta.
data.timezoneId
ID de la zona horaria (solo presente si se estableció en la solicitud).
data.created_at
Marca de tiempo de creación de la cuenta.

PATCHActualizar cuenta de correo electrónico

Este método actualiza una cuenta de remitente SMTP/IMAP existente. Todos los campos son opcionales, pero debe proporcionarse al menos un campo válido: solo se modifican los campos suministrados, el resto permanece sin cambios. Cuando se incluye cualquier campo de SMTP o IMAP, se activa una nueva comprobación de conexión asíncrona y el estado resultante se devuelve en smtp.status / imap.status. Si se proporciona tags, el nuevo array reemplaza por completo la lista de etiquetas actual de la cuenta (reemplazo, no fusión).

Solicitud
PATCHhttps://api.snov.io/v2/sender-accounts/emails/{id}
Parámetros de entrada
id
*Requerido (path)
ID de la cuenta de remitente que se va a actualizar.
sender_name
Nuevo nombre visible del remitente, máximo 100 caracteres.
email_from
Nueva dirección de correo electrónico del remitente.
password
Nueva contraseña o contraseña de aplicación para la cuenta SMTP/IMAP. Se almacena cifrada.
smtp
Objeto con la nueva configuración de SMTP (host, port, encryption). Cuando smtp está presente, los tres subcampos son obligatorios y deben cumplir las reglas de emparejamiento puerto/cifrado (465ssl, 587tls, 25none).
smtp.host
Host SMTP. Máximo 100 caracteres; formato: ^[a-zA-Z0-9][a-zA-Z0-9-.]*. Obligatorio cuando smtp está presente.
smtp.port
Valores permitidos: 25, 465, 587. Obligatorio cuando smtp está presente.
smtp.encryption
Debe coincidir con el puerto: 465 → ssl, 587 → tls, 25 → none. Obligatorio cuando smtp está presente.
imap
Objeto con la nueva configuración de IMAP (host, port, encryption). Cuando imap está presente, los tres subcampos son obligatorios (993ssl o tls, 143none)
imap.host
Host IMAP. Máximo 100 caracteres. Obligatorio cuando imap está presente.
imap.port
Valores permitidos: 143, 993. Obligatorio cuando imap está presente.
imap.encryption
Debe coincidir con el puerto: 993 → ssl o tls; 143 → none. Obligatorio cuando imap está presente.
reply_to
Nueva dirección de correo electrónico de respuesta (reply-to). Pasa null para borrar.
limitation
Nuevo límite de envío diario. Entero, mín. 1, máx. 1200. No puede superar la cantidad máxima de correos electrónicos que la cuenta podría enviar en 24 horas según el retardo configurado.
delay_type
Nuevo tipo de retardo. Valores permitidos: fixed, random.
delay_fixed
Retardo fijo en segundos (se usa cuando delay_type=fixed). Entero, mín. 5, máx. 3600.
delay_from
Retardo mínimo en segundos (se usa cuando delay_type=random). Entero, mín. 5, máx. 3600.
delay_to
Retardo máximo en segundos (se usa cuando delay_type=random). Entero, mín. 5, máx. 3600, debe ser mayor que delay_from.
signature
Nueva firma HTML. Pasa null para borrar.
bcc_email
Nueva dirección de correo electrónico para CCO (BCC). Pasa null para borrar.
tags
Nuevo array de etiquetas. Reemplaza por completo la lista de etiquetas actual. Pasa null para borrar todas las etiquetas.
timezoneId
ID entero de la zona horaria de la cuenta. Mín. 1, máx. 458.
Ejemplos de código
<?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)
Ejemplo de respuesta
{
    "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"
    }
}
Parámetros de salida
data.id
ID de la cuenta de remitente.
data.sender_name
Nombre visible del remitente.
data.email_from
Dirección de correo electrónico del remitente.
data.smtp
Configuración de SMTP: host, port, encryption, más un campo status con el resultado de la comprobación de la conexión (pending, valid, invalid).
data.imap
Configuración de IMAP (solo presente si IMAP está configurado): host, port, encryption, status.
data.limitation
Límite de envío diario.
data.delay_type
Tipo de retardo: fixed o random.
data.delay_from
Retardo mínimo en segundos (para delay_type=random).
data.delay_to
Retardo máximo en segundos (para delay_type=random).
data.delay_fixed
Retardo fijo en segundos (para delay_type=fixed).
data.reply_to
Dirección de correo electrónico de respuesta (reply-to).
data.signature
Firma HTML (solo presente si se proporciona).
data.bcc_email
Dirección de correo electrónico para CCO (BCC).
data.tags
Array de etiquetas adjuntas a la cuenta.
data.timezoneId
ID de la zona horaria (solo presente si se estableció).
data.updated_at
Marca de tiempo de la última actualización.

GETComprobar el estado SMTP/IMAP del remitente

Este método comprueba el estado de la conexión SMTP y (opcionalmente) IMAP de una cuenta de remitente de correo electrónico conectada. Úsalo para verificar si una cuenta de remitente es actualmente válida y operativa, y para recuperar cualquier error de conexión.

Solicitud
GEThttps://api.snov.io/v2/sender-accounts/check-sender-status
Parámetros de entrada
sender_account_id
*Requerido
ID de la cuenta de correo electrónico del remitente que se va a comprobar. Entero, valor mínimo: 1.
Ejemplos de código
<?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)
Ejemplo de respuesta
{
    "data": {
        "smtp": {
            "status": "valid"
        },
        "imap": {
            "status": "valid"
        }
    }
}
Ejemplo de respuesta con errores de SMTP y sin IMAP configurado:
{
    "data": {
        "smtp": {
            "status": "invalid",
            "errors": [
                "Connection refused"
            ]
        },
        "imap": null
    }
}
Parámetros de salida
data
Un objeto con los detalles del estado de la conexión de la cuenta de remitente.
smtp
Un objeto que describe el estado de la conexión SMTP: status (pending, valid, invalid) y errors (array de mensajes de error, presente cuando status es invalid).
imap
Un objeto que describe el estado de la conexión IMAP con la misma estructura que smtp. Devuelve null cuando IMAP no se configuró durante la creación de la cuenta.

GETObtener la lista de todas las cuentas de correo electrónico

Gratis

Este método muestra una lista de todas las cuentas de correo electrónico conectadas.

Solicitud
GEThttps://api.snov.io/v2/sender-accounts/emails
Parámetros de entrada
Este método no tiene parámetros de entrada.
Ejemplos de código
<?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)
Ejemplo de respuesta
{
    "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
            }
        }
    ]
}
Parámetros de salida
id
ID único de la cuenta de correo electrónico.
sender_name
Nombre del remitente, o "From name". Es el nombre que se muestra en la bandeja de entrada del destinatario y que indica quién envió el correo.
email_from
Dirección de correo electrónico completa.
valid
Muestra true si la cuenta del remitente es válida. Devuelve false cuando no es válida.
suspended
Muestra true si el envío desde la cuenta está suspendido. Devuelve false cuando la cuenta está operativa.
limitation
Límites diarios de envío de la cuenta.
provider
Proveedor de la cuenta de correo electrónico.
tags
Etiquetas asignadas a la cuenta.
imap
Un array con los detalles de IMAP de la cuenta.
username
Correo de usuario seleccionado para recibir respuestas en lugar de la cuenta de correo predeterminada.
valid
Muestra true cuando IMAP está habilitado. Devuelve false cuando IMAP está deshabilitado.

POSTCrear campaña de calentamiento

Este método crea e inicia una nueva campaña de calentamiento para la cuenta de correo electrónico especificada. El calentamiento mejora gradualmente la reputación de envío de la cuenta intercambiando correos cortos con una red seleccionada de destinatarios. Elija la estrategia progressive para aumentar el volumen diario desde un punto de partida pequeño, o la estrategia steady para enviar un número fijo de correos de calentamiento por día; proporcione su propio subject y body o deje que snov.io los genere automáticamente.

Solicitud
POSThttps://api.snov.io/v2/warm-up
Parámetros de entrada
email_account_id
*Requerido
Integer. ID de la cuenta de correo electrónico a calentar.
strategy
Estrategia de envío. Valores permitidos: progressive, steady. Valor predeterminado: progressive.
per_day
*Requerido
Integer. Objetivo de envío diario. Rango 11000 según el plan.
from
Integer. Volumen diario inicial (solo estrategia progressive). Rango 15, debe ser ≤ per_day. Requerido cuando strategy=progressive.
increase
Integer. Incremento diario de volumen (solo estrategia progressive). Rango 15. Requerido cuando strategy=progressive.
email_content
Tipo de contenido del correo. Valores permitidos: autogenerated (generado por IA), specific (personalizado). Valor predeterminado: autogenerated.
subject
String. Asunto del correo, 1–200 caracteres. Requerido cuando email_content=specific.
body
String. Cuerpo del correo, 1–10000 caracteres. Requerido cuando email_content=specific.
reply_rate
Integer. Porcentaje de correos de calentamiento recibidos que serán respondidos. Rango 1045. Valor predeterminado: 30.
campaign_deadline
String (YYYY-MM-DD). Fecha en que el calentamiento debe detenerse. Omita para sin fecha límite.
providers
Array de strings. Proveedores de destinatarios objetivo. Valores permitidos: gmail, microsoft, aliyun, hostinger, private email, zoho, titan, godaddy, other.
send_to_paid_domain
Boolean. Si se debe enviar a dominios de pago. Valor predeterminado: false.
enable_ctd
Boolean. Activar dominio de seguimiento personalizado. Valor predeterminado: false.
enable_proxy
Boolean. Activar proxy dinámico. Valor predeterminado: false.
schedule_id
Integer. ID de un horario de envío a adjuntar al calentamiento.
template_name
String. Nombre de una plantilla de correo guardada para usar.
Ejemplos de código
<?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)
Ejemplo de respuesta
{
    "data": {
        "id": 123
    },
    "success": true
}
Parámetros de salida
success
Boolean. true cuando el calentamiento fue creado.
data.id
ID de la campaña de calentamiento creada.

GETObtener lista de campañas de calentamiento

Este método devuelve una lista paginada de todas las campañas de calentamiento en la cuenta, filtradas opcionalmente por estado. Cada elemento tiene la misma estructura que la respuesta de Obtener información de la campaña de calentamiento.

Solicitud
GEThttps://api.snov.io/v2/warm-up
Parámetros de entrada
page
Integer. Número de página. Valor predeterminado: 1. Mínimo: 1.
per_page
Integer. Número de resultados por página. Valores permitidos: 20, 50, 100. Valor predeterminado: 20.
status
Filtrar por estado. Valores permitidos: active, paused, completed, error. Omita para devolver todos.
Ejemplos de código
<?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)
Ejemplo de respuesta
{
    "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
    }
}
Parámetros de salida
success
Boolean. true cuando la solicitud fue exitosa.
data
Array de objetos de campaña de calentamiento. Cada elemento tiene la misma estructura que la respuesta de Obtener información de la campaña de calentamiento (ver campos data.* allí).
meta.total_items
Número total de elementos en todas las páginas.
meta.page
Número de página actual.
meta.per_page
Número de elementos por página.
meta.total_pages
Número total de páginas.

GETObtener información de la campaña de calentamiento

Este método devuelve los detalles completos de una sola campaña de calentamiento por su ID — incluyendo configuración de estrategia, límites diarios, estadísticas actuales de entregabilidad y la cuenta de correo conectada.

Solicitud
GEThttps://api.snov.io/v2/warm-up/{id}
Parámetros de entrada
id
*Requerido(path)
Integer. ID de la campaña de calentamiento.
Ejemplos de código
<?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)
Ejemplo de respuesta
{
    "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
}
Parámetros de salida
success
Boolean. true cuando la solicitud fue exitosa.
data.id
ID de la campaña de calentamiento.
data.status
Estado de la campaña: active, pending, paused, completed, error.
data.reply_rate
Porcentaje de correos recibidos que serán respondidos (10–45).
data.send_to_paid_domain
Si la campaña envía a dominios de pago.
data.start_date
Fecha de inicio de la campaña (YYYY-MM-DD).
data.campaign_deadline
Fecha de finalización de la campaña (YYYY-MM-DD). null cuando no hay fecha límite.
data.strategy
Estrategia de envío: progressive o steady.
data.per_day
Objetivo de envío diario.
data.from
Volumen diario inicial (solo estrategia progressive).
data.increase
Incremento diario de volumen (solo estrategia progressive).
data.subject
Asunto del correo (solo cuando email_content=specific).
data.body
Cuerpo del correo (solo cuando email_content=specific).
data.template_name
Nombre de la plantilla.
data.enable_ctd
Si el dominio de seguimiento personalizado está activado.
data.schedule
Horario de envío adjunto a la campaña, o null.
data.enable_proxy
Si el proxy dinámico está activado.
data.sent_today
Número de correos de calentamiento enviados hoy.
data.daily_limit
Límite diario de envío actualmente aplicado.
data.total_saved_from_spam
Número total de correos rescatados del spam desde que inició la campaña.
data.deliverability
Tasa de entrega en la bandeja de entrada (%).
data.warm_up_error
Descripción del error si el calentamiento entró en estado error, de lo contrario null.
data.email_account
Detalles de la cuenta de correo conectada.
data.email_account.id
ID de la cuenta de correo.
data.email_account.email_from
Dirección de correo de la cuenta.
data.email_account.type
Tipo de cuenta (ej. google, microsoft).
data.email_account.delay
Retraso entre correos (segundos).
data.email_account.limit
Límite total de correos para la cuenta.
data.email_account.per_day
Límite diario para la cuenta.
data.email_account.schedule_required
Si se requiere un horario para esta cuenta.
data.email_account.provider
Proveedor de correo: gmail, microsoft, hostinger, zoho, titan, godaddy, other, etc.
data.email_account.custom_tracking_domain
Dominio de seguimiento personalizado, o null.

PATCHActualizar campaña de calentamiento

Este método actualiza parcialmente una campaña de calentamiento existente. Solo se cambian los campos que pase; el resto de la configuración permanece igual. Use este método para cambiar la configuración de la campaña en tiempo real, cambiar el estado (active, paused, completed, deleted), o eliminar la fecha límite enviando make_endless: true.

Solicitud
PATCHhttps://api.snov.io/v2/warm-up/{id}
Parámetros de entrada
id
*Requerido(path)
Integer. ID de la campaña de calentamiento a actualizar.
status
Cambiar manualmente el estado de la campaña. Valores permitidos: active, paused, completed, deleted.
strategy
Nueva estrategia de envío: progressive o steady.
per_day
Nuevo objetivo de envío diario. Rango 11000 según el plan.
from
Nuevo volumen diario inicial. Rango 110. Requerido cuando strategy=progressive.
increase
Nuevo incremento diario de volumen. Rango 15. Requerido cuando strategy=progressive.
email_content
Tipo de contenido del correo: autogenerated o specific.
subject
Nuevo asunto del correo, 1–200 caracteres. Requerido cuando email_content=specific.
body
Nuevo cuerpo del correo, 1–10000 caracteres. Requerido cuando email_content=specific.
reply_rate
Nuevo porcentaje de tasa de respuesta. Rango 1045.
campaign_deadline
Nueva fecha de finalización de la campaña (YYYY-MM-DD).
make_endless
Boolean. Pase true para eliminar el campaign_deadline actual y hacer la campaña sin fecha límite.
providers
Nuevos proveedores de destinatarios objetivo (mismos valores permitidos que en Crear campaña de calentamiento).
send_to_paid_domain
Boolean.
enable_ctd
Boolean. Activar o desactivar el dominio de seguimiento personalizado.
enable_proxy
Boolean. Activar o desactivar el proxy dinámico.
schedule_id
Nuevo ID de horario de envío.
template_name
Nuevo nombre de plantilla.
Ejemplos de código
<?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)
Ejemplo de respuesta
{
    "data": {
        "id": 123
    },
    "success": true
}
Parámetros de salida
success
Boolean. true cuando el calentamiento fue actualizado.
data.id
ID de la campaña de calentamiento actualizada.

DELETEEliminar campaña de calentamiento

Este método elimina una campaña de calentamiento por su ID. Una vez eliminada, la campaña y sus estadísticas ya no son accesibles a través de otros métodos de la API de calentamiento.

Solicitud
DELETEhttps://api.snov.io/v2/warm-up/{id}
Parámetros de entrada
id
*Requerido(path)
Integer. ID de la campaña de calentamiento a eliminar.
Ejemplos de código
<?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)
Ejemplo de respuesta
{
    "data": {
        "id": 123
    },
    "success": true
}
Parámetros de salida
success
Boolean. true cuando el calentamiento fue eliminado.
data.id
ID de la campaña de calentamiento eliminada.

GETObtener estadísticas de calentamiento

Este método devuelve estadísticas diarias y por proveedor de entregabilidad de una campaña de calentamiento — ya sea en una ventana predefinida (two_weeks / month) o un rango de fechas personalizado. Útil para monitorear el progreso de la tasa de bandeja de entrada y detectar proveedores donde el calentamiento tiene bajo rendimiento.

Solicitud
GEThttps://api.snov.io/v2/warm-up/statistics/{id}
Parámetros de entrada
id
*Requerido(path)
Integer. ID de la campaña de calentamiento.
period
Período predefinido. Valores permitidos: two_weeks, month. Requerido cuando date_from / date_to no se proporcionan.
date_from
String (YYYY-MM-DD). Inicio de un rango de fechas personalizado. Requerido cuando period no se proporciona.
date_to
String (YYYY-MM-DD). Fin de un rango de fechas personalizado. Debe ser ≥ date_from y ≥ la fecha de inicio de la campaña. Requerido cuando period no se proporciona.
Ejemplos de código
<?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)
Ejemplo de respuesta
{
    "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
}
Parámetros de salida
success
Boolean. true cuando la solicitud fue exitosa.
data.daily_statistics
Objeto indexado por fecha (YYYY-MM-DD). Cada valor contiene los campos de estadísticas diarias a continuación.
data.daily_statistics.{date}.emails_sent
Número de correos de calentamiento enviados ese día.
data.daily_statistics.{date}.replies
Número de respuestas recibidas ese día.
data.daily_statistics.{date}.bounces
Número de correos rebotados ese día.
data.daily_statistics.{date}.spam_emails
Número de correos que fueron al spam ese día.
data.daily_statistics.{date}.inbox_emails
Número de correos que llegaron a la bandeja de entrada ese día.
data.daily_statistics.{date}.categories_emails
Número de correos que fueron a pestañas de categorías de Gmail ese día.
data.daily_statistics.{date}.scheduled
Número de correos programados para envío ese día.
data.provider_statistics
Objeto indexado por nombre de proveedor (google, outlook, hostinger, etc.). Cada valor contiene los campos de estadísticas por proveedor a continuación.
data.provider_statistics.{provider}.id
ID interno del proveedor.
data.provider_statistics.{provider}.count
Número de correos enviados a través de este proveedor.
data.provider_statistics.{provider}.spam
Número de correos que fueron al spam en este proveedor.
data.provider_statistics.{provider}.percent
Tasa de entrega en la bandeja de entrada (%) para este proveedor.
data.provider_statistics.{provider}.categories
Número de correos que fueron a pestañas de categorías de Gmail. Puede omitirse para proveedores sin soporte de categorías.
data.deliverability.inbox.count
Número total de correos entregados en la bandeja de entrada.
data.deliverability.inbox.percent
Tasa de entrega en la bandeja de entrada (%).
data.deliverability.spam.count
Número total de correos entregados en spam.
data.deliverability.spam.percent
Tasa de spam (%).
data.deliverability.categories.count
Número total de correos entregados en pestañas de categorías de Gmail.
data.deliverability.categories.percent
Tasa de categorías (%).
data.is_calculated
Boolean. false cuando las estadísticas aún se están procesando; true cuando el cálculo está completo.

Gestión de campañas

Estos métodos le permiten crear, configurar y controlar el ciclo de vida completo de una campaña, desde la configuración inicial hasta el lanzamiento, la pausa, la finalización y la eliminación.

GETVer todas las campañas

Gratis

Este método muestra una lista de todas las campañas del usuario. Si el usuario forma parte de un equipo y tiene permiso para ver los registros del mismo, el método también devolverá todas las campañas creadas dentro de ese equipo.

Solicitud
GEThttps://api.snov.io/v1/get-user-campaigns
Parámetros de entrada
No hay parámetros de entrada para este método
Ejemplos de código
<?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)
Ejemplo de respuesta
[
    {
        "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"
    }
]
Parámetros de salida
id
Identificador único de la campaña del usuario.
campaign
Nombre de la campaña.
list_id
Identificador único de la lista de prospectos utilizada en la campaña.
status
Estado de la campaña.
created_at
Fecha y hora de creación de la campaña en el formato de Unix Timestamp.
updated_at
Fecha y hora de la última actualización de la campaña en formato Unix Timestamp.
started_at
Fecha y hora de lanzamiento de la campaña en el formato de Unix Timestamp.

POSTCrear campaña

Este método crea una nueva campaña de outreach en tu espacio de trabajo de snov.io. La campaña se crea con el estado new y puede guardarse en cualquier estado parcialmente configurado — solo se validan como obligatorios los campos necesarios para una campaña ejecutable, el resto puede completarse después. Se admiten secuencias solo de email, solo de LinkedIn y mixtas multicanal, incluyendo variantes A/B, desencadenantes (apertura, clic, respuesta, calendly, nivel de conexión, envío de in-mail de LinkedIn, etc.), retrasos y bloques de objetivo. Este método crea una campaña sin contenido en sus bloques de mensajes. El contenido se añade después llamando al método Create Email Step Content.

Solicitud
POSThttps://api.snov.io/v2/campaigns/create
Parámetros de entrada
title
*Requerido
String. Nombre de visualización de la campaña. Máximo 255 caracteres.
priority
*Requerido
String enum. Prioridad de envío de la campaña: low, medium, high.
email_accounts
*Obligatorio para campañas de email
Array of integers. IDs de las cuentas de envío de email a utilizar.
linkedin_accounts
Array of integers. IDs de las cuentas de LinkedIn a utilizar.
tracking
*Obligatorio para campañas de email
Object. Configuración de seguimiento de email.
tracking.open
Boolean. Rastrear aperturas de email.
tracking.link_click
Boolean. Rastrear clics en enlaces en los emails.
sending_settings
*Obligatorio para campañas de email
Object. Controla cómo se envían los emails y qué destinatarios se omiten.
sending_settings.sending_priority
String enum. Qué emails van primero: first_email o follow_up.
sending_settings.daily_sending_all
Integer o null. Máximo total de emails enviados por día entre todos los destinatarios.
sending_settings.daily_sending_new_recipients
Integer o null. Máximo de nuevos destinatarios contactados por día.
sending_settings.skip_unverifiable
Boolean. Omitir destinatarios cuyo email no puede verificarse.
sending_settings.skip_unverified
Boolean. Omitir destinatarios con emails no verificados.
sending_settings.skip_who_replied
Detener el seguimiento de los prospectos que respondan.
sending_settings.skip_company_domain_who_replied
Boolean. Omitir destinatarios de un dominio de empresa donde alguien respondió.
sending_settings.skip_recipients_without_variables_data
Boolean. Omitir destinatarios sin valores de variables personalizadas.
sending_settings.skip_other_recipients_email_addresses
Boolean. Si el prospecto tiene varias direcciones de correo, enviar solo al primero si el valor es true.
sending_settings.skip_recipients_added_to_my_another_campaign
Boolean. Omitir destinatarios ya añadidos a otra campaña de este usuario.
sending_settings.skip_recipients_added_to_team_another_campaign
Boolean. Omitir destinatarios ya añadidos a otra campaña de cualquier miembro del equipo.
sending_settings.one_click_unsubscribe
Boolean. Habilitar encabezado de cancelación de suscripción con un clic en los emails.
recipients
*Requerido
Object. Define quién recibe la campaña.
recipients.list_id
*Requerido
Integer. ID de la lista de prospectos a la que enviar.
recipients.black_list_id
Integer. ID de la lista de no envío. Consulte Ver todas las listas de "No enviar email".
schedule_id
Integer. ID del horario de envío. Consulte Ver todas las programaciones.
start_campaign_at
String (YYYY-MM-DD HH:MM:SS) o null. Fecha y hora de inicio automático de la campaña, ej. 2027-03-25 09:00:00.
complete_campaign_at
String (YYYY-MM-DD HH:MM:SS) o null. Fecha y hora de parada automática de la campaña.
timezone
String. Zona horaria de la campaña. Para la lista de zonas horarias admitidas, consulte la tabla Zonas Horarias a continuación.
complete_campaign_after_last_step
*Requerido
Boolean. Detener la campaña cuando todos los destinatarios hayan pasado el último paso de la secuencia.
archive_in_months
*Requerido
Integer. Archivar automáticamente la campaña después de este número de meses. Valores permitidos: 1, 2, 3, 6.
provider_matching
*Obligatorio para campañas de email
Boolean. Hacer coincidir el proveedor de email del destinatario con el proveedor de la cuenta remitente cuando sea posible. Solo puede ser true cuando al menos dos cuentas de email están conectadas.
deals
Object o null. Configuración de creación de negocios CRM activada por eventos de la campaña.
deals.event
*Obligatorio cuando se proporciona deals
Array of strings. Eventos que crean un negocio: open, click, reply.
deals.pipeline_id
*Obligatorio cuando se proporciona deals
Integer. ID del pipeline de CRM para crear el negocio.
deals.stage_id
*Obligatorio cuando se proporciona deals
Integer. ID de la etapa del pipeline donde colocar el negocio.
deals.potential_value
Integer. Valor estimado del negocio.
deals.currency
String. Código de moneda para el valor del trato. Para la lista de monedas admitidas, consulte la tabla Divisas a continuación.
sequence
*Requerido
Object. El flujo de automatización de pasos que ejecuta la campaña.
sequence.entry
*Requerido
String. _ref del primer paso a ejecutar.
sequence.steps
*Requerido
Array of objects. Lista ordenada de todos los pasos de la secuencia.
sequence.steps._ref
*Requerido
String. Identificador único de este paso, usado para vincular pasos mediante next / yes / no.
sequence.steps.type
*Requerido
String enum. Tipo de paso: email, delay, trigger, goal, linkedin.
sequence.steps.next
String o null. _ref del paso al que proceder después de este (bloques lineales: email, linkedin, delay).
sequence.steps.yes
String. _ref del paso al que ir cuando se cumple la condición del desencadenante (solo trigger).
sequence.steps.no
String. _ref del paso al que ir cuando no se cumple la condición del desencadenante (solo trigger).
sequence.steps.waiting_type
*Obligatorio para delay / trigger
String enum. Unidad de tiempo para el período de espera: minutes, hours, days.
sequence.steps.waiting_val
*Obligatorio para delay / trigger
Integer. Número de unidades de tiempo a esperar. Límites por unidad: minutes ≤ 43200, hours ≤ 720, days ≤ 30.
sequence.steps.action
*Obligatorio para linkedin / trigger
String enum. La acción a realizar o el evento a observar. Ver valores admitidos a continuación.
sequence.steps.goal_name
*Obligatorio para goal
String. Etiqueta para este paso de objetivo, ej. Replied, Connected. Un bloque goal debe ser el último paso en su rama — no puede tener un next y no puede ser el primer paso de la secuencia.
sequence.steps.content_slots
*Obligatorio para email
Integer (mín. 1, máx. 15). Número de variantes A/B de contenido para este paso de email.
sequence.steps.subject
String o null. Línea de asunto del email (solo email); admite {{variables}}. Obligatorio para el paso linkedin con action=in_mail.
sequence.steps.body
*Obligatorio para invite / message / in_mail
String (HTML). Cuerpo del mensaje para acciones de LinkedIn que envían texto. No puede estar vacío.
sequence.steps.value
*Obligatorio para endorse_skills
Integer (15) para endorse_skills. Array de 1–2 enteros únicos de [1, 2, 3] para check_connection_level.
Valores admitidos para sequence.steps.action
Tipo de pasoValor de actionDescripción
linkedin
visit
Visitar el perfil del prospecto en LinkedIn.
linkedin
like
Dar like a una publicación en el perfil del prospecto.
linkedin
follow
Seguir al prospecto en LinkedIn.
linkedin
invite
Enviar una solicitud de conexión (requiere body).
linkedin
message
Enviar un mensaje directo de LinkedIn (requiere body).
linkedin
in_mail
Enviar un LinkedIn InMail (requiere body y subject).
linkedin
connected_on_linkedin
Comprobar si el prospecto ha aceptado la solicitud de conexión en LinkedIn.
linkedin
check_connection_level
Comprobar el nivel de conexión del prospecto.
linkedin
endorse_skills
Avalar habilidades en el perfil del prospecto (requiere value 1–5).
trigger
open
Esperar para ver si el prospecto abre un email.
trigger
click
Esperar para ver si el prospecto hace clic en un enlace del email.
trigger
calendly
Esperar para ver si el prospecto reserva a través de Calendly.
trigger
connected_on_linkedin
Disparador de sistema. Obligatorio después de un paso connected_on_linkedin de LinkedIn. El campo next del paso connected_on_linkedin debe apuntar a este disparador.
trigger
check_connection_level
Ramificar según el grado de conexión del prospecto en LinkedIn.
trigger
linkedin_in_mail_sent
Disparador de sistema. Obligatorio después de un paso in_mail de LinkedIn. El campo next del paso in_mail debe apuntar a este disparador.
Zonas Horarias
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
Divisas
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$
Ejemplos de código
<?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)
Ejemplo de respuesta
{
    "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"
                }
            ]
        }
    }
}
Parámetros de salida
success
Boolean. true cuando la campaña fue creada.
data.id
ID de la campaña creada.
data.status
Estado de la campaña. Las campañas recién creadas se devuelven con new.
data.title
Nombre de la campaña.
data.email_accounts
Array de IDs de cuentas de email remitentes vinculadas a la campaña.
data.linkedin_accounts
Array de IDs de cuentas de LinkedIn vinculadas a la campaña.
data.priority
Prioridad de la campaña (low, medium, high).
data.tracking
Configuración de seguimiento de email (open, link_click).
data.sending_settings
Configuración de envío devuelta exactamente como fue aceptada por el servidor, incluyendo la configuración de retraso.
data.recipients
Listas de destinatarios (list_id, black_list_id).
data.schedule_id
ID del horario de envío vinculado a la campaña, o null.
data.start_campaign_at
Fecha y hora de inicio del envío de la campaña.
data.complete_campaign_at
Fecha y hora de parada del envío de la campaña.
data.timezone
Identificador de la zona horaria en la que se ejecuta la campaña.
data.complete_campaign_after_last_step
Si la campaña se completa automáticamente después de entregar el último paso.
data.archive_in_months
Período de archivado automático en meses.
data.provider_matching
Si la coincidencia de proveedor de email está habilitada.
data.sequence
El diagrama de flujo de la campaña, devuelto con la misma estructura. Cada paso email se enriquece con un array content que describe los slots de contenido generados (id, plain_text, usage).
data.deals
Configuración de creación de negocios, presente solo si deals fue suministrado en la solicitud.

GETObtener información de la campaña

Este método te permite recuperar información sobre una campaña específica, como: cuentas de remitente conectadas, configuraciones de envío, información sobre la lista de destinatarios y detalles sobre los pasos de la secuencia.

Solicitud
GEThttps://api.snov.io/v2/campaigns/{campaign_id}
Parámetros de entrada
campaign_id
*Requerido
Identificador único de la campaña de la que deseas ver información.
Ejemplos de código
<?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)
Ejemplo de respuesta
{
    "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"
                }
            ]
        }
    }
}
Parámetros de salida
success
Boolean. true cuando la información de la campaña se recuperó correctamente.
data.id
ID de la campaña.
data.status
Estado de la campaña. Las campañas recién creadas se devuelven con new.
data.title
Nombre de la campaña.
data.email_accounts
Array de IDs de cuentas de correo del remitente asociadas a la campaña.
data.linkedin_accounts
Array de IDs de cuentas de LinkedIn asociadas a la campaña.
data.priority
Prioridad de la campaña (low, medium, high).
data.tracking
Configuración del seguimiento de correos (open, link_click).
data.sending_settings
Configuración de envío devuelta exactamente como fue aceptada por el servidor, incluida la configuración de retraso.
data.recipients
Listas de destinatarios (list_id, black_list_id).
data.schedule_id
ID del calendario de envío asociado a la campaña, o null.
data.start_campaign_at
Fecha y hora en que la campaña comienza a enviar.
data.complete_campaign_at
Fecha y hora en que la campaña deja de enviar.
data.timezone
Identificador de la zona horaria en la que se ejecuta la campaña.
data.complete_campaign_after_last_step
Si la campaña se completa automáticamente tras entregar el último paso.
data.archive_in_months
Período de archivo automático en meses.
data.provider_matching
Si la correspondencia por proveedor de correo está habilitada.
data.sequence
El diagrama de flujo de la campaña, devuelto con la misma estructura. Cada paso email se enriquece con un array content que describe los slots de contenido generados (id, plain_text, usage).
data.deals
Configuración de creación de deals, presente solo si deals fue proporcionado en la solicitud.

PATCHActualizar campaña

Este método actualiza parcialmente una campaña de difusión existente en tu espacio de trabajo de snov.io. Solo se modifican los campos incluidos en el cuerpo de la solicitud; los campos omitidos permanecen sin cambios. Los objetos anidados (tracking, sending_settings, recipients, deals) también se fusionan — enviar {"tracking": {"open": false}} no elimina link_click. El cuerpo aceptado tiene la misma forma que Crear campaña, por lo que se puede enviar cualquier subconjunto de title, priority, email_accounts, linkedin_accounts, tracking, sending_settings, recipients, schedule_id, start_campaign_at, complete_campaign_at, timezone, complete_campaign_after_last_step, archive_in_months, provider_matching, sequence y deals.

Configuración principal (marcada con (core) a continuación) es editable solo mientras la campaña está en estado new (borrador) — se bloquea una vez que la campaña pasa a paused, active, scheduled, completed o archived.

Cuando se proporciona sequence, el array reemplaza completamente el diagrama de flujo existente. Los pasos cuyo _ref coincide con un ID de paso numérico existente se actualizan en su lugar; los pasos con un _ref no numérico se crean como nuevos; cualquier paso existente que falte en el array se elimina.

Solicitud
PATCHhttps://api.snov.io/v2/campaigns/{campaign_id}
Parámetros de entrada
campaign_id
*Requerido (path)
Entero. ID de la campaña a actualizar.
title
Cadena. Nombre visible de la campaña. Máximo 255 caracteres.
priority
Enumeración de cadenas. Prioridad de envío: low, medium, high.
email_accounts
Array de enteros. IDs de cuentas de remitente de correo electrónico. No se pueden agregar cuentas de correo si la campaña activa no contiene pasos de correo electrónico.
linkedin_accounts
Array de enteros. IDs de cuentas de LinkedIn. No se pueden agregar cuentas de LinkedIn si la campaña activa no contiene pasos de LinkedIn.
provider_matching
Booleano. Hacer coincidir el proveedor de correo del destinatario con el proveedor de la cuenta remitente. Siempre false para campañas solo de LinkedIn.
complete_campaign_after_last_step
Booleano. Detener la campaña una vez que todos los destinatarios pasen el último paso de la secuencia.
archive_in_months
Entero. Archivar automáticamente después de esta cantidad de meses. Valores permitidos: 1, 2, 3, 6.
schedule_id
Entero o null. ID del horario de envío. Un ID inexistente devuelve 404/422.
start_campaign_at
Cadena (YYYY-MM-DD HH:MM:SS) o null. Fecha y hora en que la campaña debe iniciarse automáticamente. No se puede agregar si el campo estaba ausente en la creación; null no tiene efecto (el valor existente no se borra).
complete_campaign_at
Cadena (YYYY-MM-DD HH:MM:SS) o null. Fecha y hora en que la campaña debe detenerse automáticamente. Debe ser posterior a start_campaign_at. null no tiene efecto.
timezone
Cadena o null. Zona horaria usada para los campos de fecha; acepta identificadores de zona horaria IANA en el formato Region/City, p.ej. America/New_York. Solo tiene efecto cuando start_campaign_at está presente en la campaña.
recipients
(core)
Objeto. Configuración de destinatarios. Bloqueado en campañas iniciadas, editable en borrador.
recipients.list_id
(core)
Entero. ID de la lista de prospectos.
recipients.black_list_id
(core)
Entero o null. ID de la lista negra a excluir.
tracking
Objeto. Configuración de seguimiento de correo electrónico. Ignorado para campañas solo de LinkedIn.
tracking.open
Booleano. Rastrear aperturas de correo electrónico.
tracking.link_click
Booleano. Rastrear clics en enlaces en correos electrónicos.
sending_settings
Objeto. Controla cómo se envían los correos y qué destinatarios se omiten.
sending_settings.sending_priority
Enumeración de cadenas. Qué correos van primero: first_email o follow_up.
sending_settings.daily_sending_all
Entero o null. Máximo total de correos enviados por día a todos los destinatarios. null elimina el límite.
sending_settings.daily_sending_new_recipients
Entero o null. Máximo de nuevos destinatarios contactados por día. null elimina el límite.
sending_settings.skip_who_replied
Booleano. Detener seguimientos para prospectos que respondan.
sending_settings.skip_company_domain_who_replied
Booleano. Omitir destinatarios del dominio de una empresa donde alguien respondió.
sending_settings.skip_unverifiable
(core)
Booleano. Omitir destinatarios cuyo correo no se puede verificar. Bloqueado en campañas iniciadas.
sending_settings.skip_unverified
(core)
Booleano. Omitir destinatarios con correos no verificados. Bloqueado en campañas iniciadas.
sending_settings.skip_other_recipients_email_addresses
(core)
Booleano. Si un prospecto tiene varias direcciones de correo, enviar solo al primer correo si es true. Bloqueado en campañas iniciadas.
sending_settings.skip_recipients_added_to_my_another_campaign
(core)
Booleano. Omitir destinatarios que ya están en otra campaña de este usuario. Bloqueado en campañas iniciadas.
sending_settings.skip_recipients_added_to_team_another_campaign
(core)
Booleano. Omitir destinatarios en otra campaña de cualquier miembro del equipo. Bloqueado en campañas iniciadas.
sending_settings.skip_recipients_without_variables_data
Booleano. Omitir destinatarios que no tengan valores para variables personalizadas.
sending_settings.one_click_unsubscribe
Booleano. Habilitar el encabezado de cancelación de suscripción con un clic en los correos.
deals
Objeto o null. Configuración de creación de deals en el CRM. Pasar null para eliminar la configuración de deals.
deals.event
*Requerido cuando deals
Array de cadenas. Eventos que crean un deal: open, click, reply.
deals.pipeline_id
*Requerido cuando deals
Entero. ID del pipeline del CRM.
deals.stage_id
*Requerido cuando deals
Entero. ID de la etapa del pipeline.
deals.potential_value
Entero. Valor estimado del deal. Debe ser positivo.
deals.currency
Cadena. Código de moneda para el valor del deal, p.ej. USD, EUR.
sequence
Objeto. Reemplazo completo de la secuencia de la campaña — cuando se proporciona, reemplaza todo el diagrama de flujo.
sequence.entry
*Requerido cuando sequence
Cadena. _ref del primer paso a ejecutar.
sequence.steps
*Requerido cuando sequence
Array de objetos de pasos. Lista completa de pasos.
sequence.steps._ref
*Requerido
Cadena. Identificador del paso. Un _ref numérico actualiza un paso existente; un _ref no numérico crea un nuevo paso.
sequence.steps.type
*Requerido
Enumeración de cadenas. Tipo de paso: email, delay, trigger, goal, linkedin. No se puede cambiar en pasos existentes (numérico _ref).
sequence.steps.next
Cadena o null. _ref del paso al que continuar después de este (bloques lineales: email, linkedin, delay).
sequence.steps.yes
Cadena. _ref del paso al que ir cuando se cumple la condición del trigger (solo trigger).
sequence.steps.no
Cadena. _ref del paso al que ir cuando no se cumple la condición del trigger (solo trigger).
sequence.steps.waiting_type
*Requerido para delay / trigger
Enumeración de cadenas. Unidad de tiempo: minutes, hours, days.
sequence.steps.waiting_val
*Requerido para delay / trigger
Entero. Número de unidades de tiempo a esperar. Mín 1 para pasos delay y trigger. Límites por unidad: minutes ≤ 43200, hours ≤ 720, days ≤ 30.
sequence.steps.action
*Requerido para linkedin / trigger
Enumeración de cadenas. Acción a realizar o evento a esperar. Ver valores admitidos a continuación.
sequence.steps.goal_name
*Requerido para goal
Cadena. Etiqueta para este paso de objetivo, p.ej. Replied, Connected. Un bloque goal debe ser el último paso en su rama — no puede tener next y no puede ser el primer paso de la secuencia.
sequence.steps.content_slots
*Requerido para email
Entero (mín 1, máx 15). Número de variantes de contenido A/B.
sequence.steps.content
*Requerido para email al actualizar pasos existentes
Array de objetos. Metadatos de contenido copiados de la respuesta GET; cada elemento: {"id": <int>, "plain_text": <bool>, "usage": "active"}.
sequence.steps.subject
Cadena o null. Asunto del correo o InMail; admite {{variables}}. Opcional para email; requerido para el paso linkedin con action=in_mail.
sequence.steps.body
*Requerido para invite / message / in_mail
Cadena (HTML). Cuerpo del mensaje para acciones de LinkedIn que envían texto.
sequence.steps.value
*Requerido para endorse_skills / check_connection_level
Entero (15) para endorse_skills; array de enteros (niveles de grado válidos) para el trigger check_connection_level.
Valores admitidos para sequence.steps.action
linkedinvisitVisitar el perfil de LinkedIn del prospecto.
linkedinlikeMe gusta en una publicación del perfil del prospecto.
linkedinfollowSeguir al prospecto en LinkedIn.
linkedininviteEnviar solicitud de conexión (requiere body).
linkedinmessageEnviar un mensaje directo de LinkedIn (requiere body).
linkedinin_mailEnviar un InMail de LinkedIn (requiere body y subject; debe ir seguido de un trigger linkedin_in_mail_sent).
linkedinconnected_on_linkedinComprueba si el prospecto ha aceptado la solicitud de conexión en LinkedIn.
linkedincheck_connection_levelComprobar el nivel de grado de conexión del prospecto.
linkedinendorse_skillsRespaldar habilidades en el perfil del prospecto (requiere value 1–5).
triggeropenEsperar para ver si el prospecto abre un correo electrónico.
triggerclickEsperar para ver si el prospecto hace clic en un enlace en un correo electrónico.
triggercalendlyEsperar para ver si el prospecto reserva a través de Calendly (debe seguir a un paso de correo; máx 30 días).
triggerconnected_on_linkedinDisparador del sistema. Obligatorio después de un paso connected_on_linkedin de LinkedIn. El campo next del paso connected_on_linkedin debe apuntar a este disparador.
triggercheck_connection_levelRamificar según el grado de conexión de LinkedIn del prospecto (requiere value: array de niveles de grado válidos).
triggerlinkedin_in_mail_sentTrigger del sistema. Requerido después de un paso LinkedIn in_mail. El campo next del paso in_mail debe apuntar a este trigger.
Ejemplos de código
<?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)
Ejemplo de respuesta
{
    "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"
                }
            ]
        }
    }
}
Parámetros de salida
success
Booleano. true cuando la campaña fue actualizada.
data.id
ID de la campaña actualizada.
data.status
Estado actual de la campaña.
data.title
Nombre de la campaña.
data.email_accounts
Array de IDs de cuentas de correo remitente adjuntas a la campaña.
data.linkedin_accounts
Array de IDs de cuentas de LinkedIn adjuntas a la campaña.
data.priority
Prioridad de la campaña (low, medium, high).
data.tracking
Configuración de seguimiento de correo (open, link_click).
data.sending_settings
Configuración de envío devuelta exactamente como se almacena en el servidor tras la actualización.
data.recipients
Listas de destinatarios (list_id, black_list_id).
data.schedule_id
ID del horario de envío adjunto a la campaña, o null.
data.start_campaign_at
Fecha y hora en que la campaña comienza a enviar.
data.complete_campaign_at
Fecha y hora en que la campaña deja de enviar.
data.timezone
Identificador de zona horaria en la que opera la campaña.
data.complete_campaign_after_last_step
Si la campaña se completa automáticamente tras entregar el último paso.
data.archive_in_months
Período de archivado automático en meses.
data.provider_matching
Si la coincidencia de proveedor de correo está habilitada.
data.sequence
El diagrama de flujo de la campaña, devuelto con la misma estructura tras la reconciliación. Cada paso email se enriquece con un array content que describe sus slots de contenido (id, plain_text, usage).
data.deals
Configuración de creación de deals, presente solo si la campaña tiene deals configurados.

POSTCambiar estado de la campaña

Gratis

Este método te permite gestionar el estado de la campaña: lanzarla, pausarla, completarla o archivarla.

Solicitud
POSThttps://api.snov.io/v2/campaigns/{campaign_id}/action
Parámetros de entrada
campaign_id
*Requerido (path)
Identificador único de la campaña cuyo estado deseas cambiar.
action
El estado al que se puede transicionar la campaña. Valores permitidos: start, pause, resume, complete, archived.
Ejemplos de código
<?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())
Ejemplo de respuesta
{
  "success": true
}
Parámetros de salida
success
Puede devolver true o false dependiendo del resultado de la ejecución.
errors
Una lista de errores ocurridos al cambiar el estado de la campaña.

DELETEEliminar campaña

Este método elimina una campaña por su ID. La eliminación solo está permitida para campañas en estado new (borrador), complete o archived — las campañas en estado active, pause o scheduled no pueden eliminarse hasta que se detengan primero.

Solicitud
DELETEhttps://api.snov.io/v2/campaigns/{campaign_id}
Parámetros de entrada
campaign_id
*Requerido (path)
Entero. ID de la campaña a eliminar.
Ejemplos de código
<?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)
Ejemplo de respuesta
{
    "success": true
}
Parámetros de salida
success
Booleano. true cuando la campaña fue eliminada.

Contenido del paso de correo electrónico

Estos métodos le permiten gestionar los bloques de contenido (asunto y cuerpo) de los pasos de correo electrónico en una secuencia de campaña. El contenido solo se puede modificar cuando la campaña está en estado new, paused o scheduled. Cada paso debe tener al menos un bloque de contenido.

GETVer todas las programaciones

Gratis

Este método muestra una lista de todas las programaciones de campañas.

Solicitud
GEThttps://api.snov.io/v2/campaigns/schedules
Parámetros de entrada
Este método no tiene parámetros de entrada.
Ejemplos de código
<?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)
Ejemplo de respuesta
{
    "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"
                }
            ]
        }
    ]
}
Parámetros de salida
id
ID único de la programación.
name
Nombre de la programación.
timezone
Zona horaria que sigue la programación.
days
Array de posibles días y horarios de envío de la programación.
day
Día de la semana.
enabled
Muestra true si el envío está permitido para el día. Devuelve false cuando el envío no está permitido para el día.
start_time
Hora de inicio de la programación en ese día.
end_time
Hora de finalización de la programación en ese día.

POSTCrear contenido de paso de email

Gratis

Este método crea o actualiza un bloque de contenido para un paso de secuencia de email en una campaña. Si ya existe un bloque de contenido con el content_id especificado, será sobreescrito. El contenido solo puede modificarse cuando la campaña está en estado new, paused o scheduled.

Solicitud
POSThttps://api.snov.io/v2/campaigns/{campaign_id}/steps/{step_id}/content/create
Parámetros de entrada
campaign_id
*Requerido (path)
Entero. ID de la campaña.
step_id
*Requerido (path)
Entero. ID del paso de secuencia de email.
content_id
*Requerido
Entero. ID del bloque de contenido a escribir. Publicar el mismo content_id de nuevo sobreescribe el bloque existente.
subject
*Requerido
Cadena. Asunto del email. Admite {{variables}}.
body
*Requerido
Cadena (HTML). Cuerpo del email.
plain_text
*Requerido
Booleano. true envía el email como texto plano, false lo envía como HTML.
usage
*Requerido
Cadena. Estado del bloque de contenido. Valores permitidos: "active", "pause".
Ejemplos de código
<?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)
Ejemplo de respuesta
{
    "success": true,
    "data": {
        "id": 11111,
        "subject": "Hey, I have something for you",
        "body": "

Hi {{first_name}}, ...

", "plain_text": false, "usage": "active" } }
Parámetros de salida
success
Booleano. true cuando la solicitud fue exitosa.
data.id
Entero. ID del bloque de contenido.
data.subject
Cadena. Asunto del email.
data.body
Cadena (HTML). Cuerpo del email.
data.plain_text
Booleano. true si está en modo texto plano, false si es HTML.
data.usage
Cadena. Estado del bloque de contenido. Valores permitidos: "active", "pause".

GETObtener contenido de paso de email

Gratis

Este método devuelve un bloque de contenido de un paso de secuencia de email por su content_id.

Solicitud
GEThttps://api.snov.io/v2/campaigns/{campaign_id}/steps/{step_id}/content/{content_id}
Parámetros de entrada
campaign_id
*Requerido (path)
Entero. ID de la campaña.
step_id
*Requerido (path)
Entero. ID del paso de secuencia de email.
content_id
*Requerido (path)
Entero. ID del bloque de contenido.
Ejemplos de código
<?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)
Ejemplo de respuesta
{
    "data": {
        "id": 11111,
        "subject": "Hey, I have something for you",
        "body": "

Hi {{first_name}}, ...

", "plain_text": false, "usage": "active" } }
Parámetros de salida
data.id
Entero. ID del bloque de contenido.
data.subject
Cadena. Asunto del email.
data.body
Cadena (HTML). Cuerpo del email.
data.plain_text
Booleano. true si está en modo texto plano, false si es HTML.
data.usage
Cadena. Estado del bloque de contenido. Valores permitidos: "active", "pause".

PATCHActualizar contenido de paso de email

Gratis

Este método actualiza parcialmente un bloque de contenido de un paso de secuencia de email. Solo se actualizan los campos proporcionados en el cuerpo de la solicitud; los campos omitidos permanecen sin cambios. Debe incluirse al menos un campo. El contenido solo puede modificarse cuando la campaña está en estado new, paused o scheduled.

Solicitud
PATCHhttps://api.snov.io/v2/campaigns/{campaign_id}/steps/{step_id}/content/{content_id}
Parámetros de entrada
campaign_id
*Requerido (path)
Entero. ID de la campaña.
step_id
*Requerido (path)
Entero. ID del paso de secuencia de email.
content_id
*Requerido (path)
Entero. ID del bloque de contenido.
subject
Cadena. Asunto del email. Admite {{variables}}.
body
Cadena (HTML). Cuerpo del email.
plain_text
Booleano. true para texto plano, false para HTML.
usage
Cadena. Estado del bloque de contenido. Valores permitidos: "active", "pause".
Ejemplos de código
<?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)
Ejemplo de respuesta
{
    "success": true,
    "data": {
        "id": 11111,
        "subject": "Updated subject",
        "body": "

Hi {{first_name}}, ...

", "plain_text": false, "usage": "active" } }
Parámetros de salida
success
Booleano. true cuando la solicitud fue exitosa.
data.id
Entero. ID del bloque de contenido.
data.subject
Cadena. Asunto del email.
data.body
Cadena (HTML). Cuerpo del email.
data.plain_text
Booleano. true si está en modo texto plano, false si es HTML.
data.usage
Cadena. Estado del bloque de contenido. Valores permitidos: "active", "pause".

DELETEEliminar contenido de paso de email

Gratis

Este método elimina un bloque de contenido de un paso de secuencia de email. No está permitido eliminar el último bloque de contenido restante en un paso — cada paso debe tener al menos un bloque de contenido.

Solicitud
DELETEhttps://api.snov.io/v2/campaigns/{campaign_id}/steps/{step_id}/content/{content_id}
Parámetros de entrada
campaign_id
*Requerido (path)
Entero. ID de la campaña.
step_id
*Requerido (path)
Entero. ID del paso de secuencia de email.
content_id
*Requerido (path)
Entero. ID del bloque de contenido a eliminar.
Ejemplos de código
<?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)
Ejemplo de respuesta
{
    "data": {
        "success": true
    }
}
Parámetros de salida
data.success
Booleano. true cuando el bloque de contenido fue eliminado correctamente.

Gestión de destinatarios

Estos métodos le permiten gestionar los destinatarios de la campaña: verificar y actualizar sus estados, ver los prospectos completados y mantener listas de No enviar correo electrónico para controlar quién recibe sus campañas.

GETVerificar estado del destinatario

Gratis

Este método verifica si los emails especificados están presentes como destinatarios en una campaña particular y devuelve su estado actual. Está diseñado para la deduplicación antes de agregar nuevos destinatarios a una campaña, para evitar contactar prospectos que ya están inscritos, finalizados o dados de baja.

Solicitud
GEThttps://api.snov.io/v2/campaigns/[campaign_id]/recipient
Parámetros de entrada
campaign_id
*Requerido
Identificador único de la campaña.
emails[]
*Requerido
Array de direcciones de email a verificar. Mínimo 1, máximo 100 por solicitud. Cada email debe ser único y no puede tener más de 100 caracteres.
Ejemplos de código
<?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)
Ejemplo de respuesta
{
    "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"
        }
    ]
}
Parámetros de salida
email
Dirección de email de la solicitud (devuelta tal cual).
exist
true si el email está presente como destinatario en la campaña, false en caso contrario.
status
Estado actual del destinatario en la campaña (p. ej. tocheck, active, finished, unsubscribe, moved). null cuando exist es false.

POSTCambia el estado del destinatario

Gratis

Cambiar el estado de un destinatario en una campaña específica.

Solicitud
POSThttps://api.snov.io/v1/change-recipient-status
Parámetros de entrada
email
*Requerido
La dirección de correo electrónico del prospecto.
campaign_id
*Requerido
El identificador de la campaña. Puedes encontrarlo en la URL cuando veas la información de la campaña (mostrar un ejemplo).
status
*Requerido
Puede contener Activo, Pausado o No suscrito. No puedes cambiar el estado de los destinatarios si su estado es Finalizado o Movido.
Ejemplos de código
<?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)
Ejemplo de respuesta
{
  "success": true
}
Parámetros de salida

El método devuelve success: true si el estado del prospecto ha sido cambiado con éxito. Si se produce algún error, el método devolverá success: false con una descripción del error.

GETVer lista de prospectos completados

Gratis

Este método devuelve los prospectos para los que se ha completado la campaña.

Solicitud
GEThttps://api.snov.io/v1/prospect-finished
Parámetros de entrada
campaignId
*Requerido
El identificador único de la campaña para recuperar la lista de prospectos.
Ejemplos de código
<?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)
Ejemplo de respuesta
[
    {
        "id": "88c268d404797d1001b4d72806207625",
        "prospectId": "9c2eb5b46bb5873e408684dd577d002354e4f7026f47bf8a592d659bba3d2dd0ff186b90dc7a5",
        "userName": "zach Jones",
        "userEmail": "zach@entselect.us",
        "campaign": "Zipari - Salesforce Developer",
        "hash": "f3967971cbab6e769b5f7e3457d00159"
    }
]
Parámetros de salida
id
Identificador único de la solicitud.
prospectId
Identificador único del prospecto.
userName
Nombre completo del prospecto.
userEmail
Dirección de email del prospecto.
campaign
Nombre de la campaña.

POSTAñadir a la lista de No enviar email

Gratis

Utilizando este método puedes añadir un correo electrónico o un dominio a tu Lista de no enviar email. Una vez que este correo electrónico/dominio se haya añadido a la lista, no podrás enviarle correos electrónicos.

Solicitud
POSThttps://api.snov.io/v1/do-not-email-list
Parámetros de entrada
items
Correo electrónico o dominio que deseas añadir a tu lista de No enviar email.
listId
*Requerido
El identificador de la Lista de No enviar emails al que pertenecen los emails y los dominios.
Ejemplos de código
<?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)
Ejemplo de respuesta
[
    {
        "success": true,
        "data": {
            "duplicates": []
        }
    }
]
Parámetros de salida
duplicates
Este parámetro muestra qué correos electrónicos/dominios han sido añadidos previamente a la lista de No enviar email.

GETVer todas las listas de "No enviar email"

Gratis

Este método devuelve una lista de todas las listas de "No enviar email".

Solicitud
GEThttps://api.snov.io/v2/blacklists
Parámetros de entrada
Este método no tiene parámetros de entrada.
Ejemplos de código
<?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)
Ejemplo de respuesta
{
    "data": [
        {
            "id": 8,
            "name": "Do-not-email List",
            "owner": "Rob Patison",
            "total": 100
        }
    ]
}
Parámetros de salida
id
ID único de la lista de "No enviar email".
name
Nombre de la lista.
owner
Nombre de la persona que creó la lista.
total
Número total de registros en la lista (correos y sitios web).

Análisis e informes

Estos métodos de solo lectura proporcionan visibilidad sobre el rendimiento de la campaña: entrega, aperturas, clics y respuestas. Úselos para monitorear la participación y exportar datos para su análisis.

GETObtén análisis de la campaña

Gratis

Este método muestra las estadísticas de la campaña según los filtros aplicados.

Solicitud
GEThttps://api.snov.io/v2/statistics/campaign-analytics
Parámetros de entrada
campaign_id
ID de la campaña. Puedes encontrarlo en la URL cuando veas la información de la campaña (ejemplo). Si dejas este campo vacío, obtendrás datos de todas las campañas activas dentro del período de tiempo especificado.

Para obtener datos de varias campañas, separa los ID con comas.
sender_email
ID de la cuenta de correo del remitente. Puedes encontrarlo en la URL al ver o editar la información de la cuenta de email (ejemplo). Para ver las analíticas de varias cuentas de correo, separa los ID con comas.

Alternativamente, deja este parámetro vacío si no deseas aplicar un filtro de cuenta de email.
sender_linkedin
ID de cuenta de LinkedIn del remitente. Puedes encontrarlo en la URL al ver o editar la información de la cuenta de LinkedIn. Para ver las analíticas de varias cuentas, separa los IDs con comas.

Deja este parámetro vacío si no deseas aplicar un filtro de cuenta de LinkedIn.
campaign_owner
Para ver los datos de la campaña de un miembro específico del equipo, ingresa la dirección de email. Para filtrar por múltiples propietarios de campañas, lista las direcciones de email separadas por comas (sin espacios).

Ejemplo: example1@gmail.com,example2@gmail.com

Ten en cuenta que para utilizar este filtro, tu cuenta debe tener habilitado el permiso de ‘Ver registros del equipo’, y debe estar en un plan Pro o superior.
date_from
*Requerido
La fecha de inicio del período para el cual deseas recibir estadísticas. Formato: aaaa-mm-dd.
date_to
*Requerido
La fecha de finalización del período para el cual deseas recibir estadísticas. Formato: aaaa-mm-dd.
Ejemplos de código

<?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)

Ejemplo de respuesta
{
    "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%"
}
Parámetros de salida
total_contacted
Número total de destinatarios que fueron contactados por email o LinkedIn (solicitud de conexión, mensaje o InMail).
emails_sent
Número total de emails enviados a través de las campañas.

Ten en cuenta que esto no incluye los emails enviados fuera de las campañas.
first_emails
Número de primeros emails en una secuencia de campaña que fueron enviados dentro del período de tiempo indicado.
first_emails_rate
Porcentaje de primeros emails sobre el total de emails enviados.
follow_ups
Número de emails de seguimiento en una secuencia de campaña que se enviaron dentro del período de tiempo indicado.
follow_ups_rate
Porcentaje de emails de seguimiento respecto al total deemails enviados.
delivered
Número de emails enviados que no rebotaron.
delivered_rate
Porcentaje de emails que no rebotaron del total de emails enviados.
bounced
Número de emails que rebotaron.
bounced_rate
Porcentaje de emails que rebotaron en relación con el total de emails enviados.
contacted_by_email
Número de destinatarios que recibieron al menos un email que no rebotó.
email_opens
Número de destinatarios que abrieron tu email al menos una vez.
email_opens_rate
Porcentaje de destinatarios que abrieron tu email al menos una vez, en relación con todos los destinatarios contactados.
link_clicks
Número de destinatarios que hicieron clic en al menos un enlace en tus campañas.
link_clicks_rate
Porcentaje de destinatarios que hicieron clic en al menos un enlace en las campañas, en relación con el total de destinatarios contactados.
email_replies
Número de destinatarios que respondieron al menos una vez.
email_replies_rate
Porcentaje de destinatarios que respondieron al menos una vez de todos los destinatarios contactados.
unsubscribed
Número de destinatarios que hicieron clic en el enlace de "Cancelar suscripción" en tus campañas, optando por no recibir más emails.
unsubscribed_rate
Porcentaje de destinatarios que hicieron clic en el enlace de "Cancelar suscripción" en tus campañas, de todos los destinatarios contactados.
auto_replied
Número de destinatarios que respondieron automáticamente a los emails de tu campaña.
auto_replied_rate
Porcentaje de destinatarios que respondieron automáticamente de todos los destinatarios contactados.
contacted_by_linkedin
Número de destinatarios a quienes enviaste al menos un mensaje o solicitud de conexión en LinkedIn.
linkedin_total_replies
Número de destinatarios que respondieron al menos una vez a cualquiera de los mensajes enviados en LinkedIn (mensajes de LinkedIn, mensajes de solicitud de conexión e InMail).
linkedin_total_replies_rate
Porcentaje de destinatarios que respondieron al menos una vez a cualquiera de los mensajes enviados en LinkedIn (mensajes de LinkedIn, mensajes de solicitud de conexión e InMail).
connection_request_replies
Número de destinatarios que respondieron a un mensaje de solicitud de conexión.
connection_request_replies_rate
Porcentaje de destinatarios que respondieron a un mensaje de solicitud de conexión de todos los destinatarios contactados.
message_replies
Número de destinatarios que respondieron a un mensaje regular de LinkedIn.
message_replies_rate
Porcentaje de destinatarios que respondieron a un mensaje regular de LinkedIn de todos los destinatarios contactados.
in_mail_replies
Número de destinatarios que respondieron a un mensaje InMail en LinkedIn.
in_mail_replies_rate
Porcentaje de destinatarios que respondieron a un mensaje InMail en LinkedIn.
connection_requests
Número de solicitudes de conexión enviadas a prospectos a través de campañas de Snov.io.
accepted_requests
Número de solicitudes de conexión que fueron aceptadas por miembros de LinkedIn.
accepted_requests_rate
Porcentaje de solicitudes de conexión que fueron aceptadas de todas las solicitudes enviadas.
failed_connection_requests
Número de solicitudes de conexión en LinkedIn que no se enviaron debido a:
  • la URL de LinkedIn del prospecto no existe
  • ya les enviaste una solicitud de conexión anteriormente y está pendiente
  • ya estás conectado con el prospecto
messages_sent
Número de mensajes enviados en LinkedIn.
linkedin_views
Número de perfiles de prospectos visualizados.
linkedin_likes
Número de publicaciones de prospectos con "me gusta" en LinkedIn.
linkedin_follows
Número de perfiles de prospectos seguidos.
in_mail_sent
Número total de mensajes InMail enviados.
interested
Número de destinatarios que mostraron interés en sus respuestas.
interested_rate
Porcentaje de destinatarios que mostraron interés en sus respuestas.
maybe
Número de destinatarios que no expresaron interés ni desinterés directo en sus respuestas.
maybe_rate
Porcentaje de destinatarios que no expresaron interés ni desinterés directo en sus respuestas.
not_interested
Número de destinatarios que no mostraron interés en sus respuestas.
not_interested_rate
Porcentaje de destinatarios que no mostraron interés en sus respuestas.

GETVer el progreso de la campaña

Gratis

Este método devuelve el progreso y el estado de la campaña.

Solicitud
GEThttps://api.snov.io/v2/campaigns/[campaign_id]/progress
Parámetros de entrada
campaign_id
*Requerido
ID de la campaña. Puedes encontrarlo en la URL cuando ves la información de la campaña (ejemplo).
Ejemplos de código

<?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)

Ejemplo de respuesta
{
    "status":"Active",
    "unfinished":1,
    "progress":"90%"
}
Parámetros de salida
progress
Porcentaje de destinatarios que:
  • Llegaron al final de la secuencia
  • Rebotaron, respondieron, auto-respondieron, se dieron de baja, fueron eliminados o movidos de la campaña, por lo que la campaña fue detenida para ellos.
unfinished
Número de destinatarios en la campaña que no llegaron al final de la secuencia o para quienes la secuencia no fue detenida.
status
Estado de la campaña. Aprende más

GETObtener informe de actividad de destinatarios de campaña

Gratis

Este método devuelve un informe detallado de actividad para todos los destinatarios de una campaña — eventos de envío, apertura, clic, respuesta, rebote y cancelación de suscripción — junto con los detalles del prospecto. Refleja el informe de actividad de destinatarios disponible en la interfaz de la campaña y es adecuado para sincronizar la actividad de la campaña con paneles externos o CRMs.

Solicitud
GEThttps://api.snov.io/v2/campaigns/[campaignId]/recipients-activity
Parámetros de entrada
campaignId
*Requerido
Identificador único de la campaña.
dateFrom
*Requerido
Inicio del rango de fechas en formato Y-m-d (UTC).
dateTo
*Requerido
Fin del rango de fechas en formato Y-m-d (UTC). El rango máximo entre dateFrom y dateTo es de 31 días.
offset
Desplazamiento de paginación (predeterminado: 0).
limit
Número de registros por página (predeterminado: 100, máximo: 1000).
Ejemplos de código
<?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)
Ejemplo de respuesta
{
    "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
    }
}
Parámetros de salida
event_time
Hora del evento en ISO 8601 (UTC).
event_type
Tipo de evento: sent, open, click, reply, bounce, unsubscribe.
sender_email
Dirección de email del remitente (buzón de la campaña).
email_subject
Línea de asunto del email en la secuencia de la campaña.
recipient_email
Dirección de email del destinatario.
recipient_name
Nombre completo del destinatario.
phone
Número de teléfono del destinatario (del perfil del prospecto).
country
País del destinatario.
location
Ubicación del destinatario (ciudad, región).
industry
Sector de la empresa del destinatario.
company
Nombre de la empresa del destinatario.
job_position
Cargo del destinatario.
website
Sitio web de la empresa del destinatario.
hq_phone
Número de teléfono de la sede de la empresa del destinatario.
total
Número total de registros que coinciden con la solicitud.
offset
Desplazamiento de paginación actual.
limit
Tamaño de página utilizado para la respuesta.
has_more
true si hay más registros más allá de la página actual.

GETVer correos electrónicos enviados

Gratis

Este método muestra la información sobre los correos electrónicos enviados en la campaña.

Solicitud
GEThttps://api.snov.io/v1/emails-sent
Parámetros de entrada
campaignId
*Requerido
Identificador único de la campaña para la que deseas ver los correos electrónicos enviados.
offset
Puedes recopilar hasta 10.000 correos electrónicos enviados por cada solicitud. Si tu campaña envió más correos electrónicos, utiliza el desplazamiento para indicar cuántos correos electrónicos anteriores quieres omitir. Por ejemplo, si tu campaña ha enviado 20.000 correos electrónicos y deseas solicitar los correos electrónicos del 10.001 al 20.000, establece el desplazamiento en 10.000. Si el desplazamiento no se especifica, recibirás los últimos 10.000 correos electrónicos que se enviaron dentro de la campaña.
Ejemplos de código
<?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)
Ejemplo de respuesta
[
    {
        "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"
    }
]
Parámetros de salida
sentDate
Hora exacta en que se envió el correo electrónico.
userName
Nombre completo del prospecto al que se envió el correo electrónico.
userEmail
Dirección de email del prospecto.
campaign
Nombre de la campaña.

GETObtén información sobre la apertura de la campaña

Gratis

Este método muestra la información sobre los correos electrónicos abiertos en la campaña.

Solicitud
GEThttps://api.snov.io/v1/get-emails-opened
Parámetros de entrada
campaignId
*Requerido
Identificador único de la campaña de la que deseas ver información sobre las aperturas de los correos electrónicos.
offset
Puedes recopilar hasta 10.000 aperturas por cada solicitud. Si tu campaña tiene más correos electrónicos abiertos, usa el desplazamiento para indicar cuántas aperturas anteriores deseas omitir. Por ejemplo, si tu campaña tiene 20.000 aperturas y quieres solicitar las aperturas 10.001-20.000, configura el desplazamiento como 10.000. Si el desplazamiento no está especificado, recibirás los últimos 10.000 correos electrónicos abiertos.
Ejemplos de código
<?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)
Ejemplo de respuesta
[
    {
        "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": ""
    }
]
Parámetros de salida
campaignId
Identificador único de la campaña.
campaign
Nombre de la campaña.
prospectName
Nombre completo del prospecto que abrió un email.
emailSubject
Línea de asunto del correo electrónico que se abrió.
visitedAt
Hora exacta en que el prospecto abrió el correo electrónico.

GETComprobar los clics del link

Gratis

Este método devuelve información sobre todos los destinatarios de la campaña que han hecho clic en un link en uno de los correos electrónicos de la campaña.

Solicitud
GEThttps://api.snov.io/v1/get-emails-clicked
Parámetros de entrada
campaignId
*Requerido
Identificador único de la campaña para la que desea ver los clics de los links.
offset
Puedes recopilar hasta 10.000 clics por cada solicitud. Si tu campaña tiene más clics, utiliza el desplazamiento para indicar cuántos clics anteriores quieres omitir. Por ejemplo, si tu campaña tiene 20.000 clics y deseas solicitar los clics del 10.001 al 20.000, establece el desplazamiento en 10.000. Si el desplazamiento no se especifica, recibirás los últimos 10.000 correos electrónicos que hicieron clic en un enlace dentro de la campaña.
Ejemplos de código
<?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)
Ejemplo de respuesta
[
    {
        "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": ""
    }
]
Parámetros de salida
campaignId
Identificador único de la campaña.
campaign
Nombre de la campaña.
prospectName
Nombre completo del prospeccto que hizo clic en un link de un correo electrónico de la campaña.
prospectEmail
Dirección de email del prospecto.
emailSubject
Línea de asunto del correo electrónico que contenía un link cliqueado.
emailBody
Contenidos del correo electrónico.
visitedAt
La hora exacta en que el prospecto hizo clic en un link del correo electrónico.

GETVer todas las respuestas de la campaña

Gratis

Este método muestra una lista de todas las respuestas recibidas en una campaña — tanto respuestas de email como respuestas de LinkedIn (respuestas a solicitudes de conexión, respuestas a mensajes de LinkedIn e InMail). Cada registro representa un par único de (prospecto, tipo de respuesta); las respuestas dentro de un registro están ordenadas cronológicamente.

Solicitud
GEThttps://api.snov.io/v2/campaigns/[campaign_id]/all-replies
Parámetros de entrada
campaign_id
*Requerido
Identificador único de la campaña.
offset
Desplazamiento de paginación (predeterminado: 0).
Ejemplos de código
<?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)
Ejemplo de respuesta
{
    "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"
                }
            ]
        }
    ]
}
Parámetros de salida
campaignId
Identificador único de la campaña.
campaign
Nombre de la campaña.
prospectId
Identificador único del prospecto.
prospectName
Nombre completo del prospecto.
prospectEmail
Dirección de email del prospecto.
linkedInProfile
URL del perfil de LinkedIn del prospecto (si está disponible).
replyType
Tipo de respuesta: email, linkedinMessage, linkedinInvite, linkedinInMail.
receivedAt
Fecha y hora de la primera respuesta en este par (prospecto, tipo de respuesta).
replies[].subject
Asunto de la respuesta (cadena vacía para las respuestas de LinkedIn sin asunto).
replies[].message
Cuerpo de la respuesta.
replies[].receivedAt
Fecha y hora en que se recibió la respuesta específica.

GETVer las respuestas de email de la campaña

Gratis

Este método devuelve las respuestas de email recibidas en una campaña, incluyendo el nombre del prospecto, el ID, la campaña, etc. Para obtener respuestas de LinkedIn (solicitud de conexión, mensaje directo, InMail) además de las respuestas de email, utiliza el método Ver todas las respuestas de la campaña.

Solicitud
GEThttps://api.snov.io/v1/get-emails-replies
Parámetros de entrada
campaignId
*Requerido
Identificador único de la campaña de la que quieres ver las respuestas.
offset
Puedes recopilar hasta 10.000 respuestas por cada solicitud. Si tu campaña tiene más respuestas, utiliza el desplazamiento para indicar cuántas respuestas anteriores deseas omitir. Por ejemplo, si tu campaña tiene 20.000 respuestas y deseas solicitar respuestas 10.001-20.000, configura el desplazamiento como 10.000. Si el desplazamiento no se especifica, recibirás las últimas 10.000 respuestas recibidas.
Ejemplos de código
<?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)
Ejemplo de respuesta
[
    {
        "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": ""
    }
]
Parámetros de salida
campaignId
Identificador único de la campaña.
campaign
Nombre de la campaña.
prospectName
Nombre completo del prospecto.
emailSubject
Línea de asunto del correo electrónico que recibió una respuesta.
emailBody
Contenido del correo electrónico que ha recibido respuesta.

POSTAñade el prospecto a la lista

Gratis

Agregar un prospecto a una lista específica. Este método será útil para aquellos que quieran automatizar la adición de prospectos a las listas con campañas activas por email. De esta manera, después de que un prospecto se agregue automáticamente a una lista elegida, se iniciará automáticamente una campaña para ellos.

Solicitud
POSThttps://api.snov.io/v1/add-prospect-to-list
Parámetros de entrada
email
La dirección de correo electrónico del prospecto.
fullName
El nombre completo del prospecto.
firstName
El nombre del prospecto.
lastName
El apellido del prospecto.
phones
Arreglo con números de teléfono de prospectos.
country
El país del prospecto. Los nombres de los países se definen aquí. Por favor, utiliza solo los países de esta lista.
locality
La ubicación del prospecto.
position
El cargo del prospecto.
companyName
El nombre de la empresa del prospecto.
companySite
La página web de la empresa del prospecto. Por favor, utiliza el
http://example.com
formato.
updateContact
Actualiza un prospecto existente. Acepta true o false.
  • Si true y un prospecto con esta dirección de correo electrónico ya existe en una de las listas, el sistema actualiza el perfil existente.
  • Si false, el sistema no actualiza el perfil existente.
createDuplicates
Crea un prospecto duplicado. Acepta true o false.
  • Si true y un prospecto con esta dirección de correo electrónico ya existe en una de las listas, el sistema crea un perfil duplicado.
  • Si false, el sistema no crea un perfil duplicado.

Solo un parámetro, updateContact o createDuplicates, puede estar establecido en true.
customFields[specialization]
Puede añadir valores personalizados en campos personalizados previamente creados. Para ello, especifica el nombre del campo personalizado entre los [brackets].
socialLinks[linkedIn]
*Required if email is null
Un enlace al perfil de redes sociales del prospecto. Especifica el nombre de la red social entre [corchetes] (LinkedIn, Facebook o X).
listId
*Requerido
El identificador de la lista a la que pertenece el prospecto.
Ejemplos de código
<?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"
  }
}
Ejemplo de respuesta
{
    "success": true,
    "id": "0Y2QzowWL1rHpIptwaRp0Q==",
    "added": true,
    "updated": false
}
Parámetros de salida
success
Es
true
si el prospecto se ha añadido con éxito a la lista.
id
Se ha añadido el identificador de los prospectos.
added
Es
true
si el prospecto se ha añadido a la lista.
updated
Es
true
si se han actualizado los datos del prospecto existente.
errors
Ha habido un error al añadir el prospecto a la lista.

POSTEncuentra el prospect por el ID

Gratis

Encuentra prospectos de tus listas por id. Conociendo el id de un prospecto específico puedes obtener información completa sobre el mismo, incluyendo las listas y campañas a las que ha sido añadido.

Solicitud
POSThttps://api.snov.io/v1/get-prospect-by-id
Parámetros de entrada
id
*Requerido
El identificador del prospecto. Se puede ver en la respuesta cuando se añade un prospecto a través de Añade el prospecto a la lista método API o en la URL al ver la página del prospecto (ver un ejemplo).
Ejemplos de código
<?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)
Ejemplo de respuesta
{
  "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": []
  }
}
Parámetros de salida
success
Es
true
si se encuentra el prospecto
id
Identificador único del perfil
name
Nombre completo del prospecto
firstName
Primer nombre del prospecto
lastName
Apellido del prospecto
industry
Sector de actividad indicado en el perfil del prospecto
country
País de prospecto
locality
Ubicación de prospecto
social
Enlaces a los perfiles sociales de los prospectos
currentJobs
La matriz contiene información sobre el puesto de trabajo actual de prospecto
previousJobs
La matriz contiene información sobre los cargos anteriores del prospecto
lastUpdateDate
Fecha de la última actualización del perfil
lists
Listas a las que se ha añadido el prospecto
campaigns
Lista de campañas a las que se ha añadido este prospecto como destinatario. Contiene breves estadísticas como el estado, el número de mensajes enviados, las aperturas y las respuestas.

POSTEncuentra el prospecto por el email

Gratis

Encuentra prospectos de sus listas por dirección de correo electrónico. Cuando buscas por correo electrónico, recibes una lista de todos los prospectos vinculados a esta dirección de correo electrónico. Cada elemento de la lista contiene información completa sobre el prospecto, incluyendo las listas y las campañas a las que ha sido añadido.

Solicitud
POSThttps://api.snov.io/v1/get-prospects-by-email
Parámetros de entrada
email
*Requerido
La dirección de correo electrónico del prospecto.
Ejemplos de código
<?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)
Ejemplo de respuesta
{
  "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": []
    }
  ]
}
Parámetros de salida
success
Es
true
si se encuentra el prospecto
id
Identificador único del perfil
name
Nombre completo del prospecto
firstName
Nombre del prospecto
lastName
Apellido del prospecto
industry
Sector de actividad indicado en el perfil del prospecto
country
País del prospecto
locality
Ubicación del prospecto
social
Enlaces a los perfiles sociales de los prospectos
currentJobs
La matriz contiene información sobre el cargo actual del cliente potencial
previousJobs
La matriz contiene información sobre los títulos de trabajo anteriores del cliente potencial
lastUpdateDate
Fecha de la última actualización del perfil
lists
Listas a las que se ha añadido el prospecto
campaigns
Lista de campañas a las que se ha añadido este prospecto como destinatario. Contiene breves estadísticas como el estado, el número de mensajes enviados, las aperturas y las respuestas.

GETEncuentra los campos personalizados del prospecto

Gratis

Este método devuelve una lista de todos los campos personalizados creados por el usuario, incluyendo el nombre de los campos, si el campo es opcional u obligatorio, y el tipo de datos del campo.

Solicitud
GEThttps://api.snov.io/v1/prospect-custom-fields
Parámetros de entrada
No hay parámetros de entrada para este método
Ejemplos de código
<?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)
Ejemplo de respuesta
  [
    {
        "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"
    }
  ]
Parámetros de salida
key
La clave del campo en la matriz
customFields
.
label
El nombre del campo.
required
Es
true
si el campo personalizado es obligatorio.
type
El tipo de datos del campo personalizado (cadena, número o fecha).

GETVer listas de usuarios

Gratis

Este método devuelve todas las listas creadas por el usuario. Puedes utilizar este método para revisar las listas que se pueden utilizar para una campaña por email.

Solicitud
GEThttps://api.snov.io/v1/get-user-lists
Parámetros de entrada
No hay parámetros de entrada para este método
Ejemplos de código
<?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)
Ejemplo de respuesta
[
    {
        "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"
        }
    }
]

Parámetros de salida
id
Identificador único de la lista de usuarios.
name
Nombre de la lista
contacts
El número de prospectos en la lista.
isDeleted
Estado de la lista. Es
true
si la lista ha sido borrada.
creationDate
La fecha y la hora de creación de la lista (incluye información sobre la fecha, la hora y la zona horaria).
deleteDate
Si la lista se ha eliminado, contiene la fecha y la hora de la supresión de la lista (incluye información sobre la fecha, la hora y la zona horaria).

POSTVer prospectos en la lista

Gratis

Este método devuelve todos los datos de los prospectos en una lista específica, incluyendo los datos del prospecto como las direcciones de correo electrónico y su estado.

Solicitud
POSThttps://api.snov.io/v1/prospect-list
Parámetros de entrada
listId
*Requerido
El identificador único de la lista.
page
Puedes elegir en qué página de la lista quieres empezar tu búsqueda. Este campo es opcional.
perPage
Establece el número máximo de prospectos que se incluirán en la respuesta. El valor máximo es 5.000.
Ejemplos de código
<?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)
Ejemplo de respuesta

Ten en cuenta que los resultados de los prospectos se muestran en orden inverso, del último al primero.

{
    "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
                }
            ]
        }
    ]
}

Parámetros de salida
list
Una matriz con información sobre la lista y los prospectos en ella.
name
El nombre de la lista.
contacts
El número de prospectos en la lista.
creation_date
La fecha de creación de la lista (incluye la fecha, la hora y la información de la zona horaria).
emailsCount
El número de correos electrónicos de la lista.
prospects
Una lista de prospectos en la lista.
id
Un identificador único del prospecto.
name
El nombre completo de un prospecto.
emails
Una lista de correos electrónicos pertenecientes al prospecto.

POSTCrear una nueva lista de prospectos

Gratis

Utiliza este método para crear nuevas listas de prospectos en tu cuenta.

Solicitud
POSThttps://api.snov.io/v1/lists
Parámetros de entrada
name
El nombre de la nueva lista de prospectos.
Ejemplos de código
<?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)
Ejemplo de respuesta
[
    {
        "success": true,
        "data": {
            "id": 1234567
        }
    }
]
Parámetros de salida
id
El ID de la lista de prospectos creada.

GETObtener lista de pipelines

Gratis

Este método muestra una lista de todos los pipelines de la sección CRM (Negocios), incluyendo el número y el valor total de los negocios en cada pipeline.

Solicitud
GEThttps://api.snov.io/v2/pipelines
Parámetros de entrada
Este método no tiene parámetros de entrada.
Ejemplos de código
<?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)
Ejemplo de respuesta
{
    "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"
        }
    ]
}
Parámetros de salida
id
Identificador único del pipeline.
name
Nombre del pipeline.
deals_count
Número de negocios actualmente en el pipeline.
deals_value
Valor total de todos los negocios en el pipeline.
created_at
Fecha y hora de creación del pipeline en formato ISO 8601.

GETObtener lista de etapas del pipeline

Gratis

Este método muestra una lista de todas las etapas dentro de un pipeline específico de la sección CRM (Negocios).

Solicitud
GEThttps://api.snov.io/v2/pipelines/{pipeline_id}/stages
Parámetros de entrada
pipeline_id
Identificador único del pipeline cuyas etapas quieres obtener.
Ejemplos de código
<?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)
Ejemplo de respuesta
{
    "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
        }
    ]
}
Parámetros de salida
id
Identificador único de la etapa.
pipeline_id
ID del pipeline al que pertenece esta etapa.
name
Nombre de la etapa.
order
Posición de la etapa dentro del pipeline.
deals_count
Número de negocios actualmente en esta etapa.
deals_value
Valor total de todos los negocios en esta etapa.

GETConsulta el saldo del usuario

Gratis

Utiliza este método para comprobar tu saldo de crédito.

Solicitud
GEThttps://api.snov.io/v1/get-balance
Parámetros de entrada
No hay parámetros de entrada para este método
Ejemplos de código
<?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)
Ejemplo de respuesta
{
    "success": true,
    "data": {
        "balance": "25000.00",
        "teamwork": false,
        "unique_recipients_used": 0,
        "limit_resets_in": 29,
        "expires_in": 359
    }
}

Parámetros de salida
balance
Saldo actual del usuario en créditos.
teamwork
Es verdadero si actualmente es miembro o líder de un equipo, falso si no forma parte de un equipo.
recipients_used
Número de destinatarios únicos utilizados este mes.
limit_resets_in
Días hasta el reinicio del límite.
expires_in
Días hasta el final de la suscripción.

Webhooks

Descripción

Los webhooks le permiten recibir notificaciones de eventos que sucedieron en su cuenta de Snov.io.

Puede usar webhooks para llamar al punto final (URL) en su servidor cada vez que ocurre un evento suscrito en Snov.io y enviar datos en tiempo real a su aplicación.

Cada vez que ocurre un evento, Snov.io envía una solicitud HTTP con un cuerpo JSON al punto final de URL especificado.

Puedes suscribirte y gestionar los webhooks a través de un conjunto de llamadas a la API.

Los objetos y acciones de webhook admitidos actualmente se enumeran a continuación:

Objeto de webhookAccióncuando se activa
campaign_email
sentCuando se envía cualquier email al destinatario en cualquier campaña
first_sentCuando se envía el primer email al destinatario en cualquier campaña
openedCuando un destinatario abre cualquier email de cualquier campaña
bouncedCuando un correo de campaña rebota
link_clickedCuando un destinatario hizo clic en un enlace en un correo electrónico de campaña
campaign_reply
receivedCuando el destinatario responde a cualquier correo electrónico de cualquiera de las campañas
first_receivedCuando el destinatario responde al correo electrónico por primera vez en cualquiera de las campañas
autoreply_receivedCuando recibes una respuesta automática a un correo electrónico de campaña
campaign_li_reply
receivedCuando el destinatario envía una respuesta posterior por LinkedIn — a una solicitud de conexión, a un mensaje directo o a un InMail — en cualquiera de las campañas
first_receivedCuando el destinatario envía su primera respuesta por LinkedIn — a una solicitud de conexión, a un mensaje directo o a un InMail — en cualquiera de las campañas
campaign_li
connection_request_acceptedCuando el destinatario acepta una solicitud de conexión de LinkedIn enviada desde una campaña
company
found_domains_by_namesCuando solicitas el dominio de una empresa basado en su nombre
prospect
found_by_li_urlCuando solicitas la información del perfil de un posible cliente basada en su URL de LinkedIn
found_emails_by_name_by_domainCuando buscas el email de un prospecto
campaign_finishedCuando una campaña se completa para un destinatario (estado: Finalizado)
campaign_unsubscribedCuando un destinatario de campaña se dio de baja de tus correos electrónicos
email_verification
verifiedCuando solicitas la verificación de emails

Límites: los usuarios del plan premium pueden crear hasta 50 webhooks.

Política de reintento: el webhook tiene éxito si recibimos un estado HTTP del rango 200-299 en respuesta dentro de los 3 segundos.

Si obtenemos cualquier otro estado HTTP o se produce un tiempo de espera, hacemos siete intentos de reintento con intervalos crecientes hasta 38 horas después del evento que dispararó un webhook:

Si todos los reintentos son infructuosos, el webhook se desactiva.

  • 1º: inmediatamente después del evento
  • 2º: 20 minutos después del último intento (20 minutos después del evento
  • 3º: 40 minutos después del último intento (1 hora después del evento)
  • 4º: 60 minutos después del último intento (2 horas después del evento)
  • 5º: 4 horas después del último intento (6 horas después del evento)
  • 6º: 8 horas después del último intento (14 horas después del evento)
  • 7º: 24 horas después del último intento (38 horas después del evento)

GETListar todos los webhooks

Este método API le permite obtener una lista de webhooks en su cuenta.
Solicitud
GEThttps://api.snov.io/v2/webhooks
Encabezado de solicitud

Content-Type: application/json

Parámetros de entrada
Este método no tiene parámetros de entrada.
Ejemplo de respuesta
{
    "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
    }
}
Parámetros de salida
La respuesta devuelve una colección de modelos de webhook. Las propiedades del modelo se enumeran a continuación:
ParámetroTipo de datosTipo de datos
data
arrayColección de modelos de webhook
id
intWebhook ID
end_point
stringLa URL real que proporcionó al agregar el webhook y adónde se enviará
event_object
stringEl objeto sobre el que se realiza la acción.
event_action
stringAcción sobre el objeto
created_at
intFecha de creación del webhook en formato Unix Timestamp
status
stringEstado del webhook: activo, desactivado
meta
objectDatos relacionados
webhooks_count
intNúmero total de webhooks en su cuenta (máximo 50)
user_id
intTu identificación de usuario

POSTAgregar webhook

Este método API le permite crear una suscripción de webhook y recibir notificaciones de eventos en la URL del punto final especificado.
Solicitud
POSThttps://api.snov.io/v2/webhooks
Encabezado de solicitud

Content-Type: application/json

Parámetros de entrada
event_object
el objeto en el que se realiza la acción (lista de objetos admitidos)
event_action
la acción realizada sobre el objeto (lista de acciones admitidas)
endpoint_url
la dirección URL donde se envía el webhook
Ejemplo de solicitud
{
  "event_object": "campaign_email",
  "event_action": "sent",
  "endpoint_url": "https://hooks.yourdomain.com/hooks/catch/1237321/abwfpcz/"
}
Ejemplo de respuesta
{
    "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
    }
}
Parámetros de salida
La respuesta devuelve un modelo del webhook agregado. Las propiedades del modelo se enumeran a continuación:
ParámetroTipo de datosTipo de datos
data
objectdatos de webhook
id
intWebhook ID
end_point
stringLa URL real que proporcionó al agregar el webhook y adónde se enviará
event_object
stringEl objeto sobre el que se realiza la acción.
event_action
stringAcción sobre el objeto
created_at
intFecha de creación del webhook en formato Unix Timestamp
status
stringEstado del webhook: activo, desactivado
meta
objectDatos relacionados
user_id
intTu identificación de usuario

PUTCambiar el estado del webhook

Cambia el estado de una suscripción de webhook elegida.

Incluye el valor de "id" único del webhook elegido al final de la dirección URL de la solicitud.

Utiliza el método "Lista de todos los webhooks" para obtener los valores de identificación de tus webhooks.

Solicitud
PUThttps://api.snov.io/v2/webhooks/webhook_id
Encabezado de solicitud

Content-Type: application/json

Parámetros de entrada
status
Activo o desactivado
Ejemplo de solicitud
{
    https://api.snov.io/v2/webhooks/14
    "status": "deactivated"
}
Ejemplo de respuesta
{
    "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
    }
}
Parámetros de salida
La respuesta devuelve un modelo del webhook agregado. Las propiedades del modelo se enumeran a continuación:
ParámetroTipo de datosTipo de datos
data
objectdatos de webhook
id
intWebhook ID
end_point
stringLa URL real que proporcionó al agregar el webhook y adónde se enviará
event_object
stringEl objeto sobre el que se realiza la acción.
event_action
stringAcción sobre el objeto
created_at
intFecha de creación del webhook en formato Unix Timestamp
status
stringEstado del webhook: activo, desactivado
meta
objectDatos relacionados
user_id
intTu identificación de usuario

DELETEEliminar un webhook

Elimina un webhook elegido.

Incluye el valor de "id" único del webhook elegido al final de la dirección URL de la solicitud.

Utiliza el método "Lista de todos los webhooks" para obtener los valores de identificación de tus webhooks.

Solicitud
DELETEhttps://api.snov.io/v2/webhooks/webhook_id
Encabezado de solicitud

Content-Type: application/json

Ejemplo de solicitud
{
    https://api.snov.io/v2/webhooks/8
}
Ejemplo de respuesta
{
    "data": {
        "success": true
    }
}
Parámetros de salida
La respuesta devuelve una colección de modelos de webhook. Las propiedades del modelo se enumeran a continuación:
ParámetroTipo de datosTipo de datos
success
booleanIndica si se elimina el webhook