SautiDesk
SautiDesk API
Channels and templates

Clone a message template

POST
/v1/desk/templates/{id}/clone

Copies a template under the new name given in the body. The copy can be edited without changing the original.

Requires: desk.admin scope, workspace owner or admin.

Authorization

bearerAuth
AuthorizationBearer <token>

A SautiDesk API key. An owner or admin makes it under Settings in SautiDesk for a named person and picks the scopes. The key is shown once. Send it as Authorization: Bearer <key>. It acts as that person and as nobody else.

In: header

Path Parameters

id*string

The template's id (a UUID).

Request Body

application/json

Response

Created

Example

{  "template": {    "id": "3f2b8c1e-5a4d-4e7b-9c10-2d6a8e4f1b37",    "workspace_id": "0d16f37b-483b-4345-9876-083e209b25ee",    "name": "Amina Wanjiru",    "title": "Order 1182 has not arrived",    "channel": "sms",    "language": "en",    "category": "billing",    "topic_id": "9fa907c4-af65-4b91-9848-7727c8534704",    "subject": "Order 1182 has not arrived",    "body_format": "plain",    "header_kind": "text",    "header_text": "Your order",    "body": "Hi Amina, your order has shipped.",    "footer": "Sent from SautiDesk",    "buttons": [      {        "kind": "billing",        "text": "Hi Amina, your order has shipped.",        "url": "https://example.com/file",        "phone": "+254712345678",        "example": "example"      }    ],    "variables": [      {        "key": "example-value",        "label": "Amina Wanjiru",        "source": "example",        "sample": "example",        "fallback": "example",        "field": "example"      }    ],    "active": false,    "starter_key": "example-value",    "status": "open",    "meta_template_id": "4085f74f-de05-41c9-9407-02ef5aac9079",    "meta_reason": "",    "meta_var_map": [      {        "index": 1,        "key": "example-value"      }    ],    "category_changed_at": "2026-10-14T08:30:00Z",    "created_by": "2faf86ee-f691-403c-936d-bb2014aaf0d1",    "created_at": "2026-10-14T08:30:00Z",    "updated_at": "2026-10-14T08:30:00Z",    "submitted_at": "2026-10-14T08:30:00Z",    "reviewed_at": "2026-10-14T08:30:00Z"  },  "dropped": [    {      "field": "example",      "reason": "Outside business hours"    }  ]}
FieldTypeDescription
templaterequiredobject
idrequiredstring (uuid)
workspace_idrequiredstring (uuid)
namerequiredstringA name for it.
titlerequiredstringA short title.
channelrequiredstringThe channel to use: sms, whatsapp or email.
languagerequiredstringThe language code of the template, for example en or sw.
categoryrequiredstringThe name of the category.
topic_idstring (uuid) | nullThe id of the topic the template is filed under.
subjectrequiredstringThe subject line.
body_formatrequiredstringHow the body is formatted. Plain text is the default.
header_kindrequiredstringWhat the template header holds: none for no header, or text to use header_text.
header_textrequiredstringThe header line of the template message.
bodyrequiredstringThe message text.
footerrequiredstringA short line shown at the bottom of the message.
buttonsrequiredobject[]The buttons shown under a WhatsApp template message, each with a label and what it does.
kindrequiredstringWhat kind it is.
textrequiredstringYour own words for the nudge.
urlstring
phonestring
examplestring
variablesrequiredobject[]The values for the template's placeholders, each by name.
keyrequiredstring
labelrequiredstringA short name to recognise it by.
sourcerequiredstring
samplerequiredstring
fallbackstring
fieldrequiredstring
activerequiredbooleanTrue to switch it on, false to switch it off.
starter_keystring
statusrequiredstringThe status to set.
meta_template_idstring
meta_reasonstring
meta_var_mapobject[]
indexrequiredinteger
keyrequiredstring
category_changed_atstring (date-time) | null
created_bystring (uuid) | null
created_atrequiredstring (date-time)
updated_atrequiredstring (date-time)
submitted_atstring (date-time) | null
reviewed_atstring (date-time) | null
droppedobject[]
fieldrequiredstring
reasonrequiredstringWhy, in a few words, for example Lunch.
curl -X POST "https://api.sautidesk.com/v1/desk/templates/string/clone" \  -H "Content-Type: application/json" \  -d '{    "name": "Amina Wanjiru"  }'