EmailVerify LogoEmailVerify

API Reference

Complete email checker API reference. Endpoints, parameters, response codes for email verification and validation.

La API de EmailVerify es un servicio RESTful que proporciona potentes capacidades de verificación de correos electrónicos. Todas las solicitudes a la API deben realizarse a través de HTTPS.

URL Base

https://api.emailverify.ai/v1

Autenticación

Todas las solicitudes a la API requieren autenticación usando un token Bearer en el encabezado Authorization:

Authorization: Bearer YOUR_API_KEY

Obtén tu clave API desde el panel de EmailVerify.

Ejemplo

curl -X POST https://api.emailverify.ai/v1/verify \
  -H "Authorization: Bearer bv_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{"email": "test@example.com"}'

Límites de Tasa

PlanSolicitudes/HoraSolicitudes/Día
Free1001,000
Starter1,00010,000
Professional10,000100,000
EnterprisePersonalizadoPersonalizado

La información sobre los límites de tasa se incluye en los encabezados de respuesta:

EncabezadoDescripción
X-RateLimit-LimitMáximo de solicitudes permitidas
X-RateLimit-RemainingSolicitudes restantes en la ventana
X-RateLimit-ResetMarca de tiempo Unix cuando se restablece el límite

Cuando se excede el límite de tasa, recibirás una respuesta 429 Too Many Requests:

{
  "error": {
    "code": "RATE_LIMIT_EXCEEDED",
    "message": "Rate limit exceeded. Please try again later.",
    "retry_after": 3600
  }
}

Puntos Finales

Verificación de Correo Electrónico Individual

Verifica una sola dirección de correo electrónico con resultados detallados.

POST /verify

Solicitud

{
  "email": "user@example.com",
  "smtp_check": true,
  "timeout": 5000
}

Parámetros

ParámetroTipoRequeridoPredeterminadoDescripción
emailstring-Dirección de correo electrónico a verificar
smtp_checkbooleanNotrueRealizar verificación de buzón SMTP
timeoutintegerNo5000Tiempo de espera de solicitud en milisegundos (máx: 30000)

Respuesta

{
  "email": "user@example.com",
  "status": "valid",
  "result": {
    "deliverable": true,
    "valid_format": true,
    "valid_domain": true,
    "valid_mx": true,
    "disposable": false,
    "role": false,
    "catchall": false,
    "free": false,
    "smtp_valid": true
  },
  "score": 0.95,
  "reason": null,
  "credits_used": 1
}

Campos de Respuesta

CampoTipoDescripción
emailstringLa dirección de correo electrónico verificada
statusstringEstado de verificación: valid, invalid, unknown, accept_all
resultobjectResultados detallados de la verificación
scorenumberPuntuación de confianza (0.0 - 1.0)
reasonstringRazón del estado invalid/unknown (nullable)
credits_usedintegerNúmero de créditos consumidos

Campos del Objeto Result

CampoTipoDescripción
deliverablebooleanSi el correo puede recibir mensajes
valid_formatbooleanSi el correo tiene sintaxis válida
valid_domainbooleanSi el dominio existe
valid_mxbooleanSi el dominio tiene registros MX
disposablebooleanSi el correo es de un servicio desechable
rolebooleanSi el correo está basado en roles (info@, support@)
catchallbooleanSi el dominio acepta todos los correos
freebooleanSi el correo es de un proveedor gratuito
smtp_validbooleanSi la verificación SMTP pasó

Verificación Masiva de Correos Electrónicos

Envía múltiples direcciones de correo electrónico para verificación. Devuelve un ID de trabajo para seguir el progreso.

POST /verify/bulk

Solicitud

{
  "emails": [
    "user1@example.com",
    "user2@example.com",
    "user3@example.com"
  ],
  "smtp_check": true,
  "webhook_url": "https://your-app.com/webhooks/emailverify"
}

Parámetros

ParámetroTipoRequeridoPredeterminadoDescripción
emailsarray-Array de direcciones de correo electrónico (máx: 10,000)
smtp_checkbooleanNotrueRealizar verificación SMTP
webhook_urlstringNo-URL para recibir notificación de finalización

Respuesta

{
  "job_id": "job_abc123xyz",
  "status": "processing",
  "total": 3,
  "processed": 0,
  "valid": 0,
  "invalid": 0,
  "unknown": 0,
  "credits_used": 3,
  "created_at": "2025-01-15T10:30:00Z"
}

Obtener Estado del Trabajo Masivo

Verifica el estado de un trabajo de verificación masiva.

GET /verify/bulk/{job_id}

Respuesta (En Progreso)

{
  "job_id": "job_abc123xyz",
  "status": "processing",
  "total": 1000,
  "processed": 450,
  "valid": 380,
  "invalid": 50,
  "unknown": 20,
  "progress_percent": 45,
  "created_at": "2025-01-15T10:30:00Z"
}

Respuesta (Completado)

{
  "job_id": "job_abc123xyz",
  "status": "completed",
  "total": 1000,
  "processed": 1000,
  "valid": 850,
  "invalid": 100,
  "unknown": 50,
  "progress_percent": 100,
  "created_at": "2025-01-15T10:30:00Z",
  "completed_at": "2025-01-15T10:35:00Z"
}

Valores de Estado del Trabajo

EstadoDescripción
pendingEl trabajo está en cola
processingEl trabajo se está procesando
completedEl trabajo finalizó exitosamente
failedEl trabajo falló (ver campo error)

Obtener Resultados del Trabajo Masivo

Recupera los resultados de verificación de un trabajo masivo completado.

GET /verify/bulk/{job_id}/results

Parámetros de Consulta

ParámetroTipoPredeterminadoDescripción
limitinteger100Resultados por página (máx: 1000)
offsetinteger0Posición de inicio
statusstring-Filtrar por estado: valid, invalid, unknown

Respuesta

{
  "job_id": "job_abc123xyz",
  "total": 1000,
  "limit": 100,
  "offset": 0,
  "results": [
    {
      "email": "user1@example.com",
      "status": "valid",
      "result": {
        "deliverable": true,
        "disposable": false,
        "role": false
      },
      "score": 0.95
    },
    {
      "email": "user2@example.com",
      "status": "invalid",
      "result": {
        "deliverable": false,
        "reason": "mailbox_not_found"
      },
      "score": 0.10
    }
  ]
}

Verificar Créditos

Obtén el saldo actual de créditos e información de uso.

GET /credits

Respuesta

{
  "available": 9500,
  "used": 500,
  "total": 10000,
  "plan": "Professional",
  "resets_at": "2025-02-01T00:00:00Z",
  "rate_limit": {
    "requests_per_hour": 10000,
    "remaining": 9850
  }
}

Webhooks

Crear Webhook

POST /webhooks
{
  "url": "https://your-app.com/webhooks/emailverify",
  "events": ["verification.completed", "bulk.completed"],
  "secret": "your-webhook-secret"
}

Listar Webhooks

GET /webhooks

Eliminar Webhook

DELETE /webhooks/{webhook_id}

Eventos de Webhook

EventoDescripción
verification.completedVerificación de correo individual completada
bulk.completedTrabajo masivo finalizado
bulk.failedTrabajo masivo falló
credits.lowCréditos por debajo del umbral

Carga del Webhook

{
  "event": "bulk.completed",
  "timestamp": "2025-01-15T10:35:00Z",
  "data": {
    "job_id": "job_abc123xyz",
    "status": "completed",
    "total": 1000,
    "valid": 850,
    "invalid": 100,
    "unknown": 50
  },
  "signature": "sha256=..."
}

Estado de Verificación

EstadoSignificadoAcción Recomendada
validEl correo existe y puede recibir mensajesSeguro para enviar
invalidEl correo no existe o no puede recibirEliminar de la lista
unknownNo se pudo determinar la validezReintentar más tarde o usar con precaución
accept_allEl dominio acepta todos los correos (catch-all)Monitorear rebotes

Respuestas de Error

Todos los errores siguen un formato consistente:

{
  "error": {
    "code": "ERROR_CODE",
    "message": "Human-readable error message",
    "details": "Additional context (optional)"
  }
}

Códigos de Estado HTTP

CódigoDescripción
200Éxito
400Solicitud Incorrecta - Parámetros inválidos
401No Autorizado - Clave API inválida o faltante
403Prohibido - Permisos insuficientes
404No Encontrado - El recurso no existe
429Demasiadas Solicitudes - Límite de tasa excedido
500Error Interno del Servidor
503Servicio No Disponible

Códigos de Error

CódigoEstado HTTPDescripción
INVALID_API_KEY401La clave API es inválida o falta
RATE_LIMIT_EXCEEDED429Demasiadas solicitudes
INSUFFICIENT_CREDITS403No hay suficientes créditos
INVALID_EMAIL400El formato del correo es inválido
INVALID_REQUEST400El cuerpo de la solicitud está mal formado
JOB_NOT_FOUND404ID de trabajo masivo no encontrado
TIMEOUT504La verificación agotó el tiempo de espera

Mejores Prácticas

1. Usa Variables de Entorno

Nunca codifiques las claves API directamente:

// Bueno
const apiKey = process.env.EMAILVERIFY_API_KEY;

// Malo - no hagas esto
const apiKey = 'bv_live_xxx';

2. Maneja los Límites de Tasa

Implementa retroceso exponencial:

async function verifyWithRetry(email, maxRetries = 3) {
  for (let i = 0; i < maxRetries; i++) {
    try {
      return await verify(email);
    } catch (error) {
      if (error.code === 'RATE_LIMIT_EXCEEDED') {
        await sleep(Math.pow(2, i) * 1000);
        continue;
      }
      throw error;
    }
  }
}

3. Usa Bulk para Múltiples Correos

Para verificar más de 10 correos, usa el punto final masivo:

// Bueno - una sola llamada API
const job = await client.verifyBulk(emails);

// Malo - muchas llamadas individuales
for (const email of emails) {
  await client.verify(email);
}

4. Implementa Webhooks para Trabajos Masivos

No hagas sondeos constantes; usa webhooks:

// Enviar con webhook
const job = await client.verifyBulk(emails, {
  webhookUrl: 'https://your-app.com/webhook',
});

SDKs

Usa nuestros SDKs oficiales para una integración más fácil:

Próximos Pasos

On this page