Migrer depuis Snov.io
Snov.io est une plateforme commerciale tout-en-un : recherche d'adresses, vérification, campagnes de relance et CRM. Ce guide couvre le déplacement de la seule étape de vérification vers Mailbeam, qui est en général la partie dont les développeurs veulent faire une API dédiée et rapide. Vous pouvez continuer à utiliser Snov.io pour la prospection et les campagnes si vous en dépendez.
Pourquoi les développeurs déplacent l'étape de vérification
- Synchrone et rapide : la vérification Snov.io passe par une file asynchrone ; Mailbeam renvoie un verdict en un seul appel, sous 100 ms (p95)
- Tarification dédiée : les crédits Snov.io sont partagés avec la recherche d'adresses ; Mailbeam facture une unité par vérification, avec une offre gratuite de 1 000 par mois
- Verdicts catch-all notés : Mailbeam renvoie un score de 0 à 100 et un
reasonexplicable pour les domaines catch-all - Confort de développement : des SDK officiels pour 6 langages, une authentification par clé Bearer, une spécification OpenAPI et un mode bac à sable
- Résidence des données dans l'UE : tout est traité à Francfort, avec un DPA inclus dans chaque forfait
Authentification
Snov.io utilise un flux OAuth client-credentials pour obtenir un jeton d'accès, que vous passez ensuite à chaque requête. Mailbeam utilise une simple clé d'API Bearer.
Snov.io (avant) :
// 1. Échanger les identifiants client contre un jeton d'accès
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 (après) :
# Pas d'échange de jeton — envoyez simplement votre clé d'API en en-tête 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"}'Correspondance des endpoints
| Snov.io | Mailbeam | Remarques |
|---|---|---|
POST /v1/get-emails-verification-status | POST /v1/verify | Vérification d'une adresse (synchrone) |
| Mise en file puis interrogation de l'état | Une réponse synchrone unique | Aucune interrogation nécessaire |
POST /v1/oauth/access_token | — | Pas d'échange de jeton chez Mailbeam |
Correspondance des réponses
| Résultat Snov.io | Équivalent Mailbeam |
|---|---|
result: "valid" | valid: true, score >= 60 |
result: "not valid" | valid: false |
result: "unknown" / "greylisted" | status: "unknown" |
result: "catch-all" | catchAll: true et score |
is_disposable: true | disposable: true |
is_role_account: true | role: true |
Migration du code
Le flux de Snov.io est asynchrone : vous soumettez une adresse, puis vous interrogez son état. Mailbeam renvoie le verdict en un seul appel.
Snov.io (avant) :
// Après avoir obtenu access_token ci-dessus :
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 peut encore être en attente — Snov.io demande souvent d'interroger en boucle
if (data?.result !== "valid") return res.status(422).end();Mailbeam (après) :
// Pas de SDK à installer — voyez /docs/quickstart pour ce wrapper de 12 lignes.
import { verifyEmail } from "./lib/mailbeam.js";
const { valid, score, reason } = await verifyEmail(email);
if (!valid || score < 60) {
return res.status(422).json({ error: "Invalid email", code: reason });
}Se servir des champs score et reason
Snov.io renvoie une chaîne de statut. Mailbeam ajoute un score numérique et un reason lisible par la machine, ce qui vous permet de traiter les adresses catch-all et de faible qualité avec un seuil plutôt qu'un tout-ou-rien :
const result = await verifyEmail(email);
if (result.catchAll && result.score >= 75) {
// Catch-all d'entreprise à forte confiance — on accepte
} else if (!result.valid || result.score < 60) {
const messages = {
invalid_syntax: "Merci de vérifier le format de votre adresse.",
no_mx_records: "Ce domaine de messagerie n'existe pas.",
smtp_rejected: "Cette adresse e-mail n'existe pas.",
disposable_domain: "Les adresses e-mail temporaires ne sont pas acceptées.",
};
return res.status(422).json({ error: messages[result.reason] ?? "Cette adresse n'a pas pu être vérifiée." });
}Ce qu'il faut garder dans Snov.io
Mailbeam ne remplace que la vérification. Si vous utilisez la recherche d'adresses, les campagnes de relance ou le CRM de Snov.io, gardez-les : ne redirigez que vos appels de vérification vers Mailbeam.