The template catalog ships ready-to-deploy automations. Each one is a complete AutomationWorkflow plus a list of variables — placeholders you fill in (template IDs, queue names, thresholds) before activating.
Fetch templates
POST
/automation/ai/templatesJWTOptional filters in the body: category, industry.
curl -X POST https://appengine.appmint.io/automation/ai/templates \
-H "Authorization: Bearer $JWT" -H "orgid: $ORG" \
-d '{"category": "onboarding"}'
Response:
[
{
"id": "tpl_welcome_series",
"name": "Welcome series (3 touches)",
"description": "Email day 0, day 3, day 7 after contact creation",
"category": "onboarding",
"industry": "saas",
"workflow": { /* full AutomationWorkflow */ },
"variables": [
{ "name": "welcomeTemplateId", "type": "string", "required": true, "description": "Template for day-0 email" },
{ "name": "tipsTemplateId", "type": "string", "required": true },
{ "name": "checkInTemplateId", "type": "string", "required": true }
]
}
]
Common categories
| Category | Example flows |
|---|---|
onboarding | Welcome series, day-1 check-in, trial-end reminder |
sales | Lead routing, cold-lead reactivation, hot-lead → call task |
support | Ticket SLA escalation, post-ticket survey |
commerce | Abandoned cart, post-purchase upsell, low-stock alerts |
events | Reservation confirmation, day-before reminder, follow-up |
marketing | Re-engagement, link-click intent capture, unsubscribe handling |
phone | Missed-call SMS reply, after-hours voicemail, IVR menu |
Apply a template
Templates are not auto-saved. Substitute the variables, wrap in BaseModel, and POST /automation:
const [tpl] = await api.post('/automation/ai/templates', { category: 'onboarding' });
// Fill required variables
const workflow = JSON.parse(
JSON.stringify(tpl.workflow)
.replace('{{welcomeTemplateId}}', 'welcome-2026')
.replace('{{tipsTemplateId}}', 'tips-2026')
.replace('{{checkInTemplateId}}', 'checkin-2026')
);
const saved = await api.post('/automation', {
datatype: 'automation',
data: { ...workflow, status: 'draft', enabled: true },
});
await api.post(`/automation/start/${saved.sk}`, { startedBy: 'alice' });
When to template vs generate
Use a template when there's a known recipe and you only need to plug in IDs. Use AI generation when the flow is novel or the branching logic is org-specific. Templates produce identical structure every time; the AI generator does not.