cURL
curl -X POST 'https://api.nuntly.com/templates/tpl_01kabn43yqyxn2bx4ve84mczd3/versions' \
-H 'Authorization: Bearer apk_xxx' \
-H 'Content-Type: application/json' \
-d '{"subject":"Verify your email address","html":"<h1>Welcome</h1><p>Thank you for signing up! Please verify your email address.</p>","text":"Thank you for signing up! Please verify your email address."}'import { Nuntly } from '@nuntly/sdk';
const client = new Nuntly({
apiKey: process.env['NUNTLY_API_KEY'],
});
const response = await client.templates.versions.create('tpl_01kabn43yqyxn2bx4ve84mczd3', {
subject: 'Verify your email address',
html: '<h1>Welcome</h1><p>Thank you for signing up! Please verify your email address.</p>',
text: 'Thank you for signing up! Please verify your email address.',
});import com.nuntly.sdk.Nuntly;
import com.nuntly.sdk.ClientOptions;
import com.nuntly.sdk.models.*;
var nuntly = Nuntly.create(ClientOptions.builder()
.apiKey(System.getenv("NUNTLY_API_KEY"))
.build());
var response = nuntly.templates().versions().create("tpl_01kabn43yqyxn2bx4ve84mczd3", CreateTemplateVersionRequest.builder()
.subject("Verify your email address")
.html("<h1>Welcome</h1><p>Thank you for signing up! Please verify your email address.</p>")
.text("Thank you for signing up! Please verify your email address.")
.build());import requests
url = "https://api.nuntly.com/templates/{templateId}/versions"
payload = {
"subject": "Verify your email address",
"html": "<h1>Welcome</h1><p>Thank you for signing up! Please verify your email address.</p>",
"text": "Thank you for signing up! Please verify your email address.",
"variables": [
{
"name": "<string>",
"default": "<string>"
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.nuntly.com/templates/{templateId}/versions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'subject' => 'Verify your email address',
'html' => '<h1>Welcome</h1><p>Thank you for signing up! Please verify your email address.</p>',
'text' => 'Thank you for signing up! Please verify your email address.',
'variables' => [
[
'name' => '<string>',
'default' => '<string>'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.nuntly.com/templates/{templateId}/versions"
payload := strings.NewReader("{\n \"subject\": \"Verify your email address\",\n \"html\": \"<h1>Welcome</h1><p>Thank you for signing up! Please verify your email address.</p>\",\n \"text\": \"Thank you for signing up! Please verify your email address.\",\n \"variables\": [\n {\n \"name\": \"<string>\",\n \"default\": \"<string>\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}require 'uri'
require 'net/http'
url = URI("https://api.nuntly.com/templates/{templateId}/versions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"subject\": \"Verify your email address\",\n \"html\": \"<h1>Welcome</h1><p>Thank you for signing up! Please verify your email address.</p>\",\n \"text\": \"Thank you for signing up! Please verify your email address.\",\n \"variables\": [\n {\n \"name\": \"<string>\",\n \"default\": \"<string>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "tpv_01kabn43yqyxn2bx4ve84mczd3",
"templateId": "tpl_01kabn43yqyxn2bx4ve84mczd3",
"status": "draft",
"subject": "Verify your email address",
"createdAt": "2026-03-29T12:00:00.000Z",
"publishedAt": "<string>",
"updatedAt": "<string>",
"variables": [
{
"name": "<string>",
"type": "string",
"default": "<string>"
}
]
}
}{
"error": {
"status": 123,
"code": "<string>",
"title": "<string>",
"details": {}
}
}Templates
Create Template Version
Create a draft version of a template.
POST
/
templates
/
{templateId}
/
versions
cURL
curl -X POST 'https://api.nuntly.com/templates/tpl_01kabn43yqyxn2bx4ve84mczd3/versions' \
-H 'Authorization: Bearer apk_xxx' \
-H 'Content-Type: application/json' \
-d '{"subject":"Verify your email address","html":"<h1>Welcome</h1><p>Thank you for signing up! Please verify your email address.</p>","text":"Thank you for signing up! Please verify your email address."}'import { Nuntly } from '@nuntly/sdk';
const client = new Nuntly({
apiKey: process.env['NUNTLY_API_KEY'],
});
const response = await client.templates.versions.create('tpl_01kabn43yqyxn2bx4ve84mczd3', {
subject: 'Verify your email address',
html: '<h1>Welcome</h1><p>Thank you for signing up! Please verify your email address.</p>',
text: 'Thank you for signing up! Please verify your email address.',
});import com.nuntly.sdk.Nuntly;
import com.nuntly.sdk.ClientOptions;
import com.nuntly.sdk.models.*;
var nuntly = Nuntly.create(ClientOptions.builder()
.apiKey(System.getenv("NUNTLY_API_KEY"))
.build());
var response = nuntly.templates().versions().create("tpl_01kabn43yqyxn2bx4ve84mczd3", CreateTemplateVersionRequest.builder()
.subject("Verify your email address")
.html("<h1>Welcome</h1><p>Thank you for signing up! Please verify your email address.</p>")
.text("Thank you for signing up! Please verify your email address.")
.build());import requests
url = "https://api.nuntly.com/templates/{templateId}/versions"
payload = {
"subject": "Verify your email address",
"html": "<h1>Welcome</h1><p>Thank you for signing up! Please verify your email address.</p>",
"text": "Thank you for signing up! Please verify your email address.",
"variables": [
{
"name": "<string>",
"default": "<string>"
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.nuntly.com/templates/{templateId}/versions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'subject' => 'Verify your email address',
'html' => '<h1>Welcome</h1><p>Thank you for signing up! Please verify your email address.</p>',
'text' => 'Thank you for signing up! Please verify your email address.',
'variables' => [
[
'name' => '<string>',
'default' => '<string>'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.nuntly.com/templates/{templateId}/versions"
payload := strings.NewReader("{\n \"subject\": \"Verify your email address\",\n \"html\": \"<h1>Welcome</h1><p>Thank you for signing up! Please verify your email address.</p>\",\n \"text\": \"Thank you for signing up! Please verify your email address.\",\n \"variables\": [\n {\n \"name\": \"<string>\",\n \"default\": \"<string>\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}require 'uri'
require 'net/http'
url = URI("https://api.nuntly.com/templates/{templateId}/versions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"subject\": \"Verify your email address\",\n \"html\": \"<h1>Welcome</h1><p>Thank you for signing up! Please verify your email address.</p>\",\n \"text\": \"Thank you for signing up! Please verify your email address.\",\n \"variables\": [\n {\n \"name\": \"<string>\",\n \"default\": \"<string>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "tpv_01kabn43yqyxn2bx4ve84mczd3",
"templateId": "tpl_01kabn43yqyxn2bx4ve84mczd3",
"status": "draft",
"subject": "Verify your email address",
"createdAt": "2026-03-29T12:00:00.000Z",
"publishedAt": "<string>",
"updatedAt": "<string>",
"variables": [
{
"name": "<string>",
"type": "string",
"default": "<string>"
}
]
}
}{
"error": {
"status": 123,
"code": "<string>",
"title": "<string>",
"details": {}
}
}Authorizations
Use an API key from https://nuntly.com/api-keys. Required on every endpoint.
Path Parameters
The id of the template.
Body
application/json
Example:
"Verify your email address"
Example:
"<h1>Welcome</h1><p>Thank you for signing up! Please verify your email address.</p>"
The plain-text body.
Example:
"Thank you for signing up! Please verify your email address."
Variables the content may reference, at most 20. Immutable once created.
Show child attributes
Show child attributes
Response
Created.
Show child attributes
Show child attributes
