Create a template
POST /v3/templates
Creates a template.
At a minimum, you must provide the following required attributes in the request body:
|
Attribute |
Type |
Description |
Example(s) |
|---|---|---|---|
|
|
string |
The name of the template. |
|
|
|
string |
The unique ID of the template. Only lowercase alphanumeric characters and underscores are allowed. |
|
|
|
string enum (uppercase) |
The type of the template. |
Must be one of:
|
|
|
string enum (uppercase) |
The current status of the template. |
Must be one of:
|
|
|
string |
The description of the connection. |
|
|
|
boolean |
Determines whether to render a preview of the web template in the Sitecore Personalize app. Only set this to Do not set this to |
|
|
|
boolean |
Determines whether this is a default template. When you create a template, you must set this value to |
|
|
|
boolean |
Determines whether this is a custom template. When you create a template, you must set this value to |
|
|
optional |
JSON array of JSON objects |
Custom HTML, CSS, JavaScript, and FreeMarker codes that define the template. |
|
The optional templateElements array of objects lets you include HTML, CSS, JavaScript, and FreeMarker codes in your templates. For the objects in templateElements, use the following attributes:
|
Attribute |
Type |
Description |
Example(s) |
|---|---|---|---|
|
|
string enum (lowercase) |
The type of code that you include in the For example, to include CSS code in the template, set this value to |
Must be one of:
|
|
|
string |
Stringified HTML, CSS, JavaScript, or FreeMarker code. For FreeMarker code, you must at a minimum include an opening and a closing curly bracket |
|
Here's an example of the templateElements array of objects:
"templateElements": [ { "id": "html", "template": "<div id=\"test\">My test div</div>" }, { "id": "css", "template": "#test {text-transform: uppercase}" }, { "id": "js", "template": "insertHTMLBefore(\"body\");\n\nconst testDiv = document.querySelector(\"#test\");\ntestDiv.insertAdjacentHTML(\"afterbegin\", \"<p>Hello from JavaScript</p>\")" }, { "id": "freemarker", "template": "{}" } ]
In the response, the ref key contains the template reference.
You use the template reference to interact with a specific template, for example, to retrieve or update it.
curl -X POST '<baseURL>/v3/templates' \ -H 'Authorization: Bearer <accessToken>' \ -H 'Accept: application/json' \ --data-raw ' { "name": "Alert bar template", "friendlyId": "alert_bar_template_1", "type": "WEB", "status": "DRAFT", "description": "Alert bar template WEB", "render": false, "defaultTemplate": false, "customTemplate": true, "templateElements": [ { "id": "html", "template": "<div id=\"test\">My test div</div>" }, { "id": "css", "template": "#test {text-transform: uppercase}" }, { "id": "js", "template": "insertHTMLBefore(\"body\");\n\nconst testDiv = document.querySelector(\"#test\");\ntestDiv.insertAdjacentHTML(\"afterbegin\", \"<p>Hello from JavaScript</p>\")" }, { "id": "freemarker", "template": "{}" } ] }'
{ "clientKey": "pqsPERS3lw12v5a9rrHPW1c4hET73GxQ", "href": "<baseURL>/v3/templates/340ced1b-c9b7-43f0-9eec-2b9f0b7693fa", "ref": "340ced1b-c9b7-43f0-9eec-2b9f0b7693fa", "name": "Alert bar template", "description": "Alert bar template WEB", "modifiedByRef": "zwxCA58jwLzfeU2mNGgalCpoJzNVYOJl@clients", "modifiedAt": "2025-07-12T10:56:46.53994Z", "revision": 1, "archived": false, "friendlyId": "alert_bar_template_1", "type": "WEB", "status": "DRAFT", "templateElements": [ { "id": "html", "template": "<div id=\"test\">My test div</div>" }, { "id": "css", "template": "#test {text-transform: uppercase}" }, { "id": "js", "template": "insertHTMLBefore(\"body\");\n\nconst testDiv = document.querySelector(\"#test\");\ntestDiv.insertAdjacentHTML(\"afterbegin\", \"<p>Hello from JavaScript</p>\")" }, { "id": "freemarker", "template": "{}" } ], "render": false, "defaultTemplate": false, "tags": [], "customTemplate": true }