---
title: "List"
method: GET
path: "/email-templates"
tags: ["email-templates"]
---

# List

`GET /email-templates`

## Request

- Base URL: `https://api.instruxi.dev/api/v1/enforcer`
- URL: `https://api.instruxi.dev/api/v1/enforcer/email-templates`
- Auth: one of:
  - API key in header `Authorization`
  - API key in header `X-API-Key`

Templates visible to the caller: tenant admins see the system defaults plus their own tenant's overrides; platform admins see the system defaults plus ONE tenant's overrides — their own by default, tenant_id for another, or every tenant's with all_tenants=true. Filters only narrow that scope; total counts the rows matching every filter. Templates carry no locale, so there is no locale filter. Unknown format values match nothing; an unknown sort falls back to the default order (template_id A-Z, tenant override before the system default).

## Query parameters

- `q` string
- `format` 'html' | 'text'
- `sort` 'template' | 'subject' | 'created' | 'updated'
- `sort_dir` 'asc' | 'desc'
- `limit` integer
- `offset` integer
- `tenant_id` string, uuid
- `all_tenants` boolean

## Response `200`

OK

- InternalDeliveryHttpHandlerTemplatePageResponse
  - `data` EnforcerV3InternalDomainEmailtemplateTemplate[]
    - `body_template` string
    - `created_at` string
    - `format` string
    - `id` string
    - `subject` string
    - `template_id` string
    - `tenant_id` string: nil = system default
    - `updated_at` string
  - `limit` integer
  - `offset` integer
  - `success` boolean
  - `total` integer

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: forbidden: tenant_id/all_tenants beyond your own tenant without the cross_tenant grant
- `500`: Internal Server Error

---

[API](https://skmtc.dev/instruxi/apis/enforcer-api.md) · [All operations](https://skmtc.dev/instruxi/apis/enforcer-api/llms.txt) · [OpenAPI document](https://skmtc.dev/instruxi/apis/enforcer-api/revisions/fa82bc1becc0?raw)
