curl --request PUT \
--url https://api.sendkit.dev/templates/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"sender_id": "550e8400-e29b-41d4-a716-446655440000",
"subject": "Welcome to {{COMPANY}}",
"name": "Updated Welcome Email",
"folder_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"html_content": "<h1>Welcome, {{FIRST_NAME}}!</h1>",
"text_content": "Welcome, {{FIRST_NAME}}!",
"reply_to": "support@yourdomain.com",
"status": "published",
"variables": [
{
"key": "FIRST_NAME",
"type": "string",
"fallback_value": "there"
}
]
}
'import requests
url = "https://api.sendkit.dev/templates/{id}"
payload = {
"sender_id": "550e8400-e29b-41d4-a716-446655440000",
"subject": "Welcome to {{COMPANY}}",
"name": "Updated Welcome Email",
"folder_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"html_content": "<h1>Welcome, {{FIRST_NAME}}!</h1>",
"text_content": "Welcome, {{FIRST_NAME}}!",
"reply_to": "support@yourdomain.com",
"status": "published",
"variables": [
{
"key": "FIRST_NAME",
"type": "string",
"fallback_value": "there"
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
sender_id: '550e8400-e29b-41d4-a716-446655440000',
subject: 'Welcome to {{COMPANY}}',
name: 'Updated Welcome Email',
folder_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
html_content: '<h1>Welcome, {{FIRST_NAME}}!</h1>',
text_content: 'Welcome, {{FIRST_NAME}}!',
reply_to: 'support@yourdomain.com',
status: 'published',
variables: [{key: 'FIRST_NAME', type: 'string', fallback_value: 'there'}]
})
};
fetch('https://api.sendkit.dev/templates/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.sendkit.dev/templates/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'sender_id' => '550e8400-e29b-41d4-a716-446655440000',
'subject' => 'Welcome to {{COMPANY}}',
'name' => 'Updated Welcome Email',
'folder_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'html_content' => '<h1>Welcome, {{FIRST_NAME}}!</h1>',
'text_content' => 'Welcome, {{FIRST_NAME}}!',
'reply_to' => 'support@yourdomain.com',
'status' => 'published',
'variables' => [
[
'key' => 'FIRST_NAME',
'type' => 'string',
'fallback_value' => 'there'
]
]
]),
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.sendkit.dev/templates/{id}"
payload := strings.NewReader("{\n \"sender_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"subject\": \"Welcome to {{COMPANY}}\",\n \"name\": \"Updated Welcome Email\",\n \"folder_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"html_content\": \"<h1>Welcome, {{FIRST_NAME}}!</h1>\",\n \"text_content\": \"Welcome, {{FIRST_NAME}}!\",\n \"reply_to\": \"support@yourdomain.com\",\n \"status\": \"published\",\n \"variables\": [\n {\n \"key\": \"FIRST_NAME\",\n \"type\": \"string\",\n \"fallback_value\": \"there\"\n }\n ]\n}")
req, _ := http.NewRequest("PUT", 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))
}HttpResponse<String> response = Unirest.put("https://api.sendkit.dev/templates/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"sender_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"subject\": \"Welcome to {{COMPANY}}\",\n \"name\": \"Updated Welcome Email\",\n \"folder_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"html_content\": \"<h1>Welcome, {{FIRST_NAME}}!</h1>\",\n \"text_content\": \"Welcome, {{FIRST_NAME}}!\",\n \"reply_to\": \"support@yourdomain.com\",\n \"status\": \"published\",\n \"variables\": [\n {\n \"key\": \"FIRST_NAME\",\n \"type\": \"string\",\n \"fallback_value\": \"there\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sendkit.dev/templates/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"sender_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"subject\": \"Welcome to {{COMPANY}}\",\n \"name\": \"Updated Welcome Email\",\n \"folder_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"html_content\": \"<h1>Welcome, {{FIRST_NAME}}!</h1>\",\n \"text_content\": \"Welcome, {{FIRST_NAME}}!\",\n \"reply_to\": \"support@yourdomain.com\",\n \"status\": \"published\",\n \"variables\": [\n {\n \"key\": \"FIRST_NAME\",\n \"type\": \"string\",\n \"fallback_value\": \"there\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "550e8400-e29b-41d4-a716-446655440000",
"folder_id": null,
"name": "Welcome Email",
"subject": "Welcome to {{COMPANY}}",
"html_content": "<h1>Welcome, {{FIRST_NAME}}!</h1><p>Thanks for joining.</p>",
"text_content": "Welcome, {{FIRST_NAME}}! Thanks for joining.",
"reply_to": "support@yourdomain.com",
"status": "published",
"sender": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "John Doe",
"username": "john",
"email": "john@yourdomain.com",
"reply_to": "reply@yourdomain.com",
"created_at": "2026-03-03 10:00:00",
"updated_at": "2026-03-03 10:00:00"
},
"variables": [
{
"key": "FIRST_NAME",
"type": "string",
"fallback_value": "there"
}
],
"created_at": "2026-03-03 10:00:00",
"updated_at": "2026-03-03 10:00:00"
}{
"message": "Invalid API key."
}{
"message": "Not found."
}{
"message": "The email field is required."
}Update a template
Update a template’s content, sender, subject, or other settings.
curl --request PUT \
--url https://api.sendkit.dev/templates/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"sender_id": "550e8400-e29b-41d4-a716-446655440000",
"subject": "Welcome to {{COMPANY}}",
"name": "Updated Welcome Email",
"folder_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"html_content": "<h1>Welcome, {{FIRST_NAME}}!</h1>",
"text_content": "Welcome, {{FIRST_NAME}}!",
"reply_to": "support@yourdomain.com",
"status": "published",
"variables": [
{
"key": "FIRST_NAME",
"type": "string",
"fallback_value": "there"
}
]
}
'import requests
url = "https://api.sendkit.dev/templates/{id}"
payload = {
"sender_id": "550e8400-e29b-41d4-a716-446655440000",
"subject": "Welcome to {{COMPANY}}",
"name": "Updated Welcome Email",
"folder_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"html_content": "<h1>Welcome, {{FIRST_NAME}}!</h1>",
"text_content": "Welcome, {{FIRST_NAME}}!",
"reply_to": "support@yourdomain.com",
"status": "published",
"variables": [
{
"key": "FIRST_NAME",
"type": "string",
"fallback_value": "there"
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
sender_id: '550e8400-e29b-41d4-a716-446655440000',
subject: 'Welcome to {{COMPANY}}',
name: 'Updated Welcome Email',
folder_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
html_content: '<h1>Welcome, {{FIRST_NAME}}!</h1>',
text_content: 'Welcome, {{FIRST_NAME}}!',
reply_to: 'support@yourdomain.com',
status: 'published',
variables: [{key: 'FIRST_NAME', type: 'string', fallback_value: 'there'}]
})
};
fetch('https://api.sendkit.dev/templates/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.sendkit.dev/templates/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'sender_id' => '550e8400-e29b-41d4-a716-446655440000',
'subject' => 'Welcome to {{COMPANY}}',
'name' => 'Updated Welcome Email',
'folder_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'html_content' => '<h1>Welcome, {{FIRST_NAME}}!</h1>',
'text_content' => 'Welcome, {{FIRST_NAME}}!',
'reply_to' => 'support@yourdomain.com',
'status' => 'published',
'variables' => [
[
'key' => 'FIRST_NAME',
'type' => 'string',
'fallback_value' => 'there'
]
]
]),
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.sendkit.dev/templates/{id}"
payload := strings.NewReader("{\n \"sender_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"subject\": \"Welcome to {{COMPANY}}\",\n \"name\": \"Updated Welcome Email\",\n \"folder_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"html_content\": \"<h1>Welcome, {{FIRST_NAME}}!</h1>\",\n \"text_content\": \"Welcome, {{FIRST_NAME}}!\",\n \"reply_to\": \"support@yourdomain.com\",\n \"status\": \"published\",\n \"variables\": [\n {\n \"key\": \"FIRST_NAME\",\n \"type\": \"string\",\n \"fallback_value\": \"there\"\n }\n ]\n}")
req, _ := http.NewRequest("PUT", 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))
}HttpResponse<String> response = Unirest.put("https://api.sendkit.dev/templates/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"sender_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"subject\": \"Welcome to {{COMPANY}}\",\n \"name\": \"Updated Welcome Email\",\n \"folder_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"html_content\": \"<h1>Welcome, {{FIRST_NAME}}!</h1>\",\n \"text_content\": \"Welcome, {{FIRST_NAME}}!\",\n \"reply_to\": \"support@yourdomain.com\",\n \"status\": \"published\",\n \"variables\": [\n {\n \"key\": \"FIRST_NAME\",\n \"type\": \"string\",\n \"fallback_value\": \"there\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sendkit.dev/templates/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"sender_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"subject\": \"Welcome to {{COMPANY}}\",\n \"name\": \"Updated Welcome Email\",\n \"folder_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"html_content\": \"<h1>Welcome, {{FIRST_NAME}}!</h1>\",\n \"text_content\": \"Welcome, {{FIRST_NAME}}!\",\n \"reply_to\": \"support@yourdomain.com\",\n \"status\": \"published\",\n \"variables\": [\n {\n \"key\": \"FIRST_NAME\",\n \"type\": \"string\",\n \"fallback_value\": \"there\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "550e8400-e29b-41d4-a716-446655440000",
"folder_id": null,
"name": "Welcome Email",
"subject": "Welcome to {{COMPANY}}",
"html_content": "<h1>Welcome, {{FIRST_NAME}}!</h1><p>Thanks for joining.</p>",
"text_content": "Welcome, {{FIRST_NAME}}! Thanks for joining.",
"reply_to": "support@yourdomain.com",
"status": "published",
"sender": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "John Doe",
"username": "john",
"email": "john@yourdomain.com",
"reply_to": "reply@yourdomain.com",
"created_at": "2026-03-03 10:00:00",
"updated_at": "2026-03-03 10:00:00"
},
"variables": [
{
"key": "FIRST_NAME",
"type": "string",
"fallback_value": "there"
}
],
"created_at": "2026-03-03 10:00:00",
"updated_at": "2026-03-03 10:00:00"
}{
"message": "Invalid API key."
}{
"message": "Not found."
}{
"message": "The email field is required."
}Authorizations
API key from your SendKit dashboard. Pass it as a Bearer token in the Authorization header.
Path Parameters
The template ID.
Body
The ID of the sender to use for this template. Must belong to your account.
"550e8400-e29b-41d4-a716-446655440000"
The email subject line. Supports {{VARIABLE}} placeholders.
255"Welcome to {{COMPANY}}"
The name of the template.
255"Updated Welcome Email"
Folder ID to move the template to. Set to null to remove from folder.
The HTML content of the template. Supports {{VARIABLE}} placeholders.
"<h1>Welcome, {{FIRST_NAME}}!</h1>"
The plain text content of the template. Supports {{VARIABLE}} placeholders.
"Welcome, {{FIRST_NAME}}!"
The reply-to email address.
255"support@yourdomain.com"
The template status.
published, draft "published"
Template variables configuration.
Show child attributes
Show child attributes
Response
Template updated successfully
Unique identifier.
"550e8400-e29b-41d4-a716-446655440000"
The folder this template belongs to. Null if unassigned.
null
The name of the template.
"Welcome Email"
The email subject line.
"Welcome to {{COMPANY}}"
The HTML content of the template.
"<h1>Welcome, {{FIRST_NAME}}!</h1><p>Thanks for joining.</p>"
The plain text content of the template.
"Welcome, {{FIRST_NAME}}! Thanks for joining."
The reply-to email address for emails sent with this template.
"support@yourdomain.com"
The template status. Only published templates can be used for sending.
published, draft "published"
The sender associated with this template.
Show child attributes
Show child attributes
The template variables and their configuration.
Show child attributes
Show child attributes
When the template was created.
"2026-03-03 10:00:00"
When the template was last updated.
"2026-03-03 10:00:00"

