Nettoyer une liste d'e-mails en masse
Ce que vous allez construire : un pipeline soumettre-puis-collecter qui vérifie une liste d'adresses comme un seul job en masse, puis récupère les résultats notés — sans boucle d'interrogation à maintenir vous-même.
| Section | Workflows côté serveur |
|---|---|
| Actions utilisées | POST /v1/data/workflows/clean-list:estimatePOST /v1/bulk/jobsGET /v1/bulk/jobs/{job_id}/result |
| Crédits | 1 par adresse vérifiée (pire cas) |
| Compatible clé de test | Non — nécessite une clé live |
| Temps nécessaire | ~15 min |
| Prérequis | Une clé qk_live_ avec un solde, et une liste d'adresses sous forme de tableau ou de texte CSV. |
Soumettez la liste en un seul job
Postez l'action et vos adresses sur l'endpoint bulk, soit dans un tableau queries, soit en csv_text. Vous récupérez immédiatement un identifiant de job au lieu de maintenir une connexion ouverte pendant toute la liste.
# 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 */ } }Collectez les résultats
Interrogez le job pour voir son état, puis récupérez le résultat une fois terminé. Fournissez un webhook_url à la soumission et nous vous appellerons à la place, ce qui est la bonne approche au-delà de quelques centaines d'adresses.
# 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.Lisez les notes, pas seulement les verdicts
La vérification renvoie une note par adresse plutôt qu'un simple oui ou non. Fixez votre propre seuil : écrire à une adresse notée risquée est un choix de délivrabilité, pas un choix d'API.
Revérifiez régulièrement
La qualité des adresses se dégrade à mesure que les gens changent de poste. Relancer une liste chaque trimestre et comparer les notes vous donne un taux de dégradation propre à vos données, généralement plus utile qu'une passe de vérification isolée.
# 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")Résumé
| Motif | Comment |
|---|---|
| Soumettre | POST /v1/bulk/jobs avec action et queries ou csv_text |
| Interroger | GET /v1/bulk/jobs/{job_id} |
| Collecter | GET /v1/bulk/jobs/{job_id}/result |
| Éviter l'interrogation | Passez webhook_url à la soumission |
| Forme du coût | Par adresse tranchée, pas par adresse soumise |
Checklist de mise en production
- Utilisez un webhook au-delà de quelques centaines d'adresses.
- Stockez la note, pas un booléen — vous voudrez réajuster le seuil plus tard.
- Chiffrez l'exécution avant de soumettre une grande liste.
- Revérifiez chaque trimestre et suivez votre propre taux de dégradation.
Étapes suivantes
Lancez d'abord l'estimation. Elle ne coûte rien et applique exactement le même calcul que le compteur.