Verify your domain in minutes, send with one HTTP call and track every delivery, bounce and open in real time. European infrastructure, automatic suppression and signed webhooks.
Create free account View the API3,000 free emails/month · 1 domain included · No credit card
curl -X POST https://zend24.com/api/v1/emails \
-H "Authorization: Bearer sk_live_xxxx" \
-H "Content-Type: application/json" \
-d '{
"from": "Billing <billing@yourdomain.com>",
"to": "customer@example.com",
"subject": "Your July invoice",
"html": "<h1>Thanks for your purchase</h1>"
}'const res = await fetch("https://zend24.com/api/v1/emails", {
method: "POST",
headers: {
"Authorization": "Bearer sk_live_xxxx",
"Content-Type": "application/json",
},
body: JSON.stringify({
from: "Billing <billing@yourdomain.com>",
to: "customer@example.com",
subject: "Your July invoice",
html: "<h1>Thanks for your purchase</h1>",
}),
});
console.log(await res.json());import requests
requests.post(
"https://zend24.com/api/v1/emails",
headers={"Authorization": "Bearer sk_live_xxxx"},
json={
"from": "Billing <billing@yourdomain.com>",
"to": "customer@example.com",
"subject": "Your July invoice",
"html": "<h1>Thanks for your purchase</h1>",
},
)<?php
$ch = curl_init('https://zend24.com/api/v1/emails');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer sk_live_xxxx', 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode([
'from' => 'Billing <billing@yourdomain.com>', 'to' => 'customer@example.com',
'subject' => 'Your July invoice', 'html' => '<h1>Thanks for your purchase</h1>',
]),
]);
echo curl_exec($ch);require 'net/http'
require 'json'
uri = URI('https://zend24.com/api/v1/emails')
req = Net::HTTP::Post.new(uri, {
'Authorization' => 'Bearer sk_live_xxxx',
'Content-Type' => 'application/json'
})
req.body = {
from: 'Billing <billing@yourdomain.com>', to: 'customer@example.com',
subject: 'Your July invoice', html: '<h1>Thanks for your purchase</h1>'
}.to_json
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |h| h.request(req) }
puts res.bodypackage main
import ("bytes"; "io"; "net/http")
func main() {
body := []byte(`{"from":"Billing <billing@yourdomain.com>","to":"customer@example.com","subject":"Your July invoice","html":"<h1>Thanks for your purchase</h1>"}`)
req, _ := http.NewRequest("POST", "https://zend24.com/api/v1/emails", bytes.NewBuffer(body))
req.Header.Set("Authorization", "Bearer sk_live_xxxx")
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
out, _ := io.ReadAll(res.Body)
println(string(out))
}Built by developers for real production.
Connect Cloudflare, OVH or GoDaddy and we create the DKIM, SPF and DMARC records for you. No copy-pasting.
Hard bounces and spam complaints are blocked automatically. Your sender reputation, protected by default.
delivered / bounced / opened events with HMAC-SHA256 signatures and exponential-backoff retries.
sk_test_ keys that log everything without sending anything. Develop without fear.
Save your HTML once, send with {{name}}. Automatic escaping against injection.
TOTP 2FA, Argon2id, hashed API keys shown only once, rate limits and full audit trail.
Start free, scale when you need to.