API Reference: Message Templates
List, create, update, and delete message templates — the reusable email and SMS bodies that the Messages API renders against recipient records.
Overview
A Message Template is a reusable outgoing-message definition — name, delivery method, suggested subject line, and a designed body — that the platform renders against a recipient DataRecord at send time. Sending an outgoing message via the Messages API means picking a template, picking a recipient, and letting the platform render and deliver. This API manages the templates themselves — CRUD operations on /v1/message-templates.
Message Templates wrap Content Templates: each message template links to a Content Template that holds the actual body content and design. This endpoint manages the message-template metadata; the body/design is authored in Message Studio in the dashboard (or via the Content Templates API for text content).
All endpoints require the OUTGOING_MESSAGES_TEMPLATES feature permission.
Endpoints
| Method | Path | SDK |
|---|---|---|
GET | /v1/message-templates | s360.messageTemplates.list() |
GET | /v1/message-templates/{outgoingMessageTemplateSimplyId} | s360.messageTemplates.get(outgoingMessageTemplateSimplyId) |
POST | /v1/message-templates | s360.messageTemplates.create(params) |
PUT | /v1/message-templates/{outgoingMessageTemplateSimplyId} | s360.messageTemplates.update(outgoingMessageTemplateSimplyId, params) |
DELETE | /v1/message-templates/{outgoingMessageTemplateSimplyId} | s360.messageTemplates.delete(outgoingMessageTemplateSimplyId) |
The MessageTemplate Resource
| Field | Type | Description |
|---|---|---|
id | string | simplyId of the template. |
name | object | Localized label (e.g. {"en": "Welcome Email"}). |
description | object? | Localized description. |
deliveryMethod | string | EMAIL or SMS. |
suggestedSubjectLine | string? | Default email subject offered at send time. Supports merge tags. |
designFormat | string | grapesjs (email designer) or document. |
publishedAt | string? | When the template was published, if it has been. |
archivedAt | string? | Set when the template has been archived. |
createdAt / updatedAt | string | ISO 8601 timestamps. |
List Templates
Supports limit (default 25, max 100), offset, and an optional deliveryMethod filter (EMAIL or SMS). Archived templates are excluded.
const templates = await s360.messageTemplates.list();
for (const tmpl of templates.data) {
console.log(`${tmpl.id}: ${tmpl.name?.en} (${tmpl.deliveryMethod})`);
}
curl -s "https://api.simply360.app/v1/message-templates?deliveryMethod=EMAIL" \
-H "Authorization: Bearer $S360_API_KEY"
Create a Template
Creation takes name (required; string or localized object) plus optional description, deliveryMethod (EMAIL default, or SMS), subjectLine, and designFormat (grapesjs default, or document). The body content and design are then authored in Message Studio.
const created = await s360.messageTemplates.create({
name: 'Registration Confirmation',
description: 'Sent after a completed registration wizard',
deliveryMethod: 'EMAIL',
subjectLine: 'You\'re registered for {{Event Name}}',
});
console.log(`Created template: ${created.data.id}`);
curl -s -X POST "https://api.simply360.app/v1/message-templates" \
-H "Authorization: Bearer $S360_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Registration Confirmation",
"subjectLine": "You'\''re registered for {{Event Name}}",
"deliveryMethod": "EMAIL"
}'
Update a Template
PUT updates the supplied fields only; unset fields are not modified. Updatable fields are name, description, and subjectLine. Delivery method and design format are fixed at creation.
await s360.messageTemplates.update('TMPL-1234-ABCD', {
subjectLine: 'See you at {{Event Name}}!',
});
Delete a Template
Archives the template (soft delete). Existing references (automations, past sends) remain intact; the template stops appearing in lists and pickers. The response is { outgoingMessageTemplateSimplyId, deleted: true }.
await s360.messageTemplates.delete('TMPL-1234-ABCD');
Merge Tags
Reference fields on the recipient record using {{ Field Title }}. The platform resolves them at send time:
Hi {{First Name}},
Your invoice #{{Invoice Number}} for {{Total Amount}} is ready.
— Team {{Team Name}}
Missing fields render as empty strings. Test with a real record in the dashboard's preview before sending in bulk.
Usage Notes
- Templates created via API are usable immediately by automations and the Messages API — no warm-up step — but give them body content in Message Studio first.
- For SMS templates, set
deliveryMethod: 'SMS'; the subject line is not used for SMS delivery. - The template body lives on the linked Content Template. To manage text content or document-generation templates programmatically, use the Content Templates API.
- Names and descriptions are localized objects on the wire; passing a plain string stores it as the
envalue.