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

# List templates

`GET /templates`

Get a paginated list of email templates.

This endpoint uses **offset pagination** (`page` / `pageSize`), not the cursor pagination used by `GET /contacts`.

## Query parameters

- `page` integer
- `pageSize` integer
- `type` 'TRANSACTIONAL' | 'MARKETING' | 'HEADLESS'
- `search` string
- `sort` 'name' | 'createdAt' | 'updatedAt'
- `dir` 'asc' | 'desc'

## Response `200`

List of templates

- object
  - `data` Template[]
    - `id` string
    - `name` string
    - `description` string, nullable
    - `subject` string
    - `body` string — HTML content with `{{variable}}` placeholders.
    - `from` string, email — Sender address. Must belong to a verified domain.
    - `fromName` string, nullable
    - `replyTo` string, email, nullable
    - `type` 'TRANSACTIONAL' | 'MARKETING' | 'HEADLESS'
    - `projectId` string
    - `createdAt` string, date-time
    - `updatedAt` string, date-time
  - `total` integer — Total templates matching the filters, across all pages.
  - `page` integer
  - `pageSize` integer
  - `totalPages` integer

## Other responses

- `401` — Missing or invalid API key.

## Changes

- **2026-08-09** `a13aa5345f8e` — 3 warning, 7 info
  - deleted the `query` request parameter `cursor`
  - deleted the `query` request parameter `limit`
  - removed the optional property `templates` from the response with the `200` status
  - added the new optional `query` request parameter `dir`
  - …6 more

[Change history](https://skmtc.dev/useplunk/apis/plunk-api/changes/templates/get.md)

---

[API](https://skmtc.dev/useplunk/apis/plunk-api.md) · [All operations](https://skmtc.dev/useplunk/apis/plunk-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/useplunk/plunk-api/revisions/a13aa5345f8e/schema)
