The email qube sends and receives transactional email on a domain you own.
| Capability | Notes |
|---|
| Send | One email per call, JSON body with from, to, subject, text/html. |
| Receive | Inbound emails to any address on the domain are stored and exposed via API + webhook. |
| Threading | Reply detection works via standard In-Reply-To and References headers. |
| Suppression list | Bounces and complaints auto-add. Read and prune via API. |
| Webhooks | Delivered, bounced, complained, opened, clicked events emitted to your endpoint. |
| Templates | Optional named templates with variable substitution. |
| Multiple from-addresses | Any address on the domain can be a sender; aliases are not enforced. |
domain (string, required): the domain to send from. Must be managed by a domain qube on the
same project, or a BYO domain with DNS pointed at CloudQube.
webhook_url (string, optional): your endpoint to receive event notifications.
domain (string): the verified sender domain.
dns_status (enum): pending, verified, failed. Reflects SPF/DKIM/DMARC publication
state.
inbound_address (string): the address inbound email is forwarded to before being routed.
| Record | Purpose |
|---|
SPF (v=spf1 ...) | Authorises the sender |
| DKIM CNAME | Signing key for outgoing email |
| DMARC TXT | Reporting and policy enforcement |
| MX | Routes inbound to the email qube |
- Per send: a small per-email fee, drawn from your prepaid balance.
- Per inbound: free up to a generous monthly cap; metered above.
- Webhook deliveries: free.
- Suppression list reads/writes: free.
POST /v1/email/send — send one email.
GET /v1/email/messages/{id} — fetch a single message.
GET /v1/email/inbound — list inbound messages.
GET /v1/email/suppressions — list suppressed addresses for this project.
DELETE /v1/email/suppressions/{address} — resubscribe one address.
The suppressions endpoint is project-scoped. A suppression on one of your projects does not
leak into another. (This was a hard-learned guarantee; see the project’s release notes for the
date the project-scope fix landed.)
| Event | When |
|---|
email.delivered | Recipient mailbox accepted the message |
email.bounced | Hard or soft bounce; address added to suppression list on hard |
email.complained | Recipient marked as spam; address added to suppression list |
email.opened | Tracking pixel loaded (if tracking enabled) |
email.clicked | Tracked link clicked (if tracking enabled) |
| Code | Meaning | What to do |
|---|
domain_unverified | DNS records not yet published or propagated | Wait, then retry |
recipient_suppressed | The address is on your suppression list | Resubscribe explicitly if intended |
from_invalid | The from address is not on a verified domain | Use a verified domain |
rate_limit_exceeded | Too many sends in the time window | Back off, retry |