Documentation API

Référence API

Intégrez MailAudit dans votre propre application : vérifications DNS, de blacklist et de réputation, ainsi que des tests complets de délivrabilité e-mail via une API REST.

Limite de requêtes

60 requêtes / minute, 1 000 / jour par clé

URL de base

https://api.mailaudit.io/api/v1

Authentification

Chaque requête nécessite une clé API. Envoyez-la dans l’en-tête Authorization sous forme de jeton Bearer (ou dans l’en-tête X-API-Key). Gardez votre clé secrète — ne l’intégrez pas dans du code exécuté par le navigateur.

bash
curl -H "Authorization: Bearer ma_live_xxxxxxxxxxxx" \
  "https://api.mailaudit.io/api/v1/tools/mx-check?domain=example.com"

Chaque réponse inclut les en-têtes X-RateLimit-Remaining et X-RateLimit-Daily-Remaining. Lorsqu’une limite est dépassée, vous recevez une réponse HTTP 429 avec un en-tête Retry-After.

Obtenir une clé API

Endpoints

Vérification d’enregistrements MX

GET/tools/mx-check

Interroger les enregistrements MX d’un domaine ainsi que les réglages SPF et DMARC.

Paramètres

domainstringobligatoire
Nom de domaine à vérifier (ex. example.com)

Exemple de requête

bash
curl -H "Authorization: Bearer $MAILAUDIT_API_KEY" \
  "https://api.mailaudit.io/api/v1/tools/mx-check?domain=gmail.com"

Exemple de réponse

json
1{
2  "domain": "gmail.com",
3  "hasMx": true,
4  "records": [
5    {
6      "exchange": "gmail-smtp-in.l.google.com",
7      "priority": 5,
8      "ip": ["142.250.150.27"]
9    },
10    {
11      "exchange": "alt1.gmail-smtp-in.l.google.com",
12      "priority": 10,
13      "ip": ["142.250.141.26"]
14    }
15  ],
16  "hasSpf": true,
17  "spfRecord": "v=spf1 redirect=_spf.google.com",
18  "hasDmarc": true,
19  "dmarcRecord": "v=DMARC1; p=none; sp=quarantine; rua=mailto:..."
20}

Vérification de blacklist

GET/tools/blacklist-check

Contrôler si une adresse IP ou un domaine figure sur les principales blocklists de spam (32 DNSBL).

Paramètres

querystringobligatoire
Adresse IP (ex. 192.168.1.1) ou nom de domaine

Exemple de requête

bash
curl -H "Authorization: Bearer $MAILAUDIT_API_KEY" \
  "https://api.mailaudit.io/api/v1/tools/blacklist-check?query=8.8.8.8"

Exemple de réponse

json
1{
2  "query": "8.8.8.8",
3  "queryType": "ip",
4  "totalChecked": 32,
5  "totalListed": 0,
6  "results": [
7    {
8      "name": "Spamhaus ZEN",
9      "zone": "zen.spamhaus.org",
10      "listed": false,
11      "responseTime": 45
12    },
13    {
14      "name": "Barracuda",
15      "zone": "b.barracudacentral.org",
16      "listed": false,
17      "responseTime": 32
18    }
19    // ...
20  ]
21}

Contrôle de réputation de domaine

GET/tools/reputation

Calcul complet du score de réputation d’un domaine. Vérifie SPF, DKIM, DMARC, enregistrements MX, statut blacklist, support STARTTLS, ancienneté du domaine et reverse DNS.

Paramètres

domainstringobligatoire
Nom de domaine à vérifier (ex. gmail.com)

Exemple de requête

bash
curl -H "Authorization: Bearer $MAILAUDIT_API_KEY" \
  "https://api.mailaudit.io/api/v1/tools/reputation?domain=gmail.com"
Échelle de notation
90-100 = A+
80-89 = A
70-79 = B
60-69 = C
50-59 = D
0-49 = F

Exemple de réponse

json
1{
2  "domain": "gmail.com",
3  "ip": "142.250.150.27",
4  "score": 100,
5  "grade": "A+",
6  "factors": [
7    { "name": "SPF", "status": "pass", "detail": "Policy: present", "impact": 15 },
8    { "name": "DKIM", "status": "warn", "detail": "Not found", "impact": 0 },
9    { "name": "DMARC", "status": "warn", "detail": "Policy: none", "impact": 5 },
10    { "name": "MX Records", "status": "pass", "detail": "5 record(s)", "impact": 10 },
11    { "name": "Blacklists", "status": "pass", "detail": "Clean (39 checked)", "impact": 20 },
12    { "name": "STARTTLS", "status": "pass", "detail": "Supported", "impact": 10 },
13    { "name": "Domain Age", "status": "pass", "detail": "30.3 years", "impact": 10 },
14    { "name": "Reverse DNS", "status": "pass", "detail": "wa-in-f27.1e100.net", "impact": 5 }
15  ],
16  "details": {
17    "mx": { "valid": true, "count": 5, "primary": "gmail-smtp-in.l.google.com" },
18    "spf": { "valid": true, "record": "v=spf1 redirect=_spf.google.com" },
19    "dkim": { "valid": false, "selectors": [] },
20    "dmarc": { "valid": true, "policy": "none", "rua": ["mailto:..."] },
21    "blacklists": { "checked": 10, "listed": 0, "clean": true },
22    "tls": { "valid": true, "starttls": true },
23    "domainAge": { "valid": true, "years": 30.3, "registrationDate": "1995-08-13" },
24    "rdns": { "valid": true, "hostname": "wa-in-f27.1e100.net" }
25  },
26  "checkedAt": "2025-12-03T07:05:46.232Z",
27  "cached": false
28}

Test de délivrabilité e-mail

Créez une adresse de test, envoyez-y votre e-mail depuis le serveur que vous voulez tester, puis interrogez le résultat jusqu’à ce que le statut soit completed (généralement en moins d’une minute). Les adresses de test expirent au bout d’une heure.

POST/test/generate

Crée une nouvelle adresse e-mail de test.

Exemple de requête

bash
curl -X POST -H "Authorization: Bearer $MAILAUDIT_API_KEY" \
  "https://api.mailaudit.io/api/v1/test/generate"

Exemple de réponse

json
1{
2  "testId": "k3v9x2m1qa",
3  "email": "[email protected]",
4  "expiresAt": "2026-09-24T18:44:14.762Z",
5  "checkUrl": "/test/k3v9x2m1qa"
6}
GET/test/{testId}

Renvoie le statut et les résultats d’un test. Statut : pending → processing → completed (ou expired / error). Le score va de 0 à 10.

Paramètres

testIdstringobligatoire
ID du test renvoyé par /test/generate

Exemple de requête

bash
curl -H "Authorization: Bearer $MAILAUDIT_API_KEY" \
  "https://api.mailaudit.io/api/v1/test/k3v9x2m1qa"

Exemple de réponse

json
1{
2  "testId": "k3v9x2m1qa",
3  "status": "completed",
4  "score": 9.2,
5  "createdAt": "2026-09-24T17:44:14.763Z",
6  "receivedAt": "2026-09-24T17:45:02.118Z",
7  "expiresAt": "2026-09-24T18:44:14.762Z",
8  "email": {
9    "from": "[email protected]",
10    "subject": "Our September newsletter",
11    "bounceAddress": null
12  },
13  "checks": {
14    "spf": { "status": "pass", ... },
15    "dkim": { "status": "pass", ... },
16    "dmarc": { "status": "pass", ... },
17    "blacklist": { "status": "pass", ... },
18    "spamassassin": { "status": "pass", ... }
19  }
20}
POST/test/{testId}/recheck

Relance toutes les vérifications sur un e-mail déjà reçu, sans en envoyer un nouveau.

Paramètres

testIdstringobligatoire
ID du test renvoyé par /test/generate

Exemple de réponse

json
1{
2  "success": true,
3  "testId": "k3v9x2m1qa",
4  "message": "Recheck initiated - checks are running"
5}

Boîte mail développeur

Chaque compte dispose de sa propre adresse jetable ([email protected], avec n’importe quel +tag). Les e-mails qui y sont envoyés sont conservés 24 heures et peuvent être lus via l’API, dans le tableau de bord ou via un lien de partage. Utilisez-la dans vos tests de bout en bout à la place d’une vraie boîte mail.

GET/inbox/wait

Attend (long polling, jusqu’à 60 s) l’arrivée d’un message correspondant et le renvoie avec le texte, le HTML, les liens et les codes à usage unique. Renvoie 408 si rien n’arrive à temps.

Paramètres

tagstring
Uniquement les e-mails envoyés à dev-xxxxxx+{tag}@…
timeoutnumber
Secondes d’attente, 1-60 (30 par défaut)
sinceISO 8601
Uniquement les e-mails reçus après ce moment (par défaut : maintenant)

Exemple de requête

bash
1curl -H "Authorization: Bearer $MAILAUDIT_API_KEY" \
2  "https://api.mailaudit.io/api/v1/inbox/address?tag=signup-42"
3# → { "address": "[email protected]", … }
4
5curl -H "Authorization: Bearer $MAILAUDIT_API_KEY" \
6  "https://api.mailaudit.io/api/v1/inbox/wait?tag=signup-42&timeout=60"

Également disponibles :

  • GET /inbox · GET /inbox/address · GET /inbox/messages?tag=&since=
  • GET /inbox/messages/{id} · GET /inbox/messages/{id}/raw · DELETE /inbox/messages/{id}

Exemple de réponse

json
1{
2  "id": "81ab56fe-9546-41a1-b7d1-b0f1a594ad37",
3  "to": "[email protected]",
4  "tag": "signup-42",
5  "from": { "address": "[email protected]", "name": "YourApp" },
6  "subject": "Confirm your email address",
7  "receivedAt": "2026-09-24T19:53:43.624Z",
8  "expiresAt": "2026-09-25T19:53:43.624Z",
9  "links": ["https://yourapp.dev/confirm?t=abc"],
10  "codes": ["482913"],
11  "shareUrl": "https://mailaudit.io/m/UjKgBYNGYXjTaGLe…",
12  "text": "Your code: 482 913 …",
13  "html": "<p>Your code: <b>482 913</b></p>…",
14  "headers": { "subject": "Confirm your email address", … }
15}

L’utiliser depuis un agent IA (MCP)

La même boîte est aussi un serveur MCP : Claude Code, Cursor et d’autres clients MCP peuvent créer des adresses, attendre des e-mails et les lire de manière autonome :

bash
claude mcp add --transport http mailaudit https://api.mailaudit.io/mcp \
  --header "Authorization: Bearer $MAILAUDIT_API_KEY"

Outils : new_address, wait_for_message, list_messages, get_message, extract, share_link, delete_message.

Codes de statut HTTP

CodeStatutDescription
200OKRequête réussie
400Bad RequestParamètre manquant ou invalide
401UnauthorizedClé API manquante, invalide ou révoquée
404Not FoundTest introuvable
429Too Many RequestsLimite de requêtes dépassée (60/minute ou 1 000/jour)
500Internal Server ErrorErreur côté serveur

Réponses d’erreur

En cas d’erreur, la réponse contient un champ error avec la description :

json
{
  "error": "Domain is required"
}

Exemples de code

JavaScript / Node.js

javascript
1// Interroger les enregistrements MX
2const response = await fetch(
3  'https://api.mailaudit.io/api/v1/tools/mx-check?domain=example.com',
4  { headers: { Authorization: `Bearer ${process.env.MAILAUDIT_API_KEY}` } }
5);
6const data = await response.json();
7
8if (data.hasMx) {
9  console.log('Enregistrements MX :', data.records);
10  console.log('SPF:', data.hasSpf ? data.spfRecord : 'Aucun');
11  console.log('DMARC:', data.hasDmarc ? data.dmarcRecord : 'Aucun');
12}

Python

python
1import os
2import requests
3
4# Vérification de blacklist
5response = requests.get(
6    'https://api.mailaudit.io/api/v1/tools/blacklist-check',
7    params={'query': '192.168.1.1'},
8    headers={'Authorization': f"Bearer {os.environ['MAILAUDIT_API_KEY']}"},
9)
10data = response.json()
11
12print(f"Vérifiées : {data['totalChecked']} listes")
13print(f"Listé sur : {data['totalListed']} entrées")
14
15for result in data['results']:
16    if result['listed']:
17        print(f"⚠️  {result['name']}: LISTÉ")

Python - Reputation Check

python
1import os
2import requests
3
4# Contrôle de réputation de domaine
5response = requests.get(
6    'https://api.mailaudit.io/api/v1/tools/reputation',
7    params={'domain': 'example.com'},
8    headers={'Authorization': f"Bearer {os.environ['MAILAUDIT_API_KEY']}"},
9)
10data = response.json()
11
12print(f"Score: {data['score']}/100 ({data['grade']})")
13print("\nFacteurs :")
14for factor in data['factors']:
15    icon = "✅" if factor['status'] == 'pass' else "⚠️" if factor['status'] == 'warn' else "❌"
16    print(f"  {icon} {factor['name']}: {factor['detail']} ({factor['impact']:+d})")

Python - Email deliverability test

python
1import os
2import time
3import requests
4
5# Test de délivrabilité complet
6api = 'https://api.mailaudit.io/api/v1'
7headers = {'Authorization': f"Bearer {os.environ['MAILAUDIT_API_KEY']}"}
8
9test = requests.post(f'{api}/test/generate', headers=headers).json()
10print('Send your email to:', test['email'])
11
12while True:
13    result = requests.get(f"{api}/test/{test['testId']}", headers=headers).json()
14    if result['status'] in ('completed', 'expired', 'error'):
15        break
16    time.sleep(10)
17
18print(f"Status: {result['status']}, score: {result['score']}/10")

PHP

php
1<?php
2// Vérification MX
3$domain = 'example.com';
4$url = "https://api.mailaudit.io/api/v1/tools/mx-check?domain=" . urlencode($domain);
5
6$context = stream_context_create(['http' => [
7    'header' => 'Authorization: Bearer ' . getenv('MAILAUDIT_API_KEY'),
8]]);
9$response = file_get_contents($url, false, $context);
10$data = json_decode($response, true);
11
12if ($data['hasMx']) {
13    foreach ($data['records'] as $mx) {
14        echo "MX: {$mx['exchange']} (priorité: {$mx['priority']})\n";
15    }
16}
17?>

Envie de tester l’API ?

Essayez nos outils dans l’interface web, ou commencez directement à développer avec l’API.