メールテンプレートの下書きを保存

PUT /v1/email-templates/{family}/{locale} · 権限 email-templates:write · Startup プラン以上

内容を新しい下書きバージョンとして保存します。下書きを公開するまで、公開済みのバージョンは変わりません。

If-Match は必須で、読み取った最新バージョンを指定します(取得またはバージョン一覧の ETag)。まだバージョンがないスロットには If-Match: "0" を送信してください。* は空のスロットには一致しません。一致しない場合は 412 が返されます。

保存する前に、内容は実際の送信と同じチェックを通過する必要があります:

スロットは公開済みのバージョンに加えて最大 50 件のバージョンを保持します。それより古い下書きは削除されます。

パスパラメーター

パラメーター 説明
family メールファミリー。例: verify_email または email_otp(メールテンプレートを一覧表示を参照)。
locale ロケールタグ。例: en または de。

リクエスト

フィールド 型 必須 説明
subject string はい Liquid、プレーンテキスト、1〜200 文字、改行なし。
html string はい Liquid の HTML 断片、最大 256 KiB。レイアウトはプラットフォームが追加します。
text_body string はい Liquid のプレーンテキスト本文、最大 64 KiB。
from_name string いいえ 送信者の表示名、最大 64 文字、改行なし。空または省略時はアプリケーション名または環境名を使用します。

レスポンス

200 OK。新しい下書きと、そのバージョンに設定された ETag を返します。

{
  "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
}

エラー

HTTP code 発生条件
400 unknown_field 本文に未知のフィールドがあるか、JSON オブジェクトではありません。
404 not_found ファミリーまたはロケールが不明、またはバージョンが存在しません。
403 plan_feature_unavailable 環境のプランにカスタムメールテンプレートが含まれていません(Startup 以上。必要なプランは required_plan に示されます)。
412 precondition_failed If-Match が最新バージョンではない(その間に別のユーザーが保存した)、または空のスロットに * を指定しました。
413 payload_too_large 本文が 2 MiB を超えています。
428 precondition_required If-Match がありません。
422 validation_failed 内容が検証に失敗しました。errors[] に各フィールド(/subject、/html、/text_body、/from_name、/family)と規則が示されます。
422 template_forbidden_construct テンプレートがサンドボックス外の Liquid 構文を使用しています(例: {% include %})。errors[] にフィールドが示されます。
401 unauthenticated 資格情報がない、無効、または取り消されています。
403 insufficient_permissions 資格情報に必要な権限がありません。
429 rate_limited レート制限を超えました。Retry-After の期間が過ぎてから再試行してください。
503 service_unavailable 依存先が一時的に利用できません。Retry-After の期間が過ぎてから再試行してください。

errors[] に含まれる検証規則は、required、too_long、invalid、unbalanced_html、missing_code、missing_link、missing_code_or_link、template_render_failed、template_too_large、family_not_available です。

例

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