Skip to content
Start here

Send an email using the builder.

client.emailSending.send(EmailSendingSendParams { account_id, from, subject, 8 more } params, RequestOptionsoptions?): EmailSendingSendResponse { delivered, permanent_bounces, queued }
POST/accounts/{account_id}/email/sending/send

Send an email using the builder.

Security
API Token

The preferred authorization scheme for interacting with the Cloudflare API. Create a token.

Example:Authorization: Bearer Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY
API Email + API Key

The previous authorization scheme for interacting with the Cloudflare API, used in conjunction with a Global API key.

Example:X-Auth-Email: user@example.com

The previous authorization scheme for interacting with the Cloudflare API. When possible, use API tokens instead of Global API keys.

Example:X-Auth-Key: 144c9defac04969c7bfad8efaa8ea194
ParametersExpand Collapse
params: EmailSendingSendParams { account_id, from, subject, 8 more }
account_id: string

Path param: Identifier of the account.

from: string | EmailSendingEmailAddressObject { address, name }

Body param: Sender email address. Either a plain string or an object with address and name.

One of the following:
string
EmailSendingEmailAddressObject { address, name }
address: string

Email address (e.g., 'user@example.com').

name: string

Display name for the email address (e.g., 'John Doe').

subject: string

Body param: Email subject line.

to: string | Array<string>

Body param: Recipient(s). A single email string or an array of email strings.

One of the following:
string
Array<string>
attachments?: Array<EmailSendingEmailInlineAttachment { content, content_id, disposition, 2 more } | EmailSendingEmailAttachment { content, disposition, filename, type } >

Body param: File attachments and inline images.

One of the following:
EmailSendingEmailInlineAttachment { content, content_id, disposition, 2 more }
content: string

Base64-encoded content of the attachment.

content_id: string

Content ID used to reference this attachment in HTML via cid: URI (e.g., ).

disposition: "inline"

Must be 'inline'. Indicates the attachment is embedded in the email body.

filename: string

Filename for the attachment.

type: string

MIME type of the attachment (e.g., 'image/png', 'text/plain').

EmailSendingEmailAttachment { content, disposition, filename, type }
content: string

Base64-encoded content of the attachment.

disposition: "attachment"

Must be 'attachment'. Indicates a standard file attachment.

filename: string

Filename for the attachment.

type: string

MIME type of the attachment (e.g., 'application/pdf', 'text/plain').

bcc?: string | Array<string>

Body param: BCC recipient(s). A single email string or an array of email strings.

One of the following:
string
Array<string>
cc?: string | Array<string>

Body param: CC recipient(s). A single email string or an array of email strings.

One of the following:
string
Array<string>
headers?: Record<string, string>

Body param: Custom email headers as key-value pairs.

html?: string

Body param: HTML body of the email. At least one of text or html must be provided.

reply_to?: string | EmailSendingEmailAddressObject { address, name }

Body param: Reply-to address. Either a plain string or an object with address and name.

One of the following:
string
EmailSendingEmailAddressObject { address, name }
address: string

Email address (e.g., 'user@example.com').

name: string

Display name for the email address (e.g., 'John Doe').

text?: string

Body param: Plain text body of the email. At least one of text or html must be provided.

ReturnsExpand Collapse
EmailSendingSendResponse { delivered, permanent_bounces, queued }
delivered: Array<string>

Email addresses to which the message was delivered immediately.

permanent_bounces: Array<string>

Email addresses that permanently bounced.

queued: Array<string>

Email addresses for which delivery was queued for later.

Send an email using the builder.

import Cloudflare from 'cloudflare';

const client = new Cloudflare({
  apiToken: process.env['CLOUDFLARE_API_TOKEN'], // This is the default and can be omitted
});

const response = await client.emailSending.send({
  account_id: 'account_id',
  from: 'sender@example.com',
  subject: 'Monthly Report',
  to: ['recipient@example.com'],
});

console.log(response.delivered);
{
  "errors": [
    {
      "code": 0,
      "message": "message"
    }
  ],
  "messages": [
    {
      "code": 0,
      "message": "message"
    }
  ],
  "result": {
    "delivered": [
      "recipient@example.com"
    ],
    "permanent_bounces": [
      "dev@stainless.com"
    ],
    "queued": [
      "dev@stainless.com"
    ]
  },
  "success": true,
  "result_info": {
    "count": 0,
    "per_page": 0,
    "total_count": 0,
    "cursor": "cursor",
    "page": 0
  }
}
Returns Examples
{
  "errors": [
    {
      "code": 0,
      "message": "message"
    }
  ],
  "messages": [
    {
      "code": 0,
      "message": "message"
    }
  ],
  "result": {
    "delivered": [
      "recipient@example.com"
    ],
    "permanent_bounces": [
      "dev@stainless.com"
    ],
    "queued": [
      "dev@stainless.com"
    ]
  },
  "success": true,
  "result_info": {
    "count": 0,
    "per_page": 0,
    "total_count": 0,
    "cursor": "cursor",
    "page": 0
  }
}