Validar email
Validar email es una API que comprueba si una dirección de correo tiene formato correcto y, opcionalmente, si su dominio tiene registros para recibir correo (MX), justo antes de guardarla en tu base de datos o mandarle algo.
Cómo funciona
Le mandas el email y comprueba dos cosas: el formato (el mismo criterio que usan los navegadores en un campo de tipo email) y, si el formato es correcto, si el dominio tiene registros MX de verdad. No manda ningún correo ni comprueba que la cuenta en concreto exista, solo que el dominio esté preparado para recibir correo.
Que el email no sea válido no es un error de la petición: la respuesta es 200 con "valid": false, igual que cuando sí lo es.
Lo único que necesitas
- Tu API key. La creas en tu panel con "+ Crear llave". Se muestra una sola vez, así que cópiala y guárdala.
- En tu plataforma de automatización, un paso de tipo "HTTP Request" / "Hacer una petición HTTP" (lo tienen n8n, Make, Zapier, Pipedream…).
Cómo usarlo en n8n (paso a paso)
En el nodo HTTP Request:
- Method:
POST - URL:
https://api.cofferdock.com/validate-email - Send Headers: actívalo y añade dos:
x-api-key= tu llave, yContent-Type=application/json - Send Body: actívalo → Body Content Type: JSON →
{ "email": "cliente@ejemplo.com" }
En Make (módulo HTTP → Make a request): mismo método y URL, Body type: Raw, Content type: JSON, con el mismo cuerpo.
Opciones (dentro del JSON)
| Opción | Por defecto | Para qué sirve |
|---|---|---|
email | - | Obligatorio. El email a validar. |
check_mx | true | Pon false si solo quieres comprobar el formato, sin consultar el dominio (más rápido). |
Resumen de la API
- Endpoint:
POST https://api.cofferdock.com/validate-email - Auth: cabecera
x-api-key: TU_LLAVE. - Entrada: SOLO
application/json. - Formato: la regex del living standard WHATWG (la de
<input type="email">) más una comprobación extra de que la parte antes de la@no empiece/termine en punto ni tenga dos puntos seguidos. - MX:
dns.resolveMxnativo de Node con timeout propio de 5s. Nunca da 500 por un problema de DNS: si la consulta falla o tarda demasiado,mx_foundsalenull(no se sabe) en vez de forzar unfalse, yvalidno baja solo por eso. - Límites: 30 peticiones/min por IP. 1 llamada = 1 crédito, sea el email válido o no.
Opciones
| Opción | Por defecto | Descripción |
|---|---|---|
email | - | Obligatorio. String no vacío, hasta 254 caracteres. |
check_mx | true | Boolean. Si es false, no se consulta el DNS del dominio. |
Posibles valores de reason
| Valor | Significa |
|---|---|
invalid_format | El formato del email no es válido. |
no_mx_records | El dominio no tiene registros MX (o no existe). |
null_mx | El dominio publica explícitamente que no recibe correo (RFC 7505). |
mx_lookup_timeout | La consulta DNS tardó más de 5s. mx_found queda en null. |
mx_lookup_failed | Error de red al consultar el DNS. mx_found queda en null. |
Ejemplos
curl:
curl -X POST "https://api.cofferdock.com/validate-email" \
-H "x-api-key: TU_LLAVE" \
-H "Content-Type: application/json" \
-d '{"email":"cliente@ejemplo.com"}'
JavaScript (Node 18+):
const r = await fetch('https://api.cofferdock.com/validate-email', {
method: 'POST',
headers: { 'x-api-key': 'TU_LLAVE', 'Content-Type': 'application/json' },
body: JSON.stringify({ email: 'cliente@ejemplo.com' }),
});
const { valid, mx_found } = await r.json();
Python:
import requests
r = requests.post(
'https://api.cofferdock.com/validate-email',
headers={'x-api-key': 'TU_LLAVE', 'Content-Type': 'application/json'},
json={'email': 'cliente@ejemplo.com'},
)
print(r.json())
Respuesta
{ "success": true, "valid": true, "format_valid": true, "mx_found": true, "domain": "ejemplo.com",
"meta": { "used": 12, "remaining": 488 } }
Lo que recibes
valid resume el resultado; format_valid y mx_found te dicen por separado qué falló si valid es falso, y reason lo explica en una palabra.