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:
- API-Key erstellen unter Einstellungen → API-Keys (wird nur einmal angezeigt).
- Den Schlüssel im Authorization-Header mitsenden.
- Eine Anfrage an einen Endpunkt stellen – z. B. den Threat-Lookup:
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.
Authorization: Bearer sx_ihr_schluesselKontingent & 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.
/api/v1/check/lookupAuth erforderlichThreat-Lookup
Prüft einen einzelnen Indikator gegen die Spamexx-Bedrohungsdatenbank und liefert Verdikt, Score und Treffer-Flag.
Anfrage-Body (JSON)
| Feld | Beschreibung |
|---|---|
| type | Indikatortyp: domain, email, ip, url oder hash. |
| value | Der zu prüfende Wert (z. B. die Domain, IP oder URL). |
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
{
"type": "domain",
"value": "example.com",
"verdict": "clean",
"score": 0.0,
"matched": false
}/api/v1/check/messageAuth erforderlichContent-Prüfung
Lässt eine eingereichte Nachricht durch die Spam- und Virenprüfung laufen und liefert ein Verdikt (zustellen / Quarantäne / abweisen) samt Score.
Anfrage-Body (JSON)
| Feld | Beschreibung |
|---|---|
| raw | Komplette Roh-Mail (RFC-822, Text oder Base64) – empfohlen für die genaueste Bewertung. |
| from / to / subject / body | Alternativ einzelne Felder, falls keine Roh-Mail vorliegt. |
| source_ip | Optionale Absender-IP (fließt in die Reputationsbewertung ein). |
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
{
"verdict": "deliver",
"score": 2.1,
"is_spam": false,
"is_virus": false
}/api/v1/limitsAuth erforderlichTariflimits & 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.
curl https://api.spamexx.com/api/v1/limits \
-H "Authorization: Bearer $KEY"Antwort
{
"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.
| Feld | Typ | Beschreibung |
|---|---|---|
| verdict | string | Lookup: clean / suspicious / spam. Content-Prüfung: deliver / quarantine / reject. |
| score | number | Lookup: Reputationswert 0–1. Content-Prüfung: aggregierter Prüf-Score. |
| matched | boolean | Nur Lookup: Treffer in der Bedrohungsdatenbank. |
| is_spam | boolean | Nur Content-Prüfung: als Spam eingestuft. |
| is_virus | boolean | Nur Content-Prüfung: als Virus eingestuft. |
Fehler
Fehler kommen als JSON mit einem error-Feld; der HTTP-Status zeigt die Kategorie.
| Status | Bedeutung | Lösung |
|---|---|---|
| 401 | Schlüssel fehlt, ungültig oder widerrufen. | Authorization-Header prüfen; ggf. neuen Key erstellen. |
| 403 | Kein aktiver API-Tarif. | API-Tarif buchen (die kostenlose Stufe genügt). |
| 429 | Rate-Limit oder Monats-Kontingent erreicht. | Mit Backoff später wiederholen oder Tarif anheben. |
| 503 | Prü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.