Référence technique

Documentation API

Toutes les routes renvoient du JSON et nécessitent un compte Stampcheck (Free ou Pro) — pas de clé d'API séparée, l'authentification se fait par cookie de session.

S'authentifier

Connectez-vous avec POST /api/auth/login (email + mot de passe) via un client qui conserve les cookies — le cookie de session reçu authentifie ensuite chaque appel. Chaque requête POST exige en plus un jeton anti-CSRF : le serveur pose un cookie csrf_token dès la première requête, à renvoyer dans l'en-tête X-CSRF-Token.

Recette curl complète
curl -c cookies.txt -b cookies.txt https://votre-instance/ -o /dev/null
TOKEN=$(grep csrf_token cookies.txt | awk '{print $7}')

curl -c cookies.txt -b cookies.txt -X POST https://votre-instance/api/auth/login \
  -H "Content-Type: application/json" -H "X-CSRF-Token: $TOKEN" \
  -d '{"email":"vous@exemple.com","password":"votre-mot-de-passe"}'

curl -b cookies.txt "https://votre-instance/api/check?domain=exemple.com"

Quotas Free : 10 audits de domaine et 5 lookups IP par jour (/api/check et /api/ip-check). Les générateurs et l'analyseur d'en-têtes sont illimités pour tout compte connecté, Free ou Pro. Le plan Pro lève les deux limites ci-dessus.

GET /api/check

Audit complet d'un domaine : SPF, DMARC, DKIM, BIMI, MTA-STS, TLS-RPT, blocklists, plus un score global et un conseil de correction par vérification en défaut. Enregistré dans l'historique (Pro) et compté dans le quota domain_audit.

Paramètres

NomTypeRequisDescription
domainstringouiNom de domaine à analyser
selectorstringnonSélecteur DKIM exact (sinon des sélecteurs courants sont testés)

Exemple

curl -b cookies.txt "https://votre-instance/api/check?domain=exemple.com&selector=google"

Réponse (extrait)

{
  "domain": "exemple.com",
  "checkedAt": "2026-08-12T10:00:00.000Z",
  "score": 71,
  "spf": { "found": true, "valid": true, "record": "v=spf1 -all", "dnsLookups": 1 },
  "dmarc": {
    "found": true, "valid": true, "policy": "reject",
    "warnings": ["Pas d'adresse 'rua' : vous ne recevrez aucun rapport agrégé DMARC."],
    "remediation": {
      "text": "Votre DMARC est actif mais reste peu protecteur (p=none, ou pas de rua= configuré)...",
      "learnMoreHref": "/verificateur-dmarc"
    }
  }
  /* … dkim, bimi, mtaSts, tlsRpt, blocklist : même structure */
}

« remediation » n'apparaît que sur les vérifications en warn ou err ; learnMoreHref n'existe que pour spf/dkim/dmarc/bimi (les seuls avec une page dédiée).

GET /api/ip-check

Analyse d'une adresse IP publique : reverse DNS, géolocalisation, présence sur les blocklists. Compté dans le quota ip_lookup.

Paramètres

NomTypeRequisDescription
ipstringouiAdresse IPv4 ou IPv6

Exemple

curl -b cookies.txt "https://votre-instance/api/ip-check?ip=203.0.113.5"

POST /api/generate/spf

Génère un enregistrement SPF à partir d'une liste d'expéditeurs autorisés. Illimité, ne consomme aucun quota.

Corps (JSON)

ChampTypeDescription
includesstring[]Domaines à inclure (ex: _spf.google.com)
ip4string[]Adresses/plages IPv4 autorisées
ip6string[]Adresses/plages IPv6 autorisées
abooleanAutoriser l'enregistrement A du domaine
mxbooleanAutoriser les serveurs MX du domaine
allstringfail | softfail | neutral | pass

Exemple

curl -b cookies.txt -X POST https://votre-instance/api/generate/spf \
  -H "Content-Type: application/json" -H "X-CSRF-Token: $TOKEN" \
  -d '{"includes":["_spf.google.com"],"mx":true,"all":"softfail"}'

POST /api/generate/dmarc

Génère un enregistrement DMARC. Illimité, ne consomme aucun quota.

Corps (JSON)

ChampTypeDescription
policystringnone | quarantine | reject
subdomainPolicystringPolicy pour les sous-domaines (optionnel)
pctnumberPourcentage de messages soumis à la policy (0-100)
ruastringEmail pour les rapports agrégés
rufstringEmail pour les rapports forensiques
adkim / aspfstringr (relaxed) ou s (strict)

Exemple

curl -b cookies.txt -X POST https://votre-instance/api/generate/dmarc \
  -H "Content-Type: application/json" -H "X-CSRF-Token: $TOKEN" \
  -d '{"policy":"quarantine","pct":50,"rua":"dmarc@exemple.com"}'

POST /api/analyze/headers

Analyse des en-têtes email bruts : chaîne Received, délais entre hops, résultats d'authentification. Illimité, ne consomme aucun quota.

Corps (JSON)

ChampTypeDescription
rawstringEn-têtes email bruts (max 200 Ko)

Exemple

curl -b cookies.txt -X POST https://votre-instance/api/analyze/headers \
  -H "Content-Type: application/json" -H "X-CSRF-Token: $TOKEN" \
  -d '{"raw":"Received: from ...\nFrom: sender@exemple.com\n..."}'
Passez à l'action

Créez votre compte Stampcheck

Gratuit pour démarrer, accès illimité et historique des audits en Pro.

Gratuit pour démarrer Sans carte bancaire Résultat en quelques secondes