openapi: 3.0.0
info:
title: VerificarEmails - API validar emails en tiempo real
description: |-
# VerificarEmails ®
**VerificarEmails ®** es una API para validar emails en tiempo real. Permite verificar direcciones de correo electrónico, comprobar si un email existe y mejorar la entregabilidad de tus campañas sin enviar ningún mensaje al destinatario.
Con VerificarEmails puedes validar emails desde tu web, procesar listas de correos electrónicos mediante ficheros, integrar la API en tus aplicaciones o automatizar el proceso con Zapier, n8n y nuestro Widget. Todo en tiempo real.
## API validar emails en tiempo real
Nuestra API permite comprobar una dirección de correo en segundos. El endpoint de validación individual analiza el formato, el dominio, los registros DNS/MX, la respuesta del servidor SMTP y otros indicadores técnicos para determinar si el email es válido, inválido o no concluyente.
## Verificación de emails individuales y masivos con ficheros
Puedes verificar un email individual o listas completas de correos electrónicos. La validación masiva permite subir ficheros CSV, XLS, XLSX o TXT, seleccionar la columna donde se encuentran los emails y descargar el archivo enriquecido con los resultados.
## Fácil integración para desarrolladores y automatizaciones
Hablamos tu lenguaje de programación. Las llamadas a nuestra API para validar emails están disponibles para PHP, Python, Ruby, C#, Node.js y otros entornos compatibles con peticiones HTTP. También puedes utilizar **la integración con Zapier** para automatizar validaciones sin programar, **el nodo de n8n para validación de datos** o **Postman con ejemplos de código**.
# Empezar
En los siguientes puntos descubrirás cómo utilizar VerificarEmails para validar emails de forma sencilla, económica y eficaz, obteniendo información detallada sobre la validez, el riesgo y la entregabilidad de tus contactos.
## Crear una cuenta en VerificarEmails ®
Para utilizar el servicio debes **crear una cuenta gratuita en VerificarEmails**.

## Verificar direcciones de email
Una vez creada la cuenta gratuita, inicia sesión para empezar a utilizar el servicio de **VerificarEmails ®**.
Si deseas verificar un email de forma individual, introduce la dirección de correo en el campo **Petición Rápida**.

Si deseas verificar una lista de correos, utiliza la validación masiva por fichero. Arrastra el archivo a la caja naranja de la pantalla principal y selecciona la columna donde se encuentran los emails. La primera columna es la 1 y así sucesivamente.

Puedes subir ficheros Excel, TXT y CSV. Lo importante es que la información esté organizada en columnas. Antes de verificar un fichero, asegúrate de que la información esté correctamente tabulada, ya que por cada registro se descontará un crédito independientemente del resultado de la validación.
Como mecanismo de seguridad, si no hay más de un 50% de direcciones de correo en la columna seleccionada, **no lanzaremos la verificación**.
Si durante la subida del fichero se muestra un error, normalmente se debe a un problema de formato. Asegúrate de que la información esté bien tabulada. Si necesitas ayuda, puedes contactarnos por el chat de la parte inferior derecha.
## Verificar direcciones de email utilizando la API para validar emails
Puedes utilizar nuestra API para validar emails en tus aplicaciones en tiempo real. La integración requiere pocas líneas de código. Para más detalles visita la sección [**API Desarrolladores**](#section/Developer-API/API-de-validacion-de-emails).
Antes de utilizar la API debes crear una clave. Dirígete a la sección **APIs** y selecciona **+Crear nueva API**. Con el icono del ojo puedes consultar los últimos registros validados. Con el icono de la rueda puedes cambiar la clave, limitar peticiones totales, limitar peticiones por minuto o modificar el estado de la API.
Recuerda que puedes utilizar la API en tus desarrollos, integraciones con Zapier, automatizaciones con n8n, formularios con nuestro Widget o aplicaciones externas como Excel y Google Sheets.
## API Desarrolladores
**VerificarEmails ®** dispone de una API para validar direcciones de correo electrónico y verificar emails en cualquier aplicación, formulario, CRM, herramienta de marketing o flujo de automatización.
Nuestra API permite validar de forma individual una dirección de email o verificar listas completas de correos mediante subida de ficheros a nuestra plataforma.
# Nuestra garantía
Los servicios de verificación de **VerificarEmails ®** proporcionan resultados en tiempo real con una fiabilidad del 99,8%. Para cada dirección de correo presentamos resultados detallados de su validación.
Estamos muy seguros del nivel de fiabilidad y podemos asegurar que ningún correo será rechazado una vez haya pasado satisfactoriamente nuestro proceso de validación.
# Cómo funciona VerificarEmails ®
**VerificarEmails ®** utiliza más de 25 tests para validar direcciones de correo electrónico y verificar emails. Una de las pruebas crea una conexión profunda simulando la transferencia de un correo electrónico sin necesidad de enviarlo al destinatario. Nuestros más de 10 años en el sector del email marketing nos han permitido adquirir una experiencia y reputación apreciadas por nuestros clientes.
Estos son algunos de los pasos que seguimos para validar direcciones de correo electrónico y verificar emails:
* **Email deduplication** - Identificación de direcciones duplicadas y dominios marcados como correos inválidos.
* **Domain validation** - Revisión y validación de los registros DNS asociados a cada email.
* **Spam-trap removal** - Detección de spam traps y direcciones de correo electrónico desechables.
* **Risk validation** - Identificación de dominios sospechosos de contener correos inválidos o de riesgo.
* **Syntax verification** - Validación sintáctica de las direcciones de email según los estándares del IETF.
* **MTA validation** - Verificación de los registros MX de los servidores de correo.
# Verificar ficheros
**VerificarEmails ®** ofrece distintas formas de importar ficheros de contactos para su verificación. Puedes subir ficheros CSV, XLS, XLSX y TXT desde tu ordenador local.

Para subir un fichero, desplázate a la sección **Dashboard** o **Validación**. Utilizando la caja naranja, selecciona los ficheros a verificar. También puedes arrastrar y soltar los ficheros desde tu ordenador.
Una vez subidos, los ficheros serán visibles en **FICHEROS SUBIDOS**. Los nuevos archivos iniciarán su validación de forma automática. **IMPORTANTE:** una vez iniciado el proceso de validación no se puede cancelar. Asegúrate de que los emails están correctamente tabulados. Cuando finalice el proceso de verificación, recibirás un email para descargar el fichero validado.
Mientras subes un fichero asegúrate de que se cumplen estas condiciones:
* Solo hay una dirección de email por columna.
* Las direcciones de email aparecen en la misma columna en todas las filas.
* Recomendamos listas inferiores a 1 millón de emails. Para optimizar la velocidad, recomendamos listas inferiores a 150.000 registros.
* El nombre de los campos debe aparecer en la primera fila del fichero.
* Por confidencialidad, los ficheros validados se eliminan de nuestro servidor al cabo de 30 días, dejando solo un resumen de la verificación. Debes guardar los datos verificados en tu entorno.
En la imagen inferior dispones de un ejemplo de cómo debería ser el fichero a validar:

Si no estás seguro de que tus datos estén bien formateados, sube solo una parte de tus contactos y realiza una prueba con unos 5 emails. Los créditos consumidos en verificaciones con registros inválidos no pueden ser reembolsados.
Si tu fichero no está bien formateado, copia la columna de emails en un bloc de notas o en una nueva hoja Excel y valida solo los correos. Una vez verificados, dispondrás de 2 columnas: una con el email y otra con el resultado de la verificación. Estos valores puedes volver a copiarlos en tu fichero original.
Una vez procesado el fichero por **VerificarEmails ®**, aparece la columna **Status** para categorizar el estado de los emails. Las direcciones más seguras son las marcadas como `ok`. En la columna `Result` podrás ver los detalles de la verificación. Puedes leer más en la sección [**Guía de resultados**](#section/Developer-API/Guia-de-resultados-de-la-verificacion-de-emails).
Las listas procesadas tienen el siguiente aspecto:

# Descargar y exportar resultados
Una vez tu lista ha sido verificada, recibirás un correo. El formato del fichero será el mismo que has subido, pero con dos columnas adicionales: `status` y `result`.
# Guía de resultados de la verificación de emails
**VerificarEmails ®** primero identifica emails desechables, spam traps y complaint emails, y después lanza el proceso de validación.
Después de que tus ficheros hayan sido verificados, cada correo de la lista será etiquetado con uno de los siguientes estados. Estos valores aparecen en la columna `Result`:
| Status | Descripción |
|--------|-------------|
| ok | La dirección de correo electrónico es válida, el email existe y está preparado para recibir correos electrónicos. |
| error | El servidor indica que la entrega ha fallado, pero no existe información suficiente sobre el correo. |
| smtp_error | El servidor SMTP ha respondido indicando que el email es inválido o que el servidor destino ha reportado un error interno. |
| smtp_protocol | El servidor destino ha permitido la conexión, pero el protocolo SMTP ha cerrado la sesión antes de verificar el correo. |
| unknown_email | El servidor ha respondido que la entrega del mensaje ha fallado y que la dirección de email no existe. |
| attempt_rejected | La entrega ha fallado y el intento de validación ha sido rechazado por el servidor. |
| relay_error | La entrega ha fallado porque se ha producido un error en el relay durante el proceso de verificación. |
| antispam_system | Algún filtro o sistema anti-spam está bloqueando el proceso de verificación. |
| email_disabled | La cuenta de correo está suspendida, deshabilitada o limitada y no puede recibir emails. |
| domain_error | No existe un servidor de correo válido para este dominio. Ningún email puede ser entregado en él. |
| ok_for_all | El servidor de correo responde que puede aceptar cualquier dirección de email asociada al dominio. |
| dead_server | El servidor de correo está caído o no responde. |
| syntax_error | Hay un error sintáctico o de formato en la dirección de email. |
| unknown | La entrega del email ha fallado, pero no se ha dado una razón concreta. |
| accept_all | El servidor está configurado para aceptar cualquier email asociado al dominio. |
| disposable | El servidor de correo acepta emails solo durante un periodo de tiempo determinado. |
| spam_traps | La dirección de correo es mantenida por un ISP o sistema de protección y puede afectar negativamente a la reputación de envío. |
# Recarga de créditos
**VerificarEmails ®** permite recargar créditos de forma automática. Debes seguir estos pasos:
* **Seleccionar el servicio** - Inicia sesión en el portal y desplázate a la sección **Comprar**.
* **Seleccionar el producto** - Mediante el logo superior izquierdo o los banners del Dashboard selecciona el servicio del que quieres contratar créditos: email, teléfonos, nombres y apellidos o direcciones postales.
* **Escoger la cantidad de créditos** - Selecciona la cantidad de créditos que necesitas. Los créditos tienen una vigencia de 1 año y se acumulan siempre que se realicen renovaciones sobre el mismo servicio. Los créditos no se intercambian entre servicios.
* **Realizar el pago** - Utilizamos Stripe como plataforma de pagos. Tus pagos se gestionan de forma segura y las conversiones de moneda se realizan automáticamente.
* **Recepción de la factura** - Por el momento, el portal muestra las órdenes de compra. La factura la recibirás por email en los días siguientes.
# Utilizar Zapier para validar direcciones de email
Zapier es una aplicación de automatización online que permite conectar miles de aplicaciones. Con Zapier puedes crear flujos de trabajo automatizados llamados Zaps para validar emails sin programar.
Puedes utilizar esta funcionalidad en nuestro Dashboard desde la sección **Zapier**. Si nunca has utilizado Zapier, te recomendamos leer el artículo **Cómo utilizar Zapier para VerificarEmails**.

# Automatizar la validación de emails con n8n
Además de Zapier, puedes automatizar la validación de direcciones de correo electrónico utilizando **n8n**, una plataforma de automatización flexible y open-source.
Con nuestro nodo de n8n puedes integrar la API de validación y verificación de emails en flujos personalizados para:
- Validar emails automáticamente en formularios o CRMs.
- Limpiar bases de datos de forma periódica.
- Enriquecer leads antes de campañas de marketing.
- Crear procesos automatizados de verificación de datos.
Puedes consultar la documentación completa aquí: **Nodo de n8n para validación de datos**.
n8n es especialmente útil para desarrolladores y equipos técnicos que necesitan automatizaciones avanzadas, control total del flujo de datos y ejecución en entornos propios.
# Utilizar VerificarEmails desde ChatGPT, Claude y otros asistentes con MCP
Además de la API REST, Zapier, n8n y nuestro Widget, puedes utilizar **VerificarEmails** desde asistentes de inteligencia artificial compatibles con **MCP**, como ChatGPT, Claude y otros clientes MCP.
**MCP** (*Model Context Protocol*) es un estándar abierto que permite que los asistentes de IA llamen a herramientas externas mediante una interfaz común. El servidor MCP remoto de **VerificarEmails** permite validar emails, teléfonos, nombres y direcciones, consultar créditos y gestionar validaciones masivas de ficheros desde una conversación natural.
## MCP Server
Conecta el servidor MCP de VerificarEmails a ChatGPT, Claude y otros clientes compatibles con MCP.
| Especificación | Valor |
|----------------|-------|
| Servicio | `verificaremails-mcp` |
| Estado | `online` |
| Versión | `1.8.1` |
| Endpoint MCP | `https://mcp.verificaremails.com/mcp` |
| Transporte | `http-json-rpc` |
| Versiones de protocolo soportadas | `2025-06-18`, `2025-03-26`, `2024-11-05` |
| Modelo de autenticación | OAuth 2 mediante authorization code + Bearer access token |
| Authorization Server Metadata | `https://mcp.verificaremails.com/.well-known/oauth-authorization-server` |
| Protected Resource Metadata | `https://mcp.verificaremails.com/.well-known/oauth-protected-resource` |
| Authorization Endpoint | `https://mcp.verificaremails.com/authorize` |
| Token Endpoint | `https://mcp.verificaremails.com/token` |
| Registration Endpoint | `https://mcp.verificaremails.com/register` |
| UserInfo Endpoint opcional | `https://mcp.verificaremails.com/userinfo` |
| OIDC | `false` |
| Token endpoint auth method | `none` |
| Herramientas disponibles | 14 |
> **Importante**
>
> El servidor MCP de VerificarEmails se configura mediante OAuth en clientes MCP remotos compatibles. El cliente llamará al endpoint MCP con la cabecera `Authorization: Bearer `.
>
> No pegues tokens en el chat ni los compartas en prompts. Para clientes locales o de desarrollo, usa la configuración de cabecera segura indicada por el cliente: `Authorization: Bearer `.
>
> Si tu cliente no soporta servidores MCP remotos, OAuth o cabeceras Bearer, utiliza la **API REST de VerificarEmails** en lugar del MCP.
## Qué puedes hacer
Con el servidor MCP de VerificarEmails puedes pedir al asistente que ejecute acciones como:
- Verificar una dirección de email individual.
- Verificar un teléfono mediante consulta HLR.
- Validar la sintaxis de un teléfono sin consulta HLR.
- Consultar la portabilidad MNP de un teléfono y obtener el operador actual.
- Validar si un nombre o apellido es real.
- Validar y normalizar una dirección postal.
- Buscar el nombre más parecido para corregir errores tipográficos.
- Autocompletar nombres parciales para formularios.
- Consultar los créditos disponibles de un servicio concreto.
- Consultar los créditos disponibles de todos los servicios activos.
- Subir un fichero para validación masiva asíncrona.
- Consultar el estado de una validación masiva mediante `request_id`.
- Descargar el resultado de una validación masiva completada.
## Cómo funciona la autenticación
VerificarEmails MCP usa un flujo OAuth estándar para clientes MCP remotos:
1. El cliente MCP descubre la metadata del recurso protegido en:
```text
https://mcp.verificaremails.com/.well-known/oauth-protected-resource
```
2. El cliente sigue la metadata del servidor de autorización declarada en:
```text
https://mcp.verificaremails.com/.well-known/oauth-authorization-server
```
3. El cliente usa el endpoint de autorización:
```text
https://mcp.verificaremails.com/authorize
```
4. El cliente obtiene el token mediante:
```text
https://mcp.verificaremails.com/token
```
5. El cliente llama al servidor MCP con:
```text
Authorization: Bearer
```
El `access_token` es el token de usuario de VerificarEmails. Los tokens de usuario no se almacenan en el Worker.
## Scopes disponibles
Los scopes disponibles coinciden con las herramientas que puede ejecutar el cliente MCP:
| Scope | Propósito |
|-------|-----------|
| `validate_email` | Validar emails individuales. |
| `validate_phone` | Validar teléfonos mediante consulta HLR. |
| `validate_phone_syntactic` | Validar sintaxis de teléfonos sin consulta HLR. |
| `validate_phone_mnp` | Consultar portabilidad MNP y operador actual. |
| `validate_name` | Validar nombres o apellidos. |
| `validate_address` | Validar y normalizar direcciones postales. |
| `fuzzy_search_name` | Buscar nombres parecidos para corregir errores tipográficos. |
| `name_complete` | Autocompletar nombres parciales. |
| `get_credits` | Consultar créditos disponibles de todos los servicios activos mediante alias compatible. |
| `get_service_credits` | Consultar créditos disponibles de un servicio concreto. |
| `get_all_credits` | Consultar créditos disponibles de todos los servicios activos. |
| `validate_file` | Subir ficheros para validación masiva asíncrona. |
| `get_file_validation_status` | Consultar el estado de una validación masiva. |
| `download_file_validation_result` | Descargar resultados de una validación masiva completada. |
## Herramientas MCP disponibles
El servidor MCP de VerificarEmails expone las siguientes herramientas:
| Herramienta MCP | Descripción |
|-----------------|-------------|
| `validate_email` | Verifica si un email es válido y existe. Comprueba formato, dominio y entregabilidad real. |
| `validate_phone` | Verifica un teléfono mediante consulta HLR: comprueba si el número está activo en la red del operador. |
| `validate_phone_syntactic` | Valida la sintaxis de un teléfono sin consulta HLR. Más rápido y económico. |
| `validate_phone_mnp` | Consulta la portabilidad del número MNP y devuelve el operador actual. |
| `validate_name` | Valida si un nombre o apellido es real. Útil para detectar datos ficticios. |
| `validate_address` | Valida y normaliza una dirección postal. |
| `fuzzy_search_name` | Busca el nombre más parecido en la base de datos. Corrige errores tipográficos. |
| `name_complete` | Autocompleta un nombre parcial. Ideal para sugerencias en formularios. |
| `get_service_credits` | Consulta los créditos disponibles para un servicio específico de verificaremails.com. |
| `get_all_credits` | Consulta los créditos disponibles de todos los servicios activos de la cuenta autenticada. |
| `get_credits` | Alias compatible: consulta los créditos disponibles de todos los servicios activos de la cuenta autenticada. |
| `validate_file` | Sube un fichero para validación masiva asíncrona. El usuario debe indicar el servicio de validación y la columna donde están los datos. Devuelve un `request_id` para consultar el estado posteriormente. No hace polling. |
| `get_file_validation_status` | Consulta el estado de una validación masiva de fichero usando el `request_id` devuelto por `validate_file`. No hace polling. |
| `download_file_validation_result` | Descarga el resultado de una validación masiva de fichero ya completada. Usa internamente el token del usuario y no expone la URL con `auth-token`. Con `output_format=text` devuelve el contenido bruto del fichero como texto. |
## Servicios API soportados para consulta de créditos
Los servicios soportados para consultar créditos son:
| Servicio | Uso |
|----------|-----|
| `email` | Créditos de verificación de emails. |
| `phone` | Créditos de verificación de teléfonos mediante HLR. |
| `phonesyntactic` | Créditos de validación sintáctica de teléfonos. |
| `phonemnp` | Créditos de consulta de portabilidad MNP. |
| `name` | Créditos de validación de nombres. |
| `address` | Créditos de validación de direcciones. |
| `fuzzysearch` | Créditos de búsqueda aproximada de nombres. |
| `namecomplete` | Créditos de autocompletado de nombres. |
Los endpoints internos de créditos son:
```text
https://dashboard.verificaremails.com/myapi/{apiName}/credits
https://dashboard.verificaremails.com/myapi/all/credits
```
## Validación masiva de ficheros con MCP
La validación de ficheros es asíncrona. El Worker no hace polling automático.
| Elemento | Valor |
|----------|-------|
| Herramienta de subida | `validate_file` |
| Herramienta de estado | `get_file_validation_status` |
| Herramienta de descarga | `download_file_validation_result` |
| Entradas de fichero aceptadas | `file_base64`, `file_url` |
| Formatos de descarga | `text`, `base64` |
| Polling automático | No |
Para validar un fichero, el usuario debe indicar el `service` y la `column` donde están los datos. El cliente MCP debe pasar el fichero como `file_base64` o `file_url`.
Servicios soportados en validación masiva:
- `validate_email`
- `validate_phone`
- `validate_phone_syntactic`
- `validate_phone_mnp`
- `validate_name`
- `validate_address`
- `fuzzy_search_name`
- `name_complete`
Flujo de validación masiva:
1. El asistente llama a `validate_file` con el servicio, la columna y el fichero.
2. VerificarEmails devuelve un `request_id`.
3. El usuario puede consultar el estado más tarde con `get_file_validation_status`.
4. Cuando el estado sea completado, el asistente puede llamar a `download_file_validation_result`.
5. Con `output_format=text`, la herramienta devuelve el contenido bruto del fichero como texto.
La URL de descarga original del proveedor contiene `auth-token` y se oculta por seguridad. La descarga debe realizarse mediante `download_file_validation_result`.
La plataforma VerificarEmails enviará un email cuando termine si `send_email=1`.
## Conectar desde ChatGPT
Para conectar VerificarEmails desde ChatGPT, usa la URL del servidor MCP remoto:
```text
https://mcp.verificaremails.com/mcp
```
Configuración recomendada para ChatGPT:
| Campo | Valor |
|-------|-------|
| Server URL | `https://mcp.verificaremails.com/mcp` |
| Authentication | OAuth |
| Client registration | Dynamic Client Registration (DCR) |
| Token endpoint auth method | `none` |
| OIDC | `false` |
ChatGPT descubrirá la metadata OAuth, abrirá el flujo de autorización de VerificarEmails y, cuando apruebes la conexión, llamará al servidor MCP con un token Bearer.

Cuando la conexión esté aprobada, podrás pedir acciones como:
```text
Utilizando VerificarEmails MCP, valida el email antxon.pous@gmail.com
```
```text
Comprueba cuántos créditos me quedan para todos los servicios de verificación
```
```text
Verifica los emails del fichero. Los emails están en la primera columna
```
## Conectar desde Claude Remote MCP
Para conectar VerificarEmails desde Claude con Remote MCP, usa la misma URL:
```text
https://mcp.verificaremails.com/mcp
```
Configuración recomendada para Claude Remote MCP:
| Campo | Valor |
|-------|-------|
| Server URL | `https://mcp.verificaremails.com/mcp` |
| Authentication | OAuth |
| Client registration | DCR si está disponible |
| Token endpoint auth method | `none` |
Completa el flujo OAuth que muestre Claude o el cliente MCP compatible.
## Conectar desde clientes locales o de desarrollo
Para clientes locales o de desarrollo compatibles con MCP remoto por HTTP JSON-RPC, configura:
```text
https://mcp.verificaremails.com/mcp
```
Y añade la cabecera:
```text
Authorization: Bearer
```
Utiliza esta opción solo si el cliente permite configurar cabeceras Bearer de forma segura. No expongas el token en código público, repositorios, logs ni prompts.
## Idiomas del flujo de autorización
La página de autorización detecta `Accept-Language` y soporta:
- `es`
- `en`
- `it`
- `de`
También puedes forzar el idioma con el parámetro `lang` en la URL de autorización. Ejemplo:
```text
https://mcp.verificaremails.com/authorize?...&lang=en
```
## Anotaciones de herramientas
Las herramientas de lectura y consulta usan estas anotaciones:
| Anotación | Valor |
|-----------|-------|
| `readOnlyHint` | `true` |
| `destructiveHint` | `false` |
| `idempotentHint` | `true` |
| `openWorldHint` | `true` |
La herramienta `validate_file`, al iniciar una validación asíncrona, usa:
| Anotación | Valor |
|-----------|-------|
| `readOnlyHint` | `false` |
| `destructiveHint` | `false` |
| `idempotentHint` | `false` |
| `openWorldHint` | `true` |
## Cuándo utilizar la API REST en lugar de MCP
Utiliza la API REST de VerificarEmails en lugar del MCP si:
- Tu integración es backend-to-backend y no usa un cliente MCP.
- Tu cliente solo soporta servidores MCP locales por `stdio` y no permite configurar MCP remoto HTTP JSON-RPC.
- Necesitas controlar directamente las llamadas HTTP, reintentos, logs o la arquitectura de tu aplicación.
- Quieres integrar VerificarEmails en una aplicación, formulario, CRM o proceso automatizado sin depender de un asistente de IA.
La API REST sigue utilizando los endpoints de VerificarEmails para integraciones directas. MCP está pensado para conectar VerificarEmails con asistentes y clientes compatibles con Model Context Protocol.
# Validar emails con nuestro Widget
Para simplificar la verificación de direcciones de correo en formularios hemos desarrollado un **Widget**. Es un pequeño código que puedes pegar en tus formularios para asegurar que solo se registren direcciones de correo electrónico válidas antes de guardar los datos.
A través del asistente podrás configurar el comportamiento del widget para que rechace o permita guardar correos, así como los mensajes que debe mostrar. Para utilizar esta funcionalidad, ve a la sección **Widget** del menú lateral.

# Autenticación API
Para utilizar nuestra API necesitas credenciales. Puedes obtener tu API key visitando la sección **API** de tu dashboard. Visualiza el video para ver paso a paso cómo utilizar la API para validar direcciones de correo y configurar sus opciones.
[](https://www.youtube.com/watch?v=ROlso1FYqmY)
termsOfService: https://www.verificaremails.com/terms.html
contact:
name: Support
url: https://www.verificaremails.com/#FAQ
email: contactar@verificaremails.com
version: 1.0.0
servers:
- url: https://dashboard.verificaremails.com/myapi
tags:
- name: Email Validation API
description: |-
**VerificarEmails** ofrece una API de validación y verificación de emails para desarrolladores. Permite integrar la verificación de correos electrónicos en formularios, CRMs, aplicaciones SaaS, herramientas de marketing, procesos de ventas y automatizaciones.
La API permite validar direcciones de email de forma individual en tiempo real, comprobar si un email existe y procesar listas completas mediante subida de ficheros para verificación masiva.
x-tagGroups:
- name: Developer API
tags:
- Email Validation API
paths:
/email/validate/single:
get:
security:
- APIKey: []
tags:
- Email Validation API
summary: API validar emails en tiempo real
description: |-
Envía una dirección de correo electrónico para su validación en tiempo real.
Este endpoint permite comprobar si un email existe, si tiene un formato correcto, si el dominio dispone de DNS/MX válido y si puede recibir correos electrónicos sin enviar ningún mensaje al destinatario. Es útil para validar emails en formularios, CRMs, procesos de alta, campañas de marketing y flujos de captación de leads.
La respuesta se devuelve como una cadena de texto plano:
| Respuesta | Descripción |
|-----------|-------------|
| ok | La dirección de email ha superado todas las verificaciones. |
| fail | La dirección de email ha fallado una o varias comprobaciones. |
| unknown | La dirección de email no puede ser validada con precisión. |
| incorrect | No se ha enviado ningún email en la petición o contiene un error sintáctico. |
| key_not_valid | No se ha enviado una API key válida en la petición. |
| missing parameters | No quedan validaciones disponibles para completar este intento. |
Cuando la respuesta es `fail`, puede deberse a que la dirección no existe, el buzón está lleno, el email es temporal o desechable, el formato no es válido, corresponde a una cuenta de rol, el dominio no dispone de DNS/MX válido o aparece en una blacklist interna.
operationId: d587e44e9cd0459714670331256ceaf9
parameters:
- name: auth-token
in: query
description: API key de autenticación.
required: true
schema:
type: string
- name: term
in: query
description: Dirección de correo electrónico que deseas validar.
required: true
schema:
type: string
format: email
responses:
'200':
description: Resultado correcto de la validación individual del email.
content:
application/json:
schema:
description: JSON result
required:
- id
- term
- request_id
- result_code
- result_type
properties:
id:
type: string
example: '364637'
term:
type: string
example: antxon.pous@verificaremails.com
request_id:
type: string
example: '364637'
result_code:
type: string
example: '114'
result_type:
type: string
example: Inconclusive
result:
type: object
example:
status: ok_for_all
type: object
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
x-codeSamples:
- lang: PHP
source: |
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://dashboard.verificaremails.com/myapi/email/validate/single?term=antxon.pous%40verificaremails.com&auth-token={{api_token}}',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'GET',
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
- lang: Python
source: |
import requests
url = "https://dashboard.verificaremails.com/myapi/email/validate/single?term=antxon.pous%40verificaremails.com&auth-token={{api_token}}"
response = requests.request("GET", url)
print(response.text)
- lang: Ruby
source: |
require "uri"
require "net/http"
url = URI("https://dashboard.verificaremails.com/myapi/email/validate/single?term=antxon.pous%40verificaremails.com&auth-token={{api_token}}")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Get.new(url)
response = https.request(request)
puts response.read_body
- lang: C#
source: |
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Get, "https://dashboard.verificaremails.com/myapi/email/validate/single?term=antxon.pous%40verificaremails.com&auth-token={{api_token}}");
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());
/email/validate/multiple:
post:
security:
- APIKey: []
tags:
- Email Validation API
summary: Validar emails de forma masiva mediante fichero
description: |-
Envía un fichero con una lista de direcciones de correo electrónico para su validación masiva.
Este endpoint permite procesar listas completas de emails mediante subida de fichero. El archivo será devuelto con campos adicionales que asignan a cada dirección un estado de verificación. Es útil para limpiar bases de datos, preparar campañas de email marketing, reducir rebotes y mejorar la calidad de los contactos antes de importarlos a un CRM o herramienta de automatización.
El fichero debe tener el mismo formato descrito en la sección [**Verificar ficheros**](#section/Developer-API/Verificar-ficheros). El fichero procesado incluirá el resultado de validación descrito en [**Guía de resultados de la verificación de emails**](#section/Developer-API/Guia-de-resultados-de-la-verificacion-de-emails).
La respuesta se devuelve como una cadena de texto plano:
| Respuesta | Descripción |
|-----------|-------------|
| | Identificador numérico del fichero que está siendo procesado. |
| no_credit | El saldo actual de tu cuenta es 0. |
| cannot_upload_file | El fichero subido no ha podido ser procesado debido a un formato incorrecto o a un error en la subida. |
| key_not_valid | No se ha enviado una API key válida en la petición. |
| missing parameters | No quedan validaciones disponibles para completar este intento. |
operationId: 593fa14b20a2ee749a8b335c93aed646
parameters:
- name: auth-token
in: query
description: API key de autenticación.
required: true
schema:
type: string
requestBody:
required: true
content:
multipart/form-data:
schema:
required:
- file
- column
properties:
file:
description: Fichero a subir para la validación masiva de emails (xls, xlsx, csv o txt).
type: string
format: binary
column:
description: Número o letra de la columna que contiene las direcciones de email.
type: string
send_email:
description: Envía un email cuando el fichero haya sido procesado (1) o no lo envía (0, valor por defecto).
type: integer
default: 0
enum:
- 0
- 1
callback_url:
description: URL de callback o webhook para recibir la notificación del procesamiento.
type: string
format: url
type: object
description: |-
Datos necesarios para validar emails de forma masiva mediante fichero.
Debes subir un archivo con las direcciones de correo y especificar la columna que contiene los emails a validar.
responses:
'200':
description: Resultado correcto del envío del fichero para validación masiva.
content:
application/json:
schema:
description: Message successfully sent to the platform.
properties:
request_id:
type: string
example: '368228'
type: object
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
x-codeSamples:
- lang: PHP
source: |
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://dashboard.verificaremails.com/myapi/email/validate/multiple?auth-token={{api_token}}',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
- lang: Python
source: |
import requests
url = "https://dashboard.verificaremails.com/myapi/email/validate/multiple?auth-token={{api_token}}"
response = requests.request("POST", url)
print(response.text)
- lang: Ruby
source: |
require "uri"
require "net/http"
url = URI("https://dashboard.verificaremails.com/myapi/email/validate/multiple?auth-token={{api_token}}")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
response = https.request(request)
puts response.read_body
- lang: C#
source: |
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https://dashboard.verificaremails.com/myapi/email/validate/multiple?auth-token={{api_token}}");
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());
/myapi/phone/status/{requestId}:
get:
security:
- APIKey: []
tags:
- Email Validation API
summary: Consultar el estado de una validación masiva por fichero
description: |-
Permite automatizar la consulta del estado de un fichero enviado para validación masiva de emails.
Puedes consultar el estado mediante el identificador de la petición y conocer el avance del procesamiento, los créditos disponibles, los créditos consumidos y el enlace de descarga cuando el fichero esté listo. La notificación también puede realizarse mediante callback o webhook, según la configuración de tu flujo.
operationId: 5bc566aa55569519c6c8580fe84b2933
parameters:
- name: requestId
in: path
description: Identificador de la petición o del fichero procesado.
required: true
schema:
type: integer
- name: auth-token
in: query
description: API key de autenticación.
required: true
schema:
type: string
responses:
'200':
description: Resultado correcto de la consulta de estado del fichero.
content:
application/json:
schema:
description: JSON result
required:
- status
- items
- credits
- name
- date_created
- date_updated
properties:
status:
type: string
example: Status
items:
type: object
properties:
total:
type: string
example: '50'
processed:
type: string
example: '50'
pending:
type: string
example: '0'
credits:
type: object
properties:
billed:
type: string
example: '45'
not_billed:
type: string
example: '5'
name:
type: string
example: File name
date_created:
type: string
format: date-time
example: '2025-01-15 13:58:14'
date_updated:
type: string
format: date-time
example: '2025-01-15 13:59:54'
download:
type: string
example: https://dashboard.verificaremails.com/myapi/apiName/download/1234?auth-token=abcd1234
type: object
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
/email/credits:
get:
security:
- APIKey: []
tags:
- Email Validation API
summary: Consultar créditos disponibles para validación de emails
description: Recupera el número de créditos disponibles para la API de validación y verificación de emails.
operationId: 5bc566aa55569519c6c8580fe84b2932
parameters:
- name: auth-token
in: query
description: API key de autenticación.
required: true
schema:
type: string
responses:
'200':
description: Resultado correcto de la consulta de créditos para emails.
content:
application/json:
schema:
description: Success JSON
properties:
credits:
type: string
example: '1000'
type: object
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
x-codeSamples:
- lang: PHP
source: |
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://dashboard.verificaremails.com/myapi/email/credits?auth-token={{api_token}}',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'GET',
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
- lang: Python
source: |
import requests
url = "https://dashboard.verificaremails.com/myapi/email/credits?auth-token={{api_token}}"
response = requests.request("GET", url)
print(response.text)
- lang: Ruby
source: |
require "uri"
require "net/http"
url = URI("https://dashboard.verificaremails.com/myapi/email/credits?auth-token={{api_token}}")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Get.new(url)
response = https.request(request)
puts response.read_body
- lang: C#
source: |
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Get, "https://dashboard.verificaremails.com/myapi/email/credits?auth-token={{api_token}}");
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());
/all/credits:
get:
security:
- APIKey: []
tags:
- Email Validation API
summary: Consultar créditos disponibles en todas las APIs
description: 'Recupera el número de créditos disponibles asociados a todas las APIs de tu cuenta: email, teléfono, nombres
y direcciones postales cuando estén contratadas.'
operationId: 0b525866e73e0650eceaabb0f892dd6f
parameters:
- name: auth-token
in: query
description: API key de autenticación.
required: true
schema:
type: string
responses:
'200':
description: Resultado correcto de la consulta global de créditos.
content:
application/json:
schema:
description: Success JSON
type: array
items:
required:
- api_service
- credits
- api_service_alias
properties:
api_service:
type: string
example: email
credits:
type: string
example: '1000'
api_service_alias:
type: string
example: Email Verification
type: object
examples:
example:
value:
- api_service: phone
credits: '5'
api_service_alias: Phone Number Verification - HLR
- api_service: email
credits: '6'
api_service_alias: Email Verification
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
x-codeSamples:
- lang: PHP
source: |
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://dashboard.verificaremails.com/myapi/all/credits?auth-token={{api_token}}',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'GET',
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
- lang: Python
source: |
import requests
url = "https://dashboard.verificaremails.com/myapi/all/credits?auth-token={{api_token}}"
response = requests.request("GET", url)
print(response.text)
- lang: Ruby
source: |
require "uri"
require "net/http"
url = URI("https://dashboard.verificaremails.com/myapi/all/credits?auth-token={{api_token}}")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Get.new(url)
response = https.request(request)
puts response.read_body
- lang: C#
source: |
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Get, "https://dashboard.verificaremails.com/myapi/all/credits?auth-token={{api_token}}");
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());
components:
securitySchemes:
APIKey:
type: apiKey
name: auth-token
in: query
schemas:
ErrorResponse:
required:
- error
properties:
error:
required:
- code
- msg
properties:
code:
description: Código interno del error.
type: integer
example: 100001
msg:
description: Descripción del error.
type: string
example: Error description
type: object
type: object
responses:
'400':
description: La solicitud contiene parámetros incorrectos o incompletos. Revisa los datos enviados e inténtalo de nuevo.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: No se ha enviado una API key. Incluye una clave válida para autenticar la solicitud.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'402':
description: No tienes suficientes créditos para completar esta solicitud.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: La API key proporcionada no es válida.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: El recurso solicitado no existe.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'429':
description: Has superado el límite de solicitudes permitido. Espera antes de realizar nuevas peticiones.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Se ha producido un error interno en el servidor. Inténtalo de nuevo más tarde o contacta con soporte si
el problema persiste.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'