Crear un template de WhatsApp y enviarlo a Meta para aprobación
curl --request POST \
--url https://api.keebai.com/v1/templates \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"channel_id": "<string>",
"name": "welcome_v2",
"language": "es_CL",
"components": [
{
"text": "<string>",
"buttons": [
{
"text": "<string>",
"url": "<string>",
"phone_number": "<string>",
"example": [
"<string>"
],
"flow_id": "<string>",
"coupon_code": "<string>",
"autofill_text": "<string>",
"package_name": "<string>",
"signature_hash": "<string>"
}
],
"example": {
"header_text": [
"<string>"
],
"header_text_named_params": [
{
"param_name": "nombre",
"example": "Juan"
}
],
"header_handle": [
"<string>"
],
"body_text": [
"<string>"
],
"body_text_named_params": [
{
"param_name": "nombre",
"example": "Juan"
}
]
},
"add_security_recommendation": true,
"code_expiration_minutes": 123
}
],
"metadata": {}
}
'import requests
url = "https://api.keebai.com/v1/templates"
payload = {
"channel_id": "<string>",
"name": "welcome_v2",
"language": "es_CL",
"components": [
{
"text": "<string>",
"buttons": [
{
"text": "<string>",
"url": "<string>",
"phone_number": "<string>",
"example": ["<string>"],
"flow_id": "<string>",
"coupon_code": "<string>",
"autofill_text": "<string>",
"package_name": "<string>",
"signature_hash": "<string>"
}
],
"example": {
"header_text": ["<string>"],
"header_text_named_params": [
{
"param_name": "nombre",
"example": "Juan"
}
],
"header_handle": ["<string>"],
"body_text": ["<string>"],
"body_text_named_params": [
{
"param_name": "nombre",
"example": "Juan"
}
]
},
"add_security_recommendation": True,
"code_expiration_minutes": 123
}
],
"metadata": {}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
channel_id: '<string>',
name: 'welcome_v2',
language: 'es_CL',
components: [
{
text: '<string>',
buttons: [
{
text: '<string>',
url: '<string>',
phone_number: '<string>',
example: ['<string>'],
flow_id: '<string>',
coupon_code: '<string>',
autofill_text: '<string>',
package_name: '<string>',
signature_hash: '<string>'
}
],
example: {
header_text: ['<string>'],
header_text_named_params: [{param_name: 'nombre', example: 'Juan'}],
header_handle: ['<string>'],
body_text: ['<string>'],
body_text_named_params: [{param_name: 'nombre', example: 'Juan'}]
},
add_security_recommendation: true,
code_expiration_minutes: 123
}
],
metadata: {}
})
};
fetch('https://api.keebai.com/v1/templates', 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.keebai.com/v1/templates",
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([
'channel_id' => '<string>',
'name' => 'welcome_v2',
'language' => 'es_CL',
'components' => [
[
'text' => '<string>',
'buttons' => [
[
'text' => '<string>',
'url' => '<string>',
'phone_number' => '<string>',
'example' => [
'<string>'
],
'flow_id' => '<string>',
'coupon_code' => '<string>',
'autofill_text' => '<string>',
'package_name' => '<string>',
'signature_hash' => '<string>'
]
],
'example' => [
'header_text' => [
'<string>'
],
'header_text_named_params' => [
[
'param_name' => 'nombre',
'example' => 'Juan'
]
],
'header_handle' => [
'<string>'
],
'body_text' => [
'<string>'
],
'body_text_named_params' => [
[
'param_name' => 'nombre',
'example' => 'Juan'
]
]
],
'add_security_recommendation' => true,
'code_expiration_minutes' => 123
]
],
'metadata' => [
]
]),
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.keebai.com/v1/templates"
payload := strings.NewReader("{\n \"channel_id\": \"<string>\",\n \"name\": \"welcome_v2\",\n \"language\": \"es_CL\",\n \"components\": [\n {\n \"text\": \"<string>\",\n \"buttons\": [\n {\n \"text\": \"<string>\",\n \"url\": \"<string>\",\n \"phone_number\": \"<string>\",\n \"example\": [\n \"<string>\"\n ],\n \"flow_id\": \"<string>\",\n \"coupon_code\": \"<string>\",\n \"autofill_text\": \"<string>\",\n \"package_name\": \"<string>\",\n \"signature_hash\": \"<string>\"\n }\n ],\n \"example\": {\n \"header_text\": [\n \"<string>\"\n ],\n \"header_text_named_params\": [\n {\n \"param_name\": \"nombre\",\n \"example\": \"Juan\"\n }\n ],\n \"header_handle\": [\n \"<string>\"\n ],\n \"body_text\": [\n \"<string>\"\n ],\n \"body_text_named_params\": [\n {\n \"param_name\": \"nombre\",\n \"example\": \"Juan\"\n }\n ]\n },\n \"add_security_recommendation\": true,\n \"code_expiration_minutes\": 123\n }\n ],\n \"metadata\": {}\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))
}HttpResponse<String> response = Unirest.post("https://api.keebai.com/v1/templates")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"channel_id\": \"<string>\",\n \"name\": \"welcome_v2\",\n \"language\": \"es_CL\",\n \"components\": [\n {\n \"text\": \"<string>\",\n \"buttons\": [\n {\n \"text\": \"<string>\",\n \"url\": \"<string>\",\n \"phone_number\": \"<string>\",\n \"example\": [\n \"<string>\"\n ],\n \"flow_id\": \"<string>\",\n \"coupon_code\": \"<string>\",\n \"autofill_text\": \"<string>\",\n \"package_name\": \"<string>\",\n \"signature_hash\": \"<string>\"\n }\n ],\n \"example\": {\n \"header_text\": [\n \"<string>\"\n ],\n \"header_text_named_params\": [\n {\n \"param_name\": \"nombre\",\n \"example\": \"Juan\"\n }\n ],\n \"header_handle\": [\n \"<string>\"\n ],\n \"body_text\": [\n \"<string>\"\n ],\n \"body_text_named_params\": [\n {\n \"param_name\": \"nombre\",\n \"example\": \"Juan\"\n }\n ]\n },\n \"add_security_recommendation\": true,\n \"code_expiration_minutes\": 123\n }\n ],\n \"metadata\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.keebai.com/v1/templates")
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 \"channel_id\": \"<string>\",\n \"name\": \"welcome_v2\",\n \"language\": \"es_CL\",\n \"components\": [\n {\n \"text\": \"<string>\",\n \"buttons\": [\n {\n \"text\": \"<string>\",\n \"url\": \"<string>\",\n \"phone_number\": \"<string>\",\n \"example\": [\n \"<string>\"\n ],\n \"flow_id\": \"<string>\",\n \"coupon_code\": \"<string>\",\n \"autofill_text\": \"<string>\",\n \"package_name\": \"<string>\",\n \"signature_hash\": \"<string>\"\n }\n ],\n \"example\": {\n \"header_text\": [\n \"<string>\"\n ],\n \"header_text_named_params\": [\n {\n \"param_name\": \"nombre\",\n \"example\": \"Juan\"\n }\n ],\n \"header_handle\": [\n \"<string>\"\n ],\n \"body_text\": [\n \"<string>\"\n ],\n \"body_text_named_params\": [\n {\n \"param_name\": \"nombre\",\n \"example\": \"Juan\"\n }\n ]\n },\n \"add_security_recommendation\": true,\n \"code_expiration_minutes\": 123\n }\n ],\n \"metadata\": {}\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"name": "<string>",
"language": "<string>",
"status": "<string>",
"category": "<string>",
"variables": [
"<string>"
],
"parameter_format": "<string>"
}Templates
POST /v1/templates
Create a WhatsApp template and submit it to Meta for approval.
POST
/
v1
/
templates
Crear un template de WhatsApp y enviarlo a Meta para aprobación
curl --request POST \
--url https://api.keebai.com/v1/templates \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"channel_id": "<string>",
"name": "welcome_v2",
"language": "es_CL",
"components": [
{
"text": "<string>",
"buttons": [
{
"text": "<string>",
"url": "<string>",
"phone_number": "<string>",
"example": [
"<string>"
],
"flow_id": "<string>",
"coupon_code": "<string>",
"autofill_text": "<string>",
"package_name": "<string>",
"signature_hash": "<string>"
}
],
"example": {
"header_text": [
"<string>"
],
"header_text_named_params": [
{
"param_name": "nombre",
"example": "Juan"
}
],
"header_handle": [
"<string>"
],
"body_text": [
"<string>"
],
"body_text_named_params": [
{
"param_name": "nombre",
"example": "Juan"
}
]
},
"add_security_recommendation": true,
"code_expiration_minutes": 123
}
],
"metadata": {}
}
'import requests
url = "https://api.keebai.com/v1/templates"
payload = {
"channel_id": "<string>",
"name": "welcome_v2",
"language": "es_CL",
"components": [
{
"text": "<string>",
"buttons": [
{
"text": "<string>",
"url": "<string>",
"phone_number": "<string>",
"example": ["<string>"],
"flow_id": "<string>",
"coupon_code": "<string>",
"autofill_text": "<string>",
"package_name": "<string>",
"signature_hash": "<string>"
}
],
"example": {
"header_text": ["<string>"],
"header_text_named_params": [
{
"param_name": "nombre",
"example": "Juan"
}
],
"header_handle": ["<string>"],
"body_text": ["<string>"],
"body_text_named_params": [
{
"param_name": "nombre",
"example": "Juan"
}
]
},
"add_security_recommendation": True,
"code_expiration_minutes": 123
}
],
"metadata": {}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
channel_id: '<string>',
name: 'welcome_v2',
language: 'es_CL',
components: [
{
text: '<string>',
buttons: [
{
text: '<string>',
url: '<string>',
phone_number: '<string>',
example: ['<string>'],
flow_id: '<string>',
coupon_code: '<string>',
autofill_text: '<string>',
package_name: '<string>',
signature_hash: '<string>'
}
],
example: {
header_text: ['<string>'],
header_text_named_params: [{param_name: 'nombre', example: 'Juan'}],
header_handle: ['<string>'],
body_text: ['<string>'],
body_text_named_params: [{param_name: 'nombre', example: 'Juan'}]
},
add_security_recommendation: true,
code_expiration_minutes: 123
}
],
metadata: {}
})
};
fetch('https://api.keebai.com/v1/templates', 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.keebai.com/v1/templates",
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([
'channel_id' => '<string>',
'name' => 'welcome_v2',
'language' => 'es_CL',
'components' => [
[
'text' => '<string>',
'buttons' => [
[
'text' => '<string>',
'url' => '<string>',
'phone_number' => '<string>',
'example' => [
'<string>'
],
'flow_id' => '<string>',
'coupon_code' => '<string>',
'autofill_text' => '<string>',
'package_name' => '<string>',
'signature_hash' => '<string>'
]
],
'example' => [
'header_text' => [
'<string>'
],
'header_text_named_params' => [
[
'param_name' => 'nombre',
'example' => 'Juan'
]
],
'header_handle' => [
'<string>'
],
'body_text' => [
'<string>'
],
'body_text_named_params' => [
[
'param_name' => 'nombre',
'example' => 'Juan'
]
]
],
'add_security_recommendation' => true,
'code_expiration_minutes' => 123
]
],
'metadata' => [
]
]),
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.keebai.com/v1/templates"
payload := strings.NewReader("{\n \"channel_id\": \"<string>\",\n \"name\": \"welcome_v2\",\n \"language\": \"es_CL\",\n \"components\": [\n {\n \"text\": \"<string>\",\n \"buttons\": [\n {\n \"text\": \"<string>\",\n \"url\": \"<string>\",\n \"phone_number\": \"<string>\",\n \"example\": [\n \"<string>\"\n ],\n \"flow_id\": \"<string>\",\n \"coupon_code\": \"<string>\",\n \"autofill_text\": \"<string>\",\n \"package_name\": \"<string>\",\n \"signature_hash\": \"<string>\"\n }\n ],\n \"example\": {\n \"header_text\": [\n \"<string>\"\n ],\n \"header_text_named_params\": [\n {\n \"param_name\": \"nombre\",\n \"example\": \"Juan\"\n }\n ],\n \"header_handle\": [\n \"<string>\"\n ],\n \"body_text\": [\n \"<string>\"\n ],\n \"body_text_named_params\": [\n {\n \"param_name\": \"nombre\",\n \"example\": \"Juan\"\n }\n ]\n },\n \"add_security_recommendation\": true,\n \"code_expiration_minutes\": 123\n }\n ],\n \"metadata\": {}\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))
}HttpResponse<String> response = Unirest.post("https://api.keebai.com/v1/templates")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"channel_id\": \"<string>\",\n \"name\": \"welcome_v2\",\n \"language\": \"es_CL\",\n \"components\": [\n {\n \"text\": \"<string>\",\n \"buttons\": [\n {\n \"text\": \"<string>\",\n \"url\": \"<string>\",\n \"phone_number\": \"<string>\",\n \"example\": [\n \"<string>\"\n ],\n \"flow_id\": \"<string>\",\n \"coupon_code\": \"<string>\",\n \"autofill_text\": \"<string>\",\n \"package_name\": \"<string>\",\n \"signature_hash\": \"<string>\"\n }\n ],\n \"example\": {\n \"header_text\": [\n \"<string>\"\n ],\n \"header_text_named_params\": [\n {\n \"param_name\": \"nombre\",\n \"example\": \"Juan\"\n }\n ],\n \"header_handle\": [\n \"<string>\"\n ],\n \"body_text\": [\n \"<string>\"\n ],\n \"body_text_named_params\": [\n {\n \"param_name\": \"nombre\",\n \"example\": \"Juan\"\n }\n ]\n },\n \"add_security_recommendation\": true,\n \"code_expiration_minutes\": 123\n }\n ],\n \"metadata\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.keebai.com/v1/templates")
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 \"channel_id\": \"<string>\",\n \"name\": \"welcome_v2\",\n \"language\": \"es_CL\",\n \"components\": [\n {\n \"text\": \"<string>\",\n \"buttons\": [\n {\n \"text\": \"<string>\",\n \"url\": \"<string>\",\n \"phone_number\": \"<string>\",\n \"example\": [\n \"<string>\"\n ],\n \"flow_id\": \"<string>\",\n \"coupon_code\": \"<string>\",\n \"autofill_text\": \"<string>\",\n \"package_name\": \"<string>\",\n \"signature_hash\": \"<string>\"\n }\n ],\n \"example\": {\n \"header_text\": [\n \"<string>\"\n ],\n \"header_text_named_params\": [\n {\n \"param_name\": \"nombre\",\n \"example\": \"Juan\"\n }\n ],\n \"header_handle\": [\n \"<string>\"\n ],\n \"body_text\": [\n \"<string>\"\n ],\n \"body_text_named_params\": [\n {\n \"param_name\": \"nombre\",\n \"example\": \"Juan\"\n }\n ]\n },\n \"add_security_recommendation\": true,\n \"code_expiration_minutes\": 123\n }\n ],\n \"metadata\": {}\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"name": "<string>",
"language": "<string>",
"status": "<string>",
"category": "<string>",
"variables": [
"<string>"
],
"parameter_format": "<string>"
}Creates a template on the given WhatsApp channel and submits it to Meta for review. The response includes the template’s internal
Structure of
id and the status it landed in. Until Meta approves the template, you can’t use it in a template message — use GET /v1/templates to check when it becomes APPROVED.
Endpoint
POST https://api.keebai.com/v1/templates
Required scope
templates:create
Headers
| Header | Required | Value |
|---|---|---|
Authorization | Yes | Bearer kbai_pk_<token> |
Content-Type | Yes | application/json |
Body
| Field | Type | Required | Description |
|---|---|---|---|
channel_id | string | Yes | ObjectId of the WhatsApp channel where the template is created. |
name | string | Yes | Template name. Lowercase letters, numbers, and underscores only. Max 512. |
language | string | Yes | Language code (es, es_CL, en_US, etc.). Max 10. |
category | string | Yes | MARKETING, UTILITY, or AUTHENTICATION. |
parameter_format | string | No | NAMED (recommended) or POSITIONAL. |
components | array | Yes | Template components. Same structure as Meta’s. |
metadata | object | No | Free-form metadata attached to the template. |
Structure of components[]
| Field | Type | Description |
|---|---|---|
type | string | HEADER, BODY, FOOTER, or BUTTONS. |
format | string | Only for HEADER: TEXT, IMAGE, VIDEO, or DOCUMENT. |
text | string | Component text. BODY supports {{name}} variables. Max 1024. |
buttons | array | Only for type: BUTTONS. Each button has type (QUICK_REPLY, URL, PHONE_NUMBER, FLOW, VOICE_CALL, COPY_CODE, OTP) and text (max 25). |
example | object | Variable examples Meta requires when reviewing (body_text, body_text_named_params, header_text, header_handle). |
add_security_recommendation | boolean | Only for authentication templates. |
code_expiration_minutes | number | Only for authentication templates. |
Example request
curl -X POST https://api.keebai.com/v1/templates \
-H "Authorization: Bearer kbai_pk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"channel_id": "65f3a1b2c3d4e5f6a7b8c9d0",
"name": "welcome_v2",
"language": "es_CL",
"category": "UTILITY",
"parameter_format": "NAMED",
"components": [
{
"type": "BODY",
"text": "Hola {{nombre}}, tu pedido por {{monto}} está confirmado.",
"example": {
"body_text_named_params": [
{ "param_name": "nombre", "example": "Juan" },
{ "param_name": "monto", "example": "$15.000" }
]
}
}
]
}'
const resp = await fetch("https://api.keebai.com/v1/templates", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.KEEBAI_API_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
channel_id: "65f3a1b2c3d4e5f6a7b8c9d0",
name: "welcome_v2",
language: "es_CL",
category: "UTILITY",
parameter_format: "NAMED",
components: [
{
type: "BODY",
text: "Hola {{nombre}}, tu pedido por {{monto}} está confirmado.",
example: {
body_text_named_params: [
{ param_name: "nombre", example: "Juan" },
{ param_name: "monto", example: "$15.000" },
],
},
},
],
}),
});
const template = await resp.json();
import os, requests
resp = requests.post(
"https://api.keebai.com/v1/templates",
headers={
"Authorization": f"Bearer {os.environ['KEEBAI_API_TOKEN']}",
"Content-Type": "application/json",
},
json={
"channel_id": "65f3a1b2c3d4e5f6a7b8c9d0",
"name": "welcome_v2",
"language": "es_CL",
"category": "UTILITY",
"parameter_format": "NAMED",
"components": [
{
"type": "BODY",
"text": "Hola {{nombre}}, tu pedido por {{monto}} está confirmado.",
"example": {
"body_text_named_params": [
{"param_name": "nombre", "example": "Juan"},
{"param_name": "monto", "example": "$15.000"},
]
},
}
],
},
timeout=20,
)
resp.raise_for_status()
template = resp.json()
Response
201 Created
{
"id": "65f3a1b2c3d4e5f6a7b8c9d2",
"name": "welcome_v2",
"language": "es_CL",
"status": "PENDING",
"category": "UTILITY",
"parameter_format": "NAMED",
"variables": ["nombre", "monto"]
}
| Field | Type | Description |
|---|---|---|
id | string | Internal ObjectId of the newly created template. |
name | string | Name as it was registered. |
language | string | Language code. |
status | string | Initial status reported by Meta (PENDING or IN_REVIEW right after creation). |
category | string | Assigned category. |
parameter_format | string | NAMED or POSITIONAL. |
variables | string[] | Named variables detected in the body. |
400 / 401 / 403 / 404 / 409 / 429
Standard errors. Common cases:400 BAD_REQUEST: body validation (invalid characters in name, malformed components, missingexamplewhen Meta requires it).403 FORBIDDENwithcode: INSUFFICIENT_SCOPE: the PAT does not havetemplates:create.404 NOT_FOUND: thechannel_iddoes not belong to your tenant or does not exist.409 CONFLICT: a template with the samename+languagealready exists on that channel.502 UPSTREAM_ERROR: Meta rejected the creation. Thedetailsfield explains why.
After creating the template you have to wait for Meta to approve it before sending. Poll
GET /v1/templates filtering by status until it shows up as APPROVED. Approval usually takes minutes, but can take longer for sensitive categories like MARKETING.Authorizations
Personal Access Token con prefijo kbai_pk_. Generar desde el portal con permiso developer.manage_tokens.
Body
application/json
ObjectId del canal WhatsApp donde se crea el template.
Nombre del template. Solo minúsculas, números y guiones bajos.
Maximum string length:
512Example:
"welcome_v2"
Maximum string length:
10Example:
"es_CL"
Available options:
MARKETING, UTILITY, AUTHENTICATION Show child attributes
Show child attributes
Available options:
NAMED, POSITIONAL Was this page helpful?
⌘I