Sending Emails

One endpoint sends to one or many recipients, with HTML, plain text, CC/BCC, and custom tags.

Requirements

  • The from address's domain must be verified — see Domains & DNS.
  • Your API key needs the emails:send permission.
  • Send must be within your plan's monthly quota (plus any purchased credits) — see Billing & Quota.

Request fields

ParameterDescription
from
stringrequired
Sender address on a verified domain. Accepts "Name <email>" or a plain address.
to
string | string[]required
One recipient or an array of recipients.
subject
stringrequired
Up to 998 characters.
html
string
HTML body. At least one of html or text is expected.
text
string
Plain-text body.
cc
string | string[]
CC recipients.
bcc
string | string[]
BCC recipients.
reply_to
string
Reply-To address.
tags
Record<string, string>
Custom key/value tags attached to the send, useful for filtering later.

Example

await cmdsend.emails.send({
  from: 'Acme <billing@yourdomain.com>',
  to: ['user@example.com'],
  cc: 'finance@example.com',
  subject: 'Your invoice is ready',
  html: '<p>Your invoice for March is attached.</p>',
  text: 'Your invoice for March is attached.',
  tags: { category: 'invoice' },
});

Delivery lifecycle

Every send moves through a status you can query via GET /v1/emails/:id:

sentdeliveredopenedclickedbouncedcomplainedfailed

Full history is in Analytics & Logs.