Skip to main content
Use a verified identity in the target region. The from address must belong to that domain or one of its subdomains. Sending requires email:SendMessage on the identity; template sends additionally require email:SendTemplatedMessage on the template.

Send a message

Open Email and Sent messages to send a message and inspect its status. Select a verified identity and supply the sender, recipients, subject, and body.
content selects one explicit mode: text and/or html, raw for a complete RFC 5322 message, or template with template_data. Text is never guessed to be HTML. Supply subject for text/HTML; raw messages and templates provide their own subject. The service validates the sender and signs outgoing mail with DKIM. For reusable content, see templates and batch sends.

Acceptance and delivery

The response contains a message with its UUID, CRN, and identity ResourceRef. Successful API acceptance queues the message. It does not prove inbox delivery. Read GET /v1/sent-messages/{message_id} for smtp_response, error_message, and outcome timestamps. One message record can contain several recipients; its status is not an individual delivery receipt for each address. Send separate messages when you need an independent outcome per recipient. List messages with GET /v1/sent-messages, optionally filtering by identity, status, or recipient. Use meta.marker for the next page while preserving the filters. Read full decoded text/HTML at /v1/sent-messages/{message_id}/content, download reconstructed MIME at /raw, and download individual files at /attachments/{attachment_id}. The content read requires email:GetSentMessageContent separately from metadata access.

Suppressions and rejections

Account suppressions remove matching recipients before queueing. A request fails when every recipient is suppressed. A configuration set can explicitly override selected suppressed addresses; use that only after resolving the cause. Create manual entries with POST /v1/suppressions; duplicate addresses return 409. Use PATCH /v1/suppressions/{suppression_id} to change description or expiry. Omission preserves expiry and null makes it permanent. Read and delete individual suppressions by UUID on the same path. Manual entries and entries created from bounce or complaint feedback appear in Suppressions. Removing an entry permits future sends; it does not resend mail. Rejected requests do not create queued message records. Inspect GET /v1/rejections for the rejection reason, affected recipients, and optional identity reference. A rejection may have no identity if one could not be resolved. For aggregate sending and feedback trends, use Email metrics. Per-message open and click details remain available at GET /v1/sent-messages/{message_id}/engagement.

Message retention and attachments

Sent message content is retained for 30 days, included in the sending price. The response includes expires_at. Message history is unavailable after expiry; attachment objects remain governed by their bucket’s lifecycle and Storage charges. To attach existing objects, provide attachments when sending a message:
The bucket must belong to the same account and region. storage:GetObject is required. An optional version_id selects a particular object version; the service pins the selected version and checksum so a subsequent overwrite cannot silently change an accepted email. A missing or changed attachment prevents delivery. When content.raw contains a complete MIME message with binary attachments, also supply attachments_bucket, using a bucket name, UUID, or CRN. Email extracts those attachments into email/{identity_id}/sent/{message_id}/ and retains only their references alongside the message body. This path requires storage:PutObject and storage:GetObject under that prefix. Attachments are read before DKIM signing. Organization quotas limit complete encoded size, accepted sending recipients per rolling second, and accepted sending recipients over rolling 24 hours. They apply across accounts and identities in the region and count recipients remaining after suppression filtering. Failed admission consumes no quota. See the quota and retention reference.