API ReferenceTransactional EmailSend Transactional Email

    Send Transactional Email

    Send reliable transactional emails like password resets, order confirmations, and system notifications with high delivery rates and real-time tracking.

    POSThttps://tapi.simplysend.email/send

    Parameters

    toRequired
    string
    Email address of the recipient. Can be a comma-separated string or an array. Required unless bcc is provided. Cannot be used together with bcc. e.g. '[email protected]' or '"John Doe" <[email protected]>'
    fromRequired
    string
    The sender email address (must be a verified domain). e.g. `"Acme Newsletters" <[email protected]>` or `[email protected]`. Format: 'Display Name <[email protected]>' or '[email protected]'. For API calls, include the display name in the from field. For SMTP bridge, the display name is extracted from the From header and passed as senderName.
    subjectRequired
    string
    The subject line for the email. UTF-8 text, max 998 characters per line. e.g. 'Welcome to Our Service' or 'Your Order #12345 is Confirmed'.
    htmlRequired
    string
    HTML body content. Include required template variables. The standard total email size limit is 2 MB. For approved larger emails with attachments, see the attachmentSubmissionId parameter; the body and other non-attachment data must still fit within 2 MB. e.g. '<h1>Hello</h1><p>{{unsubscribe_email_html}}</p><p>{{company_address_html}}</p>'
    cc
    string
    CC email address(es). Can be a comma-separated string or an array. Can be used together with to. Cannot be used together with bcc or attachments. e.g. '[email protected]' or '"Team Lead" <[email protected]>'
    bcc
    string
    BCC email address(es). Can be a comma-separated string or an array. When bcc is provided, to and cc must be omitted (BCC-only send). Cannot be used together with attachments. e.g. '[email protected]' or '"Hidden Recipient" <[email protected]>'
    text
    string
    The plain text version of the email for clients that don't support HTML. UTF-8 text, recommended for accessibility. e.g. 'Hello! This is a plain text version.'
    replyTo
    string
    The email address where recipients' replies should be sent. e.g. `[email protected]` or `"Acme Support" <[email protected]>`. Format: 'Display Name <[email protected]>' or '[email protected]'.
    attachments
    array

    An array of objects containing name, contentType, and base64-encoded content.

    Use this field for up to 10 attachments in emails within the 2 MB total message limit. For larger approved emails, upload the files through POST /attachments and use attachmentSubmissionId in POST /send instead. See the Upload Attachments API and the attachmentSubmissionId parameter for details.

    Supported file types:

    PDFDOCDOCXXLSXLSXPPTPPTXTXTCSVRTFJPGJPEGPNGGIFBMPTIFFWebPZIPRAR7ZGZIPTARJSONXMLHTMLCSSMarkdown
    attachmentSubmissionId
    string

    ID returned by POST /attachments. After uploading the files, include this ID with the email fields in POST /send. See the full authorization, upload, and send example.

    headers
    object

    Custom headers to include in the email. e.g. { "X-Entity-ID": "user_12345", "X-Feedback-ID": "transaction_abc" }

    Note: List-Unsubscribe is automatically injected by the system.

    templateVariables
    object

    Key-value pairs for dynamic content injection. e.g. { "first_name": "John", "discount_code": "WELCOME20" }

    These can be referenced in your HTML or text body using double curly braces, e.g. {{first_name}}.

    enableClickTracking
    boolean

    Wrap all links in the email with click-tracking redirect URLs so each click is recorded as an email_clicked event. Defaults to false.

    We recommend leaving click tracking disabled for transactional emails to minimize delivery latency and avoid link mismatch warnings.

    Optional custom link redirection tracking subdomain (typically [region]-t-link.yourdomain.com, e.g. us-t-link.yourdomain.com). If verified and configured, links in the email body will be wrapped using this custom subdomain. If not verified, click tracking will fall back to using the default Simply Send tracking domain. Custom link configuration is per domain.

    enableOpenTracking
    boolean

    Inject a 1x1 transparent tracking pixel to record Open events. Defaults to false.

    We recommend leaving open tracking disabled for transactional emails to avoid latency and spam-filter scrutiny.

    Idempotency-Key
    header string

    A unique UUID string used to make the request idempotent. If the system receives a duplicate request with the same key within a 24-hour window, it returns the cached original response without processing the email send again.

    When using attachmentSubmissionId, provide the same Idempotency-Key used on POST /attachments. An independent key on POST /send is rejected. If you omit the key, omit it from both requests.

    Concurrent duplicate requests will return a 409 Conflict status.

    RequestPOST

    Transactional Emails with Large Attachments

    For emails up to 2 MB, include the files in the attachments field when calling POST /send. To send a larger email, first request Transactional Email Size Increase in Account → Approvals and wait for your workspace limit to be raised. Then authorize and upload the files before calling POST /send with the returned attachmentSubmissionId.

    You can attach up to 10 files per email. File sizes are checked before upload; the complete email size is checked when you send it. Upload all files before sending. Upload URLs expire at the returned expiresAt. If you use Idempotency-Key, pass the same key in both API requests.

    The Attachments API reference includes the complete multi-file authorization, upload, and send example. Do not include the file contents again in POST /send.

    Compliance Templates