Referencia de la API para validar correos
Verifica correos uno a uno, procesa lotes en bloque y haz una verificación profunda de direcciones catch-all y protegidas por SEG. Todos los endpoints usan JSON, se autentican con una clave de API y se cobran por cada verificación correcta.
Introducción
La API de Giggal.ai te permite verificar direcciones de correo una a una, procesar lotes de hasta 50.000 correos por tarea y hacer una verificación profunda de direcciones catch-all y protegidas por SEG, con una API REST sencilla en JSON. Cada verificación correcta descuenta créditos de tu cuenta.
https://api.giggal.ai/v1Crea una clave de API desde tu panel de Giggal.ai. Abre la pestaña Developer API en la barra lateral y haz clic en Create API Key. Cada clave pertenece a tu cuenta, registra su propio uso y se puede revocar en cualquier momento.
Abrir la pestaña Developer APITodas las respuestas siguen la misma estructura JSON:
// Success
{ "success": true, "data": { ... }, "meta": { ... } }
// Error
{ "success": false, "error": "Human-readable error message" }curl -X POST https://api.giggal.ai/v1/verify \
-H "Authorization: Bearer tp_live_xxxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"email":"info@giggal.ai"}'Autenticación
Envía tu clave de API en cada solicitud con una de estas dos cabeceras. Las dos funcionan.
Authorization: Bearer tp_live_xxxxxxxxxxxxxxxxxxxxxxxxxX-API-Key: tp_live_xxxxxxxxxxxxxxxxxxxxxxxxxSi la clave falta, no es válida o fue revocada, la API devuelve HTTP 401. No expongas nunca tus claves de API en el código del lado del cliente. Haz las llamadas a través de tu backend.
En POST /v1/verify-batch y POST /v1/catchall, envía una cabecera Idempotency-Key. Si repites la solicitud con la misma clave, recibes la respuesta original. No se crea una tarea duplicada ni se cobran los créditos dos veces.
Idempotency-Key: 2026-07-24-list-batch-42Verificación individual
1 endpoint en este grupo.
/v1/verifyVerificar un solo correo
Verifica una dirección de correo de forma síncrona. Cuesta 1 crédito. Si el dominio es catch-all, la verificación profunda se hace en la misma solicitud y la respuesta incluye catch_all_score y catch_all_verdict.
Verificación en bloque
3 endpoints en este grupo.
/v1/verify-batchEnviar una tarea de verificación en bloque
Envía hasta 50.000 correos por tarea. El procesamiento es asíncrono, así que consulta GET /v1/jobs/:jobId para ver el avance. Envía una cabecera Idempotency-Key para repetir la creación de la tarea sin riesgo de cobros dobles.
/v1/jobs/:jobIdConsultar el estado de una tarea en bloque
Consulta este endpoint para ver el avance. Cambios de estado: processing → completed (o failed). Intervalo de consulta recomendado: de 10 a 15 segundos. Los lotes pequeños (< 50 correos) suelen terminar en menos de 30 segundos.
/v1/jobs/:jobId/resultsObtener los resultados de una tarea en bloque
Cuando el estado sea "completed", obtén los resultados de cada correo. Los resultados están paginados, así que envía los parámetros de consulta page y limit. Los resultados se guardan durante 48 horas (consulta resultsExpiresAt en la tarea).
Verificación catch-all
4 endpoints en este grupo.
/v1/catchallIniciar una tarea de verificación catch-all
Inicia la verificación profunda catch-all de una tarea en bloque terminada. Solo se vuelven a comprobar las direcciones marcadas como catch-all en la tarea de origen. Se cobra 1 crédito por dirección (consulta creditsRequired en la respuesta).
/v1/catchall/:taskIdConsultar el estado de una tarea catch-all
Consulta este endpoint para ver el avance y los verdictCounts en tiempo real. Las tareas catch-all suelen terminar en unos segundos o en unos minutos, según el volumen.
/v1/catchall/:taskId/resultsObtener los resultados de una tarea catch-all
Obtén los resultados paginados de cada correo con el desglose de la puntuación (señales de clasificación del dominio y antigüedad del dominio).
/v1/catchall/:taskId/downloadDescargar los resultados catch-all en CSV
Descarga todos los resultados de una tarea catch-all terminada en un archivo CSV con las columnas Email, Score y Verdict. El Content-Type es text/csv.
Cuenta
1 endpoint en este grupo.
/v1/creditsConsultar el saldo de créditos
Devuelve el saldo de tu cuenta: créditos disponibles, reservados (retenidos para tareas en curso) y totales históricos. Las verificaciones que vuelven como "unknown" se reembolsan de forma automática y se reflejan aquí.
Errores y límites de uso
| Estado | Significado |
|---|---|
| 200 OK | La solicitud se completó (verificación síncrona o consulta de estado o resultados). |
| 202 Accepted | La tarea asíncrona se creó y está en cola. |
| 400 Bad Request | Faltan parámetros o no son válidos (formato de correo incorrecto, lista emails vacía, falta jobId). |
| 401 Unauthorized | La clave de API falta, no es válida o fue revocada. |
| 402 Payment Required | No tienes créditos suficientes para la operación solicitada. |
| 404 Not Found | El ID de tarea no existe en tu cuenta. |
| 409 Conflict | La tarea no está en el estado necesario (por ejemplo, pides los resultados antes de que termine). |
| 410 Gone | Los resultados de la tarea superaron el plazo de conservación de 48 horas. |
| 429 Too Many Requests | Se superó el límite de uso. Espera y vuelve a intentarlo. |
| 500 / 502 / 503 | El servidor o el servicio de verificación no está disponible por el momento. |
Límites de uso
Cada respuesta incluye las cabeceras RateLimit-Limit, RateLimit-Remaining y RateLimit-Reset (con la escritura del RFC) para que puedas espaciar tus solicitudes. RateLimit-Reset es el número de segundos que faltan para que se reinicie la ventana actual.
| Categoría | Límite |
|---|---|
| Todos los endpoints (por defecto) | 300 solicitudes / 15 minutos |
| Creación de lotes (POST /v1/verify-batch, POST /v1/catchall) | 30 solicitudes / 15 minutos |
| Consulta de tareas (GET /v1/jobs/:id, GET /v1/jobs/:id/results) | 600 solicitudes / 15 minutos |
| Máximo de correos por tarea en bloque | 50.000 |
| Conservación de los resultados | 48 horas |
Hay tres niveles porque las consultas de estado se hacen más a menudo que la creación de lotes. Puedes consultar cada pocos segundos mientras una tarea está en curso. Por eso 600 / 15 min (≈ 40/min) te da margen sin sobrecargar el backend.
¿Necesitas límites más altos?
Subimos los límites de forma habitual para los socios de integración verificados.
Formato de la respuesta 429
Cuando alcanzas un límite de uso, la API devuelve HTTP 429 con este cuerpo:
{
"success": false,
"message": "Developer API rate limit exceeded"
}Antes de volver a intentarlo, espera el tiempo que indica la cabecera RateLimit-Reset (segundos hasta que se reinicia la ventana).
¿Listo para integrar la API?
Crea tu clave de API en segundos. Incluye créditos de prueba gratis para que conectes todo de principio a fin antes de gastar nada.
