Desarrolladores

Una API de verificación de correo que simplemente funciona

Verifica una dirección en tiempo real o envía una lista completa como lote. Todas las solicitudes usan HTTPS y devuelven JSON. Crea claves de API en tu panel, en Claves de API.

  • REST y JSON
  • Callbacks de lotes
  • Los mismos créditos que en el panel
La página de claves de API de BounceBell con claves activas y un formulario para crear una clave nueva

Autenticación

Envía tu clave de API como token bearer en la cabecera Authorization en cada solicitud. Guarda las claves en tu servidor. Nunca las pongas en código del navegador ni en apps móviles.

Authorization: Bearer YOUR_API_KEY

La URL base de todos los endpoints es https://bouncebell.com/api/v1.

Verificar una dirección

GET https://bouncebell.com/api/v1/verify

ParámetroObligatorioDescripción
emailSíLa dirección a verificar. Codifícala para URL.
timeoutNoSegundos de espera al servidor de correo, de 3 a 30. Por defecto, 10. Si se agota el tiempo, el estado es unknown y no se usa ningún crédito.

Ejemplo

curl "https://bouncebell.com/api/v1/verify?email=rini.elizabeth%40acme-foods.example" \
  -H "Authorization: Bearer YOUR_API_KEY"
{
  "email": "rini.elizabeth@acme-foods.example",
  "status": "valid",
  "reason": "mailbox_exists",
  "domain": "acme-foods.example",
  "mx_record": "mx1.acme-foods.example",
  "disposable": false,
  "role": false,
  "free_provider": false,
  "catch_all": false,
  "did_you_mean": null,
  "checked_at": "2026-10-30T09:30:12Z",
  "credits_used": 1
}

Campos del resultado

CampoTipoDescripción
emailstringLa dirección tal como la enviaste.
statusstringEl veredicto. Consulta los estados.
reasonstringPor qué llegamos al veredicto, por ejemplo mailbox_not_found o no_mail_server.
domainstringLa parte del dominio, en minúsculas.
mx_recordstring or nullEl servidor de correo con la prioridad más alta.
disposablebooleanTrue si el dominio es un servicio de buzones temporales.
rolebooleanTrue para buzones compartidos como info@ o support@.
free_providerbooleanTrue para proveedores de correo gratuitos como Gmail.
catch_allbooleanTrue cuando el dominio acepta cualquier dirección.
did_you_meanstring or nullUna dirección corregida cuando el dominio parece una errata.
checked_atstringCuándo se realizó la verificación, en ISO 8601 UTC.
credits_usedinteger1, o 0 cuando el estado es unknown.

Estados

EstadoSignificadoAcción sugerida
validEl buzón existe y acepta correo.Enviar
invalidLa dirección, el dominio o el buzón no existe.Eliminar
disposableUn servicio de buzones temporales.Eliminar
catch_allEl dominio acepta todas las direcciones, así que no se puede confirmar el buzón.Revisar
roleUn buzón compartido que existe.Revisar
unknownEl servidor de correo no respondió a tiempo. Sin cargo.Reintentar más tarde

Lotes

Envía hasta 100.000 direcciones en una sola solicitud. El lote se procesa en segundo plano; consulta su estado o indica una callback_url y la llamaremos cuando el lote termine.

Crear un lote

POST https://bouncebell.com/api/v1/batches

curl -X POST "https://bouncebell.com/api/v1/batches" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "October import", "emails": ["a@example.com", "b@example.com"],
       "callback_url": "https://yourapp.example/hooks/bouncebell"}'
{ "id": "bat_8f2k1q3m9x7w4p", "status": "queued", "total": 2, "done": 0 }

Los créditos de cada dirección única se reservan al crear el lote, y los resultados desconocidos se reembolsan al terminar. El callback recibe un POST con {"event": "batch.completed", "batch_id": "...", "status": "done", "counts": {...}}. Las URL de callback deben usar HTTPS.

Consultar el progreso

GET https://bouncebell.com/api/v1/batches/{id}

{ "id": "bat_8f2k1q3m9x7w4p", "status": "running", "total": 2, "done": 1 }

El estado es queued, running o done. Cuando es done, la respuesta también incluye counts por estado.

Descargar resultados

GET https://bouncebell.com/api/v1/batches/{id}/results

Devuelve JSON de forma predeterminada. Añade ?format=csv para obtener un archivo CSV. Cada fila tiene los mismos campos que una verificación individual.

Créditos

GET https://bouncebell.com/api/v1/credits

{ "credits_remaining": 33420 }

Errores y límites

Los errores devuelven un cuerpo JSON con un código error y un message legible.

Código HTTPErrorQué hacer
400bad_requestFalta un parámetro o es incorrecto. Lee el mensaje.
401invalid_keyComprueba que la clave sea correcta y no se haya revocado.
402no_creditsCompra más créditos.
403email_not_confirmedAbre el enlace de confirmación que te enviamos por correo al registrarte.
404not_foundEl lote no existe o se eliminó después de 30 días.
429rate_limitedReduce el ritmo. Espera los segundos indicados en la cabecera Retry-After.
500server_errorReintenta tras una breve espera. Si continúa, contacta con soporte.

Las verificaciones individuales están limitadas a 20 solicitudes por segundo por clave. Pídenos más si lo necesitas.