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:
- Er muss in der Liquid-Sandbox mit Beispieldaten gerendert werden können.
- Das HTML muss ausgeglichen sein.
- Der Code oder Link der Familie (siehe
requiresin der Liste) muss sowohl im HTML als auch im Klartextteil vorkommen. - Links dürfen nur auf Plattform-Hosts zeigen.
- Größenbeschränkungen gelten.
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