API de validation email hébergée en Europe

L'API de validation email de YesWeCheck analyse une adresse et renvoie un statut, les raisons qui le motivent et un score de risque. Dix-neuf contrôles s'exécutent par adresse, dix-huit sans consommer de crédit. La vérification SMTP est le seul contrôle facturé. L'infrastructure de validation est hébergée en France et en Allemagne.

Cette page rassemble la référence fonctionnelle de l'API : ce qu'elle mesure, ce qu'elle renvoie, ce qu'elle facture et ce qu'elle ne peut pas garantir. Les schémas complets, les codes d'erreur détaillés et les exemples par langage vivent dans la documentation.

Authentification

L'authentification passe par l'en-tête Authorization, avec le schéma Bearer, pour une clé API comme pour un jeton de session. L'en-tête X-API-Key n'est jamais lu par le serveur. Une clé de production commence par un préfixe distinct de celui d'une clé de test, ce qui rend les deux environnements impossibles à confondre.

L'authentification passe par l'en-tête Authorization, avec le schéma Bearer, pour une clé API comme pour un jeton de session. L'en-tête X-API-Key n'est jamais lu.

Requête
curl -X POST https://api.yeswecheck.fr/v2/email/validate \
  -H "Authorization: Bearer $YESWECHECK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email":"[email protected]","smtp":true}'

Une clé de production porte le préfixe ywc_live_, une clé de test le préfixe ywc_test_.

Ce que renvoie l'API

La réponse porte un statut global, un score et le détail contrôle par contrôle. Chaque contrôle rend son propre résultat, son propre score et un message lisible. Les métadonnées indiquent le nombre de crédits débités par l'appel. Un client peut donc décider sur le statut seul, ou remonter jusqu'au signal exact qui l'a produit.

Réponse
{
  "result": "valid",
  "score": 100,
  "businessEmail": true,
  "freeProvider": false,
  "disposable": false,
  "alias": false,
  "features": {
    "syntax": {
      "result": "valid",
      "score": 100,
      "message": "Adresse conforme."
    },
    "dns": {
      "result": "valid",
      "score": 100,
      "message": "Le domaine annonce un serveur de messagerie.",
      "details": {
        "primaryMx": "mx.exemple.fr",
        "hasARecord": true
      }
    },
    "smtp": {
      "result": "valid",
      "score": 100,
      "message": "Le serveur destinataire confirme la boîte.",
      "details": {
        "exists": true,
        "canReceiveMail": true,
        "isCatchAll": false,
        "smtpCode": 250
      }
    },
    "disposable": {
      "result": "valid",
      "score": 100,
      "message": "Domaine absent de la base de domaines jetables."
    }
  },
  "metadata": {
    "apiVersion": "v2",
    "credits": {
      "used": 1
    }
  }
}

Cet exemple montre un sous-ensemble de la réponse : la réponse réelle porte un objet par contrôle exécuté. Chaque champ montré ici existe dans le schéma de réponse du serveur, et un test le vérifie à chaque construction du site.

Les 19 contrôles

Chaque adresse soumise traverse dix-neuf contrôles nommés. Dix-huit s'exécutent en parallèle et n'ont aucun coût : syntaxe, DNS, domaines jetables, typosquatting, comptes de rôle, santé du domaine. Le dix-neuvième, la vérification SMTP, interroge le serveur destinataire, prend beaucoup plus de temps et consomme un crédit.

Le pipeline de validation d'une adresse Une adresse entre à gauche. Les dix-huit contrôles gratuits s'exécutent en parallèle, par vagues. La vérification SMTP s'exécute ensuite, seule et plus lentement. Un statut qualifié sort à droite. adresse SMTP
Les contrôles gratuits s'exécutent en parallèle. La vérification SMTP s'exécute ensuite, seule, et sa durée dépend du serveur destinataire. La figure montre un ordre de grandeur relatif, pas une mesure de temps.
Les 19 contrôles, leur champ dans la réponse de l'API et leur coût.
ContrôleSortie APICoût
1. Syntaxe RFC 5322 et normalisationfeatures.syntaxGratuit
2. Enregistrements MX du domainefeatures.dns.details.mxRecordsGratuit
3. Enregistrements A et AAAA de replifeatures.dns.details.hasARecordGratuit
4. Vérification SMTP de la boîtefeatures.smtp1 crédit
5. Détection catch-all et accept-allfeatures.smtp.details.isCatchAllInclus dans la vérification SMTP
6. Domaines jetablesfeatures.disposableGratuit
7. Domaines malveillantsfeatures.maliciousDomainsGratuit
8. Typosquatting de domainefeatures.typosquatGratuit
9. Faute de frappe de domaine, avec correction proposéefeatures.typoDomainGratuit
10. Comptes de rôlefeatures.roleAccountGratuit
11. Partie locale aléatoire, mesure d'entropiefeatures.randomDetectionGratuit
12. Vulgarité dans la partie localefeatures.profanityGratuit
13. Sous-adressage et aliasfeatures.aliasingGratuit
14. Adresse professionnelle ou grand publicbusinessEmail, freeProviderGratuit
15. Enregistrement SPF du domainefeatures.domainHealth.checks.spfGratuit
16. Politique DMARC du domainefeatures.domainHealth.checks.dmarcGratuit
17. Enregistrement BIMI du domainefeatures.domainHealth.checks.bimiGratuit
18. Âge du domaine et titulaire, via RDAPfeatures.domainHealth.checks.age, .registrantGratuit
19. Listes blanche et noire de l'organisationfeatures.listCheckGratuit

Paramètres de la requête

Une seule information est obligatoire : l'adresse à analyser. Les autres paramètres activent la vérification SMTP, l'enrichissement d'identité, ou ajustent le délai accordé au serveur destinataire. Sans le paramètre qui demande la vérification SMTP, l'appel n'entraîne jamais de débit, quelle que soit la réponse rendue.

Les 5 paramètres acceptés par l'appel de validation.
ParamètreTypeEffet
emailchaîne, obligatoireAdresse à analyser.
smtpbooléen, facultatifDemande la vérification SMTP de la boîte. C'est le seul paramètre qui peut entraîner un débit de crédit.
enrichmentbooléen, facultatifDemande l'enrichissement d'identité : prénom, nom, genre et âge présumé déduits de la partie locale.
smtpTimeoutentier, facultatifDélai maximal accordé à la session SMTP, en millisecondes. Le serveur n'accepte pas de valeur hors des bornes.
countrychaîne, facultatifPays de référence pour l'estimation d'âge du prénom, en code ISO 3166-1. Sans ce paramètre, le pays est déduit du domaine.
Les 5 points d'entrée publiés.
AppelRôle
POST /v2/email/validateValider une adresse et recevoir le détail des contrôles.
POST /v2/batch/uploadDéposer un fichier d'adresses et créer un traitement par lots.
GET /v2/batch/:jobId/statusSuivre l'avancement d'un traitement par lots.
GET /v2/widget/configConfiguration publique d'un widget, lue par le script embarqué.
POST /v2/widget/validateValidation appelée par le widget depuis un site client.

Temps réel et traitement par lots

Le même moteur sert deux usages. En temps réel, une requête porte une adresse et la réponse revient dans l'appel, ce qui convient à un formulaire d'inscription. En traitement par lots, un fichier est déposé, traité de façon asynchrone puis restitué ligne par ligne, ce qui convient au nettoyage d'une base existante.

Temps réel

Une requête, une réponse, la décision est immédiate. C'est le mode du formulaire d'inscription et de la qualification de prospect à la saisie.

Voir le fonctionnement de la validation en temps réel

Traitement par lots

Import en CSV ou en TXT, jusqu'à 500 000 lignes et 15 mégaoctets par fichier. Export en CSV, XLSX, PDF.

Voir le déroulement d'un traitement par lots

Widget de formulaire

Le même moteur, appelé depuis un formulaire, sans écrire de code d'intégration et sans exposer de clé dans la page.

Voir l'intégration du widget dans un formulaire

Vérification SMTP

La vérification SMTP ouvre une session avec le serveur destinataire, lui annonce l'expéditeur et le destinataire, puis s'arrête avant d'écrire le message. Aucun courrier n'arrive dans la boîte analysée. C'est le seul contrôle facturé, et il ne l'est que lorsque le serveur permet réellement de conclure.

La vérification SMTP ouvre une session avec le serveur destinataire, lui annonce l'expéditeur et le destinataire, puis s'arrête avant d'écrire le message. Aucun courrier n'arrive dans la boîte analysée, et la personne dont l'adresse est vérifiée ne reçoit rien.

Quand la sonde SMTP a réellement dialogué avec le serveur, son résultat fait foi. Les autres contrôles peuvent dégrader un résultat en « risky », ils ne peuvent jamais transformer un refus du serveur en acceptation.

Comprendre la vérification SMTP

Score et statuts

Chaque adresse reçoit un statut parmi quatre et un score de zéro à cent. Le statut dit ce qu'il faut faire de l'adresse, le score dit avec quelle confiance. Un résultat techniquement acceptable dont le score descend sous le seuil de dégradation est rendu comme risqué plutôt que comme valide.

Les 4 statuts, leur définition et la décision qu'ils appellent.
StatutDéfinitionDécision
validL'adresse existe et le serveur destinataire accepte de la recevoir. Quand la vérification SMTP est demandée, ce statut n'est rendu que si le serveur a confirmé la boîte.Accepter l'adresse.
invalidL'adresse ne peut pas recevoir de message : syntaxe non conforme, domaine sans enregistrement MX, boîte refusée par le serveur, ou adresse présente en liste noire de l'organisation.Rejeter l'adresse, elle produira un rebond définitif.
riskyL'adresse est techniquement acceptable mais porte un signal de risque : domaine jetable, domaine malveillant, domaine typosquatté, ou score global inférieur au seuil de dégradation.Accepter sous condition, ou écarter selon la politique métier configurée.
unknownLe serveur destinataire n'a pas permis de conclure : domaine catch-all, temporisation greylisting, sonde bloquée, serveur injoignable ou erreur réseau.Ne pas trancher sur ce seul résultat. Aucun crédit n'est débité.

Le score est rendu sur une échelle de 0 à 100. Sous 70, un résultat technique valide est dégradé en résultat risqué.

Lire la définition des statuts et du score

Codes de réponse à traiter

Une intégration robuste distingue quatre situations d'échec : le jeton refusé, le solde de crédits épuisé, le paramètre hors bornes et le plafond de la clé atteint. Aucune n'est une erreur du serveur, chacune appelle une action différente. Le solde épuisé, en particulier, n'empêche pas les dix-huit contrôles gratuits.

Les 5 codes de réponse qu'une intégration doit traiter.
CodeSituationCe qu'il faut en faire
200SuccèsLa validation a abouti, le corps porte le résultat complet.
401Non authentifiéL'en-tête Authorization est absent, mal formé, ou la clé a été révoquée.
402Crédits épuisésLa vérification SMTP a été demandée alors que le solde est nul. Les autres contrôles restent accessibles en retirant le paramètre smtp.
422Requête invalideUn paramètre ne respecte pas son type ou ses bornes. Le corps liste les champs fautifs.
429Plafond atteintLe plafond de la clé API est atteint. Le corps précise la fenêtre concernée.

Où sont traitées les adresses

YesWeCheck héberge son infrastructure de validation chez OVHcloud, en France et en Allemagne. Les adresses soumises sont traitées sur cette infrastructure, et aucun message n'est envoyé au destinataire pendant la vérification. Aucune certification formelle n'est revendiquée ici : seules des mesures techniques vérifiables sont décrites.

YesWeCheck héberge son infrastructure de validation chez OVHcloud, en France et en Allemagne.

Ce que coûte un appel

La structure de coût tient en une phrase : un crédit est débité si et seulement si la vérification SMTP a été demandée et que le statut final permet de conclure. Les dix-huit autres contrôles s'exécutent sans quota. Cent vérifications SMTP sont offertes une fois, à l'inscription, sans carte bancaire.

Un crédit est débité si et seulement si la vérification SMTP a été demandée et que le statut final n'est pas « unknown ».

Les 3 formules mensuelles, en euros HT.
FormulePrix mensuelVérifications SMTP incluses
FreeGratuitAucune allocation, crédits à acheter en pack
Starter29 euros HT25 000 par mois
Pro99 euros HTIllimitées sur le plan Pro
Les 5 cas dans lesquels aucun crédit n'est débité.
CasCe que fait le moteur
La vérification SMTP n'a pas été demandéeL'appel porte « smtp: false ». Les dix-huit autres contrôles s'exécutent sans quota.
L'adresse figure en liste blanche de l'organisationLe SMTP est court-circuité, la liste tranche.
L'adresse figure en liste noire de l'organisationLe SMTP est court-circuité, la liste tranche.
Le statut final est « unknown »En temps réel, aucun débit n'a lieu. En traitement par lots, le débit prédictif est remboursé à la finalisation du job.
Le fichier est traité en mode auditLe mode audit n'exécute aucun SMTP et ne débite aucun crédit.

Les crédits achetés en pack n'expirent pas. Les crédits mensuels d'un abonnement ne sont pas reportables d'un mois sur l'autre.

100 vérifications SMTP sont créditées une fois à l'inscription. Les 18 autres contrôles ne consomment jamais de crédit.

Ce que l'API ne peut pas garantir

Trois limites sont structurelles et aucun fournisseur ne les contourne. Un domaine qui accepte toutes les adresses rend l'existence d'une boîte indécidable. Une temporisation du serveur destinataire empêche de conclure dans l'instant. Et un serveur peut accepter une adresse aujourd'hui puis la refuser demain, sans prévenir.

Aucun chiffre de latence n'est publié sur ce site : les mesures disponibles sont prises côté serveur et sur des effectifs trop faibles pour qu'une valeur ait un sens.

Commencer

Créer un compte suffit pour obtenir une clé API et cent vérifications SMTP offertes. Aucune carte bancaire n'est demandée. La documentation publie les schémas de réponse, les codes d'erreur et les exemples d'intégration par langage. Tant que la vérification SMTP n'est pas demandée, aucun crédit n'est consommé.