Donutwork Docs

Email Gateway

Manage reusable email templates, preview rendered output, and send transactional emails.

Email Gateway API

The Email Gateway API manages template files and transactional sends.


List Templates

GET
/2026-02-01/email-gateway/templates.json
Required permissionemail_templates:readApiAccessPermission::EMAIL_TEMPLATES_READ

Query Parameters

sizeinteger
Records per page (max 100).
pageinteger
Page index (starting from 1).

Responses

Template list returned.

{
  "entities": "Email Templates",
  "count": 2,
  "per_page": 100,
  "pages": {
    "current": 1,
    "max": 1
  },
  "elements": [
    {
      "id": "welcome.html",
      "endpoint": [
        {
          "type": "POST",
          "action": "Send email using this template",
          "url": "https://api.hub.donutwork.com/2026-02-01/email-gateway/welcome.html/send.json"
        }
      ]
    }
  ]
}

Create Template

POST
/2026-02-01/email-gateway/templates.json
Required permissionemail_templates:writeApiAccessPermission::EMAIL_TEMPLATES_WRITE

Query Parameters

No query parameters required.

Request Body

JSON
{
  "template": {
    "id": "welcome.html",
    "content": "<h1>Hello FIRST_NAME</h1>"
  }
}
template.idstringRequired
Template filename identifier.
template.contentstring
Optional initial template content.

Responses

Template created.

{
  "id": "welcome.html"
}

Template already exists.

{
  "error": "Template already exists"
}

Get Template

GET
/2026-02-01/email-gateway/templates/{templateId}.json
Required permissionemail_templates:readApiAccessPermission::EMAIL_TEMPLATES_READ

Query Parameters

templateIdstringRequired
Template identifier.

Responses

Template returned.

{
  "id": "welcome.html",
  "content": "<h1>Hello FIRST_NAME</h1>"
}

Template not found.

{
  "error": "Template not found"
}

Update Template

PUT
/2026-02-01/email-gateway/templates/{templateId}.json
Required permissionemail_templates:writeApiAccessPermission::EMAIL_TEMPLATES_WRITE

Query Parameters

templateIdstringRequired
Template identifier.

Request Body

JSON
{
  "template": {
    "content": "<h1>Hello FIRST_NAME</h1><p>Updated</p>"
  }
}
template.contentstringRequired
Template content to persist.

Responses

Template updated.

{
  "id": "welcome.html",
  "updated": true
}

Delete Template

DELETE
/2026-02-01/email-gateway/templates/{templateId}.json
Required permissionemail_templates:writeApiAccessPermission::EMAIL_TEMPLATES_WRITE

Query Parameters

templateIdstringRequired
Template identifier.

Responses

Template deleted.

{
  "id": "welcome.html",
  "deleted": true
}

Preview Template

POST
/2026-02-01/email-gateway/templates/{templateId}/preview.json
Required permissionemail_templates:writeApiAccessPermission::EMAIL_TEMPLATES_WRITE

Query Parameters

templateIdstringRequired
Template identifier.

Request Body

JSON
{
  "preview": {
    "vars": {
      "first_name": "Alex"
    }
  }
}
preview.varsobject
Variables used for server-side placeholder rendering.

Responses

Rendered HTML preview returned.

{
  "template_id": "welcome.html",
  "html": "<h1>Hello Alex</h1>"
}

Dispatch Transactional Email

POST
/2026-02-01/email-gateway/{templateId}/send.json
Required permissionemail_messages:writeApiAccessPermission::EMAIL_MESSAGES_WRITE

Query Parameters

templateIdstringRequired
Template identifier.

Request Body

JSON
{
  "email": {
    "to": "recipient@example.com",
    "subject": "Operational Update",
    "from": "notifications@example.com",
    "cc": [
      "ops@example.com"
    ],
    "vars": {
      "first_name": "Alex"
    },
    "attachments": [
      {
        "content": "SGVsbG8gd29ybGQ=",
        "filename": "summary.txt",
        "type": "text/plain"
      }
    ]
  }
}
email.tostringRequired
Primary recipient email.
email.subjectstringRequired
Message subject.
email.fromstring
Optional sender email from configured alternative senders.
email.ccarray
CC recipients.
email.bccarray
BCC recipients.
email.varsobject
Template variables.
email.attachmentsarray
Attachments in base64 format.

Responses

Email accepted for delivery.

{
  "email": {
    "id": "msg_123"
  }
}

Template not found.

{
  "error": "Template not found or empty"
}

On this page