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**. ![Crear cuenta en VerificarEmails](static/images/signup.png) ## 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**. ![Validar email individual](static/images/video_api_verificar_emails.png) 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. ![Validación masiva de emails](static/images/bulk-email-verification.png) 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. ![Subir fichero para validar emails](static/images/file-upload.png) 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: ![Ejemplo de fichero para verificar emails](static/images/file-upload4.png) 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: ![Resultado de fichero validado](static/images/file-upload5.png) # 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**. ![Integración de Zapier para validar emails](static/images/zapier.png) # 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. ![Subir fichero para validar emails](static/images/file-upload6.png) 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. ![Widget para validar emails en formularios](static/images/widget.png) # 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. [![Video tutorial de la API para validar emails](static/images/video_api_verificar_emails.png)](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'