Skip to main content
PUT
/
templates
/
{slug}
curl --request PUT \
  --url https://app.lettr.com/api/templates/{slug} \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "name": "Updated Welcome Email"
}
'
{
  "message": "Template updated successfully.",
  "data": {
    "id": 123,
    "name": "Updated Welcome Email",
    "slug": "welcome-email",
    "project_id": 5,
    "folder_id": 10,
    "active_version": 2,
    "merge_tags": [
      {
        "key": "NAME",
        "required": true
      }
    ],
    "created_at": "2026-01-15T10:00:00+00:00",
    "updated_at": "2026-01-28T14:30:00+00:00"
  }
}

Documentation Index

Fetch the complete documentation index at: https://docs.lettr.com/llms.txt

Use this file to discover all available pages before exploring further.

Updates an existing template by its slug. You can update the template name, project assignment, or content. Providing new html or json content creates a new version of the template automatically. The html and json fields are mutually exclusive. If neither is provided, only metadata (name, project) is updated without creating a new version.

Authorizations

Authorization
string
header
required

API key for authentication

Path Parameters

slug
string
required

The template slug (URL-friendly identifier)

Example:

"welcome-email"

Body

application/json

Request to update an existing email template. All fields are optional - provide only what you want to change. If html or json is provided, a new active version will be created.

project_id
integer

Project ID to find the template in. If not provided, uses the team's default project.

Required range: x >= 1
Example:

5

name
string

New name for the template

Maximum string length: 255
Example:

"Updated Welcome Email"

html
string

New HTML content for the template. Creates a new active version. Mutually exclusive with json.

Example:

"<html><body><p>Hello {{NAME}}!</p></body></html>"

json
string

New JSON content for Topol visual editor templates. Creates a new active version. Mutually exclusive with html.

Example:

"{\"tagName\":\"mj-container\",\"children\":[{\"tagName\":\"mj-text\",\"content\":\"Hello {{FIRST_NAME}}!\"}]}"

Response

Template updated successfully

Response after successfully updating a template

message
string
required

Human-readable response message

Example:

"Template updated successfully."

data
object
required

View of an updated template