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.

Obtenir ma clé API gratuitement Voir les intégrations

Base URL

https://api.mailcheck.fr/v1

Toutes 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.

Header HTTP
Authorization: Bearer mc_live_xxxxxxxxxxxxxxxxxxxx
Ne commitez jamais votre clé API dans votre code source. Utilisez des variables d'environnement (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

ChampTypeRequisDescription
emailstringOuiL'adresse email à vérifier
options.catch_allbooleanNonActive la détection catch-all (défaut : true)
Corps JSON
{
  "email": "[email protected]",
  "options": {
    "catch_all": true
  }
}

Format de réponse

La réponse est un objet JSON avec les champs suivants :

ChampTypeDescription
emailstringL'adresse vérifiée (normalisée en minuscules)
statusstringvalid / invalid / risky / catch_all / disqualifie
scoreintegerScore de confiance 0–100 (≥80 = fiable)
checks.syntaxbooleanSyntaxe RFC 5322 valide
checks.dnsbooleanDomaine résolu en DNS
checks.mxbooleanMX records présents et actifs
checks.smtpbooleanBoîte aux lettres confirmée par SMTP
checks.disposablebooleanAdresse jetable détectée
checks.catch_allbooleanServeur catch-all (wildcard) détecté
confidencestringhigh / medium / low
Réponse JSON · 200 OK · 187 ms
{
  "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

StatutSignificationAction 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

cURL · Terminal
# 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

Python 3.8+
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

Node.js (fetch natif, Node 18+)
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.

PlanRequêtes / secondeVérifications / mois
Starter10 req/s5 000
Growth50 req/s50 000
Pro200 req/s200 000
Agency200 req/s1 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 HTTPCode erreurDescription
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
Exemple réponse d'erreur · 402
{
  "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.