On this page
POST/templates
Create a manual email agent. The Public API never creates Full Auto agents. Creating an agent does not assign it to a campaign — call POST /campaigns/:id/template.
0 credits. Rate class: campaign_control (default 20/min). Optional Idempotency-Key (max 128).
Request
POST /templates
X-API-Key: sk_live_...
Content-Type: application/json
Idempotency-Key: demo-template-1
{
"name": "Local SEO outreach",
"prompt": "Write a short intro about our SEO audit for {companyName}.",
"yourPitch": "We run free local SEO audits for restaurants.",
"sendWhen": {
"days": ["monday", "tuesday", "wednesday"],
"timeRange": { "start": "09:00", "end": "17:00" },
"timezone": "Europe/Paris"
},
"selectedAccounts": ["acc_1"]
}
| Field | Required | Notes |
|---|---|---|
name | Yes | ≤ 200 chars |
prompt | Yes | Initial body (static) or AI instruction (ai) |
yourPitch | Yes | Non-empty |
sendWhen | Yes | Weekday names, HH:MM timeRange, IANA timezone |
selectedAccounts | Yes | ≥ 1 connected sending account id |
messageType | No | ai (default) · static |
outboundSendMode | No | auto (default) · review |
agentCanReply | No | boolean, default false |
agentMaxReplies | No | 1…3, default 3 |
followUps | No | ≤ 10 items with delay + messageType + prompt |
| Subject / signature / format | No | emailSubjectType, templates, signatureBlock, useGmailAccountSignature, messageBodyFormat |
autoExcludePolicy | No | { "mode": "standard|custom|off", "customRules" } |
Rejected fields include mode, knowledge/assets/skills, campaign assignment keys, LinkedIn invite-note fields, and unknown keys.
Response 201
Same shape as GET /templates/:id.
Errors
| Code | When |
|---|---|
validation_error | Missing/invalid field or rejected key |
account_disconnected | A selected account is missing, inactive, or disconnected |
conflict | Idempotency mismatch or in progress |
rate_limited | campaign_control RPM exceeded |
upstream_unavailable | Write failed — retry with the same Idempotency-Key |
MCP
Tool: create_template. Prefer an Idempotency-Key.