Migrar desde ZeroBounce
Esta guía explica cómo pasar de ZeroBounce a Mailbeam. La mayoría de las migraciones llevan menos de una hora.
Por qué se cambia la gente
- Alojamiento en la UE: ZeroBounce está en EE. UU.; Mailbeam trata los datos en Fráncfort
- Enfoque en tiempo real: ZeroBounce está hecho para limpiar listas en volumen; Mailbeam, para flujos de registro
- Precios: Mailbeam cobra por verificación, sin multiplicadores de créditos
- Esquema de respuesta: Mailbeam da un campo
reasonexplicable; ZeroBounce usa cadenas de estado opacas
Equivalencia de endpoints
| ZeroBounce | Mailbeam | Notas |
|---|---|---|
POST /v1/validate | POST /v1/verify | Validación principal |
GET /v1/getapiusage | GET /v1/account/usage | Seguimiento de la cuota |
POST /v2/validatebatch | POST /v1/verify/batch | Verificación en volumen |
Autenticación
ZeroBounce usa un parámetro api_key en la URL. Mailbeam usa tokens Bearer en la cabecera.
ZeroBounce (antes):
curl "https://api.zerobounce.net/v2/validate?api_key=YOUR_KEY&email=user@example.com"Mailbeam (ahora):
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 respuestas
ZeroBounce devuelve una cadena status. Mailbeam devuelve un booleano valid más score y reason.
status de ZeroBounce | Equivalente en Mailbeam |
|---|---|
"Valid" | valid: true, score >= 80 |
"Invalid" | valid: false |
"Catch-All" | catchAll: true (mira el score) |
"Spamtrap" | valid: false, reason: "disposable_domain" |
"Abuse" | Incluido como señal de la puntuación |
"DoNotMail" | roleAddress: true o disposable: true |
"Unknown" | valid: true con un score más bajo |
Migración del código
ZeroBounce (antes):
const response = await fetch(
`https://api.zerobounce.net/v2/validate?api_key=${apiKey}&email=${email}`
);
const { status, sub_status } = await response.json();
if (status !== "Valid") {
return res.status(422).json({ error: "Email inválido" });
}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",
reason, // legible por máquina: "disposable_domain", "no_mx_records", etc.
});
}