
# E-Mail-Vorlage in der Vorschau anzeigen

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

Rendert eine gespeicherte Version oder einen nicht gespeicherten Inhalt mit Beispieldaten und liefert die vollständige Nachricht so, wie Empfänger sie sehen würden: das Plattform-Layout, den verpflichtenden Sicherheitsblock und das Plattform-Logo. Nichts wird gespeichert oder versendet. Beispielcode und Beispiellink sind bei jedem Aufruf zufällig. Die Validierung entspricht [dem Speichern eines Entwurfs](put.md).

## Pfadparameter

| Parameter | Beschreibung |
|---|---|
| `family` | E-Mail-Familie, zum Beispiel `verify_email` oder `email_otp` (siehe [E-Mail-Vorlagen auflisten](list.md)). |
| `locale` | Sprachkennung, zum Beispiel `en` oder `de`. |

## Anfrage

Senden Sie entweder `version` oder die Inhaltsfelder, nicht beides.

| Feld | Typ | Beschreibung |
|---|---|---|
| `version` | integer | Eine gespeicherte Version, die gerendert wird (1 oder größer). |
| `subject`, `html`, `text_body`, `from_name` | string | Nicht gespeicherter Inhalt, mit denselben Regeln wie [Entwurf speichern](put.md). |

## Antwort

`200 OK`

```json
{
  "subject": "Confirm your email for Example App",
  "html": "<!doctype html><html lang=\"en\">…</html>",
  "text": "Confirm your email: https://login.example.com/preview/9f2c…",
  "locale": "en"
}
```

`locale` ist die Katalogsprache, die für die eigenen Teile der Plattform verwendet wird.

## 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). |
| 413 | `payload_too_large` | Der Body ist größer als 2 MiB. |
| 422 | `validation_failed` | Sowohl `version` als auch Inhalt wurden gesendet (`conflicts_with_content`), oder der Inhalt besteht die Validierung nicht. |
| 422 | `template_forbidden_construct` | Die Vorlage verwendet ein Liquid-Konstrukt außerhalb der Sandbox. |
| 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`. |

## Beispiel

```bash
curl -X POST https://api.eu.keenauth.com/v1/email-templates/verify_email/en:preview \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{"version":3}'
```

CLI: `keenauth email-templates preview verify_email en --version 3`
