Create template
POST /templates — save a reusable template.
/templatesCreates a template with status: "draft". Provide a name and at least one of html or text. Returns { object: "template", id }. Use POST /templates/:id/publish to publish the draft.
namestringrequiredA name for the template (shown in the dashboard).
aliasstringoptionalA unique, human-readable handle. Pass alias instead of id wherever a template id is accepted (e.g. template_id on sends, GET /templates/:id). Must be unique across your templates.
subjectstringoptionalDefault subject line. Supports {{ variables }}. Can be overridden when sending.
htmlstringoptionalHTML body. Required if text is omitted. Supports {{ variables }}.
textstringoptionalPlain-text body. Required if html is omitted. Supports {{ variables }}. If omitted, a plain-text version is generated from the HTML; set it to an empty string to opt out.
fromstringoptionalDefault sender address. Use "Your Name <sender@domain.com>" for a friendly name. Can be overridden when sending.
reply_tostring | string[]optionalDefault Reply-To address, or an array of addresses. Can be overridden when sending.
variablesarrayoptionalThe variables used in the template (up to 50). Each is an object with key, type, and an optional fallback_value — see below.
keystringrequiredThe variable key. We recommend capitalizing it (e.g. PRODUCT_NAME). Reserved names that cannot be used: FIRST_NAME, LAST_NAME, EMAIL, UNSUBSCRIBE_URL, contact, this. Keys must start with a letter or underscore and contain only letters, digits, underscores, or dots.
type'string' | 'number'optionalThe type of the variable. Defaults to string when omitted.
fallback_valuestring | number | nulloptionalThe value used when none is supplied at send time. Must match type. If omitted, a value for this variable is required when sending.
import { MailBlastr } from 'mailblastr';
const mb = new MailBlastr('mb_xxxxxxxxx');
const { data, error } = await mb.templates.create({
"name": "Welcome email",
"subject": "Welcome, {{first_name}}!",
"html": "<h1>Hi {{first_name}}</h1>"
});
console.log({ data, error });Response
Returns { object: "template", id } — a slim acknowledgement. Fetch the full object with GET /templates/:id.
{
"object": "template",
"id": "tmpl_8f5c2a1e"
}missing_required_field if name is absent; validation_error if neither html nor text is provided, or if a variable uses a reserved key or a fallback_value that does not match its type.