ZevSend Docs
Sign up
Developer documentation

One API.
Three channels.
Same envelope.

Email, SMS, and WhatsApp through one REST contract. Same auth, same response shape, same webhook signing. Write the integration once; switch channels with a one-line endpoint swap.

Request

curl https://api.zevsend.com/v1/emails \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "from": "noreply@acme.com",
    "to": "ada@example.com",
    "subject": "Welcome to Acme",
    "html": "<p>Hi Ada, welcome aboard.</p>"
  }'

Response

202 Accepted
{
  "id": "eml_01HXYZ...",
  "to": "ada@example.com",
  "from": "noreply@acme.com",
  "subject": "Welcome to Acme",
  "status": "sending",
  "sandbox": false,
  "created_at": "2025-05-24T12:34:56.789Z"
}
From signup to sent

Three shell lines.
No SDK required.

Sign up, copy a test key, paste the curl below. You'll see the message in your dashboard before this paragraph finishes loading the next page.

Read the full quickstart
~ send your first email
# 1. Sign up at console.zevsend.com and grab a test key.
export ZEVSEND_KEY=sk_test_a1b2c3d4e5f6...

# 2. Render your email body the same way you do today.
#    React Email, MJML, Handlebars, a plain string — your call.

# 3. POST to /v1/emails. Sandbox delivers to verified recipients.
curl https://api.zevsend.com/v1/emails \
  -H "Authorization: Bearer $ZEVSEND_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "you@example.com",
    "subject": "Hello from ZevSend",
    "html": "<p>If you can see this, you are integrated.</p>"
  }'

# HTTP/1.1 202 Accepted
# {
#   "id": "eml_01HXYZ...",
#   "status": "sending",
#   "created_at": "2025-05-24T12:34:56.789Z"
# }
When you're ready

Read the reference.

Every endpoint, every error code, every webhook event. The reference is the source of truth — keep it open in a tab while you integrate.

Open the API reference