Öffentliche Endpunkte
Diese Routen sind öffentlich zugänglich und werden üblicherweise über Links in E-Mails oder eingebettete Formulare aufgerufen.
Diese Routen sind öffentlich zugänglich und werden üblicherweise über Links in E-Mails oder eingebettete Formulare aufgerufen.
Health-Check
GET /api/v1/health
Tracking
GET /t/o/:emailSendId(Öffnungs-Pixel)GET /t/c/:emailSendId/:encodedUrl(Klick-Weiterleitung + Tracking)
Abmeldung
POST /unsub/:token(One-Click-Abmeldung nach RFC 8058)GET /unsub/verify/:token(Token validieren und Seitenkontext abrufen)
Präferenzcenter
GET /prefs/verify/:tokenPOST /prefs/update/:token
Double Opt-in für Kontakte
GET /confirm/doi/verify?token=...POST /confirm/doi?token=...
Formularübermittlung
POST /forms/:formId
Kampagnen-Archiv
GET /archive/:token— liefert den archivierten HTML-Snapshot einer versendeten Kampagne
Öffentlicher Endpunkt für „Im Browser ansehen“-Links. Liefert den Kampagneninhalt so, wie er zum Sendezeitpunkt aussah.
200 OK — Erfolgs-Bodys verwenden den Action-Mode-Envelope { "ok": true, "data": { ... } }:
{
"ok": true,
"data": {
"html": "<html>...</html>",
"subject": "Our biggest sale of the year",
"sentAt": 1741616400000,
"organizationName": "Acme Inc."
}
}
sentAt ist ein Unix-Zeitstempel in Millisekunden (eine Zahl), kein ISO-String.
404 Not Found — das Token passt zu keiner archivierten Kampagne. Fehlschläge verwenden den festgelegten Fehler-Envelope:
{
"error": {
"category": "not_found",
"message": "Archive not found",
"data": { "reason": "archive_not_found" }
}
}
Das Archiv-Token ist pro Kampagne eindeutig und im „Im Browser ansehen“-Link der E-Mail enthalten. Archiv-Endpunkte sind rate-limitiert und CORS-fähig. Erfolgreiche Antworten setzen Cache-Control: public, max-age=3600.
Vorschau über Freigabelink
GET /share/:token— liefert den HTML-Snapshot einer freigegebenen Vorschau einer E-Mail-Vorlage
Öffentlicher Endpunkt für ablaufende Freigabelinks, die im E-Mail-Editor erstellt wurden. Liefert den E-Mail-Inhalt so, wie er beim Erstellen des Links aussah. Links laufen nach 48 Stunden ab.
Antworten:
200 OK— gültiger Freigabelink. Erfolgs-Bodys verwenden den Action-Mode-Envelope{ "ok": true, "data": { ... } }:
{
"ok": true,
"data": {
"html": "<html>...</html>",
"subject": "Welcome to our product",
"previewText": "Here's what you need to know",
"organizationName": "Acme Inc.",
"expiresAt": 1742486400000
}
}
expiresAt ist ein Unix-Zeitstempel in Millisekunden (eine Zahl).
404 Not Found— das Token ist ungültig oder der Link wurde widerrufen. Der festgelegte Fehler-Envelope trägtcategory: "not_found"unddata.reason: "share_link_not_found":
{
"error": {
"category": "not_found",
"message": "Share link not found",
"data": { "reason": "share_link_not_found" }
}
}
- Abgelaufener Link (48-Stunden-Fenster verstrichen) —
data.reasonistexpired:
{
"error": {
"category": "not_found",
"message": "This share link has expired",
"data": { "reason": "expired" }
}
}
Der Ablauf-Fall wird auf HTTP 404 (not_found) abgebildet, nicht auf 410 Gone — die Hülle leitet den Status aus der Fehlerkategorie ab und kennt keine Zuordnung zu 410. Unterscheiden Sie anhand von data.reason: "expired" statt anhand des Statuscodes.
Das Freigabe-Token ist eine 24 Zeichen lange Zufallszeichenkette. Endpunkte für Freigabelinks setzen Cache-Control: no-store (anders als das Archiv, das eine Stunde lang cachebar ist), da der Inhalt abläuft.
Eingehende MTA-Callbacks
Diese Routen liegen im selben HTTP-Router, sind aber Server-zu-Server-Callbacks der mitgelieferten MTA- und IMAP-Dienste und keine Browser- oder E-Mail-Link-Abläufe. Sie werden auf Transportebene authentifiziert (Shared Secret / HMAC), allgemeine Clients sollten sie daher nicht aufrufen.
POST /webhooks/mta-mailbox— eingehende Postbox-Zustellung (persönliche E-Mail) vom MTA. Siehe Postbox-Architektur.POST /webhooks/mta-verify-credential— Verifizierung von App-Passwörtern für die SMTP-Einlieferung über den MTA und die IMAP/SMTP-Client-Authentifizierung (HMAC-signiert). Siehe Postbox-Architektur.
Der Callback für Bounce-/Beschwerde-/IP-Zustellereignisse POST /webhooks/mta ist auf der Seite Webhooks dokumentiert.
Hinweise
- CORS ist überall dort aktiviert, wo es für browserbasierte Abläufe erforderlich ist
- Öffentliche Endpunkte werden pro IP rate-limitiert (empfängerbezogene Token-Endpunkte wie Archiv/Freigabe/Abmeldung werden nach IP+Token geschlüsselt)
- Tokenbasierte Endpunkte liefern für ungültige/abgelaufene Token strukturiertes JSON zurück