Templates
Set Template Localization
Create or replace a caller-supplied localized template variant
PUT
/
api
/
v1
/
templates
/
{templateId}
/
localizations
/
{locale}
Set Template Localization
curl --request PUT \
--url https://api.sequenzy.com/api/v1/templates/{templateId}/localizations/{locale} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"subject": "<string>",
"previewText": "<string>",
"html": "<string>",
"blocks": [
{}
]
}
'import requests
url = "https://api.sequenzy.com/api/v1/templates/{templateId}/localizations/{locale}"
payload = {
"subject": "<string>",
"previewText": "<string>",
"html": "<string>",
"blocks": [{}]
}
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({subject: '<string>', previewText: '<string>', html: '<string>', blocks: [{}]})
};
fetch('https://api.sequenzy.com/api/v1/templates/{templateId}/localizations/{locale}', 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.sequenzy.com/api/v1/templates/{templateId}/localizations/{locale}",
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([
'subject' => '<string>',
'previewText' => '<string>',
'html' => '<string>',
'blocks' => [
[
]
]
]),
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.sequenzy.com/api/v1/templates/{templateId}/localizations/{locale}"
payload := strings.NewReader("{\n \"subject\": \"<string>\",\n \"previewText\": \"<string>\",\n \"html\": \"<string>\",\n \"blocks\": [\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.sequenzy.com/api/v1/templates/{templateId}/localizations/{locale}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"subject\": \"<string>\",\n \"previewText\": \"<string>\",\n \"html\": \"<string>\",\n \"blocks\": [\n {}\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sequenzy.com/api/v1/templates/{templateId}/localizations/{locale}")
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 \"subject\": \"<string>\",\n \"previewText\": \"<string>\",\n \"html\": \"<string>\",\n \"blocks\": [\n {}\n ]\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"templateId": "email_abc123",
"localization": {
"locale": "es",
"status": "synced",
"subject": "Bienvenido",
"previewText": "Nos alegra que estés aquí",
"blocks": [
{
"id": "generated-block-id",
"type": "text",
"content": "<p>Gracias por registrarte.</p>",
"variant": "html"
}
],
"sourceHash": "f4c3...",
"lastError": null,
"syncedAt": "2026-07-14T20:00:00Z",
"createdAt": "2026-07-14T20:00:00Z",
"updatedAt": "2026-07-14T20:00:00Z"
}
}
{
"error": "Locale \"es\" is not enabled for this company."
}
{
"error": "Template not found"
}
Create or replace one localized variant with your own translated content. The
locale must be enabled in the company’s localization settings and cannot be the
primary locale.
Request
string
required
Template ID, transactional email ID, or transactional slug.
string
required
Enabled non-primary locale code, such as
es, fr, or pt-BR.string
required
Localized email subject line.
string
Optional localized inbox preview text.
string
Localized raw HTML. Provide exactly one of
html or blocks.array
Localized Sequenzy email blocks. Provide exactly one of
blocks or html.curl -X PUT "https://api.sequenzy.com/api/v1/templates/email_abc123/localizations/es" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"subject": "Bienvenido",
"previewText": "Nos alegra que estés aquí",
"html": "<p>Gracias por registrarte.</p>"
}'
Responses
{
"success": true,
"templateId": "email_abc123",
"localization": {
"locale": "es",
"status": "synced",
"subject": "Bienvenido",
"previewText": "Nos alegra que estés aquí",
"blocks": [
{
"id": "generated-block-id",
"type": "text",
"content": "<p>Gracias por registrarte.</p>",
"variant": "html"
}
],
"sourceHash": "f4c3...",
"lastError": null,
"syncedAt": "2026-07-14T20:00:00Z",
"createdAt": "2026-07-14T20:00:00Z",
"updatedAt": "2026-07-14T20:00:00Z"
}
}
{
"error": "Locale \"es\" is not enabled for this company."
}
{
"error": "Template not found"
}
⌘I
Set Template Localization
curl --request PUT \
--url https://api.sequenzy.com/api/v1/templates/{templateId}/localizations/{locale} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"subject": "<string>",
"previewText": "<string>",
"html": "<string>",
"blocks": [
{}
]
}
'import requests
url = "https://api.sequenzy.com/api/v1/templates/{templateId}/localizations/{locale}"
payload = {
"subject": "<string>",
"previewText": "<string>",
"html": "<string>",
"blocks": [{}]
}
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({subject: '<string>', previewText: '<string>', html: '<string>', blocks: [{}]})
};
fetch('https://api.sequenzy.com/api/v1/templates/{templateId}/localizations/{locale}', 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.sequenzy.com/api/v1/templates/{templateId}/localizations/{locale}",
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([
'subject' => '<string>',
'previewText' => '<string>',
'html' => '<string>',
'blocks' => [
[
]
]
]),
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.sequenzy.com/api/v1/templates/{templateId}/localizations/{locale}"
payload := strings.NewReader("{\n \"subject\": \"<string>\",\n \"previewText\": \"<string>\",\n \"html\": \"<string>\",\n \"blocks\": [\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.sequenzy.com/api/v1/templates/{templateId}/localizations/{locale}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"subject\": \"<string>\",\n \"previewText\": \"<string>\",\n \"html\": \"<string>\",\n \"blocks\": [\n {}\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sequenzy.com/api/v1/templates/{templateId}/localizations/{locale}")
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 \"subject\": \"<string>\",\n \"previewText\": \"<string>\",\n \"html\": \"<string>\",\n \"blocks\": [\n {}\n ]\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"templateId": "email_abc123",
"localization": {
"locale": "es",
"status": "synced",
"subject": "Bienvenido",
"previewText": "Nos alegra que estés aquí",
"blocks": [
{
"id": "generated-block-id",
"type": "text",
"content": "<p>Gracias por registrarte.</p>",
"variant": "html"
}
],
"sourceHash": "f4c3...",
"lastError": null,
"syncedAt": "2026-07-14T20:00:00Z",
"createdAt": "2026-07-14T20:00:00Z",
"updatedAt": "2026-07-14T20:00:00Z"
}
}
{
"error": "Locale \"es\" is not enabled for this company."
}
{
"error": "Template not found"
}