API für Entwickler

Die Spamexx-API: Indikatoren gegen die Bedrohungsdatenbank prüfen und Nachrichten durch die Spam- und Virenprüfung laufen lassen – per API-Key, mit Kontingent aus Ihrem Tarif.

Schnellstart

In drei Schritten zur ersten Antwort:

  1. API-Key erstellen unter Einstellungen → API-Keys (wird nur einmal angezeigt).
  2. Den Schlüssel im Authorization-Header mitsenden.
  3. Eine Anfrage an einen Endpunkt stellen – z. B. den Threat-Lookup:
user@spamexx:~$cat quickstart.sh
curl -X POST https://api.spamexx.com/api/v1/check/lookup \
  -H "Authorization: Bearer sx_ihr_schluessel" \
  -H "Content-Type: application/json" \
  -d '{"type":"domain","value":"example.com"}'

Authentifizierung

Jede Anfrage braucht einen API-Key im Authorization-Header (alternativ X-API-Key). Den Schlüssel erstellen Sie unter Einstellungen → API-Keys.

user@spamexx:~$cat header.txt
Authorization: Bearer sx_ihr_schluessel
Kontingent (Anfragen/Monat) und Rate-Limit (Anfragen/Minute) richten sich nach Ihrem API-Tarif. Ohne gebuchten API-Tarif gilt die kostenlose Stufe. Den aktuellen Verbrauch sehen Sie unter Einstellungen → API-Keys.

Kontingent & Rate-Limit

Pro Mandant gilt ein monatliches Anfrage-Kontingent und ein Rate-Limit pro Minute – beides aus Ihrem API-Tarif. Erschöpftes Kontingent oder überschrittene Rate beantwortet die API mit 429.

Nur erfolgreiche (authentifizierte) Anfragen zählen gegen das Kontingent. Abgelehnte Anfragen (401/403/429) werden nicht gezählt.

POST/api/v1/check/lookupAuth erforderlich

Threat-Lookup

Prüft einen einzelnen Indikator gegen die Spamexx-Bedrohungsdatenbank und liefert Verdikt, Score und Treffer-Flag.

Anfrage-Body (JSON)

FeldBeschreibung
typeIndikatortyp: domain, email, ip, url oder hash.
valueDer zu prüfende Wert (z. B. die Domain, IP oder URL).
user@spamexx:~$cat example.sh
curl -X POST https://api.spamexx.com/api/v1/check/lookup \
  -H "Authorization: Bearer $KEY" \
  -H "Content-Type: application/json" \
  -d '{"type":"domain","value":"example.com"}'

Antwort

user@spamexx:~$cat response.json
{
  "type": "domain",
  "value": "example.com",
  "verdict": "clean",
  "score": 0.0,
  "matched": false
}
POST/api/v1/check/messageAuth erforderlich

Content-Prüfung

Lässt eine eingereichte Nachricht durch die Spam- und Virenprüfung laufen und liefert ein Verdikt (zustellen / Quarantäne / abweisen) samt Score.

Für ein korrektes Ergebnis möglichst die vollständige Roh-Mail mit Headern senden. Eine minimale Nachricht ohne Header kann allein wegen fehlender Standard-Header höher bewertet werden. Der Inhalt wird nur kurzzeitig geprüft und nie gespeichert.

Anfrage-Body (JSON)

FeldBeschreibung
rawKomplette Roh-Mail (RFC-822, Text oder Base64) – empfohlen für die genaueste Bewertung.
from / to / subject / bodyAlternativ einzelne Felder, falls keine Roh-Mail vorliegt.
source_ipOptionale Absender-IP (fließt in die Reputationsbewertung ein).
user@spamexx:~$cat example.sh
curl -X POST https://api.spamexx.com/api/v1/check/message \
  -H "Authorization: Bearer $KEY" \
  -H "Content-Type: application/json" \
  -d '{"from":"absender@example.com","subject":"Hallo","body":"Nachrichtentext"}'

Antwort

user@spamexx:~$cat response.json
{
  "verdict": "deliver",
  "score": 2.1,
  "is_spam": false,
  "is_virus": false
}
GET/api/v1/limitsAuth erforderlich

Tariflimits & Verbrauch

Liefert die dem API-Key zugeordneten Tariflimits je Produktlinie samt aktuellem Verbrauch: API-Kontingent (genutzt/Limit) und Rate, Online/SaaS (Domains & Postfächer genutzt/Limit, Aufbewahrung) sowie Backup/Failover. Nicht gebuchte Linien werden weggelassen.

Dieser Abruf verbraucht KEIN Kontingent (eigenes Limit 60/min). Die verbindliche Durchsetzung erfolgt weiterhin an den Check-Endpunkten (HTTP 429 bei Erschöpfung) – die gemeldeten Verbrauchswerte sind informativ.
user@spamexx:~$cat example.sh
curl https://api.spamexx.com/api/v1/limits \
  -H "Authorization: Bearer $KEY"

Antwort

user@spamexx:~$cat response.json
{
  "tenant_id": "…",
  "period": "2026-06",
  "unlimited": false,
  "api":   { "plan": "Community", "requests": { "used": 0, "max": 5000 }, "remaining": 5000, "rate_per_min": 10 },
  "saas":  { "plan": "Enterprise", "domains": { "used": 1, "max": 50 }, "mailboxes": { "used": 6, "max": 500 }, "retention_days": 365 },
  "spool": { "plan": "Basic", "domains": { "used": 0, "max": 3 }, "spool_retention_hours": 72 }
}

Antwort-Felder

Die Endpunkte liefern ein generisches Verdikt ohne Details zu den eingesetzten Prüfverfahren.

FeldTypBeschreibung
verdictstringLookup: clean / suspicious / spam. Content-Prüfung: deliver / quarantine / reject.
scorenumberLookup: Reputationswert 0–1. Content-Prüfung: aggregierter Prüf-Score.
matchedbooleanNur Lookup: Treffer in der Bedrohungsdatenbank.
is_spambooleanNur Content-Prüfung: als Spam eingestuft.
is_virusbooleanNur Content-Prüfung: als Virus eingestuft.

Fehler

Fehler kommen als JSON mit einem error-Feld; der HTTP-Status zeigt die Kategorie.

StatusBedeutungLösung
401Schlüssel fehlt, ungültig oder widerrufen.Authorization-Header prüfen; ggf. neuen Key erstellen.
403Kein aktiver API-Tarif.API-Tarif buchen (die kostenlose Stufe genügt).
429Rate-Limit oder Monats-Kontingent erreicht.Mit Backoff später wiederholen oder Tarif anheben.
503Prüfung vorübergehend nicht verfügbar.Anfrage später erneut senden.

Best Practices

Vollständige Roh-Mail senden

Für die genaueste Content-Bewertung die komplette Mail mit Headern (raw) senden – minimale Felder ohne Header können höher scoren.

Antworten cachen

Lookups für denselben Indikator kurz zwischenspeichern, um das Kontingent zu schonen.

429 sauber behandeln

Bei Rate-Limit/Kontingent mit exponentiellem Backoff erneut versuchen statt zu hämmern.

Schlüssel schützen

API-Keys nur serverseitig verwenden, nie im Browser/Client einbetten; bei Verdacht sofort widerrufen.

Häufige Fragen

› Welche Indikatortypen unterstützt der Lookup?

domain, email, ip, url und hash.

› Wird mein eingereichter Inhalt gespeichert?

Nein. Der Inhalt wird nur kurzzeitig geprüft und niemals gespeichert oder protokolliert.

› Woher kommt mein Kontingent?

Aus Ihrem API-Tarif (Einstellungen → API-Keys). Ohne gebuchten Tarif gilt die kostenlose Stufe.

› Wie erstelle ich einen API-Key?

Unter Einstellungen → API-Keys. Der Schlüssel wird aus Sicherheitsgründen nur einmal angezeigt.