Limpe uma lista de e-mails em lote
O que você vai construir: um pipeline de enviar e recolher que verifica uma lista de endereços como um único job em lote e depois busca os resultados classificados — sem um laço de consulta próprio para manter.
| Seção | Fluxos no servidor |
|---|---|
| Ações usadas | POST /v1/data/workflows/clean-list:estimatePOST /v1/bulk/jobsGET /v1/bulk/jobs/{job_id}/result |
| Créditos | 1 por endereço verificado (pior caso) |
| Funciona com chave de teste | Não — precisa de uma chave real |
| Tempo estimado | ~15 min |
| Pré-requisitos | Uma chave qk_live_ com saldo e uma lista de endereços como array ou como texto CSV. |
Envie a lista como um único job
Poste a ação e seus endereços no endpoint de lote, seja como array queries ou como csv_text. Você recebe um id de job na hora, em vez de manter uma conexão aberta durante toda a lista.
# Exactly one input source: queries[] or csv_text.
curl -X POST https://api.qannasapi.com/v1/bulk/jobs \
-H "Authorization: Bearer $QANNAS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"action": "verify_email",
"queries": ["jane@acme.example", "sam@acme.example"],
"webhook_url": "https://yourapp.example/hooks/qannas"
}'
# < 200 { "status": "OK", "data": { /* job id */ } }Recolha os resultados
Consulte o job para ver o estado e depois busque o resultado quando ele terminar. Informe um webhook_url no envio e nós chamamos você — essa é a forma certa para qualquer lista acima de algumas centenas de endereços.
# Poll the job …
curl https://api.qannasapi.com/v1/bulk/jobs/$JOB_ID \
-H "Authorization: Bearer $QANNAS_API_KEY"
# … then pull the graded results once it has finished.
curl https://api.qannasapi.com/v1/bulk/jobs/$JOB_ID/result \
-H "Authorization: Bearer $QANNAS_API_KEY"
# Supplying webhook_url on submission skips this loop entirely.Leia as notas, não só os veredictos
A verificação devolve uma nota por endereço, e não um simples sim ou não. Defina seu próprio limiar: escrever para um endereço classificado como arriscado é uma decisão de entregabilidade, não de API.
Reverifique periodicamente
A qualidade dos endereços se degrada conforme as pessoas mudam de emprego. Rodar a lista de novo a cada trimestre e comparar as notas dá uma taxa de degradação dos seus próprios dados, normalmente mais útil que qualquer verificação isolada.
# Re-run quarterly and diff the grades. Your own decay rate is
# more useful than any single verification pass.
previous = load_grades("2026-Q2")
current = load_grades("2026-Q3")
decayed = [e for e in previous
if ok(previous[e]) and not ok(current.get(e))]
print(f"{len(decayed) / len(previous):.1%} decayed this quarter")Resumo
| Padrão | Como |
|---|---|
| Enviar | POST /v1/bulk/jobs com action e queries ou csv_text |
| Consultar | GET /v1/bulk/jobs/{job_id} |
| Recolher | GET /v1/bulk/jobs/{job_id}/result |
| Dispensar a consulta | Passe webhook_url no envio |
| Forma do custo | Por endereço resolvido, não por endereço enviado |
Checklist de produção
- Use um webhook para qualquer lista acima de algumas centenas de endereços.
- Guarde a nota, não um booleano — você vai querer reajustar o limiar depois.
- Cote a execução antes de enviar uma lista grande.
- Reverifique a cada trimestre e acompanhe sua própria taxa de degradação.
Próximos passos
Rode a estimativa primeiro. Ela não custa nada e aplica exatamente a mesma aritmética que o medidor.