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
Template ID, transactional email ID, or transactional slug.
Enabled non-primary locale code, such as
es, fr, or pt-BR.Localized email subject line.
Optional localized inbox preview text.
Localized raw HTML. Provide exactly one of
html or blocks.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"
}
Previous
Sync Template LocalizationsQueue AI translation for selected or all enabled template locales
Next
⌘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"
}