Message templates
The Message templates endpoints of the Kenso API.
List message templates in the current workspace
/v1/message-templatesmessage-templates.listNeeds the whatsapp feature on your workspace. Until it is on, calls answer 404.
Ordered by id. channel accepts only whatsapp. Any member.
Parameters
YYYY-MM-DD form. 1.1 is another name for the first dated version. Leave it out to use your API key's pinned version. Keys created in the Kenso app are pinned to the newest version; keys minted by the CLI login are not. A key with no pinned version and no header gets the legacy shape where the path has one, and 404 where the path exists only in this version. A date that is not a version answers 400 unsupported_version; any other value that is not a version is treated as legacy.400 workspace_required. A workspace you are not a member of answers 404 not_found.Response 200
data is a list of MessageTemplate. Each item has these fields. The response also carries pagination.
curl -X GET "https://api.ken.so/v1/message-templates?limit=1" \ -H "Authorization: Bearer $KEN_API_KEY" \ -H "Ken-Version: 1.1" \ -H "X-Ken-Workspace-Id: $KEN_WORKSPACE_ID"
{
"success": true,
"data": [
{
"id": 812,
"channel": "string",
"name": "string",
"body": "string",
"variables": [
"string"
],
"mediaIds": [
812
],
"voiceProvider": "string",
"voiceId": "string",
"authorSource": "string",
"createdAt": "2026-09-23T15:02:11Z",
"updatedAt": "2026-09-23T15:02:11Z"
}
],
"pagination": {
"nextCursor": "eyJpZCI6ODE1fQ",
"hasMore": true,
"total": 1,
"isTotalCapped": true
}
}Create a message template
/v1/message-templatesmessage-templates.createNeeds the whatsapp feature on your workspace. Until it is on, calls answer 404.
The author is the caller (user for a person in the dashboard, else agent). A body variable is a source and one of its fields, joined by a dot, in double braces: {{account.name}}, {{person.title}}. The fields are first_name, last_name, full_name and title on person; name on account; and first_name, full_name and company on sender. Up to 6 mediaIds, or a voice, never both; a voice limits the body to 900 characters.
Parameters
YYYY-MM-DD form. 1.1 is another name for the first dated version. Leave it out to use your API key's pinned version. Keys created in the Kenso app are pinned to the newest version; keys minted by the CLI login are not. A key with no pinned version and no header gets the legacy shape where the path has one, and 404 where the path exists only in this version. A date that is not a version answers 400 unsupported_version; any other value that is not a version is treated as legacy.400 workspace_required. A workspace you are not a member of answers 404 not_found.Request body
application/json, optional.
Response 201
data is a MessageTemplate.
curl -X POST "https://api.ken.so/v1/message-templates" \
-H "Authorization: Bearer $KEN_API_KEY" \
-H "Ken-Version: 1.1" \
-H "X-Ken-Workspace-Id: $KEN_WORKSPACE_ID" \
-H "Content-Type: application/json" \
-d '{
"channel": "string",
"name": "string",
"body": "string",
"mediaIds": [
812
],
"voiceProvider": "string",
"voiceId": "string",
"authorSource": "string"
}'{
"success": true,
"data": {
"id": 812,
"channel": "string",
"name": "string",
"body": "string",
"variables": [
"string"
],
"mediaIds": [
812
],
"voiceProvider": "string",
"voiceId": "string",
"authorSource": "string",
"createdAt": "2026-09-23T15:02:11Z",
"updatedAt": "2026-09-23T15:02:11Z"
}
}Return one message template in the current workspace
/v1/message-templates/{messageTemplateId}message-templates.getNeeds the whatsapp feature on your workspace. Until it is on, calls answer 404.
A missing, deleted or cross-workspace id is not_found. Any member.
Parameters
YYYY-MM-DD form. 1.1 is another name for the first dated version. Leave it out to use your API key's pinned version. Keys created in the Kenso app are pinned to the newest version; keys minted by the CLI login are not. A key with no pinned version and no header gets the legacy shape where the path has one, and 404 where the path exists only in this version. A date that is not a version answers 400 unsupported_version; any other value that is not a version is treated as legacy.400 workspace_required. A workspace you are not a member of answers 404 not_found.Response 200
data is a MessageTemplate.
curl -X GET "https://api.ken.so/v1/message-templates/812" \ -H "Authorization: Bearer $KEN_API_KEY" \ -H "Ken-Version: 1.1" \ -H "X-Ken-Workspace-Id: $KEN_WORKSPACE_ID"
{
"success": true,
"data": {
"id": 812,
"channel": "string",
"name": "string",
"body": "string",
"variables": [
"string"
],
"mediaIds": [
812
],
"voiceProvider": "string",
"voiceId": "string",
"authorSource": "string",
"createdAt": "2026-09-23T15:02:11Z",
"updatedAt": "2026-09-23T15:02:11Z"
}
}Update a message template
/v1/message-templates/{messageTemplateId}message-templates.updateNeeds the whatsapp feature on your workspace. Until it is on, calls answer 404.
Only the fields sent are written. mediaIds [] clears; voiceProvider and voiceId go together (both null clears the voice). A template holds images or a voice, never both. An agent cannot edit a template a person wrote.
Parameters
YYYY-MM-DD form. 1.1 is another name for the first dated version. Leave it out to use your API key's pinned version. Keys created in the Kenso app are pinned to the newest version; keys minted by the CLI login are not. A key with no pinned version and no header gets the legacy shape where the path has one, and 404 where the path exists only in this version. A date that is not a version answers 400 unsupported_version; any other value that is not a version is treated as legacy.400 workspace_required. A workspace you are not a member of answers 404 not_found.Request body
application/json, optional: object.
Response 200
data is a MessageTemplate.
curl -X PATCH "https://api.ken.so/v1/message-templates/812" \
-H "Authorization: Bearer $KEN_API_KEY" \
-H "Ken-Version: 1.1" \
-H "X-Ken-Workspace-Id: $KEN_WORKSPACE_ID" \
-H "Content-Type: application/json" \
-d '{}'{
"success": true,
"data": {
"id": 812,
"channel": "string",
"name": "string",
"body": "string",
"variables": [
"string"
],
"mediaIds": [
812
],
"voiceProvider": "string",
"voiceId": "string",
"authorSource": "string",
"createdAt": "2026-09-23T15:02:11Z",
"updatedAt": "2026-09-23T15:02:11Z"
}
}Delete a message template
/v1/message-templates/{messageTemplateId}message-templates.deleteNeeds the whatsapp feature on your workspace. Until it is on, calls answer 404.
Returns 204. An agent cannot delete a template a person wrote.
Parameters
YYYY-MM-DD form. 1.1 is another name for the first dated version. Leave it out to use your API key's pinned version. Keys created in the Kenso app are pinned to the newest version; keys minted by the CLI login are not. A key with no pinned version and no header gets the legacy shape where the path has one, and 404 where the path exists only in this version. A date that is not a version answers 400 unsupported_version; any other value that is not a version is treated as legacy.400 workspace_required. A workspace you are not a member of answers 404 not_found.Response 204
curl -X DELETE "https://api.ken.so/v1/message-templates/812" \ -H "Authorization: Bearer $KEN_API_KEY" \ -H "Ken-Version: 1.1" \ -H "X-Ken-Workspace-Id: $KEN_WORKSPACE_ID"
HTTP/1.1 204 No Content