API-Dokumentation

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 erstellen

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

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

API-Schlüssel erhalten

Endpoints

MX-Record-Prüfung

GET/tools/mx-check

MX-Records einer Domain sowie SPF- und DMARC-Einstellungen abfragen.

Parameter

domainstringerforderlich
Der zu prüfende Domainname (z. B. example.com)

Beispielanfrage

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

Beispielantwort

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}

Blacklist-Prüfung

GET/tools/blacklist-check

Prüfen, ob eine IP-Adresse oder Domain auf wichtigen Spam-Blocklisten (32 DNSBL) steht.

Parameter

querystringerforderlich
IP-Adresse (z. B. 192.168.1.1) oder Domainname

Beispielanfrage

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

Beispielantwort

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}

Domain-Reputationsprüfung

GET/tools/reputation

Umfassende Berechnung des Domain-Reputationsscores. Prüft SPF, DKIM, DMARC, MX-Records, Blacklist-Status, STARTTLS-Unterstützung, Domainalter und Reverse DNS.

Parameter

domainstringerforderlich
Der zu prüfende Domainname (z. B. gmail.com)

Beispielanfrage

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

Beispielantwort

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

POST/test/generate

Erstellt eine neue Test-E-Mail-Adresse.

Beispielanfrage

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

Beispielantwort

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}

Liefert Status und Ergebnisse eines Tests. Status: pending → processing → completed (oder expired / error). Der Score liegt zwischen 0 und 10.

Parameter

testIdstringerforderlich
Die von /test/generate zurückgegebene Test-ID

Beispielanfrage

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

Beispielantwort

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

Führt alle Prüfungen für eine bereits empfangene E-Mail erneut aus, ohne dass eine neue gesendet werden muss.

Parameter

testIdstringerforderlich
Die von /test/generate zurückgegebene Test-ID

Beispielantwort

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

GET/inbox/wait

Wartet (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

tagstring
Nur E-Mails an dev-xxxxxx+{tag}@…
timeoutnumber
Wartezeit in Sekunden, 1–60 (Standard: 30)
sinceISO 8601
Nur E-Mails, die nach diesem Zeitpunkt eingegangen sind (Standard: jetzt)

Beispielanfrage

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"

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

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}

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:

bash
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

CodeStatusBeschreibung
200OKAnfrage erfolgreich
400Bad RequestFehlender oder ungültiger Parameter
401UnauthorizedFehlender, ungültiger oder widerrufener API-Schlüssel
404Not FoundTest nicht gefunden
429Too Many RequestsRate Limit überschritten (60/Minute oder 1.000/Tag)
500Internal Server ErrorServerfehler

Fehlerantworten

Im Fehlerfall enthält die Antwort ein error-Feld mit der Fehlerbeschreibung:

json
{
  "error": "Domain ist erforderlich"
}

Code-Beispiele

JavaScript / Node.js

javascript
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

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

python
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

python
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

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.