E-Mail-Vorlagen-Entwurf speichern

PUT /v1/email-templates/{family}/{locale} · Berechtigung email-templates:write · Startup-Plan und höher

Speichert den Inhalt als neue Entwurfsversion. Die veröffentlichte Version ändert sich erst, wenn Sie den Entwurf veröffentlichen.

If-Match ist erforderlich und enthält die neueste Version, die Sie gelesen haben (das ETag von abrufen oder Versionen auflisten). Für einen Slot ohne Versionen senden Sie If-Match: "0"; * passt nicht auf einen leeren Slot. Eine Abweichung liefert 412.

Vor dem Speichern durchläuft der Inhalt dieselben Prüfungen wie ein echter Versand:

Ein Slot behält neben der veröffentlichten Version höchstens 50 Versionen; ältere Entwürfe werden verworfen.

Pfadparameter

Parameter Beschreibung
family E-Mail-Familie, zum Beispiel verify_email oder email_otp (siehe E-Mail-Vorlagen auflisten).
locale Sprachkennung, zum Beispiel en oder de.

Anfrage

Feld Typ Pflicht Beschreibung
subject string ja Liquid, Klartext, 1 bis 200 Zeichen, keine Zeilenumbrüche.
html string ja Liquid-HTML-Fragment, höchstens 256 KiB. Die Plattform fügt das Layout hinzu.
text_body string ja Liquid-Klartextteil, höchstens 64 KiB.
from_name string nein Anzeigename des Absenders, höchstens 64 Zeichen, keine Zeilenumbrüche. Leer oder fehlend: Der Name der Anwendung oder Umgebung wird verwendet.

Antwort

200 OK mit dem neuen Entwurf und ETag auf seine Version gesetzt.

{
  "family": "verify_email",
  "locale": "en",
  "version": 3,
  "status": "draft",
  "subject": "Confirm your email for {{ application.name }}",
  "html": "<p>Hi,</p><p><a href=\"{{ link }}\">Confirm your email</a></p>",
  "text_body": "Confirm your email: {{ link }}",
  "from_name": null,
  "source_version": null,
  "created_at": "2026-10-19T09:00:00Z",
  "published_at": null,
  "latest_version": 3,
  "published_version": 2
}

Fehler

HTTP code Wann
400 unknown_field Der Body enthält ein unbekanntes Feld oder ist kein JSON-Objekt.
404 not_found Familie oder Sprache ist unbekannt, oder die Version existiert nicht.
403 plan_feature_unavailable Der Plan der Umgebung enthält keine eigenen E-Mail-Vorlagen (Startup und höher; required_plan nennt den nötigen Plan).
412 precondition_failed If-Match ist nicht die neueste Version (jemand hat zwischenzeitlich gespeichert) oder ist * bei einem leeren Slot.
413 payload_too_large Der Body ist größer als 2 MiB.
428 precondition_required If-Match fehlt.
422 validation_failed Der Inhalt besteht die Validierung nicht; errors[] nennt jedes Feld (/subject, /html, /text_body, /from_name, /family) und seine Regel.
422 template_forbidden_construct Die Vorlage verwendet ein Liquid-Konstrukt außerhalb der Sandbox (zum Beispiel {% include %}); errors[] nennt das Feld.
401 unauthenticated Die Anmeldeinformation fehlt, ist ungültig oder widerrufen.
403 insufficient_permissions Der Anmeldeinformation fehlt die erforderliche Berechtigung.
429 rate_limited Das Ratenlimit wurde überschritten; wiederholen Sie nach der Zeit aus Retry-After.
503 service_unavailable Eine Abhängigkeit ist vorübergehend nicht verfügbar; wiederholen Sie nach der Zeit aus Retry-After.

Validierungsregeln in errors[] sind unter anderem required, too_long, invalid, unbalanced_html, missing_code, missing_link, missing_code_or_link, template_render_failed, template_too_large und family_not_available.

Beispiel

curl -X PUT https://api.eu.keenauth.com/v1/email-templates/verify_email/en \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -H 'If-Match: "2"' \
  -d '{"subject":"Confirm your email for {{ application.name }}","html":"<p><a href=\"{{ link }}\">Confirm your email</a></p>","text_body":"Confirm your email: {{ link }}"}'

CLI: keenauth email-templates put verify_email en --if-match '"2"' --data @template.json