Send your first transactional email
Create an API key with the email scope, verify a sending domain and call the email API at https://email.eza.co.ke. The sending request format works with existing Resend SDKs after you change the base URL.
Transactional email is for password resets, receipts, sign-in codes and app notifications. It is Beta: included and supported, but not covered by uptime credits.
- Beta
- Sending API
- SMTP relay
API key
Create an email API key
- Open your Organisation in the dashboard and go to API keys.
- Create a key with only the
emailscope. - Store it as
EZA_EMAIL_KEYin your app’s environment variables.
Use a separate key for each app. If one key leaks, you revoke it without touching the others.
EZA_EMAIL_URL=https://email.eza.co.keEZA_EMAIL_KEY=ez_email_your_key_herePending engineering: API key prefixes are not final. Keep the ez_email_your_key_here placeholder until they are.
Sending domain
Verify a sending domain
Add a sending subdomain such as mail.yourapp.co.ke, then add the DNS records Eza shows. Eza requires SPF, DKIM and DMARC before you can send to external recipients.
Until the domain is verified, you can send only to members of your Organisation. That is enough to test the integration.
Verify a sending domainSend
Send with the Resend SDK
Install the resend package and point it at Eza with the baseUrl option.
npm install resendimport { Resend } from 'resend' const email = new Resend(process.env.EZA_EMAIL_KEY, { baseUrl: process.env.EZA_EMAIL_URL}) await email.emails.send({ from: 'no-reply@yourapp.co.ke', to: 'user@example.com', subject: 'Reset your password', html: '<p>Use your password reset link.</p>'})Send HTML, plain text or both. If you send only HTML, Eza generates a plain-text version.
Pending engineering: confirm the full list of compatible sending endpoints and response schemas before publishing. The sample stays valid only while Eza tracks the public Resend SDK contract.
SMTP
Or send through SMTP
Frameworks with built-in mail support can use SMTP relay at smtp.eza.co.ke instead. The username is eza and the password is your email API key.
MAIL_MAILER=smtpMAIL_HOST=smtp.eza.co.keMAIL_PORT=587MAIL_USERNAME=ezaMAIL_PASSWORD=${EZA_EMAIL_KEY}MAIL_ENCRYPTION=tlsDelivery events
Track delivery
Add a webhook endpoint to receive email.delivered, email.bounced and email.complained events. Eza webhooks are signed with Eza-Signature and are not Resend-compatible.
FAQ
Transactional email questions
Does my app need to run on Eza?
No. Any app with an Eza API key that has the email scope can send, wherever it runs.
Can I send newsletters?
No. Newsletters, marketing campaigns, promotional bulk email and purchased contact lists are not allowed.
What happens if my Organisation is suspended?
New sends return org_suspended. Messages accepted before suspension are still delivered, and scheduled sends are cancelled. On an overdue but limited account, sending continues.
Transactional email
