Skip to content
Start here

Create a sending subdomain

email_sending.subdomains.create(SubdomainCreateParams**kwargs) -> SubdomainCreateResponse
POST/zones/{zone_id}/email/sending/subdomains

Creates a new sending subdomain or re-enables sending on an existing subdomain that had it disabled. If zone-level Email Sending has not been enabled yet, the zone flag is automatically set when the entitlement is present.

Security

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
Accepted Permissions (at least one required)
Zone Settings Write
ParametersExpand Collapse
zone_id: str

Identifier.

maxLength32
name: str

The subdomain name. Must be within the zone.

ReturnsExpand Collapse
class SubdomainCreateResponse:
email_sending_enabled: bool

Whether Email Sending is enabled on this subdomain.

name: str

The subdomain domain name.

tag: str

Sending subdomain identifier.

maxLength32
created: Optional[datetime]

The date and time the destination address has been created.

formatdate-time
email_sending_dkim_selector: Optional[str]

The DKIM selector used for email signing.

email_sending_return_path_domain: Optional[str]

The return-path domain used for bounce handling.

enabled: Optional[bool]

Whether Email Routing (receiving) is enabled on this subdomain. Read-only; included for informational purposes since both services share the subdomain row.

modified: Optional[datetime]

The date and time the destination address was last modified.

formatdate-time

Create a sending subdomain

import os
from cloudflare import Cloudflare

client = Cloudflare(
    api_email=os.environ.get("CLOUDFLARE_EMAIL"),  # This is the default and can be omitted
    api_key=os.environ.get("CLOUDFLARE_API_KEY"),  # This is the default and can be omitted
)
subdomain = client.email_sending.subdomains.create(
    zone_id="023e105f4ecef8ad9ca31a8372d0c353",
    name="sub.example.com",
)
print(subdomain.email_sending_enabled)
{
  "errors": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "messages": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "success": true,
  "result": {
    "email_sending_enabled": true,
    "name": "sub.example.com",
    "tag": "aabbccdd11223344aabbccdd11223344",
    "created": "2014-01-02T02:20:00Z",
    "email_sending_dkim_selector": "cf-bounce",
    "email_sending_return_path_domain": "cf-bounce.sub.example.com",
    "enabled": true,
    "modified": "2014-01-02T02:20:00Z"
  }
}
Returns Examples
{
  "errors": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "messages": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "success": true,
  "result": {
    "email_sending_enabled": true,
    "name": "sub.example.com",
    "tag": "aabbccdd11223344aabbccdd11223344",
    "created": "2014-01-02T02:20:00Z",
    "email_sending_dkim_selector": "cf-bounce",
    "email_sending_return_path_domain": "cf-bounce.sub.example.com",
    "enabled": true,
    "modified": "2014-01-02T02:20:00Z"
  }
}