Send email
Queue a transactional email for delivery. Returns immediately with the email ID — SES handoff happens in the background. Subscribe to a [webhook](/docs/webhooks) to learn about delivery, bounces, opens, and clicks. The `from` domain must be verified for the workspace — see the [Quickstart](/docs/quickstart) for the DNS records.
Queue a transactional email for delivery. Returns immediately with the email ID — SES handoff happens in the background. Subscribe to a webhook to learn about delivery, bounces, opens, and clicks.
The from domain must be verified for the workspace — see
the Quickstart for the DNS records.
Authorization
bearerAuth Workspace-scoped API key issued via the dashboard. Send as
Authorization: Bearer zk_live_... on every request.
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/emails" \ -H "Content-Type: application/json" \ -d '{ "from": "Acme <[email protected]>", "to": [ "[email protected]" ], "subject": "Welcome to Acme", "html": "<p>Hello Jane</p>", "text": "Hello Jane" }'{
"id": "email_2bV4dXyZ8AfQpkw7Lp",
"status": "queued"
}{
"error": "The from domain is not verified for this organization."
}{
"error": "Invalid or missing API key."
}{
"error": "Daily send limit reached (100 / day on Free). Upgrade your plan or wait until tomorrow."
}