API-Referenz
Integrieren Sie MailAudit in Ihre eigene Anwendung: DNS-, Blacklist- und Reputationsprüfungen sowie vollständige Tests der E-Mail-Zustellbarkeit über eine REST-API.
API-Schlüssel erforderlich
Kostenlos – im Dashboard erstellenRate Limit
60 Anfragen / Minute, 1.000 / Tag pro Schlüssel
Basis-URL
https://api.mailaudit.io/api/v1
Authentifizierung
Jede Anfrage benötigt einen API-Schlüssel. Senden Sie ihn im Authorization-Header als Bearer-Token (oder im X-API-Key-Header). Halten Sie Ihren Schlüssel geheim – betten Sie ihn nicht in Browser-Code ein.
curl -H "Authorization: Bearer ma_live_xxxxxxxxxxxx" \
"https://api.mailaudit.io/api/v1/tools/mx-check?domain=example.com"Jede Antwort enthält die Header X-RateLimit-Remaining und X-RateLimit-Daily-Remaining. Wird ein Limit überschritten, erhalten Sie HTTP 429 mit einem Retry-After-Header.
Endpoints
MX-Record-Prüfung
/tools/mx-checkMX-Records einer Domain sowie SPF- und DMARC-Einstellungen abfragen.
Parameter
domainstringerforderlichBeispielanfrage
curl -H "Authorization: Bearer $MAILAUDIT_API_KEY" \
"https://api.mailaudit.io/api/v1/tools/mx-check?domain=gmail.com"Beispielantwort
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}Blacklist-Prüfung
/tools/blacklist-checkPrüfen, ob eine IP-Adresse oder Domain auf wichtigen Spam-Blocklisten (32 DNSBL) steht.
Parameter
querystringerforderlichBeispielanfrage
curl -H "Authorization: Bearer $MAILAUDIT_API_KEY" \
"https://api.mailaudit.io/api/v1/tools/blacklist-check?query=8.8.8.8"Beispielantwort
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}Domain-Reputationsprüfung
/tools/reputationUmfassende Berechnung des Domain-Reputationsscores. Prüft SPF, DKIM, DMARC, MX-Records, Blacklist-Status, STARTTLS-Unterstützung, Domainalter und Reverse DNS.
Parameter
domainstringerforderlichBeispielanfrage
curl -H "Authorization: Bearer $MAILAUDIT_API_KEY" \
"https://api.mailaudit.io/api/v1/tools/reputation?domain=gmail.com"Bewertungsskala
Beispielantwort
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 der E-Mail-Zustellbarkeit
Erstellen Sie eine Testadresse, senden Sie Ihre E-Mail von dem Server, den Sie testen möchten, an diese Adresse und fragen Sie dann das Ergebnis ab, bis der Status „completed“ lautet (in der Regel innerhalb einer Minute). Testadressen laufen nach einer Stunde ab.
/test/generateErstellt eine neue Test-E-Mail-Adresse.
Beispielanfrage
curl -X POST -H "Authorization: Bearer $MAILAUDIT_API_KEY" \
"https://api.mailaudit.io/api/v1/test/generate"Beispielantwort
1{
2 "testId": "k3v9x2m1qa",
3 "email": "[email protected]",
4 "expiresAt": "2026-09-24T18:44:14.762Z",
5 "checkUrl": "/test/k3v9x2m1qa"
6}/test/{testId}Liefert Status und Ergebnisse eines Tests. Status: pending → processing → completed (oder expired / error). Der Score liegt zwischen 0 und 10.
Parameter
testIdstringerforderlichBeispielanfrage
curl -H "Authorization: Bearer $MAILAUDIT_API_KEY" \
"https://api.mailaudit.io/api/v1/test/k3v9x2m1qa"Beispielantwort
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}/recheckFührt alle Prüfungen für eine bereits empfangene E-Mail erneut aus, ohne dass eine neue gesendet werden muss.
Parameter
testIdstringerforderlichBeispielantwort
1{
2 "success": true,
3 "testId": "k3v9x2m1qa",
4 "message": "Recheck initiated - checks are running"
5}Entwickler-Postfach
Jedes Konto hat eine eigene Wegwerfadresse ([email protected], mit beliebigem +tag). An sie gesendete E-Mails werden 24 Stunden lang aufbewahrt und können über die API, im Dashboard oder über einen Freigabelink gelesen werden. Verwenden Sie sie in End-to-End-Tests anstelle eines echten Postfachs.
/inbox/waitWartet (Long-Polling, bis zu 60 s), bis eine passende Nachricht eintrifft, und gibt sie mit Text, HTML, Links und Einmalcodes zurück. Gibt 408 zurück, wenn in dieser Zeit nichts eintrifft.
Parameter
tagstringtimeoutnumbersinceISO 8601Beispielanfrage
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"Außerdem verfügbar:
- GET /inbox · GET /inbox/address · GET /inbox/messages?tag=&since=
- GET /inbox/messages/{id} · GET /inbox/messages/{id}/raw · DELETE /inbox/messages/{id}
Beispielantwort
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}Nutzung durch einen KI-Agenten (MCP)
Dasselbe Postfach ist auch ein MCP-Server, sodass Claude Code, Cursor und andere MCP-Clients selbstständig Adressen erstellen, auf E-Mails warten und sie lesen können:
claude mcp add --transport http mailaudit https://api.mailaudit.io/mcp \
--header "Authorization: Bearer $MAILAUDIT_API_KEY"Tools: new_address, wait_for_message, list_messages, get_message, extract, share_link, delete_message.
HTTP-Statuscodes
| Code | Status | Beschreibung |
|---|---|---|
| 200 | OK | Anfrage erfolgreich |
| 400 | Bad Request | Fehlender oder ungültiger Parameter |
| 401 | Unauthorized | Fehlender, ungültiger oder widerrufener API-Schlüssel |
| 404 | Not Found | Test nicht gefunden |
| 429 | Too Many Requests | Rate Limit überschritten (60/Minute oder 1.000/Tag) |
| 500 | Internal Server Error | Serverfehler |
Fehlerantworten
Im Fehlerfall enthält die Antwort ein error-Feld mit der Fehlerbeschreibung:
{
"error": "Domain ist erforderlich"
}Code-Beispiele
JavaScript / Node.js
1// MX-Records abfragen
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('MX-Records:', data.records);
10 console.log('SPF:', data.hasSpf ? data.spfRecord : 'Keine');
11 console.log('DMARC:', data.hasDmarc ? data.dmarcRecord : 'Keine');
12}Python
1import os
2import requests
3
4# Blacklist-Prüfung
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"Geprüft: {data['totalChecked']} Listen")
13print(f"Gelistet auf: {data['totalListed']} Einträgen")
14
15for result in data['results']:
16 if result['listed']:
17 print(f"⚠️ {result['name']}: GELISTET")Python - Reputation Check
1import os
2import requests
3
4# Domain-Reputationsprüfung
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("\nFaktoren:")
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# Vollständiger Zustellbarkeitstest
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// MX-Prüfung
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ät: {$mx['priority']})\n";
15 }
16}
17?>Sie möchten die API ausprobieren?
Testen Sie unsere Tools im Webinterface oder starten Sie direkt mit der API-Integration.