Skip to main content
Resend Docs
current

Search documentation

Type to search this documentation.

On this pageOverview

Update Template

Update a template.

  • id | alias (string) — The ID or alias of the template to duplicate.
  • name (string) — The name of the template.

  • html (string) — The HTML version of the template.

  • alias (string) — The alias of the template.

  • from (string) — Sender email address.

    To include a friendly name, use the format "Your Name <sender@domain.com>".

    If provided, this value can be overridden when sending an email using the template.

  • subject (string) — Default email subject.

    This value can be overridden when sending an email using the template.

Default Reply-to email address. For multiple addresses, send as an array of strings.

This value can be overridden when sending an email using the template.

  • text (string) — The plain text version of the message.

  • react (React.ReactNode) — The React component used to write the template. Only available in the Node.js SDK.

  • variables (array) — The array of variables used in the template. Each template may contain up to 50 variables.

    Each variable is an object with the following properties:

    properties
    • key (string, required) — The key of the variable. We recommend capitalizing the key (e.g. PRODUCT_NAME). The following variable names are reserved and cannot be used: FIRST_NAME, LAST_NAME, EMAIL, RESEND_UNSUBSCRIBE_URL, contact, and this.
    • type ('string' | 'number', required) — The type of the variable.

      Can be 'string' or 'number'

    The fallback value of the variable. The value must match the type of the variable.

    If no fallback value is provided, you must provide a value for the variable when sending an email using the template.

Node.js
import { Resend } from 'resend';

const resend = new Resend('re_xxxxxxxxx');

const { data, error } = await resend.templates.update(
  '34a080c9-b17d-4187-ad80-5af20266e535',
  {
    name: 'order-confirmation',
    html: '<p>Total: {{{PRICE}}}</p><p>Name: {{{PRODUCT}}}</p>',
  },
);
PHP
$resend = Resend::client('re_xxxxxxxxx');

$resend->templates->update('34a080c9-b17d-4187-ad80-5af20266e535', [
  'name' => 'order-confirmation',
  'html' => '<p>Total: {{{PRICE}}}</p><p>Name: {{{PRODUCT}}}</p>',
]);
Python
import resend

resend.api_key = "re_xxxxxxxxx"

resend.Templates.update({
    "id": "34a080c9-b17d-4187-ad80-5af20266e535",
    "name": "order-confirmation",
    "html": "<p>Total: {{{PRICE}}}</p><p>Name: {{{PRODUCT}}}</p>",
})
Ruby
require "resend"

Resend.api_key = "re_xxxxxxxxx"

Resend::Templates.update("34a080c9-b17d-4187-ad80-5af20266e535", {
  name: "order-confirmation",
  html: "<p>Total: {{{PRICE}}}</p><p>Name: {{{PRODUCT}}}</p>"
})
Go
package main

import (
	"context"

	"github.com/resend/resend-go/v4"
)

func main() {
	client := resend.NewClient("re_xxxxxxxxx")

	client.Templates.UpdateWithContext(context.TODO(), "34a080c9-b17d-4187-ad80-5af20266e535", &resend.UpdateTemplateRequest{
		Name: "order-confirmation",
		Html: "<p>Total: {{{PRICE}}}</p><p>Name: {{{PRODUCT}}}</p>",
	})
}
Rust
use resend_rs::{
  types::UpdateTemplateOptions,
  Resend, Result,
};

#[tokio::main]
async fn main() -> Result<()> {
  let resend = Resend::new("re_xxxxxxxxx");

  let name = "order-confirmation";
  let html = "<p>Total: {{{PRICE}}}</p><p>Name: {{{PRODUCT}}}</p>";

  let update = UpdateTemplateOptions::new(name, html);

  let _template = resend
    .templates
    .update("34a080c9-b17d-4187-ad80-5af20266e535", update)
    .await?;

  Ok(())
}
Java
import com.resend.Resend;
import com.resend.core.exception.ResendException;
import com.resend.services.templates.model.UpdateTemplateOptions;
import com.resend.services.templates.model.UpdateTemplateResponseSuccess;

public class Main {
    public static void main(String[] args) throws ResendException {
        Resend resend = new Resend("re_xxxxxxxxx");

        UpdateTemplateOptions params = UpdateTemplateOptions.builder()
                .name("order-confirmation")
                .html("<p>Total: {{{PRICE}}}</p><p>Name: {{{PRODUCT}}}</p>")
                .build();

        UpdateTemplateResponseSuccess data = resend.templates().update("34a080c9-b17d-4187-ad80-5af20266e535", params);
    }
}
.NET
using Resend;

IResend resend = ResendClient.Create( "re_xxxxxxxxx" ); // Or from DI

await resend.TemplateUpdateAsync(
    templateId: new Guid( "e169aa45-1ecf-4183-9955-b1499d5701d3" ),
    new TemplateData()
    {
        HtmlBody = "<p>Total: {{{PRICE}}}</p><p>Name: {{{PRODUCT}}}</p>",
    }
);
cURL
curl -X PATCH 'https://api.resend.com/templates/34a080c9-b17d-4187-ad80-5af20266e535' \
     -H 'Authorization: Bearer re_xxxxxxxxx' \
     -H 'Content-Type: application/json' \
     -d $'{
  "name": "order-confirmation",
  "html": "<p>Total: {{{PRICE}}}</p><p>Name: {{{PRODUCT}}}</p>"
}'
CLI
resend templates update 34a080c9-b17d-4187-ad80-5af20266e535 \
  --name order-confirmation \
  --html "<p>Total: {{{PRICE}}}</p><p>Name: {{{PRODUCT}}}</p>"
Response
{
  "object": "template",
  "id": "34a080c9-b17d-4187-ad80-5af20266e535"
}
Suggest an edit

Propose a replacement for this page. The site team reviews it before applying any changes.

Export
Documentation menu