API de verificación
Una llamada y ya sabe qué pasa si envía.
Comprueba las direcciones en el registro y antes de cada envío, para que los datos malos nunca lleguen a tu lista ni a tu reputación de remitente. Entra un token, sale un veredicto, con la puntuación y los códigos de motivo que lo explican.
Petición y respuesta
Toda la integración, en una pantalla.
Sin SDK, sin cliente que construir, sin envoltorio que aprender. Un token bearer, un POST y un objeto cuyos nombres de campo tu código puede leer.
curl -X POST https://api.bounceintel.com/v1/check_email \
-H "Authorization: Bearer $BOUNCEINTEL_KEY" \
-H "Content-Type: application/json" \
-d '{"email": "[email protected]"}'{
"input": "[email protected]",
"is_reachable": "safe",
"syntax": {
"domain": "stripe.com",
"username": "ada",
"is_valid_syntax": true
},
"mx": {
"accepts_mail": true,
"records": ["aspmx.l.google.com", "alt1.aspmx.l.google.com"]
},
"smtp": {
"can_connect_smtp": true,
"is_deliverable": true,
"is_catch_all": false,
"is_disabled": false,
"has_full_inbox": false
},
"misc": {
"is_disposable": false,
"is_role_account": false,
"is_b2c": false
},
"provider": "google_workspace",
"provider_rules_applied": true,
"score": {
"score": 100,
"category": "valid",
"sub_reason": "deliverable",
"safe_to_send": true,
"confidence": 0.97,
"confidence_level": "high",
"reason_codes": ["deliverable", "tenant_history_positive"]
},
"bounce_risk": {
"score": 3,
"category": "low",
"confidence": 0.94,
"action": "send",
"model_version": "br-2026.06",
"risk_factors": [
{
"signal": "smtp_is_deliverable",
"direction": "decreases_risk",
"contribution": -0.41,
"description": "Mailbox accepted the recipient at RCPT TO."
}
]
}
}- 01
Un solo endpoint
POST /v1/check_email con una dirección. No hay sesión que abrir.
- 02
Códigos de motivo
Códigos documentados sobre los que ramificar, no texto libre en inglés.
- 03
Una puntuación suya
Un número de 0 a 100, así su umbral es un valor de configuración y no una decisión nuestra.
- 04
Desconocidos honestos
Una comprobación no concluyente devuelve 200 con veredicto desconocido, nunca uno inventado.
- 05
El lote como trabajo
POST /v1/bulk acepta una lista y devuelve un id de trabajo que se consulta.
- 06
Claves rotables
Varias claves activas, revocables por separado y sin cortes.
Primeros pasos
De no tener cuenta a un veredicto en tu propio código.
- 01
Crear una clave
Las claves se emiten desde el panel. Puedes tener varias activas a la vez y revocarlas por separado, así que rotar no cuesta ninguna caída.
- 02
Enviar la dirección
Un POST con una cabecera Authorization y un cuerpo JSON. No hay sesión que abrir ni negociación previa.
- 03
Ramificar sobre la respuesta
Lee el veredicto, o la puntuación frente a tu propio umbral, o los códigos de motivo. Los tres están en el mismo objeto: nunca haces una segunda llamada para saber por qué.
- 04
Escalar a listas
La misma clave envía un lote como trabajo y lo consulta. Los veredictos son idénticos a los del endpoint individual, porque es el mismo pipeline.
Referencia
La superficie contra la que integras.
Cuatro endpoints y dos cabeceras. La referencia completa, con un entorno de pruebas en vivo, está en la documentación.
| Endpoint o cabecera | Tipo | Qué hace |
|---|---|---|
| POST /v1/check_email | synchronous | Verifica una dirección y recibe el informe puntuado en la misma respuesta. Es la llamada que hace casi toda integración. |
| POST /v1/bulk | job | Envía una lista y recibe un id de trabajo. Acepta muchas más direcciones de las que querrías mantener con una conexión abierta. |
| GET /v1/bulk/{job_id} | job | Consulta el estado de un trabajo y cuánto lleva hecho, para que tu interfaz muestre progreso en vez de un indicador girando. |
| GET /v1/bulk/{job_id}/results | json | csv | Recupera las filas de un trabajo terminado, paginadas, en JSON o en el mismo CSV que descarga el panel. |
| Authorization: Bearer | header | Cómo se autentica cada petición. Guarda la clave en tu servidor: una clave que llega al navegador es un saldo de créditos público. |
| 429 / Retry-After | header | Lo que recibes si superas el límite de tasa de tu plan. Espera los segundos que indica la cabecera y reintenta; una petición rechazada no se cobra. |
Preguntas frecuentes
Lo primero que preguntan los desarrolladores
¿Cómo me autentico?
Una cabecera Authorization con un token. Deje la clave en su servidor: una clave que llega al navegador es un saldo de créditos público.
¿Qué hago con un veredicto desconocido?
Deje pasar al usuario, marque el registro y vuelva a comprobar más tarde. La mayoría son el servidor de destino negándose a responder.
¿Qué planes incluyen claves de API?
Cualquier plan de pago, mensual o por uso. Las cuentas gratuitas verifican en el panel, suficiente para ver el formato de la respuesta.
¿Puedo llamarla desde el navegador?
No. Pásela por su propio servidor. Una clave en el navegador es un saldo de créditos público.
¿Cuáles son los límites de tasa?
Se fijan por plan en vez de publicarse como una cifra global, porque una integración en un formulario de registro y una pasada nocturna de listas tienen formas muy distintas. Al superarlo, la API responde 429 con una cabecera Retry-After y no cobra la petición.
¿Hay SDK?
No, y ese es el punto. Un endpoint con cuerpo JSON no necesita biblioteca cliente, y un envoltorio fino es una dependencia que hay que mantener al día sin ganancia. Cada lenguaje de los ejemplos de arriba usa su cliente HTTP estándar.
Lea la respuesta antes de programar contra ella.
100 créditos al registrarse, sin tarjeta. Pruebe direcciones reales y vea el objeto exacto que recibirá su código.