List email template versions
GET /v1/email-templates/{family}/{locale}/versions · permission email-templates:read
Lists the versions of a slot, newest first, without their content. At most 51 are returned: the last 50 and the published one. The list is not paginated. The ETag header is the slot's newest version; a slot with no versions returns an empty list.
Path parameters
| Parameter | Description |
|---|---|
family |
Email family, for example verify_email or email_otp (see List email templates). |
locale |
Locale tag, for example en or de. |
Response
200 OK with ETag: "3"
{
"data": [
{"version": 3, "status": "draft", "source_version": null, "created_at": "2026-10-19T09:00:00Z", "published_at": null},
{"version": 2, "status": "published", "source_version": null, "created_at": "2026-10-18T14:10:00Z", "published_at": "2026-10-18T14:12:00Z"},
{"version": 1, "status": "archived", "source_version": null, "created_at": "2026-10-17T08:00:00Z", "published_at": "2026-10-17T08:05:00Z"}
],
"list_metadata": {"before": null, "after": null}
}
Errors
| HTTP | code | When |
|---|---|---|
| 404 | not_found |
The family or locale is unknown. |
| 401 | unauthenticated |
The credential is missing, invalid or revoked. |
| 403 | insufficient_permissions |
The credential lacks the required permission. |
| 429 | rate_limited |
The rate limit was exceeded; retry after the Retry-After period. |
| 503 | service_unavailable |
A dependency is temporarily unavailable; retry after the Retry-After period. |
Example
curl https://api.eu.keenauth.com/v1/email-templates/verify_email/en/versions \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
CLI: keenauth email-templates versions list verify_email en