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. 'recipient@example.com' or '"John Doe" <john@example.com>'
    fromRequired
    string
    The sender email address (must be a verified domain). e.g. `"Acme Newsletters" <newsletter@acme.com>` or `newsletter@acme.com`. Format: 'Display Name <email@example.com>' or 'email@example.com'. 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. Max 10MB including attachments. 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. 'manager@example.com' or '"Team Lead" <manager@example.com>'
    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. 'hidden@example.com' or '"Hidden Recipient" <hidden@example.com>'
    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. `support@acme.com` or `"Acme Support" <support@acme.com>`. Format: 'Display Name <email@example.com>' or 'email@example.com'.
    attachments
    array

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

    Up to 10 attachments per email. Combined size cannot exceed 2MB.

    PDFPNGJPGCSVDOCX
    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.

    Concurrent duplicate requests will return a 409 Conflict status.

    RequestPOST

    Compliance Templates