MailAudit
API‑dokumentation

API‑referens

Integrera MailAudit i din egen applikation: DNS-, svartlist- och ryktekontroller samt kompletta test av e‑postleverans via ett REST API.

Begränsning

60 förfrågningar/minut, 1 000/dag per nyckel

Bas‑URL

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

Autentisering

Varje förfrågan kräver en API-nyckel. Skicka den i headern Authorization som Bearer-token (eller i headern X-API-Key). Håll nyckeln hemlig – bädda inte in den i kod som körs i webbläsaren.

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

Varje svar innehåller headrarna X-RateLimit-Remaining och X-RateLimit-Daily-Remaining. När en gräns överskrids får du HTTP 429 med headern Retry-After.

Skaffa en API-nyckel

Endpoints

MX‑kontroll

GET/tools/mx-check

Hämta en domäns MX‑poster samt SPF- och DMARC‑inställningar.

Parametrar

domainstringobligatorisk
Domännamnet som ska kontrolleras (t.ex. example.com)

Exempel på förfrågan

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

Exempel på svar

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}

Svartlistkontroll

GET/tools/blacklist-check

Kontrollera om en IP-adress eller domän finns på stora spamblocklistor (32 DNSBL).

Parametrar

querystringobligatorisk
IP‑adress (t.ex. 192.168.1.1) eller domännamn

Exempel på förfrågan

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

Exempel på svar

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}

Kontroll av domänrykte

GET/tools/reputation

Fullständig beräkning av domänens ryktespoäng. Kontrollerar SPF, DKIM, DMARC, MX‑poster, svartliststatus, STARTTLS‑stöd, domänålder och reverse DNS.

Parametrar

domainstringobligatorisk
Domännamnet som ska kontrolleras (t.ex. gmail.com)

Exempel på förfrågan

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

Exempel på svar

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 av e‑postleverans

Skapa en testadress, skicka ditt mejl till den från servern du vill testa och fråga sedan efter resultatet tills statusen är completed (vanligtvis inom en minut). Testadresser går ut efter en timme.

POST/test/generate

Skapa en ny testadress.

Exempel på förfrågan

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

Exempel på svar

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}

Hämta status och resultat för ett test. Status: pending → processing → completed (eller expired / error). Poängen är 0–10.

Parametrar

testIdstringobligatorisk
Test-ID som returneras av /test/generate

Exempel på förfrågan

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

Exempel på svar

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

Kör alla kontroller igen på ett mejl som redan har tagits emot, utan att skicka ett nytt.

Parametrar

testIdstringobligatorisk
Test-ID som returneras av /test/generate

Exempel på svar

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

Utvecklarinkorg

Varje konto har en egen engångsadress ([email protected], valfri +tagg). Mejl som skickas dit sparas i 24 timmar och kan läsas via API:et, i kontrollpanelen eller via en delningslänk. Använd den i end-to-end-tester i stället för en riktig brevlåda.

GET/inbox/wait

Väntar (long-poll, upp till 60 s) tills ett matchande meddelande kommer och returnerar det med text, HTML, länkar och engångskoder. Returnerar 408 om inget kommer i tid.

Parametrar

tagstring
Endast mejl som skickats till dev-xxxxxx+{tag}@…
timeoutnumber
Antal sekunder att vänta, 1–60 (standard 30)
sinceISO 8601
Endast mejl som tagits emot efter denna tidpunkt (standard: nu)

Exempel på förfrågan

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"

Finns också:

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

Exempel på svar

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}

Använd den från en AI-agent (MCP)

Samma inkorg är en MCP-server, så Claude Code, Cursor och andra MCP-klienter kan själva skapa adresser, vänta på mejl och läsa dem:

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

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

HTTP‑statuskoder

KodStatusBeskrivning
200OKLyckad förfrågan
400Bad RequestSaknad eller ogiltig parameter
401UnauthorizedAPI-nyckel saknas, är ogiltig eller har återkallats
404Not FoundTestet hittades inte
429Too Many RequestsGränsen för antal förfrågningar har överskridits (60/minut eller 1 000/dag)
500Internal Server ErrorServerfel

Felsvar

Vid fel innehåller svaret ett error-fält med felbeskrivning:

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

Kodexempel

JavaScript / Node.js

javascript
1// Hämta MX‑poster
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‑poster:', data.records);
10  console.log('SPF:', data.hasSpf ? data.spfRecord : 'Ingen');
11  console.log('DMARC:', data.hasDmarc ? data.dmarcRecord : 'Ingen');
12}

Python

python
1import os
2import requests
3
4# Svartlistkontroll
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"Kontrollerade: {data['totalChecked']} listor")
13print(f"Listad på: {data['totalListed']} platser")
14
15for result in data['results']:
16    if result['listed']:
17        print(f"⚠️  {result['name']}: LISTAD")

Python - Reputation Check

python
1import os
2import requests
3
4# Kontroll av domänrykte
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("\nFaktorer:")
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# Komplett leveranstest
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‑kontroll
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']} (prioritet: {$mx['priority']})\n";
15    }
16}
17?>

Vill du testa API:et?

Prova våra verktyg i webbgränssnittet eller börja utveckla direkt mot API:et.