Intégrez la vérification d'emails
en moins de 10 minutes
API REST JSON. Authentification par Bearer token. Latence <200 ms. Vérification opérée en France, conforme RGPD.
Base URL
https://api.mailcheck.fr/v1Toutes les requêtes sont en HTTPS. Les appels HTTP non sécurisés sont rejetés avec un code 400.
Authentification
Toutes les requêtes nécessitent un Bearer token dans le header Authorization.
Votre clé API est disponible dans le dashboard, section Paramètres > Clé API.
Authorization: Bearer mc_live_xxxxxxxxxxxxxxxxxxxx MAILCHECK_API_KEY).
POST /v1/verify, Vérification d'une adresse
Vérifie une adresse email unique. Retourne le statut, le score et le détail des vérifications.
Requête
| Champ | Type | Requis | Description |
|---|---|---|---|
email | string | Oui | L'adresse email à vérifier |
options.catch_all | boolean | Non | Active la détection catch-all (défaut : true) |
{
"email": "[email protected]",
"options": {
"catch_all": true
}
} Format de réponse
La réponse est un objet JSON avec les champs suivants :
| Champ | Type | Description |
|---|---|---|
email | string | L'adresse vérifiée (normalisée en minuscules) |
status | string | valid / invalid / risky / catch_all / disqualifie |
score | integer | Score de confiance 0–100 (≥80 = fiable) |
checks.syntax | boolean | Syntaxe RFC 5322 valide |
checks.dns | boolean | Domaine résolu en DNS |
checks.mx | boolean | MX records présents et actifs |
checks.smtp | boolean | Boîte aux lettres confirmée par SMTP |
checks.disposable | boolean | Adresse jetable détectée |
checks.catch_all | boolean | Serveur catch-all (wildcard) détecté |
confidence | string | high / medium / low |
{
"email": "[email protected]",
"status": "valid",
"score": 97,
"checks": {
"syntax": true,
"dns": true,
"mx": true,
"smtp": true,
"disposable": false,
"catch_all": false
},
"confidence": "high"
} Statuts retournés
| Statut | Signification | Action recommandée |
|---|---|---|
| valid | Boîte confirmée par SMTP, domaine actif, pas de disposable | Inclure dans vos envois |
| risky | Syntaxe et DNS valides mais SMTP ambigu ou catch-all détecté | À envoyer avec précaution ou segmenter séparément |
| catch_all | Serveur accepte tout email entrant (wildcard) | Décision selon votre tolérance au risque |
| invalid | Boîte inexistante confirmée par le serveur, domaine invalide ou syntaxe incorrecte | Supprimer de la liste immédiatement |
| disqualifie | Adresse jetable (domaine dans notre blocklist) | Supprimer, jamais d'intention d'achat |
Exemple cURL
# Vérification d'une adresse email
curl -X POST https://api.mailcheck.fr/v1/verify \
-H "Authorization: Bearer mc_live_xxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"email":"[email protected]","options":{"catch_all":true}}' Exemple Python
import os
import requests
API_KEY = os.environ["MAILCHECK_API_KEY"]
def verify_email(email: str) -> dict:
response = requests.post(
"https://api.mailcheck.fr/v1/verify",
headers={
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
},
json={
"email": email,
"options": {"catch_all": True}
},
timeout=5
)
response.raise_for_status()
return response.json()
# Exemple d'utilisation
result = verify_email("[email protected]")
if result["status"] == "valid":
print(f"✓ Email valide · Score : {result['score']}")
else:
print(f"✗ Statut : {result['status']}") Exemple Node.js
const API_KEY = process.env.MAILCHECK_API_KEY;
async function verifyEmail(email) {
const res = await fetch("https://api.mailcheck.fr/v1/verify", {
method: "POST",
headers: {
"Authorization": `Bearer ${API_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
email,
options: { catch_all: true }
})
});
if (!res.ok) {
throw new Error(`Erreur API: ${res.status}`);
}
return res.json();
}
// Exemple d'utilisation
verifyEmail("[email protected]")
.then(data => {
console.log(`Statut: ${data.status} · Score: ${data.score}`);
})
.catch(console.error); Rate limits
Les limites s'appliquent par clé API sur une fenêtre glissante de 1 seconde.
| Plan | Requêtes / seconde | Vérifications / mois |
|---|---|---|
| Starter | 10 req/s | 5 000 |
| Growth | 50 req/s | 50 000 |
| Pro | 200 req/s | 200 000 |
| Agency | 200 req/s | 1 000 000 |
En cas de dépassement, l'API retourne un 429 Too Many Requests avec un header
Retry-After indiquant le délai d'attente en secondes.
Codes d'erreur
| Code HTTP | Code erreur | Description |
|---|---|---|
| 400 | invalid_request | Corps de requête invalide ou champ email manquant |
| 401 | unauthorized | Clé API manquante ou invalide |
| 402 | insufficient_credits | Quota mensuel épuisé, rechargez votre plan |
| 429 | rate_limit_exceeded | Trop de requêtes, voir header Retry-After |
| 500 | server_error | Erreur interne, réessayez dans quelques secondes |
{
"error": "insufficient_credits",
"message": "Votre quota mensuel est épuisé. Mettez à niveau votre plan.",
"credits_remaining": 0
} Prêt à intégrer ?
Créez votre compte gratuitement et obtenez votre clé API en moins d'une minute. 2 vérifications gratuites.