Templated

Test Sends & Compatibility

Send test emails to your own inbox and check client compatibility before shipping.

Test Sends & Compatibility

Before pushing a template to your email service provider, you can send it to your own inbox and run an email-client compatibility report.

Send a test email

Sends the supplied HTML to your own verified email address — the recipient is always the authenticated user and cannot be set in the request. The subject is prefixed with [Test].

curl -b cookies.txt -X POST \
  https://app.templated.email/api/accounts/{slug}/send-test-email \
  -H "Content-Type: application/json" \
  -d '{
    "html": "<html><body><h1>Launching Soon</h1></body></html>",
    "subject": "Product launch preview",
    "templateId": "0d9f1b2a-3c4d-4e5f-8a6b-7c8d9e0f1a2b"
  }'

Request body

FieldTypeRequiredDescription
htmlstringYesRendered email HTML, max 1 MB
textstringNoPlain-text alternative
subjectstringNoMax 200 chars — sent as [Test] {subject}
templateIdstringNoFor audit logging only

Response

{ "data": { "sent": true, "to": "you@example.com" } }

Errors

StatusMeaning
403Your email address isn't verified (code: EMAIL_UNVERIFIED), or you lack the template:export permission
429Rate limited — 15 test sends per hour per user (Retry-After header included)
500The send failed downstream (code: SEND_FAILED)

Check email client compatibility

Runs the HTML through a caniemail-based analysis and reports features that may not render correctly across email clients.

curl -b cookies.txt -X POST \
  https://app.templated.email/api/compatibility \
  -H "Content-Type: application/json" \
  -d '{
    "html": "<html><body>...</body></html>",
    "plan": "pro"
  }'

Request body

FieldTypeRequiredDescription
htmlstringYesEmail HTML, max 500 KB
planenumNoClient coverage tier: free, pro, or business. Defaults to free. Higher tiers check more clients

Response

Returns { "data": { ...report } } — a per-feature breakdown of support across the checked email clients.

This endpoint requires an authenticated session but is not account-scoped.

Next steps

On this page