API

Kostenlose API für E-Mail-Prüfungen

Ein Aufruf, ein JSON: Die offene Postwacht-API prüft eine Domain auf SPF, DKIM, DMARC, MX, STARTTLS, MTA-STS und Sperrlisten. Ohne Anmeldung, ohne Antrag, mit Schlüssel aus dem kostenlosen Konto mit höherer Grenze.

Der erste Aufruf

curl https://postwacht.de/api/v1/check/beispiel.de

Die Antwort enthält das Gesamtergebnis und jede einzelne Prüfung:

{
  "domain": "beispiel.de",
  "overall": "warn",
  "checks": [
    {"id": "spf",   "status": "ok",   "title": "SPF-Eintrag", "detail": "…", "data": {…}},
    {"id": "dmarc", "status": "warn", "title": "DMARC-Eintrag", "detail": "p=none …", "data": {…}}
  ],
  "access": {"level": "anonymous", "limit_per_hour": 1, "remaining": 0}
}

overall und jeder status sind ok, warn, fail oder info. Mit dem Header Accept-Language: en kommen Titel und Befunde auf Englisch.

Grenzen

ZugangGrenzeWas du brauchst
Ohne Schlüssel1 Abfrage(n) pro Stunde und Netznichts
Mit Schlüssel60 Abfragen pro Stunde und Kontoein kostenloses Konto, Schlüssel unter API in einem Klick

Jede Antwort enthält X-RateLimit-Limit und X-RateLimit-Remaining. Ist die Grenze erreicht, antwortet die API mit 429 und Retry-After in Sekunden. Auch Antworten aus dem Zwischenspeicher (fünf Minuten je Domain) zählen zur Grenze.

Mit Schlüssel

Lege ein kostenloses Konto an, erzeuge unter API einen Schlüssel und sende ihn im Header mit:

curl https://postwacht.de/api/v1/check/beispiel.de \
  -H "Authorization: Bearer pwk_…"

Beispiele

Shell: Pipeline bricht bei Fehlern ab

STATUS=$(curl -s https://postwacht.de/api/v1/check/beispiel.de \
  -H "Authorization: Bearer $POSTWACHT_KEY" | jq -r .overall)
[ "$STATUS" != "fail" ] || exit 1

Python

import requests

r = requests.get("https://postwacht.de/api/v1/check/beispiel.de",
                 headers={"Authorization": "Bearer pwk_…"}, timeout=30)
r.raise_for_status()
for check in r.json()["checks"]:
    print(check["status"], check["title"], "-", check["detail"])

JavaScript

const res = await fetch("https://postwacht.de/api/v1/check/beispiel.de", {
  headers: { Authorization: "Bearer pwk_…" },
});
const { overall, checks } = await res.json();

Was geprüft wird

Die Prüfung liest nur öffentliche DNS-Daten und verbindet sich kurz mit den Mailservern der Domain. Es wird keine Mail verschickt. Wie jede Prüfung zu lesen ist, steht in den Werkzeugen.

Fair benutzen

Die Test-, Domain- und Webhook-Schnittstellen (Tests per Testmail anlegen, Domains überwachen) schalten wir auf Antrag frei. Alles dazu in der vollständigen Dokumentation.