ZapSMTP / Email API

An email API that fits your code.

Send transactional and broadcast email with a familiar API. From a single request to the event that follows, keep your email workflow in your application.

The ZapSMTP entry for “Order H-20512 confirmed” to sofia.marin@example.com: opened, with order_id metadata and an event timeline from Accepted by ZapSMTP to Delivered and Opened.The ZapSMTP entry for “Order H-20512 confirmed” to sofia.marin@example.com: opened, with order_id metadata and an event timeline from Accepted by ZapSMTP to Delivered and Opened.
The event timeline of order H-20512’s confirmation on a phone: accepted, delivered with the server’s 250 reply, then opened.The event timeline of order H-20512’s confirmation on a phone: accepted, delivered with the server’s 250 reply, then opened.

Send from
your stack.

Official SDKs for Node.js, Python, PHP, Go, Ruby, Java and .NET, or plain HTTP.

Developers
npm install zapsmtp
Node.js · SDK publishing soon
import { ZapSMTP } from 'zapsmtp';

const zap = new ZapSMTP(); // reads ZAP_API_KEY, on your server

await zap.emails.send({
  from: 'Halden <security@haldenoutfitters.com>',
  to: 'sofia.marin@example.com',
  template: {
    id: 'sign-in-code',
    variables: {
      name: 'Sofia',
      code: '482 913',
      expires_in: '10 minutes',
      device: 'Safari on iPhone',
      location: 'Portland, US',
      time: '9:41 AM',
    },
  },
});

Keep content
out of your code.

Design templates in the editor and send one by its ID with your variables.

Templates
The ZapSMTP visual editor with Halden’s subscription confirmation email open and its “Yes, subscribe me” button selected.The ZapSMTP visual editor with Halden’s subscription confirmation email open and its “Yes, subscribe me” button selected.
The visual editor on a phone with Halden’s subscription confirmation.The visual editor on a phone with Halden’s subscription confirmation.

A key for
each job.

Test keys run the whole pipeline and never deliver. Live keys can be limited to one domain or stream.

API keys
Halden’s API keys in ZapSMTP: storefront, order service and newsletter keys limited to a domain or a stream, an admin key with full access, and a CI test key.Halden’s API keys in ZapSMTP: storefront, order service and newsletter keys limited to a domain or a stream, an admin key with full access, and a CI test key.

Follow the event
into your app.

Signed webhooks for every event, with retries, replay and a log of every attempt.

Webhooks
Recent webhook deliveries to Halden’s endpoint: delivered, opened, clicked, bounced and complained events with their response codes and times, and a 503 that was retried.Recent webhook deliveries to Halden’s endpoint: delivered, opened, clicked, bounced and complained events with their response codes and times, and a 503 that was retried.

Also included

Batch sending

Up to 100 emails per request, with strict or permissive validation.

Scheduled sending

Prepare email in advance. Cancel or reschedule before it goes out.

Transactional & broadcast streams

Separate streams keep marketing traffic from affecting your password resets.

One-click unsubscribe

RFC 8058 one-click unsubscribe on broadcast email, as Gmail and Yahoo require.

Open & click tracking

Enable tracking per domain. Both are off by default.

Tags & metadata

Attach your own IDs and find them in every event.

Attachments by URL

Attach a file by URL instead of including its content in the request.

Sender name per domain

Set a default display name for each sending domain.

Idempotent requests

Retry an interrupted request without duplicating email sends.

Plans and limits

Send your first email.

Your next email starts with a few lines of code.

Start for free 3,000 emails/month free · No credit card required