Templates
Update template
Update the fields you send; omitted fields keep their value. Empty html or text values are ignored, so a body cannot be cleared. Each update increments version.
PATCH
https://api.sndr.sh/api/cranl/v1/templates/{id}Update template
curl -X PATCH 'https://api.sndr.sh/api/cranl/v1/templates/tpl_c19e5d34-82a' \
-H 'Authorization: Bearer sndr_your_access_token' \
-H 'Content-Type: application/json' \
-d '{"subject": "Order #{{ order_id }} has shipped"}'200OK
{
"id": "tpl_c19e5d34-82a",
"organization_id": "org_8d41c7a2-3f6",
"name": "Order confirmation",
"subject": "Order #{{ order_id }} has shipped",
"html": "<h1>Hi {{ first_name }},</h1><p>Order #{{ order_id }} confirmed.</p>",
"text": "Hi {{ first_name }}, order #{{ order_id }} confirmed.",
"version": 4,
"created_at": "2026-02-10T14:00:00Z",
"updated_at": "2026-06-01T12:00:00Z"
}Authorization
AuthorizationstringheaderrequiredBearer followed by an access token. Needs the send scope.
Path parameters
idstringrequiredTemplate ID (tpl_...).
Body
application/jsonnamestringNew internal name, 1–200 characters.
subjectstringNew subject line, max 998 characters.
htmlstringNew HTML body (sanitized on save).
textstringNew plain-text body.
Errors
401
unauthenticatedMissing or invalid Bearer token.401
token_expiredAccess token expired — exchange the refresh token for a new pair.401
token_revokedToken was explicitly revoked.400
invalid_requestBody is not valid JSON, has an unknown field, or a field has the wrong type.403
insufficient_scopeToken is missing the send scope.404
not_foundResource does not exist or belongs to a different account.422
validation_failedname or subject is empty or too long.