curl --request POST \
--url https://{projectID}.texterchat.com/server/api/v2/whatsapp/templates/{accountId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"title": "Example Template",
"category": "MARKETING",
"chatStatus": 1,
"usage": "inbox"
}
'{
"_id": "690868f7962e17ab3033f91b",
"name": "inbox_marketing_95",
"channelInfo": {
"name": "whatsapp",
"accountId": "972509876543"
},
"chatStatus": 1,
"created": 1762158839563,
"departments": [],
"isDefault": false,
"localizationDrafts": {},
"provider_template": {
"name": "inbox_marketing_95",
"category": "MARKETING",
"localizations": [],
"metadata": {}
},
"title": "Example Template",
"updatedAt": "2025-11-03T08:33:59.563Z",
"usage": "inbox"
}{
"error": "data/chatStatus must be equal to one of the allowed values"
}Create New Template
This endpoint is the first of three required to create and submit a new template.
curl --request POST \
--url https://{projectID}.texterchat.com/server/api/v2/whatsapp/templates/{accountId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"title": "Example Template",
"category": "MARKETING",
"chatStatus": 1,
"usage": "inbox"
}
'{
"_id": "690868f7962e17ab3033f91b",
"name": "inbox_marketing_95",
"channelInfo": {
"name": "whatsapp",
"accountId": "972509876543"
},
"chatStatus": 1,
"created": 1762158839563,
"departments": [],
"isDefault": false,
"localizationDrafts": {},
"provider_template": {
"name": "inbox_marketing_95",
"category": "MARKETING",
"localizations": [],
"metadata": {}
},
"title": "Example Template",
"updatedAt": "2025-11-03T08:33:59.563Z",
"usage": "inbox"
}{
"error": "data/chatStatus must be equal to one of the allowed values"
}Manage WhatsApp templates
When a template is first created, it exists only locally and is not yet visible to WhatsApp. The template entity is internal, so it has properties unknown to WhatsApp such as the reply action, bot node, and departments.
After creating a template, the next step is to Create or Update Localization, which defines all the properties required by WhatsApp - including the language, components (header, body, footer, buttons) and example variable values. Finally, once both the template and its localization have been created, you can Submit the Template for Approval.
If you don’t specify a template name, one is generated automatically - save the generated name from the response to use when creating a localization and submitting.Authorizations
API token generated in Texter: gear icon → Developers → API Tokens. When creating a token, assign it the scopes required by the endpoints you plan to call - each endpoint lists its required scopes.
Path Parameters
The account ID of the channel in Texter. For WhatsApp channels this is the phone number connected to the account (e.g. 972586640430)
Body
Internal title shown in Texter
WhatsApp template category. WhatsApp may adjust this value upon submission based on the template's semantic classification
MARKETING, UTILITY, AUTHENTICATION The chat status after the recipient replies to the template: 0 = BOT, 1 = PENDING, 2 = ASSIGNED, 3 = RESOLVED, 4 = BULK (accepted but not meaningful as a reply status)
0, 1, 2, 3, 4 Whether this template is intended to be sent individually (inbox) or in bulk (bulk)
inbox, bulk The template name (which serves as its ID). Auto-generated if not specified. Must be unique per account. Names of deleted templates remain reserved and cannot be reused. Only letters, numbers and underscores are allowed
^[a-zA-Z0-9_]+$Defaults to false. Only one template can be the default
Department IDs that have access to this template
If chatStatus is 0 (BOT), the bot starts running from this specific node when the recipient replies. Must be an existing node in the channel's bot
Assign the chat to this agent (the agent's user UID in Texter) after the recipient replies. Can't be combined with responsibleDepartment. Must be a UID, not an email - an email stored here silently fails to assign on reply. (Only the Send Template Message replyAction.responsibleAgent accepts email or UID.) Send null to clear
Assign the chat to this department (department ID from Texter) after the recipient replies. Can't be combined with responsibleAgent. Send null to clear
Text sent automatically when the recipient replies to the template
The bot flow to run when the recipient replies (only meaningful when chatStatus is 0/BOT). Send null to clear
Response
The newly created template object. Field-by-field reference: The Template object
A WhatsApp template in Texter, including internal behavior (chat routing rules, departments, defaults) and provider state (WhatsApp approval status, localized content)
Unique identifier of the template in Texter
"6891bb93481ccea320113a91"
Internal template name (also used as the template ID in API calls)
"bulk_marketing_272"
Human-readable title shown in Texter's UI
How this template is intended to be sent: inbox (1-to-1) or bulk (broadcast)
inbox, bulk Status the chat moves to after the recipient replies to this template
0, 1, 2, 3, 4 When the template was created (epoch ms)
Department IDs allowed to use this template. Can be empty
Whether this is the default template for the account. Only one template can be default
Bot node to trigger after reply, if chatStatus routes to bot
Specific bot to run after reply, if chatStatus routes to bot
Text automatically sent when the recipient replies to the template
Agent (email) the chat is assigned to after the recipient replies
Department ID the chat is assigned to after the recipient replies
File automatically sent when the recipient replies, when configured
Show child attributes
Show child attributes
Channel adapter that owns this template (relevant when multiple WhatsApp account types are connected)
The channel account this template belongs to
Show child attributes
Show child attributes
The template as registered with WhatsApp
Show child attributes
Show child attributes
Default send values by language code, prefilled when sending the template if the caller does not provide overrides
Show child attributes
Show child attributes
Map of language code to draft localization (created but not yet submitted/approved)
Show child attributes
Show child attributes