Skip to main content
Resend Docs
current

Search documentation

Type to search this documentation.

On this pageOverview

List Templates

List all templates.

By default, the API will return the most recent 20 templates. You can optionally use the limit parameter to return a different number of templates or control the pagination of the results with the after or before parameters.

<>

  {isRequired ? 
  • limit (number) — Number of templates to retrieve.

    • Default value: 20

    • Maximum value: 100

    • Minimum value: 1

: <>

Note that the limit parameter is optional. If you do not provide a limit, all templates will be returned in a single response.

  • limit (number) — Number of templates to retrieve.

    • Maximum value: 100

    • Minimum value: 1

      </>}
      • after (string) — The ID after which we'll retrieve more templates (for pagination). This ID will not be included in the returned list. Cannot be used with the before parameter.

      • before (string) — The ID before which we'll retrieve more templates (for pagination). This ID will not be included in the returned list. Cannot be used with the after parameter.

      </>

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

const resend = new Resend('re_xxxxxxxxx');

const { data, error } = await resend.templates.list({
  limit: 2,
  after: '34a080c9-b17d-4187-ad80-5af20266e535',
});
PHP
$resend = Resend::client('re_xxxxxxxxx');

$resend->templates->list([
  'limit' => 2,
  'after' => '34a080c9-b17d-4187-ad80-5af20266e535'
]);
Python
import resend

resend.api_key = "re_xxxxxxxxx"

resend.Templates.list({
    "limit": 2,
    "after": "34a080c9-b17d-4187-ad80-5af20266e535",
})
Ruby
require "resend"

Resend.api_key = "re_xxxxxxxxx"

Resend::Templates.list(
  limit: 2,
  after: "34a080c9-b17d-4187-ad80-5af20266e535"
)
Go
package main

import (
	"context"

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

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

	limit := 2
	after := "34a080c9-b17d-4187-ad80-5af20266e535"

	client.Templates.ListWithContext(context.TODO(), &resend.ListOptions{
		Limit: &limit,
		After: &after,
	})
}
Rust
use resend_rs::{list_opts::ListOptions, Resend, Result};

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

  let list_opts = ListOptions::default()
    .with_limit(2)
    .list_after("34a080c9-b17d-4187-ad80-5af20266e535");

  let _list = resend.templates.list(list_opts).await?;

  Ok(())
}
Java
import com.resend.Resend;
import com.resend.core.exception.ResendException;
import com.resend.core.net.ListParams;
import com.resend.services.templates.model.ListTemplatesResponseSuccess;

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

        ListParams params = ListParams.builder()
            .limit(2)
            .after("34a080c9-b17d-4187-ad80-5af20266e535")
            .build();

        ListTemplatesResponseSuccess data = resend.templates().list(params);
    }
}
.NET
using Resend;

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

var resp = await resend.TemplateListAsync();
Console.WriteLine( "Nr Templates={0}", resp.Content.Data.Count );
cURL
curl -X GET 'https://api.resend.com/templates?limit=2&after=34a080c9-b17d-4187-ad80-5af20266e535' \
     -H 'Authorization: Bearer re_xxxxxxxxx' \
     -H 'Content-Type: application/json'
CLI
resend templates list
Response
{
  "object": "list",
  "data": [
    {
      "id": "e169aa45-1ecf-4183-9955-b1499d5701d3",
      "name": "reset-password",
      "status": "draft",
      "published_at": null,
      "created_at": "2026-10-06 23:47:56.678+00",
      "updated_at": "2026-10-06 23:47:56.678+00",
      "alias": "reset-password"
    },
    {
      "id": "b7f9c2e1-1234-4abc-9def-567890abcdef",
      "name": "welcome-message",
      "status": "published",
      "published_at": "2026-10-06 23:47:56.678+00",
      "created_at": "2026-10-06 23:47:56.678+00",
      "updated_at": "2026-10-06 23:47:56.678+00",
      "alias": "welcome-message"
    }
  ],
  "has_more": false
}
Suggest an edit

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

Export
Documentation menu