---
title: "Create template"
method: POST
path: "/templates"
tags: ["Templates"]
---

# Create template

`POST /templates`

Create a new email template.

`from` is required and its domain must already be verified for this project, otherwise the request is rejected.

## Request body

- object
  - `name` string, required — Internal name for the template.
  - `description` string — Optional internal note. Not sent to recipients.
  - `subject` string, required
  - `body` string, required — HTML body. Use `{{variable}}` placeholders to interpolate contact data at send time.
  - `from` string, email, required — Sender address. Must belong to a domain verified for this project.
  - `fromName` string — Sender display name.
  - `replyTo` string, email
  - `type` 'TRANSACTIONAL' | 'MARKETING' | 'HEADLESS' — Optional. Defaults to `MARKETING` when omitted.

## Response `201`

Template created

- 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

## Other responses

- `400` — A required field (`name`, `subject`, `body`, `from`) is missing.
- `401` — Missing or invalid API key.
- `403` — The sender domain is not registered to this project, or has not completed DNS verification. Add and verify the domain in your project settings first.

---

[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)
