Developer documentation
One API.
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"
} Request
curl https://api.zevsend.com/v1/sms \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{
"to": "+2348012345678",
"template_id": "tpl_01HXYZ...",
"variables": { "code": "847291" }
}' Response
202 Accepted{
"id": "sms_01HXYZ...",
"to": "+2348012345678",
"status": "sending",
"sandbox": false,
"created_at": "2025-05-24T12:34:56.789Z"
} Request
curl https://api.zevsend.com/v1/whatsapp \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{
"to": "+2348012345678",
"template_id": "tpl_01HXYZ...",
"variables": { "first_name": "Ada" }
}' Response
202 Accepted{
"id": "wam_01HXYZ...",
"to": "+2348012345678",
"status": "sending",
"sandbox": false,
"created_at": "2025-05-24T12:34:56.789Z"
}
From signup to sent
Three shell lines.
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