List Templates
Get a list of your saved email templates.
By default the response returns only template metadata (id, name, type, status, dates) — fast and small, ideal for building a template picker or dashboard.
If you also want the full template body (HTML, AMP, and plain text) inlined in the same response, set include_content: true. This is useful when you need to render or display the templates yourself without making a separate GET /templates/details/{id} call for each one.
You can filter, sort, search, and paginate through your templates:
- Filter by template type (
html,amp, or both) - Filter by status (
saved,draft, or both) - Filter by category
- Search by template name (case-insensitive substring match)
- Sort by name, created date, or modified date — ascending or descending
- Paginate with
pageandlimit
Response limits when include_content: true:
Because template bodies can be large, two safeguards apply when you ask for content:
limitis capped at 20 templates per response (even if you request more).- The total response size is capped at 10 MB.
If the response would exceed the size cap, you’ll receive as many templates as fit, and the response will include truncated: true. When this happens, fetch the missing templates one at a time using GET /templates/details/{id} — the template_count field tells you the total number of templates that match your filter so you know how many are missing.
Authorizations
Your Mailercloud API key (plain text, no Bearer prefix). Create keys in Settings → API.
Headers
Request body type
Body
Page number (1-indexed). Defaults to 1 when omitted. page=0 is silently treated as page=1. page * limit > 100000 returns 400.
x >= 1Maximum rows per page.
Minimum: 10 Maximum: 100
When include_content=true, server silently clamps to 20 regardless of the requested value.
10 <= x <= 100Comma-separated filter. Allowed tokens: html, amp.
- Omitted or empty: no filter (all types).
"html": HTML templates only (matches every non-AMP row, including legacy Stripo/DnD/plugin types)."amp": AMP templates only."html,amp": both (equivalent to no filter).
Whitespace around commas is trimmed. Unknown tokens (e.g. "plaintext") return 400. Trailing comma returns 400.
Comma-separated filter. Allowed tokens: saved, draft.
- Omitted or empty: defaults to
"saved"only. "saved": published templates."draft": in-progress templates."saved,draft": both.
Unknown tokens return 400.
Optional. Filter to a single template category. Omitted = no filter (all categories). 0 filters to uncategorized templates only. Negative values return 400. Not echoed back in response rows.
Use GET /v1/templates/categories/list to enumerate available categories.
Case-insensitive substring match on template name. Maximum 100 characters. Whitespace-only input is treated as no filter. % and _ are escaped before matching (no SQL LIKE wildcard injection).
100Field to sort by.
Supported values: name, created_date, modified_date.
An implicit id DESC secondary sort is always applied for stable pagination across rows with tied timestamps.
name, created_date, modified_date Sort direction.
Supported values: asc, ASC, desc, DESC.
asc, ASC, desc, DESC When true, response rows include html, amp_content, and plain_text fields populated with the full template content. Server-side: limit is silently clamped to 20, and the total response is bounded by a 10 MB soft budget. When the budget is exceeded after the first row, remaining rows are skipped and truncated: true is set.
Response
OK
Total matching rows across the entire result set, ignoring pagination AND truncation.
true when the response budget engaged and some rows that would otherwise have fit were skipped. Always present in 200 responses, even in metadata mode (where it is always false).