QannasAPI

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.

SectionWorkflows côté serveur
Actions utiliséesPOST /v1/data/workflows/clean-list:estimatePOST /v1/bulk/jobsGET /v1/bulk/jobs/{job_id}/result
Crédits1 par adresse vérifiée (pire cas)
Compatible clé de testNon — nécessite une clé live
Temps nécessaire~15 min
PrérequisUne 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.

submit.sh
# 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.

collect.sh
# 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.

decay.py
# 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é

MotifComment
SoumettrePOST /v1/bulk/jobs avec action et queries ou csv_text
InterrogerGET /v1/bulk/jobs/{job_id}
CollecterGET /v1/bulk/jobs/{job_id}/result
Éviter l'interrogationPassez webhook_url à la soumission
Forme du coûtPar 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.