Referência da API de verificação de e-mail

Verifique e-mails individuais, processe lotes em massa e faça uma verificação aprofundada de endereços catch-all e protegidos por SEG. Todos os endpoints usam JSON, são autenticados com uma chave de API e são cobrados por verificação concluída com sucesso.

Introdução

A API da Giggal.ai permite verificar endereços de e-mail individuais, processar lotes de até 50.000 e-mails por tarefa e fazer uma verificação aprofundada de endereços catch-all e protegidos por SEG, com uma API REST simples em JSON. Cada verificação concluída com sucesso consome créditos da sua conta.

URL base
https://api.giggal.ai/v1
Obtenha uma chave de API

Crie uma chave de API no painel da Giggal.ai. Abra a aba Developer API na barra lateral e clique em Create API Key. Cada chave pertence à sua conta, registra o próprio uso e pode ser revogada a qualquer momento.

Abrir a aba Developer API
Formato da resposta

Todas as respostas seguem o mesmo formato JSON:

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

// Error
{ "success": false, "error": "Human-readable error message" }
Início rápido: verifique um e-mail com 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"}'

Autenticação

Envie a sua chave de API em cada requisição, usando um destes dois cabeçalhos. Qualquer um funciona.

Opção 1: token Bearer
Authorization: Bearer tp_live_xxxxxxxxxxxxxxxxxxxxxxxxx
Opção 2: cabeçalho X-API-Key
X-API-Key: tp_live_xxxxxxxxxxxxxxxxxxxxxxxxx

Chaves ausentes, inválidas ou revogadas devolvem HTTP 401. Nunca exponha chaves de API no código do lado do cliente. Faça as chamadas passarem pelo seu backend.

Idempotência (em massa e catch-all)

Para POST /v1/verify-batch e POST /v1/catchall, envie um cabeçalho Idempotency-Key. Novas tentativas com a mesma chave devolvem a resposta original, sem criar uma tarefa duplicada e sem cobrar os créditos duas vezes.

Idempotency-Key: 2026-07-24-list-batch-42

Verificação individual

1 endpoint neste grupo.

POST/v1/verify

Verificar um único e-mail

Verifica um endereço de e-mail de forma síncrona. Custa 1 crédito. Quando o domínio é catch-all, a verificação aprofundada roda na mesma chamada, e a resposta inclui catch_all_score e catch_all_verdict.

Autorizações
api_key_auth
Corpo da requisição
email
Obrigatório
string
O endereço de e-mail a verificar.

Verificação em massa

3 endpoints neste grupo.

POST/v1/verify-batch

Enviar uma tarefa de verificação em massa

Envie até 50.000 e-mails por tarefa. O processamento é assíncrono, então consulte GET /v1/jobs/:jobId para ver o andamento. Envie um cabeçalho Idempotency-Key para repetir a criação da tarefa com segurança, sem cobrança dupla.

Autorizações
api_key_auth
Corpo da requisição
emails
Obrigatório
string[]
Lista (array) de endereços de e-mail a verificar. Máximo de 50.000 por tarefa. Endereços duplicados e mal formatados são removidos no servidor.
name
string
Nome opcional e legível para a tarefa. Aparece no seu painel.
GET/v1/jobs/:jobId

Consultar o status de uma tarefa em massa

Consulte para acompanhar o andamento. O status passa de processing para completed (ou failed). Intervalo de consulta recomendado: 10 a 15 segundos. Lotes pequenos (menos de 50 e-mails) costumam terminar em até 30 segundos.

Autorizações
api_key_auth
Parâmetros de caminho e de consulta
jobId
Obrigatório
string
O ID da tarefa devolvido por POST /v1/verify-batch.
GET/v1/jobs/:jobId/results

Obter os resultados de uma tarefa em massa

Quando o status for "completed", busque os resultados de cada e-mail. Os resultados são paginados, então envie os parâmetros de consulta page e limit. Os resultados ficam guardados por 48 horas (veja resultsExpiresAt na tarefa).

Autorizações
api_key_auth
Parâmetros de caminho e de consulta
jobId
Obrigatório
string
O ID da tarefa.
page
integer
Número da página. O padrão é 1.
limit
integer
Resultados por página. O padrão é 25, e o máximo é 500.

Verificação catch-all

4 endpoints neste grupo.

POST/v1/catchall

Iniciar uma tarefa de verificação catch-all

Inicia a verificação catch-all aprofundada de uma tarefa em massa já concluída. Só os endereços marcados como catch-all na tarefa de origem são verificados de novo. A cobrança é de 1 crédito por endereço (veja creditsRequired na resposta).

Autorizações
api_key_auth
Corpo da requisição
jobId
Obrigatório
string
O ID de uma tarefa de verificação em massa concluída. Só os endereços catch-all dessa tarefa passam pela verificação aprofundada.
name
string
Nome opcional e legível para a tarefa.
GET/v1/catchall/:taskId

Consultar o status de uma tarefa catch-all

Consulte para acompanhar o andamento e a contagem de resultados em tempo real (verdictCounts). As tarefas catch-all costumam terminar entre alguns segundos e alguns minutos, conforme o volume.

Autorizações
api_key_auth
Parâmetros de caminho e de consulta
taskId
Obrigatório
string
O ID da tarefa devolvido por POST /v1/catchall.
GET/v1/catchall/:taskId/results

Obter os resultados de uma tarefa catch-all

Busca os resultados paginados de cada e-mail, com o detalhamento da pontuação (sinais de triagem do domínio e idade do domínio).

Autorizações
api_key_auth
Parâmetros de caminho e de consulta
taskId
Obrigatório
string
O ID da tarefa.
page
integer
Número da página. O padrão é 1.
limit
integer
Resultados por página. O padrão é 25, e o máximo é 500.
verdict
string
Filtrar por resultado: valid | invalid.
GET/v1/catchall/:taskId/download

Baixar os resultados catch-all em CSV

Baixa todos os resultados de uma tarefa catch-all concluída em um arquivo CSV com as colunas Email, Score e Verdict. O Content-Type é text/csv.

Autorizações
api_key_auth
Parâmetros de caminho e de consulta
taskId
Obrigatório
string
O ID da tarefa.
verdict
string
Filtrar por resultado: valid | invalid.

Conta

1 endpoint neste grupo.

GET/v1/credits

Consultar o saldo atual de créditos

Devolve o saldo da sua conta, com os créditos disponíveis, os reservados (separados para tarefas em andamento) e os totais desde a criação da conta. As verificações que voltam como "unknown" são reembolsadas automaticamente e aparecem aqui.

Autorizações
api_key_auth

Erros e limites de requisição

StatusSignificado
200 OKA requisição foi concluída (verificação síncrona ou consulta de status e resultados).
202 AcceptedTarefa assíncrona criada e colocada na fila.
400 Bad RequestParâmetros ausentes ou inválidos (formato de e-mail incorreto, lista emails vazia, jobId ausente).
401 UnauthorizedChave de API ausente, inválida ou revogada.
402 Payment RequiredCréditos insuficientes para a operação pedida.
404 Not FoundO ID da tarefa não existe na sua conta.
409 ConflictA tarefa não está no estado exigido (por exemplo, ao pedir resultados antes da conclusão).
410 GoneOs resultados da tarefa passaram do prazo de 48 horas de armazenamento.
429 Too Many RequestsLimite de requisições excedido. Espere e tente de novo.
500 / 502 / 503O servidor ou o serviço de verificação está temporariamente indisponível.

Limites de requisição

Todas as respostas incluem os cabeçalhos RateLimit-Limit, RateLimit-Remaining e RateLimit-Reset (grafia da RFC), para que você controle o ritmo das requisições. RateLimit-Reset é o número de segundos até a janela atual reiniciar.

CategoriaLimite
Todos os endpoints (padrão)300 requisições / 15 minutos
Criação de lotes (POST /v1/verify-batch, POST /v1/catchall)30 requisições / 15 minutos
Consulta de tarefas (GET /v1/jobs/:id, GET /v1/jobs/:id/results)600 requisições / 15 minutos
Máximo de e-mails por tarefa em massa50.000
Armazenamento dos resultados das tarefas48 horas

Existem três faixas porque as consultas de status acontecem com mais frequência do que a criação de lotes. Você pode consultar a cada poucos segundos enquanto uma tarefa roda. Por isso, 600 / 15 min (cerca de 40 por minuto) dá margem sem sobrecarregar o backend.

Precisa de limites maiores?

Aumentamos os limites com frequência para parceiros de integração verificados.

Fale com a gente

Formato da resposta 429

Quando você atinge um limite, a API devolve HTTP 429 com este corpo:

{
  "success": false,
  "message": "Developer API rate limit exceeded"
}

Antes de tentar de novo, espere o tempo indicado no cabeçalho RateLimit-Reset (segundos até a janela reiniciar).

Pronto para integrar?

Crie a sua chave de API em segundos. Os créditos de teste grátis estão incluídos, para que você monte a integração de ponta a ponta antes de gastar qualquer valor.