Documentation

Getting started

SnappyMails exposes a complete, Brevo-compatible public API for sending transactional email, syncing contacts and lists, tracking behavioral events, triggering visual workflows, running A/B split-tested campaigns, and sending WhatsApp messages.

Base URL

All public endpoints live under a single base URL:

Base URL
https://app.snappymails.com

Requests and responses are JSON (Content-Type: application/json), timestamps are RFC 3339 and IDs are strings. The transactional endpoint accepts the same payload as Brevo's POST /v3/smtp/email, so in most cases migrating is a matter of changing the host and the API key.

Create an API key

  1. Create an account (or sign in) and verify your email address — sending is blocked with 403 email_not_verified until the owner's email is confirmed.
  2. Add and verify a sender domain under Sender domains. The sender.email of every message must belong to a verified domain.
  3. Open API Keys & SMTP in the portal and create a key. The full key (sm_live_…) is shown only once; store it in a secret manager or environment variable.

Keep keys server-side

API keys grant sending rights for your brand. Never embed them in browser or mobile code; call the API from your backend instead.

Permissions

When creating a key you can restrict it to specific permissions. A key created without any permission has full access to every endpoint below.

PermissionAllows
smtp:sendSending email with POST /v3/smtp/email, POST /v1/tx/send and the SMTP relay (as the SMTP password).
templates:readListing templates with GET /v3/smtp/templates.
contacts:writeCreating, updating, listing and managing contacts & lists via /v3/contacts*.
events:writeTracking custom behavioral events via POST /v3/events and POST /v1/events (and triggering active automation workflows).
whatsapp:sendSending and reading WhatsApp messages via /v1/whatsapp/*.

Calling an endpoint with a key that lacks the required permission returns 403. See Authentication for details.

Your first request

Export your key as SNAPPYMAILS_API_KEY and send an email. Every example in these docs reads the key from that environment variable.

shell
export SNAPPYMAILS_API_KEY="sm_live_..."
curl -X POST 'https://app.snappymails.com/v3/smtp/email' \
  -H "api-key: $SNAPPYMAILS_API_KEY" \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
    "sender": {
      "name": "Acme Shop",
      "email": "no-reply@acme.com"
    },
    "to": [
      {
        "email": "jane@example.com",
        "name": "Jane Doe"
      }
    ],
    "subject": "Hello from SnappyMails",
    "htmlContent": "<p>Hi {{ params.NAME }}, your first email is on its way!</p>",
    "params": {
      "NAME": "Jane"
    }
  }'

A successful call returns 201 Created with the message id you can use to look the message up later:

201 Created
{
  "messageId": "<3f1c2a9e-8b7d-4d61-9a63-0c2f5e7b1d44@snappymails>"
}

Next steps

Prefer generating a client? Download the OpenAPI 3.1 specification.