Desenvolvedores

Uma API de verificação de e-mail que simplesmente funciona

Verifique um endereço em tempo real ou envie uma lista inteira como lote. Todas as solicitações usam HTTPS e retornam JSON. Crie chaves de API no seu painel, em Chaves de API.

  • REST e JSON
  • Callbacks de lote
  • Os mesmos créditos do painel
A página de chaves de API do BounceBell com chaves ativas e um formulário para criar uma nova chave

Autenticação

Envie sua chave de API como bearer token no cabeçalho Authorization em todas as solicitações. Mantenha as chaves no seu servidor. Nunca as coloque em código de navegador ou em apps móveis.

Authorization: Bearer YOUR_API_KEY

A URL base de todos os endpoints é https://bouncebell.com/api/v1.

Verificar um endereço

GET https://bouncebell.com/api/v1/verify

ParâmetroObrigatórioDescrição
emailSimO endereço a verificar. Codifique-o para URL.
timeoutNãoSegundos de espera pelo servidor de e-mail, de 3 a 30. Padrão: 10. Se o tempo acabar, o status é unknown e nenhum crédito é usado.

Exemplo

curl "https://bouncebell.com/api/v1/verify?email=rini.elizabeth%40acme-foods.example" \
  -H "Authorization: Bearer YOUR_API_KEY"
{
  "email": "rini.elizabeth@acme-foods.example",
  "status": "valid",
  "reason": "mailbox_exists",
  "domain": "acme-foods.example",
  "mx_record": "mx1.acme-foods.example",
  "disposable": false,
  "role": false,
  "free_provider": false,
  "catch_all": false,
  "did_you_mean": null,
  "checked_at": "2026-10-30T09:30:12Z",
  "credits_used": 1
}

Campos do resultado

CampoTipoDescrição
emailstringO endereço como você enviou.
statusstringO veredicto. Veja os status.
reasonstringPor que chegamos ao veredicto, por exemplo mailbox_not_found ou no_mail_server.
domainstringA parte do domínio, em letras minúsculas.
mx_recordstring or nullO servidor de e-mail com a maior prioridade.
disposablebooleanTrue se o domínio for um serviço de caixas temporárias.
rolebooleanTrue para caixas compartilhadas como info@ ou support@.
free_providerbooleanTrue para provedores de e-mail gratuitos como o Gmail.
catch_allbooleanTrue quando o domínio aceita qualquer endereço.
did_you_meanstring or nullUm endereço corrigido quando o domínio parece ter um erro de digitação.
checked_atstringQuando a verificação foi feita, em ISO 8601 UTC.
credits_usedinteger1, ou 0 quando o status é unknown.

Status

StatusSignificadoAção sugerida
validA caixa postal existe e aceita e-mails.Enviar
invalidO endereço, o domínio ou a caixa postal não existe.Remover
disposableUm serviço de caixas de e-mail temporárias.Remover
catch_allO domínio aceita todos os endereços, então a caixa postal não pode ser confirmada.Revisar
roleUma caixa compartilhada que existe.Revisar
unknownO servidor de e-mail não deu uma resposta a tempo. Sem cobrança.Tente mais tarde

Lotes

Envie até 100.000 endereços em uma única solicitação. O lote é processado em segundo plano; consulte o status ou informe uma callback_url e nós a chamaremos quando o lote terminar.

Criar um lote

POST https://bouncebell.com/api/v1/batches

curl -X POST "https://bouncebell.com/api/v1/batches" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "October import", "emails": ["a@example.com", "b@example.com"],
       "callback_url": "https://yourapp.example/hooks/bouncebell"}'
{ "id": "bat_8f2k1q3m9x7w4p", "status": "queued", "total": 2, "done": 0 }

Os créditos de cada endereço único são reservados quando o lote é criado, e os resultados desconhecidos são reembolsados quando ele termina. O callback recebe um POST com {"event": "batch.completed", "batch_id": "...", "status": "done", "counts": {...}}. As URLs de callback devem usar HTTPS.

Consultar o progresso

GET https://bouncebell.com/api/v1/batches/{id}

{ "id": "bat_8f2k1q3m9x7w4p", "status": "running", "total": 2, "done": 1 }

O status é queued, running ou done. Quando é done, a resposta também traz counts por status.

Baixar resultados

GET https://bouncebell.com/api/v1/batches/{id}/results

Retorna JSON por padrão. Adicione ?format=csv para receber um arquivo CSV. Cada linha tem os mesmos campos de uma verificação individual.

Créditos

GET https://bouncebell.com/api/v1/credits

{ "credits_remaining": 33420 }

Erros e limites

Os erros retornam um corpo JSON com um código error e uma message legível.

Código HTTPErroO que fazer
400bad_requestUm parâmetro está faltando ou incorreto. Leia a mensagem.
401invalid_keyConfira se a chave está correta e não foi revogada.
402no_creditsCompre mais créditos.
403email_not_confirmedAbra o link de confirmação que enviamos por e-mail quando você se cadastrou.
404not_foundO lote não existe ou foi excluído após 30 dias.
429rate_limitedVá mais devagar. Aguarde os segundos indicados no cabeçalho Retry-After.
500server_errorTente de novo após um breve intervalo. Se continuar, fale com o suporte.

As verificações individuais são limitadas a 20 solicitações por segundo por chave. Fale com a gente se precisar de mais.