
# Previsualizar una plantilla de correo

`POST /v1/email-templates/{family}/{locale}:preview` · permiso `email-templates:write` · plan Startup y superiores

Renderiza una versión guardada, o un contenido que todavía no ha guardado, con datos de ejemplo, y devuelve el mensaje completo tal como lo verían los destinatarios: el diseño de la plataforma, el bloque de seguridad obligatorio y la marca de la plataforma. No se guarda ni se envía nada. El código y el enlace de ejemplo son aleatorios en cada llamada. La validación es la misma que al [guardar un borrador](put.md).

## Parámetros de ruta

| Parámetro | Descripción |
|---|---|
| `family` | Familia de correo, por ejemplo `verify_email` o `email_otp` (consulte [Listar plantillas de correo](list.md)). |
| `locale` | Etiqueta de idioma, por ejemplo `en` o `de`. |

## Solicitud

Envíe `version` o los campos de contenido, no ambos.

| Campo | Tipo | Descripción |
|---|---|---|
| `version` | integer | Una versión guardada que se va a renderizar (1 o mayor). |
| `subject`, `html`, `text_body`, `from_name` | string | Contenido no guardado, con las mismas reglas que [guardar un borrador](put.md). |

## Respuesta

`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` es el idioma del catálogo usado para las partes propias de la plataforma.

## Errores

| HTTP | code | Cuándo |
|---|---|---|
| 400 | `unknown_field` | El cuerpo tiene un campo desconocido o no es un objeto JSON. |
| 404 | `not_found` | La familia o el idioma no existe, o la versión no existe. |
| 403 | `plan_feature_unavailable` | El plan del entorno no incluye plantillas de correo personalizadas (Startup y superiores; `required_plan` indica cuál). |
| 413 | `payload_too_large` | El cuerpo supera los 2 MiB. |
| 422 | `validation_failed` | Se enviaron a la vez `version` y contenido (`conflicts_with_content`), o el contenido no supera la validación. |
| 422 | `template_forbidden_construct` | La plantilla usa una construcción de Liquid fuera del sandbox. |
| 401 | `unauthenticated` | La credencial falta, no es válida o ha sido revocada. |
| 403 | `insufficient_permissions` | La credencial no tiene el permiso requerido. |
| 429 | `rate_limited` | Se superó el límite de frecuencia; reintente después del periodo indicado en `Retry-After`. |
| 503 | `service_unavailable` | Una dependencia no está disponible temporalmente; reintente después del periodo indicado en `Retry-After`. |

## Ejemplo

```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`
