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.
Clé API requise
Gratuite — créez-en une dans le tableau de bordLimite 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.
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.
Endpoints
Vérification d’enregistrements MX
/tools/mx-checkInterroger les enregistrements MX d’un domaine ainsi que les réglages SPF et DMARC.
Paramètres
domainstringobligatoireExemple de requête
curl -H "Authorization: Bearer $MAILAUDIT_API_KEY" \
"https://api.mailaudit.io/api/v1/tools/mx-check?domain=gmail.com"Exemple de réponse
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
/tools/blacklist-checkContrôler si une adresse IP ou un domaine figure sur les principales blocklists de spam (32 DNSBL).
Paramètres
querystringobligatoireExemple de requête
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
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
/tools/reputationCalcul 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
domainstringobligatoireExemple de requête
curl -H "Authorization: Bearer $MAILAUDIT_API_KEY" \
"https://api.mailaudit.io/api/v1/tools/reputation?domain=gmail.com"Échelle de notation
Exemple de réponse
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.
/test/generateCrée une nouvelle adresse e-mail de test.
Exemple de requête
curl -X POST -H "Authorization: Bearer $MAILAUDIT_API_KEY" \
"https://api.mailaudit.io/api/v1/test/generate"Exemple de réponse
1{
2 "testId": "k3v9x2m1qa",
3 "email": "[email protected]",
4 "expiresAt": "2026-09-24T18:44:14.762Z",
5 "checkUrl": "/test/k3v9x2m1qa"
6}/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
testIdstringobligatoireExemple de requête
curl -H "Authorization: Bearer $MAILAUDIT_API_KEY" \
"https://api.mailaudit.io/api/v1/test/k3v9x2m1qa"Exemple de réponse
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}/test/{testId}/recheckRelance toutes les vérifications sur un e-mail déjà reçu, sans en envoyer un nouveau.
Paramètres
testIdstringobligatoireExemple de réponse
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.
/inbox/waitAttend (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
tagstringtimeoutnumbersinceISO 8601Exemple de requête
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
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 :
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
| Code | Statut | Description |
|---|---|---|
| 200 | OK | Requête réussie |
| 400 | Bad Request | Paramètre manquant ou invalide |
| 401 | Unauthorized | Clé API manquante, invalide ou révoquée |
| 404 | Not Found | Test introuvable |
| 429 | Too Many Requests | Limite de requêtes dépassée (60/minute ou 1 000/jour) |
| 500 | Internal Server Error | Erreur côté serveur |
Réponses d’erreur
En cas d’erreur, la réponse contient un champ error avec la description :
{
"error": "Domain is required"
}Exemples de code
JavaScript / Node.js
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
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
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
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
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.