Beta privadaMailbeam está en beta privada: la API pública todavía no está abierta.Únete a la lista de espera

Migrar desde Snov.io

Snov.io es una plataforma de ventas todo en uno: búsqueda de emails, verificación, campañas de goteo y CRM. Esta guía cubre mover solo el paso de verificación a Mailbeam, que suele ser la parte que un equipo de desarrollo quiere como API dedicada y rápida. Puedes seguir usando Snov.io para prospección y captación si te apoyas en eso.

Por qué se cambia el paso de verificación

  • Síncrono y rápido: la verificación de Snov.io pasa por una cola asíncrona; Mailbeam devuelve el veredicto en una sola llamada, por debajo de 100 ms (p95)
  • Precio dedicado: los créditos de Snov.io se comparten con la búsqueda de emails; Mailbeam cobra una unidad por verificación con un plan gratuito de 1000 al mes
  • Veredictos catch-all puntuados: Mailbeam devuelve una puntuación de 0 a 100 y un reason explicable para los dominios catch-all
  • Experiencia de desarrollo: SDK oficiales para 6 lenguajes, autenticación con clave Bearer, especificación OpenAPI y un modo de pruebas
  • Residencia del dato en la UE: todo se trata en Fráncfort, con un DPA incluido en todos los planes

Autenticación

Snov.io usa un flujo OAuth de credenciales de cliente para obtener un token de acceso, que luego pasas en cada petición. Mailbeam usa una única clave de API Bearer.

Snov.io (antes):

// 1. Cambia las credenciales de cliente por un token de acceso
const tokenRes = await fetch("https://api.snov.io/v1/oauth/access_token", {
  method: "POST",
  body: new URLSearchParams({
    grant_type: "client_credentials",
    client_id: process.env.SNOV_CLIENT_ID,
    client_secret: process.env.SNOV_CLIENT_SECRET,
  }),
});
const { access_token } = await tokenRes.json();

Mailbeam (ahora):

# Sin intercambio de tokens: manda tu clave de API como cabecera Bearer
curl -X POST https://api.mailbeam.dev/v1/verify \
  -H "Authorization: Bearer $MAILBEAM_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email": "user@example.com"}'

Equivalencia de endpoints

Snov.ioMailbeamNotas
POST /v1/get-emails-verification-statusPOST /v1/verifyVerificación de un email (síncrona)
Encolar y consultar el estadoUna respuesta síncronaNo hace falta consultar
POST /v1/oauth/access_tokenEn Mailbeam no hay intercambio de tokens

Equivalencia de respuestas

Resultado de Snov.ioEquivalente en Mailbeam
result: "valid"valid: true, score >= 60
result: "not valid"valid: false
result: "unknown" / "greylisted"status: "unknown"
result: "catch-all"catchAll: true + score
is_disposable: truedisposable: true
is_role_account: truerole: true

Migración del código

El flujo de Snov.io es asíncrono: envías una dirección y luego preguntas por su estado. Mailbeam devuelve el veredicto en una sola llamada.

Snov.io (antes):

// Después de obtener el access_token de arriba:
const res = await fetch(
  "https://api.snov.io/v1/get-emails-verification-status",
  {
    method: "POST",
    body: new URLSearchParams({ access_token, email }),
  }
);
const { data } = await res.json();
// data.result puede seguir pendiente: Snov.io suele exigir consultar en bucle
if (data?.result !== "valid") return res.status(422).end();

Mailbeam (ahora):

// No hay SDK que instalar: mira /docs/quickstart para este envoltorio de 12 líneas.
import { verifyEmail } from "./lib/mailbeam.js";

const { valid, score, reason } = await verifyEmail(email);
if (!valid || score < 60) {
  return res.status(422).json({ error: "Email inválido", code: reason });
}

Usar los campos score y reason

Snov.io devuelve una cadena de estado. Mailbeam añade un score numérico y un reason legible por máquina, así que puedes tratar las direcciones catch-all y las de baja calidad con un umbral en vez de con una decisión de todo o nada:

const result = await verifyEmail(email);

if (result.catchAll && result.score >= 75) {
  // Catch-all corporativa de confianza alta: acéptala
} else if (!result.valid || result.score < 60) {
  const messages = {
    invalid_syntax:    "Revisa el formato de tu email.",
    no_mx_records:     "Ese dominio de email no existe.",
    smtp_rejected:     "Esta dirección de email no existe.",
    disposable_domain: "No se permiten direcciones de email temporales.",
  };
  return res.status(422).json({ error: messages[result.reason] ?? "No se ha podido verificar el email." });
}

Qué conviene dejar en Snov.io

Mailbeam solo sustituye la verificación. Si usas el buscador de emails, las campañas de goteo o el CRM de Snov.io, quédatelos: apunta solo tus llamadas de verificación a Mailbeam.

Siguientes pasos