¿Buscas una visión general? Consulta la API de verificación de correo o la API de validación de correo para formularios de registro (en inglés).

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.

URL base
https://api.giggal.ai/v1
Consigue una clave de API

Crea 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 API
Estructura de la respuesta

Todas las respuestas siguen la misma estructura JSON:

// Success
{ "success": true, "data": { ... }, "meta": { ... } }

// Error
{ "success": false, "error": "Human-readable error message" }
Inicio rápido: verifica un correo con cURL
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.

Opción 1: token Bearer
Authorization: Bearer tp_live_xxxxxxxxxxxxxxxxxxxxxxxxx
Opción 2: cabecera X-API-Key
X-API-Key: tp_live_xxxxxxxxxxxxxxxxxxxxxxxxx

Si 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.

Idempotencia (en bloque y catch-all)

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-42

Verificación individual

1 endpoint en este grupo.

POST/v1/verify

Verificar 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.

Autorizaciones
api_key_auth
Cuerpo de la solicitud
email
Obligatorio
string
La dirección de correo que quieres verificar.

Verificación en bloque

3 endpoints en este grupo.

POST/v1/verify-batch

Enviar 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.

Autorizaciones
api_key_auth
Cuerpo de la solicitud
emails
Obligatorio
string[]
Lista de direcciones de correo a verificar. Máximo 50.000 por tarea. El servidor elimina los duplicados y las direcciones mal formadas.
name
string
Nombre opcional de la tarea, fácil de leer. Aparece en tu panel.
GET/v1/jobs/:jobId

Consultar 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.

Autorizaciones
api_key_auth
Parámetros de ruta y de consulta
jobId
Obligatorio
string
El ID de tarea que devuelve POST /v1/verify-batch.
GET/v1/jobs/:jobId/results

Obtener 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).

Autorizaciones
api_key_auth
Parámetros de ruta y de consulta
jobId
Obligatorio
string
El ID de la tarea.
page
integer
Número de página. Por defecto, 1.
limit
integer
Resultados por página. Por defecto, 25. Máximo, 500.

Verificación catch-all

4 endpoints en este grupo.

POST/v1/catchall

Iniciar 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).

Autorizaciones
api_key_auth
Cuerpo de la solicitud
jobId
Obligatorio
string
El ID de una tarea de verificación en bloque terminada. Solo se verifican a fondo las direcciones catch-all de esa tarea.
name
string
Nombre opcional de la tarea, fácil de leer.
GET/v1/catchall/:taskId

Consultar 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.

Autorizaciones
api_key_auth
Parámetros de ruta y de consulta
taskId
Obligatorio
string
El ID de tarea que devuelve POST /v1/catchall.
GET/v1/catchall/:taskId/results

Obtener 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).

Autorizaciones
api_key_auth
Parámetros de ruta y de consulta
taskId
Obligatorio
string
El ID de la tarea.
page
integer
Número de página. Por defecto, 1.
limit
integer
Resultados por página. Por defecto, 25. Máximo, 500.
verdict
string
Filtra por resultado: valid | invalid.
GET/v1/catchall/:taskId/download

Descargar 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.

Autorizaciones
api_key_auth
Parámetros de ruta y de consulta
taskId
Obligatorio
string
El ID de la tarea.
verdict
string
Filtra por resultado: valid | invalid.

Cuenta

1 endpoint en este grupo.

GET/v1/credits

Consultar 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í.

Autorizaciones
api_key_auth

Errores y límites de uso

EstadoSignificado
200 OKLa solicitud se completó (verificación síncrona o consulta de estado o resultados).
202 AcceptedLa tarea asíncrona se creó y está en cola.
400 Bad RequestFaltan parámetros o no son válidos (formato de correo incorrecto, lista emails vacía, falta jobId).
401 UnauthorizedLa clave de API falta, no es válida o fue revocada.
402 Payment RequiredNo tienes créditos suficientes para la operación solicitada.
404 Not FoundEl ID de tarea no existe en tu cuenta.
409 ConflictLa tarea no está en el estado necesario (por ejemplo, pides los resultados antes de que termine).
410 GoneLos resultados de la tarea superaron el plazo de conservación de 48 horas.
429 Too Many RequestsSe superó el límite de uso. Espera y vuelve a intentarlo.
500 / 502 / 503El 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íaLí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 bloque50.000
Conservación de los resultados48 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.

Habla con nosotros

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.