Bulk Email Validation - Clean Thousands of Emails
Validate thousands or millions of emails in bulk. Upload CSV/TXT files, process asynchronously, and get results via webhook or download.
What It Solves
Marketing campaigns, database migrations, and list cleaning require bulk validation. Our bulk API accepts files, processes emails in parallel, and delivers detailed reports with status codes, risk scores, and suggestions.
Sync Batch - Small Lists
For lists up to 10,000 emails:
curl -X POST "https://api.mailsafepro.es/validate/batch" \
-H "X-API-Key: YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"emails":["email1@example.com","email2@example.com"],"check_smtp":true}'
const res = await fetch("https://api.mailsafepro.es/validate/batch", {
method: "POST",
headers: { "X-API-Key": process.env.MAILSAFEPRO_API_KEY, "Content-Type": "application/json" },
body: JSON.stringify({ emails: ["email1@example.com", "email2@example.com"], check_smtp: true })
});
console.log(await res.json());
import os
import requests
response = requests.post(
"https://api.mailsafepro.es/validate/batch",
headers={"X-API-Key": os.environ["MAILSAFEPRO_API_KEY"]},
json={"emails": ["email1@example.com", "email2@example.com"], "check_smtp": True},
timeout=60,
)
print(response.json())
Async Jobs - Large Lists
For lists over 10,000 emails or when you need webhooks:
curl -X POST "https://api.mailsafepro.es/jobs" \
-H "X-API-Key: YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"source": "list",
"emails": ["email1@example.com", "email2@example.com"],
"check_smtp": true,
"callback_url": "https://your-app.com/webhook"
}'
const res = await fetch("https://api.mailsafepro.es/jobs", {
method: "POST",
headers: { "X-API-Key": process.env.MAILSAFEPRO_API_KEY, "Content-Type": "application/json" },
body: JSON.stringify({
source: "list",
emails: ["email1@example.com", "email2@example.com"],
check_smtp: true,
callback_url: "https://your-app.com/webhook"
})
});
const { job_id } = await res.json();
console.log("Job ID:", job_id);
import os
import requests
response = requests.post(
"https://api.mailsafepro.es/jobs",
headers={"X-API-Key": os.environ["MAILSAFEPRO_API_KEY"]},
json={
"source": "list",
"emails": ["email1@example.com", "email2@example.com"],
"check_smtp": True,
"callback_url": "https://your-app.com/webhook"
},
)
data = response.json()
print("Job ID:", data["job_id"])
Preguntas Frecuentes
¿Cómo subo un archivo en masa?
Usa nuestro endpoint /jobs con source="upload" y un file_token, o usa /validate/batch para listas pequeñas. Te devolveremos un job ID para seguir el progreso.
¿Cuánto tarda el procesamiento en masa?
El tiempo de procesamiento depende del tamaño de la lista y la profundidad de validación. Aproximadamente 1,000 emails/minuto con verificaciones SMTP completas.
¿Puedo recibir los resultados por webhook?
Sí. Proporciona una URL de webhook al enviar el trabajo y te notificaremos cuando los resultados estén listos.
¿Qué formatos de archivo soportáis?
CSV (con fila de cabecera), TXT (un email por línea), y arrays JSON son compatibles.
¿Cuáles son los límites de batch?
Hasta 10,000 emails por trabajo sync. Los trabajos async soportan hasta 1M de emails para planes Enterprise.