EmailVerify LogoEmailVerify

API Reference

Complete email checker API reference. Endpoints, parameters, response codes for email verification and validation.

A API EmailVerify é um serviço RESTful que fornece recursos poderosos de verificação de email. Todas as requisições da API devem ser feitas via HTTPS.

URL Base

https://api.emailverify.ai/v1

Autenticação

Todas as requisições da API requerem autenticação usando um token Bearer no cabeçalho Authorization:

Authorization: Bearer YOUR_API_KEY

Obtenha sua chave de API no painel EmailVerify.

Exemplo

curl -X POST https://api.emailverify.ai/v1/verify \
  -H "Authorization: Bearer bv_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{"email": "test@example.com"}'

Limites de Taxa

PlanoRequisições/HoraRequisições/Dia
Gratuito1001.000
Inicial1.00010.000
Profissional10.000100.000
EmpresarialPersonalizadoPersonalizado

Informações sobre limites de taxa são incluídas nos cabeçalhos de resposta:

CabeçalhoDescrição
X-RateLimit-LimitRequisições máximas permitidas
X-RateLimit-RemainingRequisições restantes na janela
X-RateLimit-ResetTimestamp Unix quando o limite será resetado

Quando o limite de taxa for excedido, você receberá uma resposta 429 Too Many Requests:

{
  "error": {
    "code": "RATE_LIMIT_EXCEEDED",
    "message": "Rate limit exceeded. Please try again later.",
    "retry_after": 3600
  }
}

Endpoints

Verificação de Email Único

Verifica um único endereço de email com resultados detalhados.

POST /verify

Requisição

{
  "email": "user@example.com",
  "smtp_check": true,
  "timeout": 5000
}

Parâmetros

ParâmetroTipoObrigatórioPadrãoDescrição
emailstringSim-Endereço de email para verificar
smtp_checkbooleanNãotrueRealizar verificação de caixa de correio SMTP
timeoutintegerNão5000Tempo limite da requisição em milissegundos (máx: 30000)

Resposta

{
  "email": "user@example.com",
  "status": "valid",
  "result": {
    "deliverable": true,
    "valid_format": true,
    "valid_domain": true,
    "valid_mx": true,
    "disposable": false,
    "role": false,
    "catchall": false,
    "free": false,
    "smtp_valid": true
  },
  "score": 0.95,
  "reason": null,
  "credits_used": 1
}

Campos da Resposta

CampoTipoDescrição
emailstringO endereço de email verificado
statusstringStatus da verificação: valid, invalid, unknown, accept_all
resultobjectResultados detalhados da verificação
scorenumberPontuação de confiança (0.0 - 1.0)
reasonstringMotivo para status inválido/desconhecido (pode ser nulo)
credits_usedintegerNúmero de créditos consumidos

Campos do Objeto Result

CampoTipoDescrição
deliverablebooleanSe o email pode receber mensagens
valid_formatbooleanSe o email tem sintaxe válida
valid_domainbooleanSe o domínio existe
valid_mxbooleanSe o domínio tem registros MX
disposablebooleanSe o email é de um serviço descartável
rolebooleanSe o email é baseado em função (info@, support@)
catchallbooleanSe o domínio aceita todos os emails
freebooleanSe o email é de um provedor gratuito
smtp_validbooleanSe a verificação SMTP passou

Verificação em Massa de Emails

Envie múltiplos endereços de email para verificação. Retorna um ID de trabalho para rastreamento do progresso.

POST /verify/bulk

Requisição

{
  "emails": [
    "user1@example.com",
    "user2@example.com",
    "user3@example.com"
  ],
  "smtp_check": true,
  "webhook_url": "https://your-app.com/webhooks/emailverify"
}

Parâmetros

ParâmetroTipoObrigatórioPadrãoDescrição
emailsarraySim-Array de endereços de email (máx: 10.000)
smtp_checkbooleanNãotrueRealizar verificação SMTP
webhook_urlstringNão-URL para receber notificação de conclusão

Resposta

{
  "job_id": "job_abc123xyz",
  "status": "processing",
  "total": 3,
  "processed": 0,
  "valid": 0,
  "invalid": 0,
  "unknown": 0,
  "credits_used": 3,
  "created_at": "2025-01-15T10:30:00Z"
}

Obter Status do Trabalho em Massa

Verifica o status de um trabalho de verificação em massa.

GET /verify/bulk/{job_id}

Resposta (Em Andamento)

{
  "job_id": "job_abc123xyz",
  "status": "processing",
  "total": 1000,
  "processed": 450,
  "valid": 380,
  "invalid": 50,
  "unknown": 20,
  "progress_percent": 45,
  "created_at": "2025-01-15T10:30:00Z"
}

Resposta (Concluído)

{
  "job_id": "job_abc123xyz",
  "status": "completed",
  "total": 1000,
  "processed": 1000,
  "valid": 850,
  "invalid": 100,
  "unknown": 50,
  "progress_percent": 100,
  "created_at": "2025-01-15T10:30:00Z",
  "completed_at": "2025-01-15T10:35:00Z"
}

Valores de Status do Trabalho

StatusDescrição
pendingTrabalho está na fila
processingTrabalho está sendo processado
completedTrabalho concluído com sucesso
failedTrabalho falhou (veja o campo de erro)

Obter Resultados do Trabalho em Massa

Recupera os resultados de verificação de um trabalho em massa concluído.

GET /verify/bulk/{job_id}/results

Parâmetros de Query

ParâmetroTipoPadrãoDescrição
limitinteger100Resultados por página (máx: 1.000)
offsetinteger0Posição inicial
statusstring-Filtrar por status: valid, invalid, unknown

Resposta

{
  "job_id": "job_abc123xyz",
  "total": 1000,
  "limit": 100,
  "offset": 0,
  "results": [
    {
      "email": "user1@example.com",
      "status": "valid",
      "result": {
        "deliverable": true,
        "disposable": false,
        "role": false
      },
      "score": 0.95
    },
    {
      "email": "user2@example.com",
      "status": "invalid",
      "result": {
        "deliverable": false,
        "reason": "mailbox_not_found"
      },
      "score": 0.10
    }
  ]
}

Verificar Créditos

Obtém o saldo atual de créditos e informações de uso.

GET /credits

Resposta

{
  "available": 9500,
  "used": 500,
  "total": 10000,
  "plan": "Professional",
  "resets_at": "2025-02-01T00:00:00Z",
  "rate_limit": {
    "requests_per_hour": 10000,
    "remaining": 9850
  }
}

Webhooks

Criar Webhook

POST /webhooks
{
  "url": "https://your-app.com/webhooks/emailverify",
  "events": ["verification.completed", "bulk.completed"],
  "secret": "your-webhook-secret"
}

Listar Webhooks

GET /webhooks

Excluir Webhook

DELETE /webhooks/{webhook_id}

Eventos de Webhook

EventoDescrição
verification.completedVerificação de email único concluída
bulk.completedTrabalho em massa finalizado
bulk.failedTrabalho em massa falhou
credits.lowCréditos abaixo do limite

Payload do Webhook

{
  "event": "bulk.completed",
  "timestamp": "2025-01-15T10:35:00Z",
  "data": {
    "job_id": "job_abc123xyz",
    "status": "completed",
    "total": 1000,
    "valid": 850,
    "invalid": 100,
    "unknown": 50
  },
  "signature": "sha256=..."
}

Status de Verificação

StatusSignificadoAção Recomendada
validEmail existe e pode receber mensagensSeguro para enviar
invalidEmail não existe ou não pode receberRemover da lista
unknownNão foi possível determinar a validadeTentar novamente mais tarde ou usar com cautela
accept_allDomínio aceita todos os emails (catch-all)Monitorar por devoluções

Respostas de Erro

Todos os erros seguem um formato consistente:

{
  "error": {
    "code": "ERROR_CODE",
    "message": "Human-readable error message",
    "details": "Additional context (optional)"
  }
}

Códigos de Status HTTP

CódigoDescrição
200Sucesso
400Requisição Inválida - Parâmetros inválidos
401Não Autorizado - Chave de API inválida ou ausente
403Proibido - Permissões insuficientes
404Não Encontrado - Recurso não existe
429Muitas Requisições - Limite de taxa excedido
500Erro Interno do Servidor
503Serviço Indisponível

Códigos de Erro

CódigoStatus HTTPDescrição
INVALID_API_KEY401Chave de API inválida ou ausente
RATE_LIMIT_EXCEEDED429Muitas requisições
INSUFFICIENT_CREDITS403Créditos insuficientes
INVALID_EMAIL400Formato de email inválido
INVALID_REQUEST400Corpo da requisição malformado
JOB_NOT_FOUND404ID do trabalho em massa não encontrado
TIMEOUT504Tempo limite da verificação esgotado

Melhores Práticas

1. Use Variáveis de Ambiente

Nunca codifique chaves de API diretamente:

// Bom
const apiKey = process.env.EMAILVERIFY_API_KEY;

// Ruim - não faça isso
const apiKey = 'bv_live_xxx';

2. Trate Limites de Taxa

Implemente backoff exponencial:

async function verifyWithRetry(email, maxRetries = 3) {
  for (let i = 0; i < maxRetries; i++) {
    try {
      return await verify(email);
    } catch (error) {
      if (error.code === 'RATE_LIMIT_EXCEEDED') {
        await sleep(Math.pow(2, i) * 1000);
        continue;
      }
      throw error;
    }
  }
}

3. Use em Massa para Múltiplos Emails

Para verificar mais de 10 emails, use o endpoint em massa:

// Bom - uma única chamada de API
const job = await client.verifyBulk(emails);

// Ruim - muitas chamadas individuais
for (const email of emails) {
  await client.verify(email);
}

4. Implemente Webhooks para Trabalhos em Massa

Não faça polling constantemente; use webhooks:

// Envie com webhook
const job = await client.verifyBulk(emails, {
  webhookUrl: 'https://your-app.com/webhook',
});

SDKs

Use nossos SDKs oficiais para facilitar a integração:

Próximos Passos

On this page