Migrar desde Kickbox

Esta guía explica cómo sustituir Kickbox por Mailbeam. La mayoría de las migraciones se completan en menos de una hora.

Por qué se cambia la gente

  • Residencia del dato en la UE: Kickbox está alojado en EE. UU.; Mailbeam trata los datos en Fráncfort, Alemania, sin necesidad de mecanismos de transferencia del RGPD
  • Puntuación explicable: la puntuación Sendex de Kickbox no tiene campo de motivo; el campo reason de Mailbeam te dice exactamente por qué una dirección ha sacado su puntuación
  • Precios: Mailbeam es más barato de forma consistente: 49 €/mes por 50 000 verificaciones frente a unos 150 $ de Kickbox
  • Descuento anual: Mailbeam ofrece un 20 % de descuento anual; Kickbox no
  • API moderna: el diseño de la API y de los SDK de Mailbeam refleja las prácticas actuales; la API de Kickbox es de 2013

Equivalencia de endpoints

KickboxMailbeamNotas
GET /v2/verify?email=&apikey=POST /v1/verifyVerificación de un email
POST /v2/batchPOST /v1/verify/batchVerificación en volumen
GET /v2/batch/{id}GET /v1/verify/batch/{id}Estado del lote

Autenticación

Kickbox pasa la clave de API como parámetro en la URL. Mailbeam usa un token Bearer en la cabecera.

Kickbox (antes):

curl "https://api.kickbox.com/v2/verify?email=user@example.com&apikey=YOUR_KEY"

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

Campo de KickboxEquivalente en Mailbeam
result: "deliverable"valid: true, score >= 70
result: "undeliverable"valid: false
result: "risky"valid: true, score 30-69
result: "unknown"status: "unknown"
sendex (0.0-1.0)score (0-100)
reason: "invalid_email"reason: "invalid_syntax"
reason: "rejected_email"reason: "smtp_rejected"
reason: "low_quality"Campo reason + score más bajo
disposable: truedisposable: true
role: truerole: true

Sustituir la puntuación Sendex

El sendex de Kickbox es un decimal de 0,0 a 1,0. El score de Mailbeam es un entero de 0 a 100. La equivalencia es directa: multiplica por 100 el umbral que tenías en Kickbox.

Kickbox (antes):

const { result, sendex, reason } = await kickbox.verify(email);
if (result === "undeliverable" || sendex < 0.6) return 422;

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 422;
// `reason` ahora es legible por máquina: "smtp_rejected", "disposable_domain", etc.

Sacar partido al campo reason

Kickbox da una cadena reason, pero sin códigos legibles por máquina. El campo reason de Mailbeam permite tratarla en el código:

const result = await verifyEmail(email);

if (!result.valid) {
  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 la dirección de email.",
    suggestion: result.suggestion ?? null,
  });
}

Siguientes pasos