---
title: Email Sending
---

[Skip to content](#%5Ftop) 

[API Reference](https://developers.cloudflare.com/api/typescript)

Copy Markdown

Open in **Claude**

Open in **ChatGPT**

Open in **Cursor**

---

**Copy Markdown**

**View as Markdown**

# Email Sending

##### [Send an email](https://developers.cloudflare.com/api/typescript/resources/email%5Fsending/methods/send)

client.emailSending.send(EmailSendingSendParams { account\_id, from, subject, 8 more } params, RequestOptionsoptions?): [EmailSendingSendResponse](https://developers.cloudflare.com/api/typescript/resources/email%5Fsending#%28resource%29%20email%5Fsending%20%3E%20%28model%29%20email%5Fsending%5Fsend%5Fresponse%20%3E%20%28schema%29) { delivered, message\_id, permanent\_bounces, 2 more } 

POST/accounts/{account\_id}/email/sending/send

##### [Send a raw MIME email](https://developers.cloudflare.com/api/typescript/resources/email%5Fsending/methods/send%5Fraw)

client.emailSending.sendRaw(EmailSendingSendRawParams { account\_id, from, mime\_message, recipients } params, RequestOptionsoptions?): [EmailSendingSendRawResponse](https://developers.cloudflare.com/api/typescript/resources/email%5Fsending#%28resource%29%20email%5Fsending%20%3E%20%28model%29%20email%5Fsending%5Fsend%5Fraw%5Fresponse%20%3E%20%28schema%29) { delivered, message\_id, permanent\_bounces, 2 more } 

POST/accounts/{account\_id}/email/sending/send\_raw

##### ModelsExpand Collapse 

EmailSendingSendResponse { delivered, message\_id, permanent\_bounces, 2 more } 

delivered: Array<string\>

Email addresses to which the message was delivered immediately.

message\_id: string

Message ID of the sent email.

permanent\_bounces: Array<string\>

Email addresses that permanently bounced.

queued: Array<string\>

Email addresses for which delivery was queued for later.

suppressed\_recipients: Array<string\>

Email addresses dropped because they are on the suppression list. Returned when suppressed-recipient dropping is enabled for the sending subdomain; otherwise the request fails instead.

EmailSendingSendRawResponse { delivered, message\_id, permanent\_bounces, 2 more } 

delivered: Array<string\>

Email addresses to which the message was delivered immediately.

message\_id: string

Message ID of the sent email.

permanent\_bounces: Array<string\>

Email addresses that permanently bounced.

queued: Array<string\>

Email addresses for which delivery was queued for later.

suppressed\_recipients: Array<string\>

Email addresses dropped because they are on the suppression list. Returned when suppressed-recipient dropping is enabled for the sending subdomain; otherwise the request fails instead.

#### Email SendingSuppressions

##### [List account Email Sending suppressions](https://developers.cloudflare.com/api/typescript/resources/email%5Fsending/subresources/suppressions/methods/list)

client.emailSending.suppressions.list(SuppressionListParams { account\_id, cursor, email, 3 more } params, RequestOptionsoptions?): CursorPagination<[SuppressionListResponse](https://developers.cloudflare.com/api/typescript/resources/email%5Fsending#%28resource%29%20email%5Fsending.suppressions%20%3E%20%28model%29%20suppression%5Flist%5Fresponse%20%3E%20%28schema%29) { id, created\_at, email, 4 more } \>

GET/accounts/{account\_id}/email/sending/suppressions

##### [Get account Email Sending suppression](https://developers.cloudflare.com/api/typescript/resources/email%5Fsending/subresources/suppressions/methods/get)

client.emailSending.suppressions.get(stringsuppressionID, SuppressionGetParams { account\_id } params, RequestOptionsoptions?): [SuppressionGetResponse](https://developers.cloudflare.com/api/typescript/resources/email%5Fsending#%28resource%29%20email%5Fsending.suppressions%20%3E%20%28model%29%20suppression%5Fget%5Fresponse%20%3E%20%28schema%29) { id, created\_at, email, 4 more } 

GET/accounts/{account\_id}/email/sending/suppressions/{suppression\_id}

##### [Create account Email Sending suppression](https://developers.cloudflare.com/api/typescript/resources/email%5Fsending/subresources/suppressions/methods/create)

client.emailSending.suppressions.create(SuppressionCreateParams { account\_id, email, expires\_at, note } params, RequestOptionsoptions?): [SuppressionCreateResponse](https://developers.cloudflare.com/api/typescript/resources/email%5Fsending#%28resource%29%20email%5Fsending.suppressions%20%3E%20%28model%29%20suppression%5Fcreate%5Fresponse%20%3E%20%28schema%29) { id } 

POST/accounts/{account\_id}/email/sending/suppressions

##### [Update account Email Sending suppression](https://developers.cloudflare.com/api/typescript/resources/email%5Fsending/subresources/suppressions/methods/edit)

client.emailSending.suppressions.edit(stringsuppressionID, SuppressionEditParams { account\_id, expires\_at, note } params, RequestOptionsoptions?): [SuppressionEditResponse](https://developers.cloudflare.com/api/typescript/resources/email%5Fsending#%28resource%29%20email%5Fsending.suppressions%20%3E%20%28model%29%20suppression%5Fedit%5Fresponse%20%3E%20%28schema%29) { id, created\_at, email, 4 more } 

PATCH/accounts/{account\_id}/email/sending/suppressions/{suppression\_id}

##### [Delete account Email Sending suppression](https://developers.cloudflare.com/api/typescript/resources/email%5Fsending/subresources/suppressions/methods/delete)

client.emailSending.suppressions.delete(stringsuppressionID, SuppressionDeleteParams { account\_id } params, RequestOptionsoptions?): [SuppressionDeleteResponse](https://developers.cloudflare.com/api/typescript/resources/email%5Fsending#%28resource%29%20email%5Fsending.suppressions%20%3E%20%28model%29%20suppression%5Fdelete%5Fresponse%20%3E%20%28schema%29) { id } 

DELETE/accounts/{account\_id}/email/sending/suppressions/{suppression\_id}

##### [Bulk import account Email Sending suppressions](https://developers.cloudflare.com/api/typescript/resources/email%5Fsending/subresources/suppressions/methods/import)

client.emailSending.suppressions.import(SuppressionImportParams { account\_id, items } params, RequestOptionsoptions?): [SuppressionImportResponse](https://developers.cloudflare.com/api/typescript/resources/email%5Fsending#%28resource%29%20email%5Fsending.suppressions%20%3E%20%28model%29%20suppression%5Fimport%5Fresponse%20%3E%20%28schema%29) { deduplicated, errors, invalid, 4 more } 

POST/accounts/{account\_id}/email/sending/suppressions/bulk

##### ModelsExpand Collapse 

SuppressionListResponse { id, created\_at, email, 4 more } 

id: string

formatuuid

created\_at: string

formatdate-time

email: string

formatemail

expires\_at: string | null

formatdate-time

read\_only: boolean

Whether clients may mutate this suppression. This is determined by the server and must not be inferred from `reason`.

reason: string

note?: string | null

SuppressionGetResponse { id, created\_at, email, 4 more } 

id: string

formatuuid

created\_at: string

formatdate-time

email: string

formatemail

expires\_at: string | null

formatdate-time

read\_only: boolean

Whether clients may mutate this suppression. This is determined by the server and must not be inferred from `reason`.

reason: string

note?: string | null

SuppressionCreateResponse { id } 

id: string

formatuuid

SuppressionEditResponse { id, created\_at, email, 4 more } 

id: string

formatuuid

created\_at: string

formatdate-time

email: string

formatemail

expires\_at: string | null

formatdate-time

read\_only: boolean

Whether clients may mutate this suppression. This is determined by the server and must not be inferred from `reason`.

reason: string

note?: string | null

SuppressionDeleteResponse { id } 

id: string

formatuuid

SuppressionImportResponse { deduplicated, errors, invalid, 4 more } 

deduplicated: number

errors: number

invalid: number

items: Array<Item\>

index: number

status: "processed" | "invalid" | "error" | "skipped"

One of the following:

"processed"

"invalid"

"error"

"skipped"

id?: string

formatuuid

email?: string

formatemail

error?: string

processed: number

skipped: number

total: number

#### Email SendingSubdomains

##### [List sending subdomains](https://developers.cloudflare.com/api/typescript/resources/email%5Fsending/subresources/subdomains/methods/list)

client.emailSending.subdomains.list(SubdomainListParams { zone\_id } params, RequestOptionsoptions?): SinglePage<[SubdomainListResponse](https://developers.cloudflare.com/api/typescript/resources/email%5Fsending#%28resource%29%20email%5Fsending.subdomains%20%3E%20%28model%29%20subdomain%5Flist%5Fresponse%20%3E%20%28schema%29) { enabled, name, tag, 6 more } \>

GET/zones/{zone\_id}/email/sending/subdomains

##### [Get a sending subdomain](https://developers.cloudflare.com/api/typescript/resources/email%5Fsending/subresources/subdomains/methods/get)

client.emailSending.subdomains.get(stringsubdomainID, SubdomainGetParams { zone\_id } params, RequestOptionsoptions?): [SubdomainGetResponse](https://developers.cloudflare.com/api/typescript/resources/email%5Fsending#%28resource%29%20email%5Fsending.subdomains%20%3E%20%28model%29%20subdomain%5Fget%5Fresponse%20%3E%20%28schema%29) { enabled, name, tag, 6 more } 

GET/zones/{zone\_id}/email/sending/subdomains/{subdomain\_id}

##### [Create a sending subdomain](https://developers.cloudflare.com/api/typescript/resources/email%5Fsending/subresources/subdomains/methods/create)

client.emailSending.subdomains.create(SubdomainCreateParams { zone\_id, name } params, RequestOptionsoptions?): [SubdomainCreateResponse](https://developers.cloudflare.com/api/typescript/resources/email%5Fsending#%28resource%29%20email%5Fsending.subdomains%20%3E%20%28model%29%20subdomain%5Fcreate%5Fresponse%20%3E%20%28schema%29) { enabled, name, tag, 6 more } 

POST/zones/{zone\_id}/email/sending/subdomains

##### [Update a sending subdomain](https://developers.cloudflare.com/api/typescript/resources/email%5Fsending/subresources/subdomains/methods/edit)

client.emailSending.subdomains.edit(stringsubdomainID, SubdomainEditParams { zone\_id, drop\_suppressed\_recipients, preview\_enabled } params, RequestOptionsoptions?): [SubdomainEditResponse](https://developers.cloudflare.com/api/typescript/resources/email%5Fsending#%28resource%29%20email%5Fsending.subdomains%20%3E%20%28model%29%20subdomain%5Fedit%5Fresponse%20%3E%20%28schema%29) { enabled, name, tag, 6 more } 

PATCH/zones/{zone\_id}/email/sending/subdomains/{subdomain\_id}

##### [Delete a sending subdomain](https://developers.cloudflare.com/api/typescript/resources/email%5Fsending/subresources/subdomains/methods/delete)

client.emailSending.subdomains.delete(stringsubdomainID, SubdomainDeleteParams { zone\_id } params, RequestOptionsoptions?): [SubdomainDeleteResponse](https://developers.cloudflare.com/api/typescript/resources/email%5Fsending#%28resource%29%20email%5Fsending.subdomains%20%3E%20%28model%29%20subdomain%5Fdelete%5Fresponse%20%3E%20%28schema%29) { errors, messages, success } 

DELETE/zones/{zone\_id}/email/sending/subdomains/{subdomain\_id}

##### ModelsExpand Collapse 

SubdomainListResponse { enabled, name, tag, 6 more } 

enabled: boolean

Whether Email Sending is enabled on this subdomain.

name: string

The exact domain name or a leftmost wildcard such as `*.example.com`.

tag: string

Sending subdomain identifier.

maxLength32

created?: string

The date and time the destination address has been created.

formatdate-time

dkim\_selector?: string

The DKIM selector used for email signing. Wildcard rows publish the selector and sign with `d=<base>`.

drop\_suppressed\_recipients?: boolean

Whether a send request that includes a recipient suppressed on this subdomain drops that recipient and still delivers to the rest, instead of failing the entire request.

modified?: string

The date and time the destination address was last modified.

formatdate-time

preview\_enabled?: boolean

Whether sent messages from this subdomain can be previewed in the activity log.

return\_path\_domain?: string

The return-path domain used for bounce handling. Wildcard rows use `cf-bounce.<base>`.

SubdomainGetResponse { enabled, name, tag, 6 more } 

enabled: boolean

Whether Email Sending is enabled on this subdomain.

name: string

The exact domain name or a leftmost wildcard such as `*.example.com`.

tag: string

Sending subdomain identifier.

maxLength32

created?: string

The date and time the destination address has been created.

formatdate-time

dkim\_selector?: string

The DKIM selector used for email signing. Wildcard rows publish the selector and sign with `d=<base>`.

drop\_suppressed\_recipients?: boolean

Whether a send request that includes a recipient suppressed on this subdomain drops that recipient and still delivers to the rest, instead of failing the entire request.

modified?: string

The date and time the destination address was last modified.

formatdate-time

preview\_enabled?: boolean

Whether sent messages from this subdomain can be previewed in the activity log.

return\_path\_domain?: string

The return-path domain used for bounce handling. Wildcard rows use `cf-bounce.<base>`.

SubdomainCreateResponse { enabled, name, tag, 6 more } 

enabled: boolean

Whether Email Sending is enabled on this subdomain.

name: string

The exact domain name or a leftmost wildcard such as `*.example.com`.

tag: string

Sending subdomain identifier.

maxLength32

created?: string

The date and time the destination address has been created.

formatdate-time

dkim\_selector?: string

The DKIM selector used for email signing. Wildcard rows publish the selector and sign with `d=<base>`.

drop\_suppressed\_recipients?: boolean

Whether a send request that includes a recipient suppressed on this subdomain drops that recipient and still delivers to the rest, instead of failing the entire request.

modified?: string

The date and time the destination address was last modified.

formatdate-time

preview\_enabled?: boolean

Whether sent messages from this subdomain can be previewed in the activity log.

return\_path\_domain?: string

The return-path domain used for bounce handling. Wildcard rows use `cf-bounce.<base>`.

SubdomainEditResponse { enabled, name, tag, 6 more } 

enabled: boolean

Whether Email Sending is enabled on this subdomain.

name: string

The exact domain name or a leftmost wildcard such as `*.example.com`.

tag: string

Sending subdomain identifier.

maxLength32

created?: string

The date and time the destination address has been created.

formatdate-time

dkim\_selector?: string

The DKIM selector used for email signing. Wildcard rows publish the selector and sign with `d=<base>`.

drop\_suppressed\_recipients?: boolean

Whether a send request that includes a recipient suppressed on this subdomain drops that recipient and still delivers to the rest, instead of failing the entire request.

modified?: string

The date and time the destination address was last modified.

formatdate-time

preview\_enabled?: boolean

Whether sent messages from this subdomain can be previewed in the activity log.

return\_path\_domain?: string

The return-path domain used for bounce handling. Wildcard rows use `cf-bounce.<base>`.

SubdomainDeleteResponse { errors, messages, success } 

errors: Array<Error\>

code: number

minimum1000

message: string

documentation\_url?: string

source?: Source { pointer } 

pointer?: string

messages: Array<Message\>

code: number

minimum1000

message: string

documentation\_url?: string

source?: Source { pointer } 

pointer?: string

success: true

Whether the API call was successful.

#### Email SendingSubdomainsDNS

##### [Get sending subdomain DNS records](https://developers.cloudflare.com/api/typescript/resources/email%5Fsending/subresources/subdomains/subresources/dns/methods/get)

client.emailSending.subdomains.dns.get(stringsubdomainID, DNSGetParams { zone\_id } params, RequestOptionsoptions?): SinglePage<[DNSRecord](https://developers.cloudflare.com/api/typescript/resources/email%5Frouting#%28resource%29%20email%5Frouting.dns%20%3E%20%28model%29%20dns%5Frecord%20%3E%20%28schema%29) { content, name, priority, 2 more } \>

GET/zones/{zone\_id}/email/sending/subdomains/{subdomain\_id}/dns